]> git.hungrycats.org Git - linux/commitdiff
Add a quirk for the Intel ICH-[45] to add special ACPI regions.
authorLinus Torvalds <torvalds@home.osdl.org>
Fri, 24 Oct 2003 00:52:25 +0000 (17:52 -0700)
committerLinus Torvalds <torvalds@home.osdl.org>
Fri, 24 Oct 2003 00:52:25 +0000 (17:52 -0700)
This fixes resource conflicts due to IO decode that doesn't show
up with a normal PCI probe (we do similar quirks for most other
chipsets). Without it, the kernel doesn't know about some magic
IO decodes for the chips.

drivers/pci/quirks.c

index 29313362a8b663ee85a43bcd7f70220bd64598e4..0fe0f7656939ba8b2b55e55d2ac4fbe12dee59fa 100644 (file)
@@ -276,6 +276,22 @@ static void __devinit quirk_piix4_acpi(struct pci_dev *dev)
        quirk_io_region(dev, region, 32, PCI_BRIDGE_RESOURCES+1);
 }
 
+/*
+ * ICH4, ICH4-M, ICH5, ICH5-M ACPI: Three IO regions pointed to by longwords at
+ *     0x40 (128 bytes of ACPI, GPIO & TCO registers)
+ *     0x58 (64 bytes of GPIO I/O space)
+ */
+static void __devinit quirk_ich4_lpc_acpi(struct pci_dev *dev)
+{
+       u32 region;
+
+       pci_read_config_dword(dev, 0x40, &region);
+       quirk_io_region(dev, region, 128, PCI_BRIDGE_RESOURCES);
+
+       pci_read_config_dword(dev, 0x58, &region);
+       quirk_io_region(dev, region, 64, PCI_BRIDGE_RESOURCES+1);
+}
+
 /*
  * VIA ACPI: One IO region pointed to by longword at
  *     0x48 or 0x20 (256 bytes of ACPI registers)
@@ -858,6 +874,7 @@ static struct pci_fixup pci_fixups[] __devinitdata = {
        { PCI_FIXUP_HEADER,     PCI_VENDOR_ID_VIA,      PCI_DEVICE_ID_VIA_82C586_3,     quirk_vt82c586_acpi },
        { PCI_FIXUP_HEADER,     PCI_VENDOR_ID_VIA,      PCI_DEVICE_ID_VIA_82C686_4,     quirk_vt82c686_acpi },
        { PCI_FIXUP_HEADER,     PCI_VENDOR_ID_INTEL,    PCI_DEVICE_ID_INTEL_82371AB_3,  quirk_piix4_acpi },
+       { PCI_FIXUP_HEADER,     PCI_VENDOR_ID_INTEL,    PCI_DEVICE_ID_INTEL_82801DB_12, quirk_ich4_lpc_acpi },
        { PCI_FIXUP_HEADER,     PCI_VENDOR_ID_AL,       PCI_DEVICE_ID_AL_M7101,         quirk_ali7101_acpi },
        { PCI_FIXUP_HEADER,     PCI_VENDOR_ID_INTEL,    PCI_DEVICE_ID_INTEL_82371SB_2,  quirk_piix3_usb },
        { PCI_FIXUP_HEADER,     PCI_VENDOR_ID_INTEL,    PCI_DEVICE_ID_INTEL_82371AB_2,  quirk_piix3_usb },