1 /* linux/arch/arm/plat-s3c64xx/dev-uart.c
2  *
3  * Copyright 2008 Openmoko, Inc.
4  * Copyright 2008 Simtec Electronics
5  *	Ben Dooks <ben@simtec.co.uk>
6  *	http://armlinux.simtec.co.uk/
7  *
8  * Base S3C64XX UART resource and device definitions
9  *
10  * This program is free software; you can redistribute it and/or modify
11  * it under the terms of the GNU General Public License version 2 as
12  * published by the Free Software Foundation.
13  *
14 */
15 
16 #include <linux/kernel.h>
17 #include <linux/types.h>
18 #include <linux/interrupt.h>
19 #include <linux/list.h>
20 #include <linux/platform_device.h>
21 
22 #include <asm/mach/arch.h>
23 #include <asm/mach/irq.h>
24 #include <mach/hardware.h>
25 #include <mach/map.h>
26 
27 #include <plat/devs.h>
28 
29 /* Serial port registrations */
30 
31 /* 64xx uarts are closer together */
32 
33 static struct resource s3c64xx_uart0_resource[] = {
34 	[0] = {
35 		.start	= S3C_PA_UART0,
36 		.end	= S3C_PA_UART0 + 0x100,
37 		.flags	= IORESOURCE_MEM,
38 	},
39 	[1] = {
40 		.start	= IRQ_S3CUART_RX0,
41 		.end	= IRQ_S3CUART_RX0,
42 		.flags	= IORESOURCE_IRQ,
43 	},
44 	[2] = {
45 		.start	= IRQ_S3CUART_TX0,
46 		.end	= IRQ_S3CUART_TX0,
47 		.flags	= IORESOURCE_IRQ,
48 
49 	},
50 	[3] = {
51 		.start	= IRQ_S3CUART_ERR0,
52 		.end	= IRQ_S3CUART_ERR0,
53 		.flags	= IORESOURCE_IRQ,
54 	}
55 };
56 
57 static struct resource s3c64xx_uart1_resource[] = {
58 	[0] = {
59 		.start = S3C_PA_UART1,
60 		.end   = S3C_PA_UART1 + 0x100,
61 		.flags = IORESOURCE_MEM,
62 	},
63 	[1] = {
64 		.start	= IRQ_S3CUART_RX1,
65 		.end	= IRQ_S3CUART_RX1,
66 		.flags	= IORESOURCE_IRQ,
67 	},
68 	[2] = {
69 		.start	= IRQ_S3CUART_TX1,
70 		.end	= IRQ_S3CUART_TX1,
71 		.flags	= IORESOURCE_IRQ,
72 
73 	},
74 	[3] = {
75 		.start	= IRQ_S3CUART_ERR1,
76 		.end	= IRQ_S3CUART_ERR1,
77 		.flags	= IORESOURCE_IRQ,
78 	},
79 };
80 
81 static struct resource s3c6xx_uart2_resource[] = {
82 	[0] = {
83 		.start = S3C_PA_UART2,
84 		.end   = S3C_PA_UART2 + 0x100,
85 		.flags = IORESOURCE_MEM,
86 	},
87 	[1] = {
88 		.start	= IRQ_S3CUART_RX2,
89 		.end	= IRQ_S3CUART_RX2,
90 		.flags	= IORESOURCE_IRQ,
91 	},
92 	[2] = {
93 		.start	= IRQ_S3CUART_TX2,
94 		.end	= IRQ_S3CUART_TX2,
95 		.flags	= IORESOURCE_IRQ,
96 
97 	},
98 	[3] = {
99 		.start	= IRQ_S3CUART_ERR2,
100 		.end	= IRQ_S3CUART_ERR2,
101 		.flags	= IORESOURCE_IRQ,
102 	},
103 };
104 
105 static struct resource s3c64xx_uart3_resource[] = {
106 	[0] = {
107 		.start = S3C_PA_UART3,
108 		.end   = S3C_PA_UART3 + 0x100,
109 		.flags = IORESOURCE_MEM,
110 	},
111 	[1] = {
112 		.start	= IRQ_S3CUART_RX3,
113 		.end	= IRQ_S3CUART_RX3,
114 		.flags	= IORESOURCE_IRQ,
115 	},
116 	[2] = {
117 		.start	= IRQ_S3CUART_TX3,
118 		.end	= IRQ_S3CUART_TX3,
119 		.flags	= IORESOURCE_IRQ,
120 
121 	},
122 	[3] = {
123 		.start	= IRQ_S3CUART_ERR3,
124 		.end	= IRQ_S3CUART_ERR3,
125 		.flags	= IORESOURCE_IRQ,
126 	},
127 };
128 
129 
130 struct s3c24xx_uart_resources s3c64xx_uart_resources[] __initdata = {
131 	[0] = {
132 		.resources	= s3c64xx_uart0_resource,
133 		.nr_resources	= ARRAY_SIZE(s3c64xx_uart0_resource),
134 	},
135 	[1] = {
136 		.resources	= s3c64xx_uart1_resource,
137 		.nr_resources	= ARRAY_SIZE(s3c64xx_uart1_resource),
138 	},
139 	[2] = {
140 		.resources	= s3c6xx_uart2_resource,
141 		.nr_resources	= ARRAY_SIZE(s3c6xx_uart2_resource),
142 	},
143 	[3] = {
144 		.resources	= s3c64xx_uart3_resource,
145 		.nr_resources	= ARRAY_SIZE(s3c64xx_uart3_resource),
146 	},
147 };
148