diff options
Diffstat (limited to 'arch/powerpc/platforms/powermac/pci.c')
-rw-r--r-- | arch/powerpc/platforms/powermac/pci.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/arch/powerpc/platforms/powermac/pci.c b/arch/powerpc/platforms/powermac/pci.c index ec49099830d5..f852ae3e0ee4 100644 --- a/arch/powerpc/platforms/powermac/pci.c +++ b/arch/powerpc/platforms/powermac/pci.c | |||
@@ -1243,15 +1243,22 @@ void pmac_pci_fixup_pciata(struct pci_dev* dev) | |||
1243 | good: | 1243 | good: |
1244 | pci_read_config_byte(dev, PCI_CLASS_PROG, &progif); | 1244 | pci_read_config_byte(dev, PCI_CLASS_PROG, &progif); |
1245 | if ((progif & 5) != 5) { | 1245 | if ((progif & 5) != 5) { |
1246 | printk(KERN_INFO "Forcing PCI IDE into native mode: %s\n", | 1246 | printk(KERN_INFO "PCI: %s Forcing PCI IDE into native mode\n", |
1247 | pci_name(dev)); | 1247 | pci_name(dev)); |
1248 | (void) pci_write_config_byte(dev, PCI_CLASS_PROG, progif|5); | 1248 | (void) pci_write_config_byte(dev, PCI_CLASS_PROG, progif|5); |
1249 | if (pci_read_config_byte(dev, PCI_CLASS_PROG, &progif) || | 1249 | if (pci_read_config_byte(dev, PCI_CLASS_PROG, &progif) || |
1250 | (progif & 5) != 5) | 1250 | (progif & 5) != 5) |
1251 | printk(KERN_ERR "Rewrite of PROGIF failed !\n"); | 1251 | printk(KERN_ERR "Rewrite of PROGIF failed !\n"); |
1252 | else { | ||
1253 | /* Clear IO BARs, they will be reassigned */ | ||
1254 | pci_write_config_dword(dev, PCI_BASE_ADDRESS_0, 0); | ||
1255 | pci_write_config_dword(dev, PCI_BASE_ADDRESS_1, 0); | ||
1256 | pci_write_config_dword(dev, PCI_BASE_ADDRESS_2, 0); | ||
1257 | pci_write_config_dword(dev, PCI_BASE_ADDRESS_3, 0); | ||
1258 | } | ||
1252 | } | 1259 | } |
1253 | } | 1260 | } |
1254 | DECLARE_PCI_FIXUP_FINAL(PCI_ANY_ID, PCI_ANY_ID, pmac_pci_fixup_pciata); | 1261 | DECLARE_PCI_FIXUP_EARLY(PCI_ANY_ID, PCI_ANY_ID, pmac_pci_fixup_pciata); |
1255 | #endif | 1262 | #endif |
1256 | 1263 | ||
1257 | /* | 1264 | /* |