upload tizen1.0 source
[kernel/linux-2.6.36.git] / arch / arm / plat-s5p / dev-uart.c
1 /* linux/arch/arm/plat-s5p/dev-uart.c
2  *
3  * Copyright (c) 2009 Samsung Electronics Co., Ltd.
4  *              http://www.samsung.com/
5  *
6  * Base S5P UART resource and device definitions
7  *
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.
11 */
12
13 #include <linux/kernel.h>
14 #include <linux/types.h>
15 #include <linux/interrupt.h>
16 #include <linux/list.h>
17 #include <linux/platform_device.h>
18
19 #include <asm/mach/arch.h>
20 #include <asm/mach/irq.h>
21 #include <mach/hardware.h>
22 #include <mach/map.h>
23
24 #include <plat/devs.h>
25
26  /* Serial port registrations */
27
28 static struct resource s5p_uart0_resource[] = {
29         [0] = {
30                 .start  = S5P_PA_UART0,
31                 .end    = S5P_PA_UART0 + S5P_SZ_UART - 1,
32                 .flags  = IORESOURCE_MEM,
33         },
34         [1] = {
35                 .start  = IRQ_S5P_UART_RX0,
36                 .end    = IRQ_S5P_UART_RX0,
37                 .flags  = IORESOURCE_IRQ,
38         },
39         [2] = {
40                 .start  = IRQ_S5P_UART_TX0,
41                 .end    = IRQ_S5P_UART_TX0,
42                 .flags  = IORESOURCE_IRQ,
43         },
44         [3] = {
45                 .start  = IRQ_S5P_UART_ERR0,
46                 .end    = IRQ_S5P_UART_ERR0,
47                 .flags  = IORESOURCE_IRQ,
48         }
49 };
50
51 static struct resource s5p_uart1_resource[] = {
52         [0] = {
53                 .start  = S5P_PA_UART1,
54                 .end    = S5P_PA_UART1 + S5P_SZ_UART - 1,
55                 .flags  = IORESOURCE_MEM,
56         },
57         [1] = {
58                 .start  = IRQ_S5P_UART_RX1,
59                 .end    = IRQ_S5P_UART_RX1,
60                 .flags  = IORESOURCE_IRQ,
61         },
62         [2] = {
63                 .start  = IRQ_S5P_UART_TX1,
64                 .end    = IRQ_S5P_UART_TX1,
65                 .flags  = IORESOURCE_IRQ,
66         },
67         [3] = {
68                 .start  = IRQ_S5P_UART_ERR1,
69                 .end    = IRQ_S5P_UART_ERR1,
70                 .flags  = IORESOURCE_IRQ,
71         },
72 };
73
74 static struct resource s5p_uart2_resource[] = {
75         [0] = {
76                 .start  = S5P_PA_UART2,
77                 .end    = S5P_PA_UART2 + S5P_SZ_UART - 1,
78                 .flags  = IORESOURCE_MEM,
79         },
80         [1] = {
81                 .start  = IRQ_S5P_UART_RX2,
82                 .end    = IRQ_S5P_UART_RX2,
83                 .flags  = IORESOURCE_IRQ,
84         },
85         [2] = {
86                 .start  = IRQ_S5P_UART_TX2,
87                 .end    = IRQ_S5P_UART_TX2,
88                 .flags  = IORESOURCE_IRQ,
89         },
90         [3] = {
91                 .start  = IRQ_S5P_UART_ERR2,
92                 .end    = IRQ_S5P_UART_ERR2,
93                 .flags  = IORESOURCE_IRQ,
94         },
95 };
96
97 #if CONFIG_SERIAL_SAMSUNG_UARTS > 3
98 static struct resource s5p_uart3_resource[] = {
99         [0] = {
100                 .start  = S5P_PA_UART3,
101                 .end    = S5P_PA_UART3 + S5P_SZ_UART - 1,
102                 .flags  = IORESOURCE_MEM,
103         },
104         [1] = {
105                 .start  = IRQ_S5P_UART_RX3,
106                 .end    = IRQ_S5P_UART_RX3,
107                 .flags  = IORESOURCE_IRQ,
108         },
109         [2] = {
110                 .start  = IRQ_S5P_UART_TX3,
111                 .end    = IRQ_S5P_UART_TX3,
112                 .flags  = IORESOURCE_IRQ,
113         },
114         [3] = {
115                 .start  = IRQ_S5P_UART_ERR3,
116                 .end    = IRQ_S5P_UART_ERR3,
117                 .flags  = IORESOURCE_IRQ,
118         },
119 };
120 #endif
121
122 #if CONFIG_SERIAL_SAMSUNG_UARTS > 4
123 static struct resource s5p_uart4_resource[] = {
124         [0] = {
125                 .start  = S5P_PA_UART4,
126                 .end    = S5P_PA_UART4 + S5P_SZ_UART - 1,
127                 .flags  = IORESOURCE_MEM,
128         },
129         [1] = {
130                 .start  = IRQ_S5P_UART_RX4,
131                 .end    = IRQ_S5P_UART_RX4,
132                 .flags  = IORESOURCE_IRQ,
133         },
134         [2] = {
135                 .start  = IRQ_S5P_UART_TX4,
136                 .end    = IRQ_S5P_UART_TX4,
137                 .flags  = IORESOURCE_IRQ,
138         },
139         [3] = {
140                 .start  = IRQ_S5P_UART_ERR4,
141                 .end    = IRQ_S5P_UART_ERR4,
142                 .flags  = IORESOURCE_IRQ,
143         },
144 };
145 #endif
146
147 struct s3c24xx_uart_resources s5p_uart_resources[] __initdata = {
148         [0] = {
149                 .resources      = s5p_uart0_resource,
150                 .nr_resources   = ARRAY_SIZE(s5p_uart0_resource),
151         },
152         [1] = {
153                 .resources      = s5p_uart1_resource,
154                 .nr_resources   = ARRAY_SIZE(s5p_uart1_resource),
155         },
156         [2] = {
157                 .resources      = s5p_uart2_resource,
158                 .nr_resources   = ARRAY_SIZE(s5p_uart2_resource),
159         },
160 #if CONFIG_SERIAL_SAMSUNG_UARTS > 3
161         [3] = {
162                 .resources      = s5p_uart3_resource,
163                 .nr_resources   = ARRAY_SIZE(s5p_uart3_resource),
164         },
165 #endif
166 #if CONFIG_SERIAL_SAMSUNG_UARTS > 4 
167         [4] = {
168                 .resources      = s5p_uart4_resource,
169                 .nr_resources   = ARRAY_SIZE(s5p_uart4_resource),
170         },
171 #endif
172
173 };