diff options
author | Magnus Damm <damm@opensource.se> | 2009-12-14 07:30:05 -0500 |
---|---|---|
committer | Paul Mundt <lethal@linux-sh.org> | 2009-12-14 22:06:32 -0500 |
commit | 44658dfb660c4744b862571a3d8e1dae65e8b75a (patch) | |
tree | 0123bb959e8c96d9a49bc3cc7acc5f2293c964a5 /arch/sh/kernel/cpu/sh3/setup-sh770x.c | |
parent | be091d20efe7b045ca02bdf91c63c72d91f5899d (diff) |
sh: sh3 scif pdata (sh7705/sh770x/sh7710/sh7720)
This patch breaks out the sh3 scif serial port platform
data from a shared platform device to one platform
device per port. Also, add serial ports to the list of
early platform devices.
Signed-off-by: Magnus Damm <damm@opensource.se>
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Diffstat (limited to 'arch/sh/kernel/cpu/sh3/setup-sh770x.c')
-rw-r--r-- | arch/sh/kernel/cpu/sh3/setup-sh770x.c | 80 |
1 files changed, 55 insertions, 25 deletions
diff --git a/arch/sh/kernel/cpu/sh3/setup-sh770x.c b/arch/sh/kernel/cpu/sh3/setup-sh770x.c index 347ab35d0697..bc0c4f68c7c7 100644 --- a/arch/sh/kernel/cpu/sh3/setup-sh770x.c +++ b/arch/sh/kernel/cpu/sh3/setup-sh770x.c | |||
@@ -106,44 +106,55 @@ static struct platform_device rtc_device = { | |||
106 | .resource = rtc_resources, | 106 | .resource = rtc_resources, |
107 | }; | 107 | }; |
108 | 108 | ||
109 | static struct plat_sci_port sci_platform_data[] = { | 109 | static struct plat_sci_port scif0_platform_data = { |
110 | { | 110 | .mapbase = 0xfffffe80, |
111 | .mapbase = 0xfffffe80, | 111 | .flags = UPF_BOOT_AUTOCONF, |
112 | .flags = UPF_BOOT_AUTOCONF, | 112 | .type = PORT_SCI, |
113 | .type = PORT_SCI, | 113 | .irqs = { 23, 23, 23, 0 }, |
114 | .irqs = { 23, 23, 23, 0 }, | 114 | }; |
115 | |||
116 | static struct platform_device scif0_device = { | ||
117 | .name = "sh-sci", | ||
118 | .id = 0, | ||
119 | .dev = { | ||
120 | .platform_data = &scif0_platform_data, | ||
115 | }, | 121 | }, |
122 | }; | ||
116 | #if defined(CONFIG_CPU_SUBTYPE_SH7706) || \ | 123 | #if defined(CONFIG_CPU_SUBTYPE_SH7706) || \ |
117 | defined(CONFIG_CPU_SUBTYPE_SH7707) || \ | 124 | defined(CONFIG_CPU_SUBTYPE_SH7707) || \ |
118 | defined(CONFIG_CPU_SUBTYPE_SH7709) | 125 | defined(CONFIG_CPU_SUBTYPE_SH7709) |
119 | { | 126 | static struct plat_sci_port scif1_platform_data = { |
120 | .mapbase = 0xa4000150, | 127 | .mapbase = 0xa4000150, |
121 | .flags = UPF_BOOT_AUTOCONF, | 128 | .flags = UPF_BOOT_AUTOCONF, |
122 | .type = PORT_SCIF, | 129 | .type = PORT_SCIF, |
123 | .irqs = { 56, 56, 56, 56 }, | 130 | .irqs = { 56, 56, 56, 56 }, |
131 | }; | ||
132 | |||
133 | static struct platform_device scif1_device = { | ||
134 | .name = "sh-sci", | ||
135 | .id = 1, | ||
136 | .dev = { | ||
137 | .platform_data = &scif1_platform_data, | ||
124 | }, | 138 | }, |
139 | }; | ||
125 | #endif | 140 | #endif |
126 | #if defined(CONFIG_CPU_SUBTYPE_SH7707) || \ | 141 | #if defined(CONFIG_CPU_SUBTYPE_SH7707) || \ |
127 | defined(CONFIG_CPU_SUBTYPE_SH7709) | 142 | defined(CONFIG_CPU_SUBTYPE_SH7709) |
128 | { | 143 | static struct plat_sci_port scif2_platform_data = { |
129 | .mapbase = 0xa4000140, | 144 | .mapbase = 0xa4000140, |
130 | .flags = UPF_BOOT_AUTOCONF, | 145 | .flags = UPF_BOOT_AUTOCONF, |
131 | .type = PORT_IRDA, | 146 | .type = PORT_IRDA, |
132 | .irqs = { 52, 52, 52, 52 }, | 147 | .irqs = { 52, 52, 52, 52 }, |
133 | }, | ||
134 | #endif | ||
135 | { | ||
136 | .flags = 0, | ||
137 | } | ||
138 | }; | 148 | }; |
139 | 149 | ||
140 | static struct platform_device sci_device = { | 150 | static struct platform_device scif2_device = { |
141 | .name = "sh-sci", | 151 | .name = "sh-sci", |
142 | .id = -1, | 152 | .id = 2, |
143 | .dev = { | 153 | .dev = { |
144 | .platform_data = sci_platform_data, | 154 | .platform_data = &scif2_platform_data, |
145 | }, | 155 | }, |
146 | }; | 156 | }; |
157 | #endif | ||
147 | 158 | ||
148 | static struct sh_timer_config tmu0_platform_data = { | 159 | static struct sh_timer_config tmu0_platform_data = { |
149 | .name = "TMU0", | 160 | .name = "TMU0", |
@@ -238,10 +249,19 @@ static struct platform_device tmu2_device = { | |||
238 | }; | 249 | }; |
239 | 250 | ||
240 | static struct platform_device *sh770x_devices[] __initdata = { | 251 | static struct platform_device *sh770x_devices[] __initdata = { |
252 | &scif0_device, | ||
253 | #if defined(CONFIG_CPU_SUBTYPE_SH7706) || \ | ||
254 | defined(CONFIG_CPU_SUBTYPE_SH7707) || \ | ||
255 | defined(CONFIG_CPU_SUBTYPE_SH7709) | ||
256 | &scif1_device, | ||
257 | #endif | ||
258 | #if defined(CONFIG_CPU_SUBTYPE_SH7707) || \ | ||
259 | defined(CONFIG_CPU_SUBTYPE_SH7709) | ||
260 | &scif2_device, | ||
261 | #endif | ||
241 | &tmu0_device, | 262 | &tmu0_device, |
242 | &tmu1_device, | 263 | &tmu1_device, |
243 | &tmu2_device, | 264 | &tmu2_device, |
244 | &sci_device, | ||
245 | &rtc_device, | 265 | &rtc_device, |
246 | }; | 266 | }; |
247 | 267 | ||
@@ -253,6 +273,16 @@ static int __init sh770x_devices_setup(void) | |||
253 | arch_initcall(sh770x_devices_setup); | 273 | arch_initcall(sh770x_devices_setup); |
254 | 274 | ||
255 | static struct platform_device *sh770x_early_devices[] __initdata = { | 275 | static struct platform_device *sh770x_early_devices[] __initdata = { |
276 | &scif0_device, | ||
277 | #if defined(CONFIG_CPU_SUBTYPE_SH7706) || \ | ||
278 | defined(CONFIG_CPU_SUBTYPE_SH7707) || \ | ||
279 | defined(CONFIG_CPU_SUBTYPE_SH7709) | ||
280 | &scif1_device, | ||
281 | #endif | ||
282 | #if defined(CONFIG_CPU_SUBTYPE_SH7707) || \ | ||
283 | defined(CONFIG_CPU_SUBTYPE_SH7709) | ||
284 | &scif2_device, | ||
285 | #endif | ||
256 | &tmu0_device, | 286 | &tmu0_device, |
257 | &tmu1_device, | 287 | &tmu1_device, |
258 | &tmu2_device, | 288 | &tmu2_device, |