sh: add st16c2550 devices to se7343
Magnus Damm [Thu, 4 Dec 2008 09:00:11 +0000 (18:00 +0900)]
Add 8250 platform data to setup the ST16C2550C chip on se7343.

Signed-off-by: Magnus Damm <damm@igel.co.jp>
Signed-off-by: Paul Mundt <lethal@linux-sh.org>

arch/sh/boards/mach-se/7343/setup.c
arch/sh/include/mach-se/mach/se7343.h

index 9308660..69dac91 100644 (file)
@@ -1,6 +1,8 @@
 #include <linux/init.h>
 #include <linux/platform_device.h>
 #include <linux/mtd/physmap.h>
+#include <linux/serial_8250.h>
+#include <linux/serial_reg.h>
 #include <asm/machvec.h>
 #include <mach-se/mach/se7343.h>
 #include <asm/heartbeat.h>
@@ -94,10 +96,41 @@ static struct platform_device nor_flash_device = {
        .resource       = nor_flash_resources,
 };
 
+#define ST16C2550C_FLAGS (UPF_BOOT_AUTOCONF | UPF_IOREMAP)
+
+static struct plat_serial8250_port serial_platform_data[] = {
+       [0] = {
+               .iotype         = UPIO_MEM,
+               .mapbase        = 0x16000000,
+               .regshift       = 1,
+               .flags          = ST16C2550C_FLAGS,
+               .irq            = UARTA_IRQ,
+               .uartclk        = 7372800,
+       },
+       [1] = {
+               .iotype         = UPIO_MEM,
+               .mapbase        = 0x17000000,
+               .regshift       = 1,
+               .flags          = ST16C2550C_FLAGS,
+               .irq            = UARTB_IRQ,
+               .uartclk        = 7372800,
+       },
+       { },
+};
+
+static struct platform_device uart_device = {
+       .name                   = "serial8250",
+       .id                     = PLAT8250_DEV_PLATFORM,
+       .dev                    = {
+               .platform_data  = serial_platform_data,
+       },
+};
+
 static struct platform_device *sh7343se_platform_devices[] __initdata = {
        &smc91x_device,
        &heartbeat_device,
        &nor_flash_device,
+       &uart_device,
 };
 
 static int __init sh7343se_devices_setup(void)
index 9845846..798d851 100644 (file)
 #define SE7343_FPGA_IRQ_MRSHPC3        3
 #define SE7343_FPGA_IRQ_SMC    6       /* EXT_IRQ2 */
 #define SE7343_FPGA_IRQ_USB    8
+#define SE7343_FPGA_IRQ_UARTA  10
+#define SE7343_FPGA_IRQ_UARTB  11
 
-#define SE7343_FPGA_IRQ_NR     11
+#define SE7343_FPGA_IRQ_NR     12
 #define SE7343_FPGA_IRQ_BASE   120
 
 #define MRSHPC_IRQ3            (SE7343_FPGA_IRQ_BASE + SE7343_FPGA_IRQ_MRSHPC3)
 #define MRSHPC_IRQ0            (SE7343_FPGA_IRQ_BASE + SE7343_FPGA_IRQ_MRSHPC0)
 #define SMC_IRQ                (SE7343_FPGA_IRQ_BASE + SE7343_FPGA_IRQ_SMC)
 #define USB_IRQ                (SE7343_FPGA_IRQ_BASE + SE7343_FPGA_IRQ_USB)
+#define UARTA_IRQ      (SE7343_FPGA_IRQ_BASE + SE7343_FPGA_IRQ_UARTA)
+#define UARTB_IRQ      (SE7343_FPGA_IRQ_BASE + SE7343_FPGA_IRQ_UARTB)
 
 /* arch/sh/boards/se/7343/irq.c */
 void init_7343se_IRQ(void);