Mark pci_apply_final_quirks() __init rather than __devinit
[safe/jmp/linux-2.6] / drivers / pci / quirks.c
index e303437..77bf620 100644 (file)
@@ -990,7 +990,7 @@ DECLARE_PCI_FIXUP_RESUME_EARLY(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82454NX,
 
 static void __devinit quirk_amd_ide_mode(struct pci_dev *pdev)
 {
-       /* set sb600/sb700/sb800 sata to ahci mode */
+       /* set SBX00 SATA in IDE mode to AHCI mode */
        u8 tmp;
 
        pci_read_config_byte(pdev, PCI_CLASS_DEVICE, &tmp);
@@ -1009,6 +1009,8 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_IXP600_SATA, quirk
 DECLARE_PCI_FIXUP_RESUME_EARLY(PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_IXP600_SATA, quirk_amd_ide_mode);
 DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_IXP700_SATA, quirk_amd_ide_mode);
 DECLARE_PCI_FIXUP_RESUME_EARLY(PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_IXP700_SATA, quirk_amd_ide_mode);
+DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_SB900_SATA_IDE, quirk_amd_ide_mode);
+DECLARE_PCI_FIXUP_RESUME_EARLY(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_SB900_SATA_IDE, quirk_amd_ide_mode);
 
 /*
  *     Serverworks CSB5 IDE does not fully support native mode
@@ -1567,10 +1569,8 @@ static void quirk_reroute_to_boot_interrupts_intel(struct pci_dev *dev)
                return;
 
        dev->irq_reroute_variant = INTEL_IRQ_REROUTE_VARIANT;
-
-       printk(KERN_INFO "PCI quirk: reroute interrupts for 0x%04x:0x%04x\n",
-                       dev->vendor, dev->device);
-       return;
+       dev_info(&dev->dev, "rerouting interrupts for [%04x:%04x]\n",
+                dev->vendor, dev->device);
 }
 DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL,   PCI_DEVICE_ID_INTEL_80333_0,    quirk_reroute_to_boot_interrupts_intel);
 DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL,   PCI_DEVICE_ID_INTEL_80333_1,    quirk_reroute_to_boot_interrupts_intel);
@@ -1612,8 +1612,8 @@ static void quirk_disable_intel_boot_interrupt(struct pci_dev *dev)
        pci_config_word |= INTEL_6300_DISABLE_BOOT_IRQ;
        pci_write_config_word(dev, INTEL_6300_IOAPIC_ABAR, pci_config_word);
 
-       printk(KERN_INFO "disabled boot interrupt on device 0x%04x:0x%04x\n",
-               dev->vendor, dev->device);
+       dev_info(&dev->dev, "disabled boot interrupts on device [%04x:%04x]\n",
+                dev->vendor, dev->device);
 }
 DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL,   PCI_DEVICE_ID_INTEL_ESB_10,     quirk_disable_intel_boot_interrupt);
 DECLARE_PCI_FIXUP_RESUME(PCI_VENDOR_ID_INTEL,   PCI_DEVICE_ID_INTEL_ESB_10,    quirk_disable_intel_boot_interrupt);
@@ -1645,8 +1645,8 @@ static void quirk_disable_broadcom_boot_interrupt(struct pci_dev *dev)
 
        pci_write_config_dword(dev, BC_HT1000_FEATURE_REG, pci_config_dword);
 
-       printk(KERN_INFO "disabled boot interrupts on PCI device"
-                       "0x%04x:0x%04x\n", dev->vendor, dev->device);
+       dev_info(&dev->dev, "disabled boot interrupts on device [%04x:%04x]\n",
+                dev->vendor, dev->device);
 }
 DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_SERVERWORKS,   PCI_DEVICE_ID_SERVERWORKS_HT1000SB,       quirk_disable_broadcom_boot_interrupt);
 DECLARE_PCI_FIXUP_RESUME(PCI_VENDOR_ID_SERVERWORKS,   PCI_DEVICE_ID_SERVERWORKS_HT1000SB,      quirk_disable_broadcom_boot_interrupt);
@@ -1676,8 +1676,8 @@ static void quirk_disable_amd_813x_boot_interrupt(struct pci_dev *dev)
        pci_config_dword &= ~AMD_813X_NOIOAMODE;
        pci_write_config_dword(dev, AMD_813X_MISC, pci_config_dword);
 
-       printk(KERN_INFO "disabled boot interrupts on PCI device "
-                       "0x%04x:0x%04x\n", dev->vendor, dev->device);
+       dev_info(&dev->dev, "disabled boot interrupts on device [%04x:%04x]\n",
+                dev->vendor, dev->device);
 }
 DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_AMD,   PCI_DEVICE_ID_AMD_8131_BRIDGE,    quirk_disable_amd_813x_boot_interrupt);
 DECLARE_PCI_FIXUP_RESUME(PCI_VENDOR_ID_AMD,   PCI_DEVICE_ID_AMD_8132_BRIDGE,   quirk_disable_amd_813x_boot_interrupt);
@@ -1693,14 +1693,13 @@ static void quirk_disable_amd_8111_boot_interrupt(struct pci_dev *dev)
 
        pci_read_config_word(dev, AMD_8111_PCI_IRQ_ROUTING, &pci_config_word);
        if (!pci_config_word) {
-               printk(KERN_INFO "boot interrupts on PCI device 0x%04x:0x%04x "
-                               "already disabled\n",
-                               dev->vendor, dev->device);
+               dev_info(&dev->dev, "boot interrupts on device [%04x:%04x] "
+                        "already disabled\n", dev->vendor, dev->device);
                return;
        }
        pci_write_config_word(dev, AMD_8111_PCI_IRQ_ROUTING, 0);
-       printk(KERN_INFO "disabled boot interrupts on PCI device "
-                       "0x%04x:0x%04x\n", dev->vendor, dev->device);
+       dev_info(&dev->dev, "disabled boot interrupts on device [%04x:%04x]\n",
+                dev->vendor, dev->device);
 }
 DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_AMD,   PCI_DEVICE_ID_AMD_8111_SMBUS,     quirk_disable_amd_8111_boot_interrupt);
 DECLARE_PCI_FIXUP_RESUME(PCI_VENDOR_ID_AMD,   PCI_DEVICE_ID_AMD_8111_SMBUS,    quirk_disable_amd_8111_boot_interrupt);
@@ -2573,6 +2572,19 @@ void pci_fixup_device(enum pci_fixup_pass pass, struct pci_dev *dev)
        }
        pci_do_fixups(dev, start, end);
 }
+
+static int __init pci_apply_final_quirks(void)
+{
+       struct pci_dev *dev = NULL;
+
+       while ((dev = pci_get_device(PCI_ANY_ID, PCI_ANY_ID, dev)) != NULL) {
+               pci_fixup_device(pci_fixup_final, dev);
+       }
+
+       return 0;
+}
+
+device_initcall(pci_apply_final_quirks);
 #else
 void pci_fixup_device(enum pci_fixup_pass pass, struct pci_dev *dev) {}
 #endif