|
@@ -6,6 +6,7 @@
|
|
#include <linux/dmi.h>
|
|
#include <linux/dmi.h>
|
|
#include <linux/pci.h>
|
|
#include <linux/pci.h>
|
|
#include <linux/vgaarb.h>
|
|
#include <linux/vgaarb.h>
|
|
|
|
+#include <asm/hpet.h>
|
|
#include <asm/pci_x86.h>
|
|
#include <asm/pci_x86.h>
|
|
|
|
|
|
static void pci_fixup_i450nx(struct pci_dev *d)
|
|
static void pci_fixup_i450nx(struct pci_dev *d)
|
|
@@ -526,6 +527,19 @@ static void sb600_disable_hpet_bar(struct pci_dev *dev)
|
|
}
|
|
}
|
|
DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_ATI, 0x4385, sb600_disable_hpet_bar);
|
|
DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_ATI, 0x4385, sb600_disable_hpet_bar);
|
|
|
|
|
|
|
|
+#ifdef CONFIG_HPET_TIMER
|
|
|
|
+static void sb600_hpet_quirk(struct pci_dev *dev)
|
|
|
|
+{
|
|
|
|
+ struct resource *r = &dev->resource[1];
|
|
|
|
+
|
|
|
|
+ if (r->flags & IORESOURCE_MEM && r->start == hpet_address) {
|
|
|
|
+ r->flags |= IORESOURCE_PCI_FIXED;
|
|
|
|
+ dev_info(&dev->dev, "reg 0x14 contains HPET; making it immovable\n");
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_ATI, 0x4385, sb600_hpet_quirk);
|
|
|
|
+#endif
|
|
|
|
+
|
|
/*
|
|
/*
|
|
* Twinhead H12Y needs us to block out a region otherwise we map devices
|
|
* Twinhead H12Y needs us to block out a region otherwise we map devices
|
|
* there and any access kills the box.
|
|
* there and any access kills the box.
|