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_UART0,
36 		.end	= IRQ_UART0,
37 		.flags	= IORESOURCE_IRQ,
38 	},
39 };
40 
41 static struct resource s5p_uart1_resource[] = {
42 	[0] = {
43 		.start	= S5P_PA_UART1,
44 		.end	= S5P_PA_UART1 + S5P_SZ_UART - 1,
45 		.flags	= IORESOURCE_MEM,
46 	},
47 	[1] = {
48 		.start	= IRQ_UART1,
49 		.end	= IRQ_UART1,
50 		.flags	= IORESOURCE_IRQ,
51 	},
52 };
53 
54 static struct resource s5p_uart2_resource[] = {
55 	[0] = {
56 		.start	= S5P_PA_UART2,
57 		.end	= S5P_PA_UART2 + S5P_SZ_UART - 1,
58 		.flags	= IORESOURCE_MEM,
59 	},
60 	[1] = {
61 		.start	= IRQ_UART2,
62 		.end	= IRQ_UART2,
63 		.flags	= IORESOURCE_IRQ,
64 	},
65 };
66 
67 static struct resource s5p_uart3_resource[] = {
68 #if CONFIG_SERIAL_SAMSUNG_UARTS > 3
69 	[0] = {
70 		.start	= S5P_PA_UART3,
71 		.end	= S5P_PA_UART3 + S5P_SZ_UART - 1,
72 		.flags	= IORESOURCE_MEM,
73 	},
74 	[1] = {
75 		.start	= IRQ_UART3,
76 		.end	= IRQ_UART3,
77 		.flags	= IORESOURCE_IRQ,
78 	},
79 #endif
80 };
81 
82 static struct resource s5p_uart4_resource[] = {
83 #if CONFIG_SERIAL_SAMSUNG_UARTS > 4
84 	[0] = {
85 		.start	= S5P_PA_UART4,
86 		.end	= S5P_PA_UART4 + S5P_SZ_UART - 1,
87 		.flags	= IORESOURCE_MEM,
88 	},
89 	[1] = {
90 		.start	= IRQ_UART4,
91 		.end	= IRQ_UART4,
92 		.flags	= IORESOURCE_IRQ,
93 	},
94 #endif
95 };
96 
97 static struct resource s5p_uart5_resource[] = {
98 #if CONFIG_SERIAL_SAMSUNG_UARTS > 5
99 	[0] = {
100 		.start	= S5P_PA_UART5,
101 		.end	= S5P_PA_UART5 + S5P_SZ_UART - 1,
102 		.flags	= IORESOURCE_MEM,
103 	},
104 	[1] = {
105 		.start	= IRQ_UART5,
106 		.end	= IRQ_UART5,
107 		.flags	= IORESOURCE_IRQ,
108 	},
109 #endif
110 };
111 
112 struct s3c24xx_uart_resources s5p_uart_resources[] __initdata = {
113 	[0] = {
114 		.resources	= s5p_uart0_resource,
115 		.nr_resources	= ARRAY_SIZE(s5p_uart0_resource),
116 	},
117 	[1] = {
118 		.resources	= s5p_uart1_resource,
119 		.nr_resources	= ARRAY_SIZE(s5p_uart1_resource),
120 	},
121 	[2] = {
122 		.resources	= s5p_uart2_resource,
123 		.nr_resources	= ARRAY_SIZE(s5p_uart2_resource),
124 	},
125 	[3] = {
126 		.resources	= s5p_uart3_resource,
127 		.nr_resources	= ARRAY_SIZE(s5p_uart3_resource),
128 	},
129 	[4] = {
130 		.resources	= s5p_uart4_resource,
131 		.nr_resources	= ARRAY_SIZE(s5p_uart4_resource),
132 	},
133 	[5] = {
134 		.resources	= s5p_uart5_resource,
135 		.nr_resources	= ARRAY_SIZE(s5p_uart5_resource),
136 	},
137 };
138