linux 2.6.16.38 w/ vs2.0.3-rc1
[linux-2.6.git] / arch / arm / mach-ixp2000 / ixdp2x01.c
index 7f42366..150519f 100644 (file)
@@ -15,6 +15,7 @@
  *  option) any later version.
  */
 
+#include <linux/config.h>
 #include <linux/kernel.h>
 #include <linux/init.h>
 #include <linux/mm.h>
@@ -29,7 +30,6 @@
 #include <linux/tty.h>
 #include <linux/serial_core.h>
 #include <linux/platform_device.h>
-#include <linux/serial_8250.h>
 
 #include <asm/io.h>
 #include <asm/irq.h>
@@ -127,12 +127,12 @@ void __init ixdp2x01_init_irq(void)
        }
 
        /* Hook into PCI interrupts */
-       set_irq_chained_handler(IRQ_IXP2000_PCIB, ixdp2x01_irq_handler);
+       set_irq_chained_handler(IRQ_IXP2000_PCIB, &ixdp2x01_irq_handler);
 }
 
 
 /*************************************************************************
- * IXDP2x01 memory map
+ * IXDP2x01 memory map and serial ports
  *************************************************************************/
 static struct map_desc ixdp2x01_io_desc __initdata = {
        .virtual        = IXDP2X01_VIRT_CPLD_BASE, 
@@ -141,78 +141,40 @@ static struct map_desc ixdp2x01_io_desc __initdata = {
        .type           = MT_DEVICE
 };
 
-static void __init ixdp2x01_map_io(void)
-{
-       ixp2000_map_io();
-       iotable_init(&ixdp2x01_io_desc, 1);
-}
-
-
-/*************************************************************************
- * IXDP2x01 serial ports
- *************************************************************************/
-static struct plat_serial8250_port ixdp2x01_serial_port1[] = {
+static struct uart_port ixdp2x01_serial_ports[2] = {
        {
+               .membase        = (char *)(IXDP2X01_UART1_VIRT_BASE),
                .mapbase        = (unsigned long)IXDP2X01_UART1_PHYS_BASE,
-               .membase        = (char *)IXDP2X01_UART1_VIRT_BASE,
                .irq            = IRQ_IXDP2X01_UART1,
-               .flags          = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST,
+               .flags          = UPF_SKIP_TEST,
                .iotype         = UPIO_MEM32,
                .regshift       = 2,
                .uartclk        = IXDP2X01_UART_CLK,
-       },
-       { }
-};
-
-static struct resource ixdp2x01_uart_resource1 = {
-       .start          = IXDP2X01_UART1_PHYS_BASE,
-       .end            = IXDP2X01_UART1_PHYS_BASE + 0xffff,
-       .flags          = IORESOURCE_MEM,
-};
-
-static struct platform_device ixdp2x01_serial_device1 = {
-       .name           = "serial8250",
-       .id             = PLAT8250_DEV_PLATFORM1,
-       .dev            = {
-               .platform_data          = ixdp2x01_serial_port1,
-       },
-       .num_resources  = 1,
-       .resource       = &ixdp2x01_uart_resource1,
-};
-
-static struct plat_serial8250_port ixdp2x01_serial_port2[] = {
-       {
+               .line           = 1,
+               .type           = PORT_16550A,
+               .fifosize       = 16
+       }, {
+               .membase        = (char *)(IXDP2X01_UART2_VIRT_BASE),
                .mapbase        = (unsigned long)IXDP2X01_UART2_PHYS_BASE,
-               .membase        = (char *)IXDP2X01_UART2_VIRT_BASE,
                .irq            = IRQ_IXDP2X01_UART2,
-               .flags          = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST,
+               .flags          = UPF_SKIP_TEST,
                .iotype         = UPIO_MEM32,
                .regshift       = 2,
                .uartclk        = IXDP2X01_UART_CLK,
+               .line           = 2,
+               .type           = PORT_16550A,
+               .fifosize       = 16
        }, 
-       { }
 };
 
-static struct resource ixdp2x01_uart_resource2 = {
-       .start          = IXDP2X01_UART2_PHYS_BASE,
-       .end            = IXDP2X01_UART2_PHYS_BASE + 0xffff,
-       .flags          = IORESOURCE_MEM,
-};
+static void __init ixdp2x01_map_io(void)
+{
+       ixp2000_map_io();       
 
-static struct platform_device ixdp2x01_serial_device2 = {
-       .name           = "serial8250",
-       .id             = PLAT8250_DEV_PLATFORM2,
-       .dev            = {
-               .platform_data          = ixdp2x01_serial_port2,
-       },
-       .num_resources  = 1,
-       .resource       = &ixdp2x01_uart_resource2,
-};
+       iotable_init(&ixdp2x01_io_desc, 1);
 
-static void ixdp2x01_uart_init(void)
-{
-       platform_device_register(&ixdp2x01_serial_device1);
-       platform_device_register(&ixdp2x01_serial_device2);
+       early_serial_setup(&ixdp2x01_serial_ports[0]);
+       early_serial_setup(&ixdp2x01_serial_ports[1]);
 }
 
 
@@ -322,7 +284,7 @@ static int ixdp2x01_pci_setup(int nr, struct pci_sys_data *sys)
 {
        sys->mem_offset = 0xe0000000;
 
-       if (machine_is_ixdp2801() || machine_is_ixdp28x5())
+       if (machine_is_ixdp2801())
                sys->mem_offset -= ((*IXP2000_PCI_ADDR_EXT & 0xE000) << 16);
 
        return ixp2000_pci_setup(nr, sys);
@@ -338,8 +300,7 @@ struct hw_pci ixdp2x01_pci __initdata = {
 
 int __init ixdp2x01_pci_init(void)
 {
-       if (machine_is_ixdp2401() || machine_is_ixdp2801() ||\
-               machine_is_ixdp28x5())
+       if (machine_is_ixdp2401() || machine_is_ixdp2801())
                pci_common_init(&ixdp2x01_pci);
 
        return 0;
@@ -412,7 +373,6 @@ static void __init ixdp2x01_init_machine(void)
 
        platform_add_devices(ixdp2x01_devices, ARRAY_SIZE(ixdp2x01_devices));
        ixp2000_uart_init();
-       ixdp2x01_uart_init();
 }
 
 
@@ -440,21 +400,6 @@ 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