diff options
Diffstat (limited to 'arch/arm/mach-ixp2000/pci.c')
-rw-r--r-- | arch/arm/mach-ixp2000/pci.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/arch/arm/mach-ixp2000/pci.c b/arch/arm/mach-ixp2000/pci.c index 5ff2f2718c58..0788fb2b5c10 100644 --- a/arch/arm/mach-ixp2000/pci.c +++ b/arch/arm/mach-ixp2000/pci.c | |||
@@ -198,6 +198,19 @@ clear_master_aborts(void) | |||
198 | void __init | 198 | void __init |
199 | ixp2000_pci_preinit(void) | 199 | ixp2000_pci_preinit(void) |
200 | { | 200 | { |
201 | #ifndef CONFIG_IXP2000_SUPPORT_BROKEN_PCI_IO | ||
202 | /* | ||
203 | * Configure the PCI unit to properly byteswap I/O transactions, | ||
204 | * and verify that it worked. | ||
205 | */ | ||
206 | ixp2000_reg_write(IXP2000_PCI_CONTROL, | ||
207 | (*IXP2000_PCI_CONTROL | PCI_CONTROL_IEE)); | ||
208 | |||
209 | if ((*IXP2000_PCI_CONTROL & PCI_CONTROL_IEE) == 0) | ||
210 | panic("IXP2000: PCI I/O is broken on this ixp model, and " | ||
211 | "the needed workaround has not been configured in"); | ||
212 | #endif | ||
213 | |||
201 | hook_fault_code(16+6, ixp2000_pci_abort_handler, SIGBUS, | 214 | hook_fault_code(16+6, ixp2000_pci_abort_handler, SIGBUS, |
202 | "PCI config cycle to non-existent device"); | 215 | "PCI config cycle to non-existent device"); |
203 | } | 216 | } |