1 /* linux/arch/arm/plat-s5pc1xx/dev-uart.c
3 * Copyright 2009 Samsung Electronics Co.
4 * Byungho Min <bhmin@samsung.com>
6 * Based on plat-s3c64xx/dev-uart.c
8 * This program is free software; you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License version 2 as
10 * published by the Free Software Foundation.
14 #include <linux/kernel.h>
15 #include <linux/types.h>
16 #include <linux/interrupt.h>
17 #include <linux/list.h>
18 #include <linux/platform_device.h>
20 #include <asm/mach/arch.h>
21 #include <asm/mach/irq.h>
22 #include <mach/hardware.h>
25 #include <plat/devs.h>
27 /* Serial port registrations */
29 /* 64xx uarts are closer together */
31 static struct resource s5pc1xx_uart0_resource
[] = {
33 .start
= S3C_PA_UART0
,
34 .end
= S3C_PA_UART0
+ 0x100,
35 .flags
= IORESOURCE_MEM
,
38 .start
= IRQ_S3CUART_RX0
,
39 .end
= IRQ_S3CUART_RX0
,
40 .flags
= IORESOURCE_IRQ
,
43 .start
= IRQ_S3CUART_TX0
,
44 .end
= IRQ_S3CUART_TX0
,
45 .flags
= IORESOURCE_IRQ
,
49 .start
= IRQ_S3CUART_ERR0
,
50 .end
= IRQ_S3CUART_ERR0
,
51 .flags
= IORESOURCE_IRQ
,
55 static struct resource s5pc1xx_uart1_resource
[] = {
57 .start
= S3C_PA_UART1
,
58 .end
= S3C_PA_UART1
+ 0x100,
59 .flags
= IORESOURCE_MEM
,
62 .start
= IRQ_S3CUART_RX1
,
63 .end
= IRQ_S3CUART_RX1
,
64 .flags
= IORESOURCE_IRQ
,
67 .start
= IRQ_S3CUART_TX1
,
68 .end
= IRQ_S3CUART_TX1
,
69 .flags
= IORESOURCE_IRQ
,
73 .start
= IRQ_S3CUART_ERR1
,
74 .end
= IRQ_S3CUART_ERR1
,
75 .flags
= IORESOURCE_IRQ
,
79 static struct resource s5pc1xx_uart2_resource
[] = {
81 .start
= S3C_PA_UART2
,
82 .end
= S3C_PA_UART2
+ 0x100,
83 .flags
= IORESOURCE_MEM
,
86 .start
= IRQ_S3CUART_RX2
,
87 .end
= IRQ_S3CUART_RX2
,
88 .flags
= IORESOURCE_IRQ
,
91 .start
= IRQ_S3CUART_TX2
,
92 .end
= IRQ_S3CUART_TX2
,
93 .flags
= IORESOURCE_IRQ
,
97 .start
= IRQ_S3CUART_ERR2
,
98 .end
= IRQ_S3CUART_ERR2
,
99 .flags
= IORESOURCE_IRQ
,
103 static struct resource s5pc1xx_uart3_resource
[] = {
105 .start
= S3C_PA_UART3
,
106 .end
= S3C_PA_UART3
+ 0x100,
107 .flags
= IORESOURCE_MEM
,
110 .start
= IRQ_S3CUART_RX3
,
111 .end
= IRQ_S3CUART_RX3
,
112 .flags
= IORESOURCE_IRQ
,
115 .start
= IRQ_S3CUART_TX3
,
116 .end
= IRQ_S3CUART_TX3
,
117 .flags
= IORESOURCE_IRQ
,
121 .start
= IRQ_S3CUART_ERR3
,
122 .end
= IRQ_S3CUART_ERR3
,
123 .flags
= IORESOURCE_IRQ
,
128 struct s3c24xx_uart_resources s5pc1xx_uart_resources
[] __initdata
= {
130 .resources
= s5pc1xx_uart0_resource
,
131 .nr_resources
= ARRAY_SIZE(s5pc1xx_uart0_resource
),
134 .resources
= s5pc1xx_uart1_resource
,
135 .nr_resources
= ARRAY_SIZE(s5pc1xx_uart1_resource
),
138 .resources
= s5pc1xx_uart2_resource
,
139 .nr_resources
= ARRAY_SIZE(s5pc1xx_uart2_resource
),
142 .resources
= s5pc1xx_uart3_resource
,
143 .nr_resources
= ARRAY_SIZE(s5pc1xx_uart3_resource
),
149 static struct platform_device s3c24xx_uart_device0
= {
153 static struct platform_device s3c24xx_uart_device1
= {
157 static struct platform_device s3c24xx_uart_device2
= {
161 static struct platform_device s3c24xx_uart_device3
= {
165 struct platform_device
*s3c24xx_uart_src
[4] = {
166 &s3c24xx_uart_device0
,
167 &s3c24xx_uart_device1
,
168 &s3c24xx_uart_device2
,
169 &s3c24xx_uart_device3
,
172 struct platform_device
*s3c24xx_uart_devs
[4] = {