aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/arm/mach-ixp2000/Kconfig9
-rw-r--r--arch/arm/mach-ixp2000/ixdp2x01.c20
-rw-r--r--include/asm-arm/arch-ixp2000/system.h2
3 files changed, 26 insertions, 5 deletions
diff --git a/arch/arm/mach-ixp2000/Kconfig b/arch/arm/mach-ixp2000/Kconfig
index ecb58d83478e..86f53f8ccbf5 100644
--- a/arch/arm/mach-ixp2000/Kconfig
+++ b/arch/arm/mach-ixp2000/Kconfig
@@ -43,12 +43,17 @@ config ARCH_IXDP2401
43 this platform, see <file:Documentation/arm/IXP2000>. 43 this platform, see <file:Documentation/arm/IXP2000>.
44 44
45config ARCH_IXDP2801 45config ARCH_IXDP2801
46 bool "Support Intel IXDP2801" 46 bool "Support Intel IXDP2801 and IXDP28x5"
47 help 47 help
48 Say 'Y' here if you want your kernel to support the Intel 48 Say 'Y' here if you want your kernel to support the Intel
49 IXDP2801 reference platform. For more information on 49 IXDP2801/2805/2855 reference platforms. For more information on
50 this platform, see <file:Documentation/arm/IXP2000>. 50 this platform, see <file:Documentation/arm/IXP2000>.
51 51
52config MACH_IXDP28X5
53 bool
54 depends on ARCH_IXDP2801
55 default y
56
52config ARCH_IXDP2X01 57config ARCH_IXDP2X01
53 bool 58 bool
54 depends on ARCH_IXDP2401 || ARCH_IXDP2801 59 depends on ARCH_IXDP2401 || ARCH_IXDP2801
diff --git a/arch/arm/mach-ixp2000/ixdp2x01.c b/arch/arm/mach-ixp2000/ixdp2x01.c
index 150519fb38ec..f9d4968c1d66 100644
--- a/arch/arm/mach-ixp2000/ixdp2x01.c
+++ b/arch/arm/mach-ixp2000/ixdp2x01.c
@@ -284,7 +284,7 @@ static int ixdp2x01_pci_setup(int nr, struct pci_sys_data *sys)
284{ 284{
285 sys->mem_offset = 0xe0000000; 285 sys->mem_offset = 0xe0000000;
286 286
287 if (machine_is_ixdp2801()) 287 if (machine_is_ixdp2801() || machine_is_ixdp28x5())
288 sys->mem_offset -= ((*IXP2000_PCI_ADDR_EXT & 0xE000) << 16); 288 sys->mem_offset -= ((*IXP2000_PCI_ADDR_EXT & 0xE000) << 16);
289 289
290 return ixp2000_pci_setup(nr, sys); 290 return ixp2000_pci_setup(nr, sys);
@@ -300,7 +300,8 @@ struct hw_pci ixdp2x01_pci __initdata = {
300 300
301int __init ixdp2x01_pci_init(void) 301int __init ixdp2x01_pci_init(void)
302{ 302{
303 if (machine_is_ixdp2401() || machine_is_ixdp2801()) 303 if (machine_is_ixdp2401() || machine_is_ixdp2801() ||\
304 machine_is_ixdp28x5())
304 pci_common_init(&ixdp2x01_pci); 305 pci_common_init(&ixdp2x01_pci);
305 306
306 return 0; 307 return 0;
@@ -400,6 +401,21 @@ MACHINE_START(IXDP2801, "Intel IXDP2801 Development Platform")
400 .timer = &ixdp2x01_timer, 401 .timer = &ixdp2x01_timer,
401 .init_machine = ixdp2x01_init_machine, 402 .init_machine = ixdp2x01_init_machine,
402MACHINE_END 403MACHINE_END
404
405/*
406 * IXDP28x5 is basically an IXDP2801 with a different CPU but Intel
407 * changed the machine ID in the bootloader
408 */
409MACHINE_START(IXDP28X5, "Intel IXDP2805/2855 Development Platform")
410 /* Maintainer: MontaVista Software, Inc. */
411 .phys_io = IXP2000_UART_PHYS_BASE,
412 .io_pg_offst = ((IXP2000_UART_VIRT_BASE) >> 18) & 0xfffc,
413 .boot_params = 0x00000100,
414 .map_io = ixdp2x01_map_io,
415 .init_irq = ixdp2x01_init_irq,
416 .timer = &ixdp2x01_timer,
417 .init_machine = ixdp2x01_init_machine,
418MACHINE_END
403#endif 419#endif
404 420
405 421
diff --git a/include/asm-arm/arch-ixp2000/system.h b/include/asm-arm/arch-ixp2000/system.h
index ddbbb34b5f95..3cc9a04f68cb 100644
--- a/include/asm-arm/arch-ixp2000/system.h
+++ b/include/asm-arm/arch-ixp2000/system.h
@@ -37,7 +37,7 @@ static inline void arch_reset(char mode)
37 * to cause a complete reset of the CPU and all external devices 37 * to cause a complete reset of the CPU and all external devices
38 * and move the flash bank register back to 0. 38 * and move the flash bank register back to 0.
39 */ 39 */
40 if (machine_is_ixdp2801()) { 40 if (machine_is_ixdp2801() || machine_is_ixdp28x5()) {
41 unsigned long reset_reg = *IXDP2X01_CPLD_RESET_REG; 41 unsigned long reset_reg = *IXDP2X01_CPLD_RESET_REG;
42 42
43 reset_reg = 0x55AA0000 | (reset_reg & 0x0000FFFF); 43 reset_reg = 0x55AA0000 | (reset_reg & 0x0000FFFF);