diff options
Diffstat (limited to 'arch/arm/mach-ixp23xx/pci.c')
| -rw-r--r-- | arch/arm/mach-ixp23xx/pci.c | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/arch/arm/mach-ixp23xx/pci.c b/arch/arm/mach-ixp23xx/pci.c index 5330ad78c1bb..ac72f94c5b4d 100644 --- a/arch/arm/mach-ixp23xx/pci.c +++ b/arch/arm/mach-ixp23xx/pci.c | |||
| @@ -201,7 +201,7 @@ int clear_master_aborts(void) | |||
| 201 | return 0; | 201 | return 0; |
| 202 | } | 202 | } |
| 203 | 203 | ||
| 204 | void __init ixp23xx_pci_preinit(void) | 204 | static void __init ixp23xx_pci_common_init(void) |
| 205 | { | 205 | { |
| 206 | #ifdef __ARMEB__ | 206 | #ifdef __ARMEB__ |
| 207 | *IXP23XX_PCI_CONTROL |= 0x20000; /* set I/O swapping */ | 207 | *IXP23XX_PCI_CONTROL |= 0x20000; /* set I/O swapping */ |
| @@ -219,7 +219,18 @@ void __init ixp23xx_pci_preinit(void) | |||
| 219 | *IXP23XX_PCI_CPP_ADDR_BITS &= ~(1 << 1); | 219 | *IXP23XX_PCI_CPP_ADDR_BITS &= ~(1 << 1); |
| 220 | } else { | 220 | } else { |
| 221 | *IXP23XX_PCI_CPP_ADDR_BITS |= (1 << 1); | 221 | *IXP23XX_PCI_CPP_ADDR_BITS |= (1 << 1); |
| 222 | |||
| 223 | /* | ||
| 224 | * Enable coherency on A2 silicon. | ||
| 225 | */ | ||
| 226 | if (arch_is_coherent()) | ||
| 227 | *IXP23XX_CPP2XSI_CURR_XFER_REG3 &= ~IXP23XX_CPP2XSI_COH_OFF; | ||
| 222 | } | 228 | } |
| 229 | } | ||
| 230 | |||
| 231 | void __init ixp23xx_pci_preinit(void) | ||
| 232 | { | ||
| 233 | ixp23xx_pci_common_init(); | ||
| 223 | 234 | ||
| 224 | hook_fault_code(16+6, ixp23xx_pci_abort_handler, SIGBUS, | 235 | hook_fault_code(16+6, ixp23xx_pci_abort_handler, SIGBUS, |
| 225 | "PCI config cycle to non-existent device"); | 236 | "PCI config cycle to non-existent device"); |
| @@ -273,3 +284,8 @@ int ixp23xx_pci_setup(int nr, struct pci_sys_data *sys) | |||
| 273 | 284 | ||
| 274 | return 1; | 285 | return 1; |
| 275 | } | 286 | } |
| 287 | |||
| 288 | void ixp23xx_pci_slave_init(void) | ||
| 289 | { | ||
| 290 | ixp23xx_pci_common_init(); | ||
| 291 | } | ||
