powerpc: Fix IDE legacy vs. native fixups
PowerMac and CHRP/BriQ platforms have quirks to switch some IDE controllers from legacy mode to fully native mode. Those quirks however will not work properly anymore due to a change to the generic code to better handle legacy IDE resources. This fixes it by moving those quirk to "early" quirks (so they run before resources are probed for the devices) and clearing all BARs after the conversion to force a reallocation of sane values. Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org> Acked-by: Alan Cox <alan@redhat.com> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
committed by
Linus Torvalds
parent
7fd272550b
commit
6d98bda79b
@@ -1243,15 +1243,22 @@ void pmac_pci_fixup_pciata(struct pci_dev* dev)
|
||||
good:
|
||||
pci_read_config_byte(dev, PCI_CLASS_PROG, &progif);
|
||||
if ((progif & 5) != 5) {
|
||||
printk(KERN_INFO "Forcing PCI IDE into native mode: %s\n",
|
||||
printk(KERN_INFO "PCI: %s Forcing PCI IDE into native mode\n",
|
||||
pci_name(dev));
|
||||
(void) pci_write_config_byte(dev, PCI_CLASS_PROG, progif|5);
|
||||
if (pci_read_config_byte(dev, PCI_CLASS_PROG, &progif) ||
|
||||
(progif & 5) != 5)
|
||||
printk(KERN_ERR "Rewrite of PROGIF failed !\n");
|
||||
else {
|
||||
/* Clear IO BARs, they will be reassigned */
|
||||
pci_write_config_dword(dev, PCI_BASE_ADDRESS_0, 0);
|
||||
pci_write_config_dword(dev, PCI_BASE_ADDRESS_1, 0);
|
||||
pci_write_config_dword(dev, PCI_BASE_ADDRESS_2, 0);
|
||||
pci_write_config_dword(dev, PCI_BASE_ADDRESS_3, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
DECLARE_PCI_FIXUP_FINAL(PCI_ANY_ID, PCI_ANY_ID, pmac_pci_fixup_pciata);
|
||||
DECLARE_PCI_FIXUP_EARLY(PCI_ANY_ID, PCI_ANY_ID, pmac_pci_fixup_pciata);
|
||||
#endif
|
||||
|
||||
/*
|
||||
|
Reference in New Issue
Block a user