[ARM] 3334/1: Add support for IXDP28x5 platforms
Deepak Saxena [Mon, 20 Mar 2006 17:10:08 +0000 (17:10 +0000)]
Patch from Deepak Saxena

This patch adds support for Intel's IXDP28x5 platform. This
is just and IXDP2801 with a new CPU rev but the bootloader
has been updated to reflect a new machine ID so we just build
support for it by default when we build IXDP2801.

Signed-off-by: Deepak Saxena <dsaxena@plexity.net>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>

arch/arm/mach-ixp2000/Kconfig
arch/arm/mach-ixp2000/ixdp2x01.c
include/asm-arm/arch-ixp2000/system.h

index ecb58d8..86f53f8 100644 (file)
@@ -43,12 +43,17 @@ config ARCH_IXDP2401
          this platform, see <file:Documentation/arm/IXP2000>.
 
 config ARCH_IXDP2801
-       bool "Support Intel IXDP2801"
+       bool "Support Intel IXDP2801 and IXDP28x5"
        help
          Say 'Y' here if you want your kernel to support the Intel
-         IXDP2801 reference platform. For more information on
+         IXDP2801/2805/2855 reference platforms. For more information on
          this platform, see <file:Documentation/arm/IXP2000>.
 
+config MACH_IXDP28X5
+       bool
+       depends on ARCH_IXDP2801
+       default y
+
 config ARCH_IXDP2X01
        bool
        depends on ARCH_IXDP2401 || ARCH_IXDP2801
index 150519f..f9d4968 100644 (file)
@@ -284,7 +284,7 @@ static int ixdp2x01_pci_setup(int nr, struct pci_sys_data *sys)
 {
        sys->mem_offset = 0xe0000000;
 
-       if (machine_is_ixdp2801())
+       if (machine_is_ixdp2801() || machine_is_ixdp28x5())
                sys->mem_offset -= ((*IXP2000_PCI_ADDR_EXT & 0xE000) << 16);
 
        return ixp2000_pci_setup(nr, sys);
@@ -300,7 +300,8 @@ struct hw_pci ixdp2x01_pci __initdata = {
 
 int __init ixdp2x01_pci_init(void)
 {
-       if (machine_is_ixdp2401() || machine_is_ixdp2801())
+       if (machine_is_ixdp2401() || machine_is_ixdp2801() ||\
+               machine_is_ixdp28x5())
                pci_common_init(&ixdp2x01_pci);
 
        return 0;
@@ -400,6 +401,21 @@ MACHINE_START(IXDP2801, "Intel IXDP2801 Development Platform")
        .timer          = &ixdp2x01_timer,
        .init_machine   = ixdp2x01_init_machine,
 MACHINE_END
+
+/*
+ * IXDP28x5 is basically an IXDP2801 with a different CPU but Intel
+ * changed the machine ID in the bootloader
+ */
+MACHINE_START(IXDP28X5, "Intel IXDP2805/2855 Development Platform")
+       /* Maintainer: MontaVista Software, Inc. */
+       .phys_io        = IXP2000_UART_PHYS_BASE,
+       .io_pg_offst    = ((IXP2000_UART_VIRT_BASE) >> 18) & 0xfffc,
+       .boot_params    = 0x00000100,
+       .map_io         = ixdp2x01_map_io,
+       .init_irq       = ixdp2x01_init_irq,
+       .timer          = &ixdp2x01_timer,
+       .init_machine   = ixdp2x01_init_machine,
+MACHINE_END
 #endif
 
 
index ddbbb34..3cc9a04 100644 (file)
@@ -37,7 +37,7 @@ static inline void arch_reset(char mode)
         * to cause a complete reset of the CPU and all external devices
         * and move the flash bank register back to 0.
         */
-       if (machine_is_ixdp2801()) {
+       if (machine_is_ixdp2801() || machine_is_ixdp28x5()) {
                unsigned long reset_reg = *IXDP2X01_CPLD_RESET_REG;
 
                reset_reg = 0x55AA0000 | (reset_reg & 0x0000FFFF);