diff options
Diffstat (limited to 'arch/arm/mach-ixp23xx')
-rw-r--r-- | arch/arm/mach-ixp23xx/espresso.c | 9 | ||||
-rw-r--r-- | arch/arm/mach-ixp23xx/pci.c | 18 |
2 files changed, 26 insertions, 1 deletions
diff --git a/arch/arm/mach-ixp23xx/espresso.c b/arch/arm/mach-ixp23xx/espresso.c index 2327c9790416..bf688c128630 100644 --- a/arch/arm/mach-ixp23xx/espresso.c +++ b/arch/arm/mach-ixp23xx/espresso.c | |||
@@ -44,6 +44,15 @@ | |||
44 | #include <asm/mach/irq.h> | 44 | #include <asm/mach/irq.h> |
45 | #include <asm/mach/pci.h> | 45 | #include <asm/mach/pci.h> |
46 | 46 | ||
47 | static int __init espresso_pci_init(void) | ||
48 | { | ||
49 | if (machine_is_espresso()) | ||
50 | ixp23xx_pci_slave_init(); | ||
51 | |||
52 | return 0; | ||
53 | }; | ||
54 | subsys_initcall(espresso_pci_init); | ||
55 | |||
47 | static void __init espresso_init(void) | 56 | static void __init espresso_init(void) |
48 | { | 57 | { |
49 | physmap_configure(0x90000000, 0x02000000, 2, NULL); | 58 | physmap_configure(0x90000000, 0x02000000, 2, NULL); |
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 | } | ||