diff options
Diffstat (limited to 'arch/sh/kernel/cpu/sh4a')
-rw-r--r-- | arch/sh/kernel/cpu/sh4a/setup-sh7343.c | 112 | ||||
-rw-r--r-- | arch/sh/kernel/cpu/sh4a/setup-sh7366.c | 39 | ||||
-rw-r--r-- | arch/sh/kernel/cpu/sh4a/setup-sh7722.c | 91 | ||||
-rw-r--r-- | arch/sh/kernel/cpu/sh4a/setup-sh7723.c | 160 | ||||
-rw-r--r-- | arch/sh/kernel/cpu/sh4a/setup-sh7724.c | 149 | ||||
-rw-r--r-- | arch/sh/kernel/cpu/sh4a/setup-sh7757.c | 92 | ||||
-rw-r--r-- | arch/sh/kernel/cpu/sh4a/setup-sh7763.c | 81 | ||||
-rw-r--r-- | arch/sh/kernel/cpu/sh4a/setup-sh7770.c | 221 | ||||
-rw-r--r-- | arch/sh/kernel/cpu/sh4a/setup-sh7780.c | 60 | ||||
-rw-r--r-- | arch/sh/kernel/cpu/sh4a/setup-sh7785.c | 159 | ||||
-rw-r--r-- | arch/sh/kernel/cpu/sh4a/setup-sh7786.c | 132 | ||||
-rw-r--r-- | arch/sh/kernel/cpu/sh4a/setup-shx3.c | 76 |
12 files changed, 909 insertions, 463 deletions
diff --git a/arch/sh/kernel/cpu/sh4a/setup-sh7343.c b/arch/sh/kernel/cpu/sh4a/setup-sh7343.c index ac4d5672ec1a..45eb1bfd42c9 100644 --- a/arch/sh/kernel/cpu/sh4a/setup-sh7343.c +++ b/arch/sh/kernel/cpu/sh4a/setup-sh7343.c | |||
@@ -15,6 +15,71 @@ | |||
15 | #include <linux/sh_timer.h> | 15 | #include <linux/sh_timer.h> |
16 | #include <asm/clock.h> | 16 | #include <asm/clock.h> |
17 | 17 | ||
18 | /* Serial */ | ||
19 | static struct plat_sci_port scif0_platform_data = { | ||
20 | .mapbase = 0xffe00000, | ||
21 | .flags = UPF_BOOT_AUTOCONF, | ||
22 | .type = PORT_SCIF, | ||
23 | .irqs = { 80, 80, 80, 80 }, | ||
24 | .clk = "scif0", | ||
25 | }; | ||
26 | |||
27 | static struct platform_device scif0_device = { | ||
28 | .name = "sh-sci", | ||
29 | .id = 0, | ||
30 | .dev = { | ||
31 | .platform_data = &scif0_platform_data, | ||
32 | }, | ||
33 | }; | ||
34 | |||
35 | static struct plat_sci_port scif1_platform_data = { | ||
36 | .mapbase = 0xffe10000, | ||
37 | .flags = UPF_BOOT_AUTOCONF, | ||
38 | .type = PORT_SCIF, | ||
39 | .irqs = { 81, 81, 81, 81 }, | ||
40 | .clk = "scif1", | ||
41 | }; | ||
42 | |||
43 | static struct platform_device scif1_device = { | ||
44 | .name = "sh-sci", | ||
45 | .id = 1, | ||
46 | .dev = { | ||
47 | .platform_data = &scif1_platform_data, | ||
48 | }, | ||
49 | }; | ||
50 | |||
51 | static struct plat_sci_port scif2_platform_data = { | ||
52 | .mapbase = 0xffe20000, | ||
53 | .flags = UPF_BOOT_AUTOCONF, | ||
54 | .type = PORT_SCIF, | ||
55 | .irqs = { 82, 82, 82, 82 }, | ||
56 | .clk = "scif2", | ||
57 | }; | ||
58 | |||
59 | static struct platform_device scif2_device = { | ||
60 | .name = "sh-sci", | ||
61 | .id = 2, | ||
62 | .dev = { | ||
63 | .platform_data = &scif2_platform_data, | ||
64 | }, | ||
65 | }; | ||
66 | |||
67 | static struct plat_sci_port scif3_platform_data = { | ||
68 | .mapbase = 0xffe30000, | ||
69 | .flags = UPF_BOOT_AUTOCONF, | ||
70 | .type = PORT_SCIF, | ||
71 | .irqs = { 83, 83, 83, 83 }, | ||
72 | .clk = "scif3", | ||
73 | }; | ||
74 | |||
75 | static struct platform_device scif3_device = { | ||
76 | .name = "sh-sci", | ||
77 | .id = 3, | ||
78 | .dev = { | ||
79 | .platform_data = &scif3_platform_data, | ||
80 | }, | ||
81 | }; | ||
82 | |||
18 | static struct resource iic0_resources[] = { | 83 | static struct resource iic0_resources[] = { |
19 | [0] = { | 84 | [0] = { |
20 | .name = "IIC0", | 85 | .name = "IIC0", |
@@ -265,52 +330,17 @@ static struct platform_device tmu2_device = { | |||
265 | .num_resources = ARRAY_SIZE(tmu2_resources), | 330 | .num_resources = ARRAY_SIZE(tmu2_resources), |
266 | }; | 331 | }; |
267 | 332 | ||
268 | static struct plat_sci_port sci_platform_data[] = { | ||
269 | { | ||
270 | .mapbase = 0xffe00000, | ||
271 | .flags = UPF_BOOT_AUTOCONF, | ||
272 | .type = PORT_SCIF, | ||
273 | .irqs = { 80, 80, 80, 80 }, | ||
274 | .clk = "scif0", | ||
275 | }, { | ||
276 | .mapbase = 0xffe10000, | ||
277 | .flags = UPF_BOOT_AUTOCONF, | ||
278 | .type = PORT_SCIF, | ||
279 | .irqs = { 81, 81, 81, 81 }, | ||
280 | .clk = "scif1", | ||
281 | }, { | ||
282 | .mapbase = 0xffe20000, | ||
283 | .flags = UPF_BOOT_AUTOCONF, | ||
284 | .type = PORT_SCIF, | ||
285 | .irqs = { 82, 82, 82, 82 }, | ||
286 | .clk = "scif2", | ||
287 | }, { | ||
288 | .mapbase = 0xffe30000, | ||
289 | .flags = UPF_BOOT_AUTOCONF, | ||
290 | .type = PORT_SCIF, | ||
291 | .irqs = { 83, 83, 83, 83 }, | ||
292 | .clk = "scif3", | ||
293 | }, { | ||
294 | .flags = 0, | ||
295 | } | ||
296 | }; | ||
297 | |||
298 | static struct platform_device sci_device = { | ||
299 | .name = "sh-sci", | ||
300 | .id = -1, | ||
301 | .dev = { | ||
302 | .platform_data = sci_platform_data, | ||
303 | }, | ||
304 | }; | ||
305 | |||
306 | static struct platform_device *sh7343_devices[] __initdata = { | 333 | static struct platform_device *sh7343_devices[] __initdata = { |
334 | &scif0_device, | ||
335 | &scif1_device, | ||
336 | &scif2_device, | ||
337 | &scif3_device, | ||
307 | &cmt_device, | 338 | &cmt_device, |
308 | &tmu0_device, | 339 | &tmu0_device, |
309 | &tmu1_device, | 340 | &tmu1_device, |
310 | &tmu2_device, | 341 | &tmu2_device, |
311 | &iic0_device, | 342 | &iic0_device, |
312 | &iic1_device, | 343 | &iic1_device, |
313 | &sci_device, | ||
314 | &vpu_device, | 344 | &vpu_device, |
315 | &veu_device, | 345 | &veu_device, |
316 | &jpu_device, | 346 | &jpu_device, |
@@ -328,6 +358,10 @@ static int __init sh7343_devices_setup(void) | |||
328 | arch_initcall(sh7343_devices_setup); | 358 | arch_initcall(sh7343_devices_setup); |
329 | 359 | ||
330 | static struct platform_device *sh7343_early_devices[] __initdata = { | 360 | static struct platform_device *sh7343_early_devices[] __initdata = { |
361 | &scif0_device, | ||
362 | &scif1_device, | ||
363 | &scif2_device, | ||
364 | &scif3_device, | ||
331 | &cmt_device, | 365 | &cmt_device, |
332 | &tmu0_device, | 366 | &tmu0_device, |
333 | &tmu1_device, | 367 | &tmu1_device, |
diff --git a/arch/sh/kernel/cpu/sh4a/setup-sh7366.c b/arch/sh/kernel/cpu/sh4a/setup-sh7366.c index 4a9010bf4fd3..c494c193e3b6 100644 --- a/arch/sh/kernel/cpu/sh4a/setup-sh7366.c +++ b/arch/sh/kernel/cpu/sh4a/setup-sh7366.c | |||
@@ -18,6 +18,22 @@ | |||
18 | #include <linux/usb/r8a66597.h> | 18 | #include <linux/usb/r8a66597.h> |
19 | #include <asm/clock.h> | 19 | #include <asm/clock.h> |
20 | 20 | ||
21 | static struct plat_sci_port scif0_platform_data = { | ||
22 | .mapbase = 0xffe00000, | ||
23 | .flags = UPF_BOOT_AUTOCONF, | ||
24 | .type = PORT_SCIF, | ||
25 | .irqs = { 80, 80, 80, 80 }, | ||
26 | .clk = "scif0", | ||
27 | }; | ||
28 | |||
29 | static struct platform_device scif0_device = { | ||
30 | .name = "sh-sci", | ||
31 | .id = 0, | ||
32 | .dev = { | ||
33 | .platform_data = &scif0_platform_data, | ||
34 | }, | ||
35 | }; | ||
36 | |||
21 | static struct resource iic_resources[] = { | 37 | static struct resource iic_resources[] = { |
22 | [0] = { | 38 | [0] = { |
23 | .name = "IIC", | 39 | .name = "IIC", |
@@ -276,33 +292,13 @@ static struct platform_device tmu2_device = { | |||
276 | .num_resources = ARRAY_SIZE(tmu2_resources), | 292 | .num_resources = ARRAY_SIZE(tmu2_resources), |
277 | }; | 293 | }; |
278 | 294 | ||
279 | static struct plat_sci_port sci_platform_data[] = { | ||
280 | { | ||
281 | .mapbase = 0xffe00000, | ||
282 | .flags = UPF_BOOT_AUTOCONF, | ||
283 | .type = PORT_SCIF, | ||
284 | .irqs = { 80, 80, 80, 80 }, | ||
285 | .clk = "scif0", | ||
286 | }, { | ||
287 | .flags = 0, | ||
288 | } | ||
289 | }; | ||
290 | |||
291 | static struct platform_device sci_device = { | ||
292 | .name = "sh-sci", | ||
293 | .id = -1, | ||
294 | .dev = { | ||
295 | .platform_data = sci_platform_data, | ||
296 | }, | ||
297 | }; | ||
298 | |||
299 | static struct platform_device *sh7366_devices[] __initdata = { | 295 | static struct platform_device *sh7366_devices[] __initdata = { |
296 | &scif0_device, | ||
300 | &cmt_device, | 297 | &cmt_device, |
301 | &tmu0_device, | 298 | &tmu0_device, |
302 | &tmu1_device, | 299 | &tmu1_device, |
303 | &tmu2_device, | 300 | &tmu2_device, |
304 | &iic_device, | 301 | &iic_device, |
305 | &sci_device, | ||
306 | &usb_host_device, | 302 | &usb_host_device, |
307 | &vpu_device, | 303 | &vpu_device, |
308 | &veu0_device, | 304 | &veu0_device, |
@@ -321,6 +317,7 @@ static int __init sh7366_devices_setup(void) | |||
321 | arch_initcall(sh7366_devices_setup); | 317 | arch_initcall(sh7366_devices_setup); |
322 | 318 | ||
323 | static struct platform_device *sh7366_early_devices[] __initdata = { | 319 | static struct platform_device *sh7366_early_devices[] __initdata = { |
320 | &scif0_device, | ||
324 | &cmt_device, | 321 | &cmt_device, |
325 | &tmu0_device, | 322 | &tmu0_device, |
326 | &tmu1_device, | 323 | &tmu1_device, |
diff --git a/arch/sh/kernel/cpu/sh4a/setup-sh7722.c b/arch/sh/kernel/cpu/sh4a/setup-sh7722.c index 5491b094cf05..b5335b5e309c 100644 --- a/arch/sh/kernel/cpu/sh4a/setup-sh7722.c +++ b/arch/sh/kernel/cpu/sh4a/setup-sh7722.c | |||
@@ -20,6 +20,55 @@ | |||
20 | #include <asm/dma-sh.h> | 20 | #include <asm/dma-sh.h> |
21 | #include <cpu/sh7722.h> | 21 | #include <cpu/sh7722.h> |
22 | 22 | ||
23 | /* Serial */ | ||
24 | static struct plat_sci_port scif0_platform_data = { | ||
25 | .mapbase = 0xffe00000, | ||
26 | .flags = UPF_BOOT_AUTOCONF, | ||
27 | .type = PORT_SCIF, | ||
28 | .irqs = { 80, 80, 80, 80 }, | ||
29 | .clk = "scif0", | ||
30 | }; | ||
31 | |||
32 | static struct platform_device scif0_device = { | ||
33 | .name = "sh-sci", | ||
34 | .id = 0, | ||
35 | .dev = { | ||
36 | .platform_data = &scif0_platform_data, | ||
37 | }, | ||
38 | }; | ||
39 | |||
40 | static struct plat_sci_port scif1_platform_data = { | ||
41 | .mapbase = 0xffe10000, | ||
42 | .flags = UPF_BOOT_AUTOCONF, | ||
43 | .type = PORT_SCIF, | ||
44 | .irqs = { 81, 81, 81, 81 }, | ||
45 | .clk = "scif1", | ||
46 | }; | ||
47 | |||
48 | static struct platform_device scif1_device = { | ||
49 | .name = "sh-sci", | ||
50 | .id = 1, | ||
51 | .dev = { | ||
52 | .platform_data = &scif1_platform_data, | ||
53 | }, | ||
54 | }; | ||
55 | |||
56 | static struct plat_sci_port scif2_platform_data = { | ||
57 | .mapbase = 0xffe20000, | ||
58 | .flags = UPF_BOOT_AUTOCONF, | ||
59 | .type = PORT_SCIF, | ||
60 | .irqs = { 82, 82, 82, 82 }, | ||
61 | .clk = "scif2", | ||
62 | }; | ||
63 | |||
64 | static struct platform_device scif2_device = { | ||
65 | .name = "sh-sci", | ||
66 | .id = 2, | ||
67 | .dev = { | ||
68 | .platform_data = &scif2_platform_data, | ||
69 | }, | ||
70 | }; | ||
71 | |||
23 | static struct resource rtc_resources[] = { | 72 | static struct resource rtc_resources[] = { |
24 | [0] = { | 73 | [0] = { |
25 | .start = 0xa465fec0, | 74 | .start = 0xa465fec0, |
@@ -339,41 +388,6 @@ static struct platform_device tmu2_device = { | |||
339 | }, | 388 | }, |
340 | }; | 389 | }; |
341 | 390 | ||
342 | static struct plat_sci_port sci_platform_data[] = { | ||
343 | { | ||
344 | .mapbase = 0xffe00000, | ||
345 | .flags = UPF_BOOT_AUTOCONF, | ||
346 | .type = PORT_SCIF, | ||
347 | .irqs = { 80, 80, 80, 80 }, | ||
348 | .clk = "scif0", | ||
349 | }, | ||
350 | { | ||
351 | .mapbase = 0xffe10000, | ||
352 | .flags = UPF_BOOT_AUTOCONF, | ||
353 | .type = PORT_SCIF, | ||
354 | .irqs = { 81, 81, 81, 81 }, | ||
355 | .clk = "scif1", | ||
356 | }, | ||
357 | { | ||
358 | .mapbase = 0xffe20000, | ||
359 | .flags = UPF_BOOT_AUTOCONF, | ||
360 | .type = PORT_SCIF, | ||
361 | .irqs = { 82, 82, 82, 82 }, | ||
362 | .clk = "scif2", | ||
363 | }, | ||
364 | { | ||
365 | .flags = 0, | ||
366 | } | ||
367 | }; | ||
368 | |||
369 | static struct platform_device sci_device = { | ||
370 | .name = "sh-sci", | ||
371 | .id = -1, | ||
372 | .dev = { | ||
373 | .platform_data = sci_platform_data, | ||
374 | }, | ||
375 | }; | ||
376 | |||
377 | static struct sh_dmae_pdata dma_platform_data = { | 391 | static struct sh_dmae_pdata dma_platform_data = { |
378 | .mode = 0, | 392 | .mode = 0, |
379 | }; | 393 | }; |
@@ -387,6 +401,9 @@ static struct platform_device dma_device = { | |||
387 | }; | 401 | }; |
388 | 402 | ||
389 | static struct platform_device *sh7722_devices[] __initdata = { | 403 | static struct platform_device *sh7722_devices[] __initdata = { |
404 | &scif0_device, | ||
405 | &scif1_device, | ||
406 | &scif2_device, | ||
390 | &cmt_device, | 407 | &cmt_device, |
391 | &tmu0_device, | 408 | &tmu0_device, |
392 | &tmu1_device, | 409 | &tmu1_device, |
@@ -394,7 +411,6 @@ static struct platform_device *sh7722_devices[] __initdata = { | |||
394 | &rtc_device, | 411 | &rtc_device, |
395 | &usbf_device, | 412 | &usbf_device, |
396 | &iic_device, | 413 | &iic_device, |
397 | &sci_device, | ||
398 | &vpu_device, | 414 | &vpu_device, |
399 | &veu_device, | 415 | &veu_device, |
400 | &jpu_device, | 416 | &jpu_device, |
@@ -413,6 +429,9 @@ static int __init sh7722_devices_setup(void) | |||
413 | arch_initcall(sh7722_devices_setup); | 429 | arch_initcall(sh7722_devices_setup); |
414 | 430 | ||
415 | static struct platform_device *sh7722_early_devices[] __initdata = { | 431 | static struct platform_device *sh7722_early_devices[] __initdata = { |
432 | &scif0_device, | ||
433 | &scif1_device, | ||
434 | &scif2_device, | ||
416 | &cmt_device, | 435 | &cmt_device, |
417 | &tmu0_device, | 436 | &tmu0_device, |
418 | &tmu1_device, | 437 | &tmu1_device, |
diff --git a/arch/sh/kernel/cpu/sh4a/setup-sh7723.c b/arch/sh/kernel/cpu/sh4a/setup-sh7723.c index 4caa5a7ca86e..772b9265d0e4 100644 --- a/arch/sh/kernel/cpu/sh4a/setup-sh7723.c +++ b/arch/sh/kernel/cpu/sh4a/setup-sh7723.c | |||
@@ -20,6 +20,103 @@ | |||
20 | #include <asm/mmzone.h> | 20 | #include <asm/mmzone.h> |
21 | #include <cpu/sh7723.h> | 21 | #include <cpu/sh7723.h> |
22 | 22 | ||
23 | /* Serial */ | ||
24 | static struct plat_sci_port scif0_platform_data = { | ||
25 | .mapbase = 0xffe00000, | ||
26 | .flags = UPF_BOOT_AUTOCONF, | ||
27 | .type = PORT_SCIF, | ||
28 | .irqs = { 80, 80, 80, 80 }, | ||
29 | .clk = "scif0", | ||
30 | }; | ||
31 | |||
32 | static struct platform_device scif0_device = { | ||
33 | .name = "sh-sci", | ||
34 | .id = 0, | ||
35 | .dev = { | ||
36 | .platform_data = &scif0_platform_data, | ||
37 | }, | ||
38 | }; | ||
39 | |||
40 | static struct plat_sci_port scif1_platform_data = { | ||
41 | .mapbase = 0xffe10000, | ||
42 | .flags = UPF_BOOT_AUTOCONF, | ||
43 | .type = PORT_SCIF, | ||
44 | .irqs = { 81, 81, 81, 81 }, | ||
45 | .clk = "scif1", | ||
46 | }; | ||
47 | |||
48 | static struct platform_device scif1_device = { | ||
49 | .name = "sh-sci", | ||
50 | .id = 1, | ||
51 | .dev = { | ||
52 | .platform_data = &scif1_platform_data, | ||
53 | }, | ||
54 | }; | ||
55 | |||
56 | static struct plat_sci_port scif2_platform_data = { | ||
57 | .mapbase = 0xffe20000, | ||
58 | .flags = UPF_BOOT_AUTOCONF, | ||
59 | .type = PORT_SCIF, | ||
60 | .irqs = { 82, 82, 82, 82 }, | ||
61 | .clk = "scif2", | ||
62 | }; | ||
63 | |||
64 | static struct platform_device scif2_device = { | ||
65 | .name = "sh-sci", | ||
66 | .id = 2, | ||
67 | .dev = { | ||
68 | .platform_data = &scif2_platform_data, | ||
69 | }, | ||
70 | }; | ||
71 | |||
72 | static struct plat_sci_port scif3_platform_data = { | ||
73 | .mapbase = 0xa4e30000, | ||
74 | .flags = UPF_BOOT_AUTOCONF, | ||
75 | .type = PORT_SCIFA, | ||
76 | .irqs = { 56, 56, 56, 56 }, | ||
77 | .clk = "scif3", | ||
78 | }; | ||
79 | |||
80 | static struct platform_device scif3_device = { | ||
81 | .name = "sh-sci", | ||
82 | .id = 3, | ||
83 | .dev = { | ||
84 | .platform_data = &scif3_platform_data, | ||
85 | }, | ||
86 | }; | ||
87 | |||
88 | static struct plat_sci_port scif4_platform_data = { | ||
89 | .mapbase = 0xa4e40000, | ||
90 | .flags = UPF_BOOT_AUTOCONF, | ||
91 | .type = PORT_SCIFA, | ||
92 | .irqs = { 88, 88, 88, 88 }, | ||
93 | .clk = "scif4", | ||
94 | }; | ||
95 | |||
96 | static struct platform_device scif4_device = { | ||
97 | .name = "sh-sci", | ||
98 | .id = 4, | ||
99 | .dev = { | ||
100 | .platform_data = &scif4_platform_data, | ||
101 | }, | ||
102 | }; | ||
103 | |||
104 | static struct plat_sci_port scif5_platform_data = { | ||
105 | .mapbase = 0xa4e50000, | ||
106 | .flags = UPF_BOOT_AUTOCONF, | ||
107 | .type = PORT_SCIFA, | ||
108 | .irqs = { 109, 109, 109, 109 }, | ||
109 | .clk = "scif5", | ||
110 | }; | ||
111 | |||
112 | static struct platform_device scif5_device = { | ||
113 | .name = "sh-sci", | ||
114 | .id = 5, | ||
115 | .dev = { | ||
116 | .platform_data = &scif5_platform_data, | ||
117 | }, | ||
118 | }; | ||
119 | |||
23 | static struct uio_info vpu_platform_data = { | 120 | static struct uio_info vpu_platform_data = { |
24 | .name = "VPU5", | 121 | .name = "VPU5", |
25 | .version = "0", | 122 | .version = "0", |
@@ -348,56 +445,6 @@ static struct platform_device tmu5_device = { | |||
348 | }, | 445 | }, |
349 | }; | 446 | }; |
350 | 447 | ||
351 | static struct plat_sci_port sci_platform_data[] = { | ||
352 | { | ||
353 | .mapbase = 0xffe00000, | ||
354 | .flags = UPF_BOOT_AUTOCONF, | ||
355 | .type = PORT_SCIF, | ||
356 | .irqs = { 80, 80, 80, 80 }, | ||
357 | .clk = "scif0", | ||
358 | },{ | ||
359 | .mapbase = 0xffe10000, | ||
360 | .flags = UPF_BOOT_AUTOCONF, | ||
361 | .type = PORT_SCIF, | ||
362 | .irqs = { 81, 81, 81, 81 }, | ||
363 | .clk = "scif1", | ||
364 | },{ | ||
365 | .mapbase = 0xffe20000, | ||
366 | .flags = UPF_BOOT_AUTOCONF, | ||
367 | .type = PORT_SCIF, | ||
368 | .irqs = { 82, 82, 82, 82 }, | ||
369 | .clk = "scif2", | ||
370 | },{ | ||
371 | .mapbase = 0xa4e30000, | ||
372 | .flags = UPF_BOOT_AUTOCONF, | ||
373 | .type = PORT_SCIFA, | ||
374 | .irqs = { 56, 56, 56, 56 }, | ||
375 | .clk = "scif3", | ||
376 | },{ | ||
377 | .mapbase = 0xa4e40000, | ||
378 | .flags = UPF_BOOT_AUTOCONF, | ||
379 | .type = PORT_SCIFA, | ||
380 | .irqs = { 88, 88, 88, 88 }, | ||
381 | .clk = "scif4", | ||
382 | },{ | ||
383 | .mapbase = 0xa4e50000, | ||
384 | .flags = UPF_BOOT_AUTOCONF, | ||
385 | .type = PORT_SCIFA, | ||
386 | .irqs = { 109, 109, 109, 109 }, | ||
387 | .clk = "scif5", | ||
388 | }, { | ||
389 | .flags = 0, | ||
390 | } | ||
391 | }; | ||
392 | |||
393 | static struct platform_device sci_device = { | ||
394 | .name = "sh-sci", | ||
395 | .id = -1, | ||
396 | .dev = { | ||
397 | .platform_data = sci_platform_data, | ||
398 | }, | ||
399 | }; | ||
400 | |||
401 | static struct resource rtc_resources[] = { | 448 | static struct resource rtc_resources[] = { |
402 | [0] = { | 449 | [0] = { |
403 | .start = 0xa465fec0, | 450 | .start = 0xa465fec0, |
@@ -488,6 +535,12 @@ static struct platform_device iic_device = { | |||
488 | }; | 535 | }; |
489 | 536 | ||
490 | static struct platform_device *sh7723_devices[] __initdata = { | 537 | static struct platform_device *sh7723_devices[] __initdata = { |
538 | &scif0_device, | ||
539 | &scif1_device, | ||
540 | &scif2_device, | ||
541 | &scif3_device, | ||
542 | &scif4_device, | ||
543 | &scif5_device, | ||
491 | &cmt_device, | 544 | &cmt_device, |
492 | &tmu0_device, | 545 | &tmu0_device, |
493 | &tmu1_device, | 546 | &tmu1_device, |
@@ -495,7 +548,6 @@ static struct platform_device *sh7723_devices[] __initdata = { | |||
495 | &tmu3_device, | 548 | &tmu3_device, |
496 | &tmu4_device, | 549 | &tmu4_device, |
497 | &tmu5_device, | 550 | &tmu5_device, |
498 | &sci_device, | ||
499 | &rtc_device, | 551 | &rtc_device, |
500 | &iic_device, | 552 | &iic_device, |
501 | &sh7723_usb_host_device, | 553 | &sh7723_usb_host_device, |
@@ -516,6 +568,12 @@ static int __init sh7723_devices_setup(void) | |||
516 | arch_initcall(sh7723_devices_setup); | 568 | arch_initcall(sh7723_devices_setup); |
517 | 569 | ||
518 | static struct platform_device *sh7723_early_devices[] __initdata = { | 570 | static struct platform_device *sh7723_early_devices[] __initdata = { |
571 | &scif0_device, | ||
572 | &scif1_device, | ||
573 | &scif2_device, | ||
574 | &scif3_device, | ||
575 | &scif4_device, | ||
576 | &scif5_device, | ||
519 | &cmt_device, | 577 | &cmt_device, |
520 | &tmu0_device, | 578 | &tmu0_device, |
521 | &tmu1_device, | 579 | &tmu1_device, |
diff --git a/arch/sh/kernel/cpu/sh4a/setup-sh7724.c b/arch/sh/kernel/cpu/sh4a/setup-sh7724.c index 845e89c936e7..a52f35117e82 100644 --- a/arch/sh/kernel/cpu/sh4a/setup-sh7724.c +++ b/arch/sh/kernel/cpu/sh4a/setup-sh7724.c | |||
@@ -27,53 +27,99 @@ | |||
27 | #include <cpu/sh7724.h> | 27 | #include <cpu/sh7724.h> |
28 | 28 | ||
29 | /* Serial */ | 29 | /* Serial */ |
30 | static struct plat_sci_port sci_platform_data[] = { | 30 | static struct plat_sci_port scif0_platform_data = { |
31 | { | 31 | .mapbase = 0xffe00000, |
32 | .mapbase = 0xffe00000, | 32 | .flags = UPF_BOOT_AUTOCONF, |
33 | .flags = UPF_BOOT_AUTOCONF, | 33 | .type = PORT_SCIF, |
34 | .type = PORT_SCIF, | 34 | .irqs = { 80, 80, 80, 80 }, |
35 | .irqs = { 80, 80, 80, 80 }, | 35 | .clk = "scif0", |
36 | .clk = "scif0", | 36 | }; |
37 | }, { | 37 | |
38 | .mapbase = 0xffe10000, | 38 | static struct platform_device scif0_device = { |
39 | .flags = UPF_BOOT_AUTOCONF, | ||
40 | .type = PORT_SCIF, | ||
41 | .irqs = { 81, 81, 81, 81 }, | ||
42 | .clk = "scif1", | ||
43 | }, { | ||
44 | .mapbase = 0xffe20000, | ||
45 | .flags = UPF_BOOT_AUTOCONF, | ||
46 | .type = PORT_SCIF, | ||
47 | .irqs = { 82, 82, 82, 82 }, | ||
48 | .clk = "scif2", | ||
49 | }, { | ||
50 | .mapbase = 0xa4e30000, | ||
51 | .flags = UPF_BOOT_AUTOCONF, | ||
52 | .type = PORT_SCIFA, | ||
53 | .irqs = { 56, 56, 56, 56 }, | ||
54 | .clk = "scif3", | ||
55 | }, { | ||
56 | .mapbase = 0xa4e40000, | ||
57 | .flags = UPF_BOOT_AUTOCONF, | ||
58 | .type = PORT_SCIFA, | ||
59 | .irqs = { 88, 88, 88, 88 }, | ||
60 | .clk = "scif4", | ||
61 | }, { | ||
62 | .mapbase = 0xa4e50000, | ||
63 | .flags = UPF_BOOT_AUTOCONF, | ||
64 | .type = PORT_SCIFA, | ||
65 | .irqs = { 109, 109, 109, 109 }, | ||
66 | .clk = "scif5", | ||
67 | }, { | ||
68 | .flags = 0, | ||
69 | } | ||
70 | }; | ||
71 | |||
72 | static struct platform_device sci_device = { | ||
73 | .name = "sh-sci", | 39 | .name = "sh-sci", |
74 | .id = -1, | 40 | .id = 0, |
41 | .dev = { | ||
42 | .platform_data = &scif0_platform_data, | ||
43 | }, | ||
44 | }; | ||
45 | |||
46 | static struct plat_sci_port scif1_platform_data = { | ||
47 | .mapbase = 0xffe10000, | ||
48 | .flags = UPF_BOOT_AUTOCONF, | ||
49 | .type = PORT_SCIF, | ||
50 | .irqs = { 81, 81, 81, 81 }, | ||
51 | .clk = "scif1", | ||
52 | }; | ||
53 | |||
54 | static struct platform_device scif1_device = { | ||
55 | .name = "sh-sci", | ||
56 | .id = 1, | ||
57 | .dev = { | ||
58 | .platform_data = &scif1_platform_data, | ||
59 | }, | ||
60 | }; | ||
61 | |||
62 | static struct plat_sci_port scif2_platform_data = { | ||
63 | .mapbase = 0xffe20000, | ||
64 | .flags = UPF_BOOT_AUTOCONF, | ||
65 | .type = PORT_SCIF, | ||
66 | .irqs = { 82, 82, 82, 82 }, | ||
67 | .clk = "scif2", | ||
68 | }; | ||
69 | |||
70 | static struct platform_device scif2_device = { | ||
71 | .name = "sh-sci", | ||
72 | .id = 2, | ||
73 | .dev = { | ||
74 | .platform_data = &scif2_platform_data, | ||
75 | }, | ||
76 | }; | ||
77 | |||
78 | static struct plat_sci_port scif3_platform_data = { | ||
79 | .mapbase = 0xa4e30000, | ||
80 | .flags = UPF_BOOT_AUTOCONF, | ||
81 | .type = PORT_SCIFA, | ||
82 | .irqs = { 56, 56, 56, 56 }, | ||
83 | .clk = "scif3", | ||
84 | }; | ||
85 | |||
86 | static struct platform_device scif3_device = { | ||
87 | .name = "sh-sci", | ||
88 | .id = 3, | ||
89 | .dev = { | ||
90 | .platform_data = &scif3_platform_data, | ||
91 | }, | ||
92 | }; | ||
93 | |||
94 | static struct plat_sci_port scif4_platform_data = { | ||
95 | .mapbase = 0xa4e40000, | ||
96 | .flags = UPF_BOOT_AUTOCONF, | ||
97 | .type = PORT_SCIFA, | ||
98 | .irqs = { 88, 88, 88, 88 }, | ||
99 | .clk = "scif4", | ||
100 | }; | ||
101 | |||
102 | static struct platform_device scif4_device = { | ||
103 | .name = "sh-sci", | ||
104 | .id = 4, | ||
105 | .dev = { | ||
106 | .platform_data = &scif4_platform_data, | ||
107 | }, | ||
108 | }; | ||
109 | |||
110 | static struct plat_sci_port scif5_platform_data = { | ||
111 | .mapbase = 0xa4e50000, | ||
112 | .flags = UPF_BOOT_AUTOCONF, | ||
113 | .type = PORT_SCIFA, | ||
114 | .irqs = { 109, 109, 109, 109 }, | ||
115 | .clk = "scif5", | ||
116 | }; | ||
117 | |||
118 | static struct platform_device scif5_device = { | ||
119 | .name = "sh-sci", | ||
120 | .id = 5, | ||
75 | .dev = { | 121 | .dev = { |
76 | .platform_data = sci_platform_data, | 122 | .platform_data = &scif5_platform_data, |
77 | }, | 123 | }, |
78 | }; | 124 | }; |
79 | 125 | ||
@@ -590,6 +636,12 @@ static struct platform_device spu1_device = { | |||
590 | }; | 636 | }; |
591 | 637 | ||
592 | static struct platform_device *sh7724_devices[] __initdata = { | 638 | static struct platform_device *sh7724_devices[] __initdata = { |
639 | &scif0_device, | ||
640 | &scif1_device, | ||
641 | &scif2_device, | ||
642 | &scif3_device, | ||
643 | &scif4_device, | ||
644 | &scif5_device, | ||
593 | &cmt_device, | 645 | &cmt_device, |
594 | &tmu0_device, | 646 | &tmu0_device, |
595 | &tmu1_device, | 647 | &tmu1_device, |
@@ -597,7 +649,6 @@ static struct platform_device *sh7724_devices[] __initdata = { | |||
597 | &tmu3_device, | 649 | &tmu3_device, |
598 | &tmu4_device, | 650 | &tmu4_device, |
599 | &tmu5_device, | 651 | &tmu5_device, |
600 | &sci_device, | ||
601 | &rtc_device, | 652 | &rtc_device, |
602 | &iic0_device, | 653 | &iic0_device, |
603 | &iic1_device, | 654 | &iic1_device, |
@@ -624,6 +675,12 @@ static int __init sh7724_devices_setup(void) | |||
624 | arch_initcall(sh7724_devices_setup); | 675 | arch_initcall(sh7724_devices_setup); |
625 | 676 | ||
626 | static struct platform_device *sh7724_early_devices[] __initdata = { | 677 | static struct platform_device *sh7724_early_devices[] __initdata = { |
678 | &scif0_device, | ||
679 | &scif1_device, | ||
680 | &scif2_device, | ||
681 | &scif3_device, | ||
682 | &scif4_device, | ||
683 | &scif5_device, | ||
627 | &cmt_device, | 684 | &cmt_device, |
628 | &tmu0_device, | 685 | &tmu0_device, |
629 | &tmu1_device, | 686 | &tmu1_device, |
diff --git a/arch/sh/kernel/cpu/sh4a/setup-sh7757.c b/arch/sh/kernel/cpu/sh4a/setup-sh7757.c index c470e15f2e03..37e32efbbaa7 100644 --- a/arch/sh/kernel/cpu/sh4a/setup-sh7757.c +++ b/arch/sh/kernel/cpu/sh4a/setup-sh7757.c | |||
@@ -17,6 +17,51 @@ | |||
17 | #include <linux/mm.h> | 17 | #include <linux/mm.h> |
18 | #include <linux/sh_timer.h> | 18 | #include <linux/sh_timer.h> |
19 | 19 | ||
20 | static struct plat_sci_port scif2_platform_data = { | ||
21 | .mapbase = 0xfe4b0000, /* SCIF2 */ | ||
22 | .flags = UPF_BOOT_AUTOCONF, | ||
23 | .type = PORT_SCIF, | ||
24 | .irqs = { 40, 40, 40, 40 }, | ||
25 | }; | ||
26 | |||
27 | static struct platform_device scif2_device = { | ||
28 | .name = "sh-sci", | ||
29 | .id = 2, | ||
30 | .dev = { | ||
31 | .platform_data = &scif2_platform_data, | ||
32 | }, | ||
33 | }; | ||
34 | |||
35 | static struct plat_sci_port scif3_platform_data = { | ||
36 | .mapbase = 0xfe4c0000, /* SCIF3 */ | ||
37 | .flags = UPF_BOOT_AUTOCONF, | ||
38 | .type = PORT_SCIF, | ||
39 | .irqs = { 76, 76, 76, 76 }, | ||
40 | }; | ||
41 | |||
42 | static struct platform_device scif3_device = { | ||
43 | .name = "sh-sci", | ||
44 | .id = 3, | ||
45 | .dev = { | ||
46 | .platform_data = &scif3_platform_data, | ||
47 | }, | ||
48 | }; | ||
49 | |||
50 | static struct plat_sci_port scif4_platform_data = { | ||
51 | .mapbase = 0xfe4d0000, /* SCIF4 */ | ||
52 | .flags = UPF_BOOT_AUTOCONF, | ||
53 | .type = PORT_SCIF, | ||
54 | .irqs = { 104, 104, 104, 104 }, | ||
55 | }; | ||
56 | |||
57 | static struct platform_device scif4_device = { | ||
58 | .name = "sh-sci", | ||
59 | .id = 4, | ||
60 | .dev = { | ||
61 | .platform_data = &scif4_platform_data, | ||
62 | }, | ||
63 | }; | ||
64 | |||
20 | static struct sh_timer_config tmu0_platform_data = { | 65 | static struct sh_timer_config tmu0_platform_data = { |
21 | .name = "TMU0", | 66 | .name = "TMU0", |
22 | .channel_offset = 0x04, | 67 | .channel_offset = 0x04, |
@@ -79,39 +124,12 @@ static struct platform_device tmu1_device = { | |||
79 | .num_resources = ARRAY_SIZE(tmu1_resources), | 124 | .num_resources = ARRAY_SIZE(tmu1_resources), |
80 | }; | 125 | }; |
81 | 126 | ||
82 | static struct plat_sci_port sci_platform_data[] = { | ||
83 | { | ||
84 | .mapbase = 0xfe4b0000, /* SCIF2 */ | ||
85 | .flags = UPF_BOOT_AUTOCONF, | ||
86 | .type = PORT_SCIF, | ||
87 | .irqs = { 40, 40, 40, 40 }, | ||
88 | }, { | ||
89 | .mapbase = 0xfe4c0000, /* SCIF3 */ | ||
90 | .flags = UPF_BOOT_AUTOCONF, | ||
91 | .type = PORT_SCIF, | ||
92 | .irqs = { 76, 76, 76, 76 }, | ||
93 | }, { | ||
94 | .mapbase = 0xfe4d0000, /* SCIF4 */ | ||
95 | .flags = UPF_BOOT_AUTOCONF, | ||
96 | .type = PORT_SCIF, | ||
97 | .irqs = { 104, 104, 104, 104 }, | ||
98 | }, { | ||
99 | .flags = 0, | ||
100 | } | ||
101 | }; | ||
102 | |||
103 | static struct platform_device sci_device = { | ||
104 | .name = "sh-sci", | ||
105 | .id = -1, | ||
106 | .dev = { | ||
107 | .platform_data = sci_platform_data, | ||
108 | }, | ||
109 | }; | ||
110 | |||
111 | static struct platform_device *sh7757_devices[] __initdata = { | 127 | static struct platform_device *sh7757_devices[] __initdata = { |
128 | &scif2_device, | ||
129 | &scif3_device, | ||
130 | &scif4_device, | ||
112 | &tmu0_device, | 131 | &tmu0_device, |
113 | &tmu1_device, | 132 | &tmu1_device, |
114 | &sci_device, | ||
115 | }; | 133 | }; |
116 | 134 | ||
117 | static int __init sh7757_devices_setup(void) | 135 | static int __init sh7757_devices_setup(void) |
@@ -121,6 +139,20 @@ static int __init sh7757_devices_setup(void) | |||
121 | } | 139 | } |
122 | arch_initcall(sh7757_devices_setup); | 140 | arch_initcall(sh7757_devices_setup); |
123 | 141 | ||
142 | static struct platform_device *sh7757_early_devices[] __initdata = { | ||
143 | &scif2_device, | ||
144 | &scif3_device, | ||
145 | &scif4_device, | ||
146 | &tmu0_device, | ||
147 | &tmu1_device, | ||
148 | }; | ||
149 | |||
150 | void __init plat_early_device_setup(void) | ||
151 | { | ||
152 | early_platform_add_devices(sh7757_early_devices, | ||
153 | ARRAY_SIZE(sh7757_early_devices)); | ||
154 | } | ||
155 | |||
124 | enum { | 156 | enum { |
125 | UNUSED = 0, | 157 | UNUSED = 0, |
126 | 158 | ||
diff --git a/arch/sh/kernel/cpu/sh4a/setup-sh7763.c b/arch/sh/kernel/cpu/sh4a/setup-sh7763.c index 4659fff6b842..6aba26fec416 100644 --- a/arch/sh/kernel/cpu/sh4a/setup-sh7763.c +++ b/arch/sh/kernel/cpu/sh4a/setup-sh7763.c | |||
@@ -16,6 +16,51 @@ | |||
16 | #include <linux/io.h> | 16 | #include <linux/io.h> |
17 | #include <linux/serial_sci.h> | 17 | #include <linux/serial_sci.h> |
18 | 18 | ||
19 | static struct plat_sci_port scif0_platform_data = { | ||
20 | .mapbase = 0xffe00000, | ||
21 | .flags = UPF_BOOT_AUTOCONF, | ||
22 | .type = PORT_SCIF, | ||
23 | .irqs = { 40, 40, 40, 40 }, | ||
24 | }; | ||
25 | |||
26 | static struct platform_device scif0_device = { | ||
27 | .name = "sh-sci", | ||
28 | .id = 0, | ||
29 | .dev = { | ||
30 | .platform_data = &scif0_platform_data, | ||
31 | }, | ||
32 | }; | ||
33 | |||
34 | static struct plat_sci_port scif1_platform_data = { | ||
35 | .mapbase = 0xffe08000, | ||
36 | .flags = UPF_BOOT_AUTOCONF, | ||
37 | .type = PORT_SCIF, | ||
38 | .irqs = { 76, 76, 76, 76 }, | ||
39 | }; | ||
40 | |||
41 | static struct platform_device scif1_device = { | ||
42 | .name = "sh-sci", | ||
43 | .id = 1, | ||
44 | .dev = { | ||
45 | .platform_data = &scif1_platform_data, | ||
46 | }, | ||
47 | }; | ||
48 | |||
49 | static struct plat_sci_port scif2_platform_data = { | ||
50 | .mapbase = 0xffe10000, | ||
51 | .flags = UPF_BOOT_AUTOCONF, | ||
52 | .type = PORT_SCIF, | ||
53 | .irqs = { 104, 104, 104, 104 }, | ||
54 | }; | ||
55 | |||
56 | static struct platform_device scif2_device = { | ||
57 | .name = "sh-sci", | ||
58 | .id = 2, | ||
59 | .dev = { | ||
60 | .platform_data = &scif2_platform_data, | ||
61 | }, | ||
62 | }; | ||
63 | |||
19 | static struct resource rtc_resources[] = { | 64 | static struct resource rtc_resources[] = { |
20 | [0] = { | 65 | [0] = { |
21 | .start = 0xffe80000, | 66 | .start = 0xffe80000, |
@@ -36,35 +81,6 @@ static struct platform_device rtc_device = { | |||
36 | .resource = rtc_resources, | 81 | .resource = rtc_resources, |
37 | }; | 82 | }; |
38 | 83 | ||
39 | static struct plat_sci_port sci_platform_data[] = { | ||
40 | { | ||
41 | .mapbase = 0xffe00000, | ||
42 | .flags = UPF_BOOT_AUTOCONF, | ||
43 | .type = PORT_SCIF, | ||
44 | .irqs = { 40, 40, 40, 40 }, | ||
45 | }, { | ||
46 | .mapbase = 0xffe08000, | ||
47 | .flags = UPF_BOOT_AUTOCONF, | ||
48 | .type = PORT_SCIF, | ||
49 | .irqs = { 76, 76, 76, 76 }, | ||
50 | }, { | ||
51 | .mapbase = 0xffe10000, | ||
52 | .flags = UPF_BOOT_AUTOCONF, | ||
53 | .type = PORT_SCIF, | ||
54 | .irqs = { 104, 104, 104, 104 }, | ||
55 | }, { | ||
56 | .flags = 0, | ||
57 | } | ||
58 | }; | ||
59 | |||
60 | static struct platform_device sci_device = { | ||
61 | .name = "sh-sci", | ||
62 | .id = -1, | ||
63 | .dev = { | ||
64 | .platform_data = sci_platform_data, | ||
65 | }, | ||
66 | }; | ||
67 | |||
68 | static struct resource usb_ohci_resources[] = { | 84 | static struct resource usb_ohci_resources[] = { |
69 | [0] = { | 85 | [0] = { |
70 | .start = 0xffec8000, | 86 | .start = 0xffec8000, |
@@ -297,6 +313,9 @@ static struct platform_device tmu5_device = { | |||
297 | }; | 313 | }; |
298 | 314 | ||
299 | static struct platform_device *sh7763_devices[] __initdata = { | 315 | static struct platform_device *sh7763_devices[] __initdata = { |
316 | &scif0_device, | ||
317 | &scif1_device, | ||
318 | &scif2_device, | ||
300 | &tmu0_device, | 319 | &tmu0_device, |
301 | &tmu1_device, | 320 | &tmu1_device, |
302 | &tmu2_device, | 321 | &tmu2_device, |
@@ -304,7 +323,6 @@ static struct platform_device *sh7763_devices[] __initdata = { | |||
304 | &tmu4_device, | 323 | &tmu4_device, |
305 | &tmu5_device, | 324 | &tmu5_device, |
306 | &rtc_device, | 325 | &rtc_device, |
307 | &sci_device, | ||
308 | &usb_ohci_device, | 326 | &usb_ohci_device, |
309 | &usbf_device, | 327 | &usbf_device, |
310 | }; | 328 | }; |
@@ -317,6 +335,9 @@ static int __init sh7763_devices_setup(void) | |||
317 | arch_initcall(sh7763_devices_setup); | 335 | arch_initcall(sh7763_devices_setup); |
318 | 336 | ||
319 | static struct platform_device *sh7763_early_devices[] __initdata = { | 337 | static struct platform_device *sh7763_early_devices[] __initdata = { |
338 | &scif0_device, | ||
339 | &scif1_device, | ||
340 | &scif2_device, | ||
320 | &tmu0_device, | 341 | &tmu0_device, |
321 | &tmu1_device, | 342 | &tmu1_device, |
322 | &tmu2_device, | 343 | &tmu2_device, |
diff --git a/arch/sh/kernel/cpu/sh4a/setup-sh7770.c b/arch/sh/kernel/cpu/sh4a/setup-sh7770.c index eead08d89d32..c1643bc9590d 100644 --- a/arch/sh/kernel/cpu/sh4a/setup-sh7770.c +++ b/arch/sh/kernel/cpu/sh4a/setup-sh7770.c | |||
@@ -14,67 +14,153 @@ | |||
14 | #include <linux/sh_timer.h> | 14 | #include <linux/sh_timer.h> |
15 | #include <linux/io.h> | 15 | #include <linux/io.h> |
16 | 16 | ||
17 | static struct plat_sci_port sci_platform_data[] = { | 17 | static struct plat_sci_port scif0_platform_data = { |
18 | { | 18 | .mapbase = 0xff923000, |
19 | .mapbase = 0xff923000, | 19 | .flags = UPF_BOOT_AUTOCONF, |
20 | .flags = UPF_BOOT_AUTOCONF, | 20 | .type = PORT_SCIF, |
21 | .type = PORT_SCIF, | 21 | .irqs = { 61, 61, 61, 61 }, |
22 | .irqs = { 61, 61, 61, 61 }, | 22 | }; |
23 | }, { | 23 | |
24 | .mapbase = 0xff924000, | 24 | static struct platform_device scif0_device = { |
25 | .flags = UPF_BOOT_AUTOCONF, | 25 | .name = "sh-sci", |
26 | .type = PORT_SCIF, | 26 | .id = 0, |
27 | .irqs = { 62, 62, 62, 62 }, | 27 | .dev = { |
28 | }, { | 28 | .platform_data = &scif0_platform_data, |
29 | .mapbase = 0xff925000, | 29 | }, |
30 | .flags = UPF_BOOT_AUTOCONF, | 30 | }; |
31 | .type = PORT_SCIF, | 31 | |
32 | .irqs = { 63, 63, 63, 63 }, | 32 | static struct plat_sci_port scif1_platform_data = { |
33 | }, { | 33 | .mapbase = 0xff924000, |
34 | .mapbase = 0xff926000, | 34 | .flags = UPF_BOOT_AUTOCONF, |
35 | .flags = UPF_BOOT_AUTOCONF, | 35 | .type = PORT_SCIF, |
36 | .type = PORT_SCIF, | 36 | .irqs = { 62, 62, 62, 62 }, |
37 | .irqs = { 64, 64, 64, 64 }, | 37 | }; |
38 | }, { | 38 | |
39 | .mapbase = 0xff927000, | 39 | static struct platform_device scif1_device = { |
40 | .flags = UPF_BOOT_AUTOCONF, | 40 | .name = "sh-sci", |
41 | .type = PORT_SCIF, | 41 | .id = 1, |
42 | .irqs = { 65, 65, 65, 65 }, | 42 | .dev = { |
43 | }, { | 43 | .platform_data = &scif1_platform_data, |
44 | .mapbase = 0xff928000, | 44 | }, |
45 | .flags = UPF_BOOT_AUTOCONF, | 45 | }; |
46 | .type = PORT_SCIF, | 46 | |
47 | .irqs = { 66, 66, 66, 66 }, | 47 | static struct plat_sci_port scif2_platform_data = { |
48 | }, { | 48 | .mapbase = 0xff925000, |
49 | .mapbase = 0xff929000, | 49 | .flags = UPF_BOOT_AUTOCONF, |
50 | .flags = UPF_BOOT_AUTOCONF, | 50 | .type = PORT_SCIF, |
51 | .type = PORT_SCIF, | 51 | .irqs = { 63, 63, 63, 63 }, |
52 | .irqs = { 67, 67, 67, 67 }, | 52 | }; |
53 | }, { | 53 | |
54 | .mapbase = 0xff92a000, | 54 | static struct platform_device scif2_device = { |
55 | .flags = UPF_BOOT_AUTOCONF, | 55 | .name = "sh-sci", |
56 | .type = PORT_SCIF, | 56 | .id = 2, |
57 | .irqs = { 68, 68, 68, 68 }, | 57 | .dev = { |
58 | }, { | 58 | .platform_data = &scif2_platform_data, |
59 | .mapbase = 0xff92b000, | 59 | }, |
60 | .flags = UPF_BOOT_AUTOCONF, | 60 | }; |
61 | .type = PORT_SCIF, | 61 | |
62 | .irqs = { 69, 69, 69, 69 }, | 62 | static struct plat_sci_port scif3_platform_data = { |
63 | }, { | 63 | .mapbase = 0xff926000, |
64 | .mapbase = 0xff92c000, | 64 | .flags = UPF_BOOT_AUTOCONF, |
65 | .flags = UPF_BOOT_AUTOCONF, | 65 | .type = PORT_SCIF, |
66 | .type = PORT_SCIF, | 66 | .irqs = { 64, 64, 64, 64 }, |
67 | .irqs = { 70, 70, 70, 70 }, | 67 | }; |
68 | }, { | 68 | |
69 | .flags = 0, | 69 | static struct platform_device scif3_device = { |
70 | } | 70 | .name = "sh-sci", |
71 | .id = 3, | ||
72 | .dev = { | ||
73 | .platform_data = &scif3_platform_data, | ||
74 | }, | ||
75 | }; | ||
76 | |||
77 | static struct plat_sci_port scif4_platform_data = { | ||
78 | .mapbase = 0xff927000, | ||
79 | .flags = UPF_BOOT_AUTOCONF, | ||
80 | .type = PORT_SCIF, | ||
81 | .irqs = { 65, 65, 65, 65 }, | ||
82 | }; | ||
83 | |||
84 | static struct platform_device scif4_device = { | ||
85 | .name = "sh-sci", | ||
86 | .id = 4, | ||
87 | .dev = { | ||
88 | .platform_data = &scif4_platform_data, | ||
89 | }, | ||
90 | }; | ||
91 | |||
92 | static struct plat_sci_port scif5_platform_data = { | ||
93 | .mapbase = 0xff928000, | ||
94 | .flags = UPF_BOOT_AUTOCONF, | ||
95 | .type = PORT_SCIF, | ||
96 | .irqs = { 66, 66, 66, 66 }, | ||
97 | }; | ||
98 | |||
99 | static struct platform_device scif5_device = { | ||
100 | .name = "sh-sci", | ||
101 | .id = 5, | ||
102 | .dev = { | ||
103 | .platform_data = &scif5_platform_data, | ||
104 | }, | ||
105 | }; | ||
106 | |||
107 | static struct plat_sci_port scif6_platform_data = { | ||
108 | .mapbase = 0xff929000, | ||
109 | .flags = UPF_BOOT_AUTOCONF, | ||
110 | .type = PORT_SCIF, | ||
111 | .irqs = { 67, 67, 67, 67 }, | ||
112 | }; | ||
113 | |||
114 | static struct platform_device scif6_device = { | ||
115 | .name = "sh-sci", | ||
116 | .id = 6, | ||
117 | .dev = { | ||
118 | .platform_data = &scif6_platform_data, | ||
119 | }, | ||
120 | }; | ||
121 | |||
122 | static struct plat_sci_port scif7_platform_data = { | ||
123 | .mapbase = 0xff92a000, | ||
124 | .flags = UPF_BOOT_AUTOCONF, | ||
125 | .type = PORT_SCIF, | ||
126 | .irqs = { 68, 68, 68, 68 }, | ||
127 | }; | ||
128 | |||
129 | static struct platform_device scif7_device = { | ||
130 | .name = "sh-sci", | ||
131 | .id = 7, | ||
132 | .dev = { | ||
133 | .platform_data = &scif7_platform_data, | ||
134 | }, | ||
135 | }; | ||
136 | |||
137 | static struct plat_sci_port scif8_platform_data = { | ||
138 | .mapbase = 0xff92b000, | ||
139 | .flags = UPF_BOOT_AUTOCONF, | ||
140 | .type = PORT_SCIF, | ||
141 | .irqs = { 69, 69, 69, 69 }, | ||
142 | }; | ||
143 | |||
144 | static struct platform_device scif8_device = { | ||
145 | .name = "sh-sci", | ||
146 | .id = 8, | ||
147 | .dev = { | ||
148 | .platform_data = &scif8_platform_data, | ||
149 | }, | ||
150 | }; | ||
151 | |||
152 | static struct plat_sci_port scif9_platform_data = { | ||
153 | .mapbase = 0xff92c000, | ||
154 | .flags = UPF_BOOT_AUTOCONF, | ||
155 | .type = PORT_SCIF, | ||
156 | .irqs = { 70, 70, 70, 70 }, | ||
71 | }; | 157 | }; |
72 | 158 | ||
73 | static struct platform_device sci_device = { | 159 | static struct platform_device scif9_device = { |
74 | .name = "sh-sci", | 160 | .name = "sh-sci", |
75 | .id = -1, | 161 | .id = 9, |
76 | .dev = { | 162 | .dev = { |
77 | .platform_data = sci_platform_data, | 163 | .platform_data = &scif9_platform_data, |
78 | }, | 164 | }, |
79 | }; | 165 | }; |
80 | 166 | ||
@@ -351,6 +437,16 @@ static struct platform_device tmu8_device = { | |||
351 | }; | 437 | }; |
352 | 438 | ||
353 | static struct platform_device *sh7770_devices[] __initdata = { | 439 | static struct platform_device *sh7770_devices[] __initdata = { |
440 | &scif0_device, | ||
441 | &scif1_device, | ||
442 | &scif2_device, | ||
443 | &scif3_device, | ||
444 | &scif4_device, | ||
445 | &scif5_device, | ||
446 | &scif6_device, | ||
447 | &scif7_device, | ||
448 | &scif8_device, | ||
449 | &scif9_device, | ||
354 | &tmu0_device, | 450 | &tmu0_device, |
355 | &tmu1_device, | 451 | &tmu1_device, |
356 | &tmu2_device, | 452 | &tmu2_device, |
@@ -360,7 +456,6 @@ static struct platform_device *sh7770_devices[] __initdata = { | |||
360 | &tmu6_device, | 456 | &tmu6_device, |
361 | &tmu7_device, | 457 | &tmu7_device, |
362 | &tmu8_device, | 458 | &tmu8_device, |
363 | &sci_device, | ||
364 | }; | 459 | }; |
365 | 460 | ||
366 | static int __init sh7770_devices_setup(void) | 461 | static int __init sh7770_devices_setup(void) |
@@ -371,6 +466,16 @@ static int __init sh7770_devices_setup(void) | |||
371 | arch_initcall(sh7770_devices_setup); | 466 | arch_initcall(sh7770_devices_setup); |
372 | 467 | ||
373 | static struct platform_device *sh7770_early_devices[] __initdata = { | 468 | static struct platform_device *sh7770_early_devices[] __initdata = { |
469 | &scif0_device, | ||
470 | &scif1_device, | ||
471 | &scif2_device, | ||
472 | &scif3_device, | ||
473 | &scif4_device, | ||
474 | &scif5_device, | ||
475 | &scif6_device, | ||
476 | &scif7_device, | ||
477 | &scif8_device, | ||
478 | &scif9_device, | ||
374 | &tmu0_device, | 479 | &tmu0_device, |
375 | &tmu1_device, | 480 | &tmu1_device, |
376 | &tmu2_device, | 481 | &tmu2_device, |
diff --git a/arch/sh/kernel/cpu/sh4a/setup-sh7780.c b/arch/sh/kernel/cpu/sh4a/setup-sh7780.c index 12ff56f19c5c..c310558490d5 100644 --- a/arch/sh/kernel/cpu/sh4a/setup-sh7780.c +++ b/arch/sh/kernel/cpu/sh4a/setup-sh7780.c | |||
@@ -15,6 +15,36 @@ | |||
15 | #include <linux/sh_timer.h> | 15 | #include <linux/sh_timer.h> |
16 | #include <asm/dma-sh.h> | 16 | #include <asm/dma-sh.h> |
17 | 17 | ||
18 | static struct plat_sci_port scif0_platform_data = { | ||
19 | .mapbase = 0xffe00000, | ||
20 | .flags = UPF_BOOT_AUTOCONF, | ||
21 | .type = PORT_SCIF, | ||
22 | .irqs = { 40, 40, 40, 40 }, | ||
23 | }; | ||
24 | |||
25 | static struct platform_device scif0_device = { | ||
26 | .name = "sh-sci", | ||
27 | .id = 0, | ||
28 | .dev = { | ||
29 | .platform_data = &scif0_platform_data, | ||
30 | }, | ||
31 | }; | ||
32 | |||
33 | static struct plat_sci_port scif1_platform_data = { | ||
34 | .mapbase = 0xffe10000, | ||
35 | .flags = UPF_BOOT_AUTOCONF, | ||
36 | .type = PORT_SCIF, | ||
37 | .irqs = { 76, 76, 76, 76 }, | ||
38 | }; | ||
39 | |||
40 | static struct platform_device scif1_device = { | ||
41 | .name = "sh-sci", | ||
42 | .id = 1, | ||
43 | .dev = { | ||
44 | .platform_data = &scif1_platform_data, | ||
45 | }, | ||
46 | }; | ||
47 | |||
18 | static struct sh_timer_config tmu0_platform_data = { | 48 | static struct sh_timer_config tmu0_platform_data = { |
19 | .name = "TMU0", | 49 | .name = "TMU0", |
20 | .channel_offset = 0x04, | 50 | .channel_offset = 0x04, |
@@ -217,30 +247,6 @@ static struct platform_device rtc_device = { | |||
217 | .resource = rtc_resources, | 247 | .resource = rtc_resources, |
218 | }; | 248 | }; |
219 | 249 | ||
220 | static struct plat_sci_port sci_platform_data[] = { | ||
221 | { | ||
222 | .mapbase = 0xffe00000, | ||
223 | .flags = UPF_BOOT_AUTOCONF, | ||
224 | .type = PORT_SCIF, | ||
225 | .irqs = { 40, 40, 40, 40 }, | ||
226 | }, { | ||
227 | .mapbase = 0xffe10000, | ||
228 | .flags = UPF_BOOT_AUTOCONF, | ||
229 | .type = PORT_SCIF, | ||
230 | .irqs = { 76, 76, 76, 76 }, | ||
231 | }, { | ||
232 | .flags = 0, | ||
233 | } | ||
234 | }; | ||
235 | |||
236 | static struct platform_device sci_device = { | ||
237 | .name = "sh-sci", | ||
238 | .id = -1, | ||
239 | .dev = { | ||
240 | .platform_data = sci_platform_data, | ||
241 | }, | ||
242 | }; | ||
243 | |||
244 | static struct sh_dmae_pdata dma_platform_data = { | 250 | static struct sh_dmae_pdata dma_platform_data = { |
245 | .mode = (SHDMA_MIX_IRQ | SHDMA_DMAOR1), | 251 | .mode = (SHDMA_MIX_IRQ | SHDMA_DMAOR1), |
246 | }; | 252 | }; |
@@ -254,6 +260,8 @@ static struct platform_device dma_device = { | |||
254 | }; | 260 | }; |
255 | 261 | ||
256 | static struct platform_device *sh7780_devices[] __initdata = { | 262 | static struct platform_device *sh7780_devices[] __initdata = { |
263 | &scif0_device, | ||
264 | &scif1_device, | ||
257 | &tmu0_device, | 265 | &tmu0_device, |
258 | &tmu1_device, | 266 | &tmu1_device, |
259 | &tmu2_device, | 267 | &tmu2_device, |
@@ -261,7 +269,6 @@ static struct platform_device *sh7780_devices[] __initdata = { | |||
261 | &tmu4_device, | 269 | &tmu4_device, |
262 | &tmu5_device, | 270 | &tmu5_device, |
263 | &rtc_device, | 271 | &rtc_device, |
264 | &sci_device, | ||
265 | &dma_device, | 272 | &dma_device, |
266 | }; | 273 | }; |
267 | 274 | ||
@@ -271,8 +278,9 @@ static int __init sh7780_devices_setup(void) | |||
271 | ARRAY_SIZE(sh7780_devices)); | 278 | ARRAY_SIZE(sh7780_devices)); |
272 | } | 279 | } |
273 | arch_initcall(sh7780_devices_setup); | 280 | arch_initcall(sh7780_devices_setup); |
274 | |||
275 | static struct platform_device *sh7780_early_devices[] __initdata = { | 281 | static struct platform_device *sh7780_early_devices[] __initdata = { |
282 | &scif0_device, | ||
283 | &scif1_device, | ||
276 | &tmu0_device, | 284 | &tmu0_device, |
277 | &tmu1_device, | 285 | &tmu1_device, |
278 | &tmu2_device, | 286 | &tmu2_device, |
diff --git a/arch/sh/kernel/cpu/sh4a/setup-sh7785.c b/arch/sh/kernel/cpu/sh4a/setup-sh7785.c index 7f6c718b6c36..ef26ebda6e8b 100644 --- a/arch/sh/kernel/cpu/sh4a/setup-sh7785.c +++ b/arch/sh/kernel/cpu/sh4a/setup-sh7785.c | |||
@@ -16,6 +16,102 @@ | |||
16 | #include <linux/sh_timer.h> | 16 | #include <linux/sh_timer.h> |
17 | #include <asm/mmzone.h> | 17 | #include <asm/mmzone.h> |
18 | 18 | ||
19 | static struct plat_sci_port scif0_platform_data = { | ||
20 | .mapbase = 0xffea0000, | ||
21 | .flags = UPF_BOOT_AUTOCONF, | ||
22 | .type = PORT_SCIF, | ||
23 | .irqs = { 40, 40, 40, 40 }, | ||
24 | .clk = "scif_fck", | ||
25 | }; | ||
26 | |||
27 | static struct platform_device scif0_device = { | ||
28 | .name = "sh-sci", | ||
29 | .id = 0, | ||
30 | .dev = { | ||
31 | .platform_data = &scif0_platform_data, | ||
32 | }, | ||
33 | }; | ||
34 | |||
35 | static struct plat_sci_port scif1_platform_data = { | ||
36 | .mapbase = 0xffeb0000, | ||
37 | .flags = UPF_BOOT_AUTOCONF, | ||
38 | .type = PORT_SCIF, | ||
39 | .irqs = { 44, 44, 44, 44 }, | ||
40 | .clk = "scif_fck", | ||
41 | }; | ||
42 | |||
43 | static struct platform_device scif1_device = { | ||
44 | .name = "sh-sci", | ||
45 | .id = 1, | ||
46 | .dev = { | ||
47 | .platform_data = &scif1_platform_data, | ||
48 | }, | ||
49 | }; | ||
50 | |||
51 | static struct plat_sci_port scif2_platform_data = { | ||
52 | .mapbase = 0xffec0000, | ||
53 | .flags = UPF_BOOT_AUTOCONF, | ||
54 | .type = PORT_SCIF, | ||
55 | .irqs = { 60, 60, 60, 60 }, | ||
56 | .clk = "scif_fck", | ||
57 | }; | ||
58 | |||
59 | static struct platform_device scif2_device = { | ||
60 | .name = "sh-sci", | ||
61 | .id = 2, | ||
62 | .dev = { | ||
63 | .platform_data = &scif2_platform_data, | ||
64 | }, | ||
65 | }; | ||
66 | |||
67 | static struct plat_sci_port scif3_platform_data = { | ||
68 | .mapbase = 0xffed0000, | ||
69 | .flags = UPF_BOOT_AUTOCONF, | ||
70 | .type = PORT_SCIF, | ||
71 | .irqs = { 61, 61, 61, 61 }, | ||
72 | .clk = "scif_fck", | ||
73 | }; | ||
74 | |||
75 | static struct platform_device scif3_device = { | ||
76 | .name = "sh-sci", | ||
77 | .id = 3, | ||
78 | .dev = { | ||
79 | .platform_data = &scif3_platform_data, | ||
80 | }, | ||
81 | }; | ||
82 | |||
83 | static struct plat_sci_port scif4_platform_data = { | ||
84 | .mapbase = 0xffee0000, | ||
85 | .flags = UPF_BOOT_AUTOCONF, | ||
86 | .type = PORT_SCIF, | ||
87 | .irqs = { 62, 62, 62, 62 }, | ||
88 | .clk = "scif_fck", | ||
89 | }; | ||
90 | |||
91 | static struct platform_device scif4_device = { | ||
92 | .name = "sh-sci", | ||
93 | .id = 4, | ||
94 | .dev = { | ||
95 | .platform_data = &scif4_platform_data, | ||
96 | }, | ||
97 | }; | ||
98 | |||
99 | static struct plat_sci_port scif5_platform_data = { | ||
100 | .mapbase = 0xffef0000, | ||
101 | .flags = UPF_BOOT_AUTOCONF, | ||
102 | .type = PORT_SCIF, | ||
103 | .irqs = { 63, 63, 63, 63 }, | ||
104 | .clk = "scif_fck", | ||
105 | }; | ||
106 | |||
107 | static struct platform_device scif5_device = { | ||
108 | .name = "sh-sci", | ||
109 | .id = 5, | ||
110 | .dev = { | ||
111 | .platform_data = &scif5_platform_data, | ||
112 | }, | ||
113 | }; | ||
114 | |||
19 | static struct sh_timer_config tmu0_platform_data = { | 115 | static struct sh_timer_config tmu0_platform_data = { |
20 | .name = "TMU0", | 116 | .name = "TMU0", |
21 | .channel_offset = 0x04, | 117 | .channel_offset = 0x04, |
@@ -198,64 +294,19 @@ static struct platform_device tmu5_device = { | |||
198 | .num_resources = ARRAY_SIZE(tmu5_resources), | 294 | .num_resources = ARRAY_SIZE(tmu5_resources), |
199 | }; | 295 | }; |
200 | 296 | ||
201 | static struct plat_sci_port sci_platform_data[] = { | ||
202 | { | ||
203 | .mapbase = 0xffea0000, | ||
204 | .flags = UPF_BOOT_AUTOCONF, | ||
205 | .type = PORT_SCIF, | ||
206 | .irqs = { 40, 40, 40, 40 }, | ||
207 | .clk = "scif_fck", | ||
208 | }, { | ||
209 | .mapbase = 0xffeb0000, | ||
210 | .flags = UPF_BOOT_AUTOCONF, | ||
211 | .type = PORT_SCIF, | ||
212 | .irqs = { 44, 44, 44, 44 }, | ||
213 | .clk = "scif_fck", | ||
214 | }, { | ||
215 | .mapbase = 0xffec0000, | ||
216 | .flags = UPF_BOOT_AUTOCONF, | ||
217 | .type = PORT_SCIF, | ||
218 | .irqs = { 60, 60, 60, 60 }, | ||
219 | .clk = "scif_fck", | ||
220 | }, { | ||
221 | .mapbase = 0xffed0000, | ||
222 | .flags = UPF_BOOT_AUTOCONF, | ||
223 | .type = PORT_SCIF, | ||
224 | .irqs = { 61, 61, 61, 61 }, | ||
225 | .clk = "scif_fck", | ||
226 | }, { | ||
227 | .mapbase = 0xffee0000, | ||
228 | .flags = UPF_BOOT_AUTOCONF, | ||
229 | .type = PORT_SCIF, | ||
230 | .irqs = { 62, 62, 62, 62 }, | ||
231 | .clk = "scif_fck", | ||
232 | }, { | ||
233 | .mapbase = 0xffef0000, | ||
234 | .flags = UPF_BOOT_AUTOCONF, | ||
235 | .type = PORT_SCIF, | ||
236 | .irqs = { 63, 63, 63, 63 }, | ||
237 | .clk = "scif_fck", | ||
238 | }, { | ||
239 | .flags = 0, | ||
240 | } | ||
241 | }; | ||
242 | |||
243 | static struct platform_device sci_device = { | ||
244 | .name = "sh-sci", | ||
245 | .id = -1, | ||
246 | .dev = { | ||
247 | .platform_data = sci_platform_data, | ||
248 | }, | ||
249 | }; | ||
250 | |||
251 | static struct platform_device *sh7785_devices[] __initdata = { | 297 | static struct platform_device *sh7785_devices[] __initdata = { |
298 | &scif0_device, | ||
299 | &scif1_device, | ||
300 | &scif2_device, | ||
301 | &scif3_device, | ||
302 | &scif4_device, | ||
303 | &scif5_device, | ||
252 | &tmu0_device, | 304 | &tmu0_device, |
253 | &tmu1_device, | 305 | &tmu1_device, |
254 | &tmu2_device, | 306 | &tmu2_device, |
255 | &tmu3_device, | 307 | &tmu3_device, |
256 | &tmu4_device, | 308 | &tmu4_device, |
257 | &tmu5_device, | 309 | &tmu5_device, |
258 | &sci_device, | ||
259 | }; | 310 | }; |
260 | 311 | ||
261 | static int __init sh7785_devices_setup(void) | 312 | static int __init sh7785_devices_setup(void) |
@@ -266,6 +317,12 @@ static int __init sh7785_devices_setup(void) | |||
266 | arch_initcall(sh7785_devices_setup); | 317 | arch_initcall(sh7785_devices_setup); |
267 | 318 | ||
268 | static struct platform_device *sh7785_early_devices[] __initdata = { | 319 | static struct platform_device *sh7785_early_devices[] __initdata = { |
320 | &scif0_device, | ||
321 | &scif1_device, | ||
322 | &scif2_device, | ||
323 | &scif3_device, | ||
324 | &scif4_device, | ||
325 | &scif5_device, | ||
269 | &tmu0_device, | 326 | &tmu0_device, |
270 | &tmu1_device, | 327 | &tmu1_device, |
271 | &tmu2_device, | 328 | &tmu2_device, |
diff --git a/arch/sh/kernel/cpu/sh4a/setup-sh7786.c b/arch/sh/kernel/cpu/sh4a/setup-sh7786.c index 0104a8ec5369..71673487ace0 100644 --- a/arch/sh/kernel/cpu/sh4a/setup-sh7786.c +++ b/arch/sh/kernel/cpu/sh4a/setup-sh7786.c | |||
@@ -23,51 +23,96 @@ | |||
23 | #include <linux/sh_timer.h> | 23 | #include <linux/sh_timer.h> |
24 | #include <asm/mmzone.h> | 24 | #include <asm/mmzone.h> |
25 | 25 | ||
26 | static struct plat_sci_port sci_platform_data[] = { | 26 | static struct plat_sci_port scif0_platform_data = { |
27 | { | 27 | .mapbase = 0xffea0000, |
28 | .mapbase = 0xffea0000, | 28 | .flags = UPF_BOOT_AUTOCONF, |
29 | .flags = UPF_BOOT_AUTOCONF, | 29 | .type = PORT_SCIF, |
30 | .type = PORT_SCIF, | 30 | .irqs = { 40, 41, 43, 42 }, |
31 | .irqs = { 40, 41, 43, 42 }, | 31 | }; |
32 | |||
33 | static struct platform_device scif0_device = { | ||
34 | .name = "sh-sci", | ||
35 | .id = 0, | ||
36 | .dev = { | ||
37 | .platform_data = &scif0_platform_data, | ||
32 | }, | 38 | }, |
33 | /* | ||
34 | * The rest of these all have multiplexed IRQs | ||
35 | */ | ||
36 | { | ||
37 | .mapbase = 0xffeb0000, | ||
38 | .flags = UPF_BOOT_AUTOCONF, | ||
39 | .type = PORT_SCIF, | ||
40 | .irqs = { 44, 44, 44, 44 }, | ||
41 | }, { | ||
42 | .mapbase = 0xffec0000, | ||
43 | .flags = UPF_BOOT_AUTOCONF, | ||
44 | .type = PORT_SCIF, | ||
45 | .irqs = { 50, 50, 50, 50 }, | ||
46 | }, { | ||
47 | .mapbase = 0xffed0000, | ||
48 | .flags = UPF_BOOT_AUTOCONF, | ||
49 | .type = PORT_SCIF, | ||
50 | .irqs = { 51, 51, 51, 51 }, | ||
51 | }, { | ||
52 | .mapbase = 0xffee0000, | ||
53 | .flags = UPF_BOOT_AUTOCONF, | ||
54 | .type = PORT_SCIF, | ||
55 | .irqs = { 52, 52, 52, 52 }, | ||
56 | }, { | ||
57 | .mapbase = 0xffef0000, | ||
58 | .flags = UPF_BOOT_AUTOCONF, | ||
59 | .type = PORT_SCIF, | ||
60 | .irqs = { 53, 53, 53, 53 }, | ||
61 | }, { | ||
62 | .flags = 0, | ||
63 | } | ||
64 | }; | 39 | }; |
65 | 40 | ||
66 | static struct platform_device sci_device = { | 41 | /* |
42 | * The rest of these all have multiplexed IRQs | ||
43 | */ | ||
44 | static struct plat_sci_port scif1_platform_data = { | ||
45 | .mapbase = 0xffeb0000, | ||
46 | .flags = UPF_BOOT_AUTOCONF, | ||
47 | .type = PORT_SCIF, | ||
48 | .irqs = { 44, 44, 44, 44 }, | ||
49 | }; | ||
50 | |||
51 | static struct platform_device scif1_device = { | ||
67 | .name = "sh-sci", | 52 | .name = "sh-sci", |
68 | .id = -1, | 53 | .id = 1, |
54 | .dev = { | ||
55 | .platform_data = &scif1_platform_data, | ||
56 | }, | ||
57 | }; | ||
58 | |||
59 | static struct plat_sci_port scif2_platform_data = { | ||
60 | .mapbase = 0xffec0000, | ||
61 | .flags = UPF_BOOT_AUTOCONF, | ||
62 | .type = PORT_SCIF, | ||
63 | .irqs = { 50, 50, 50, 50 }, | ||
64 | }; | ||
65 | |||
66 | static struct platform_device scif2_device = { | ||
67 | .name = "sh-sci", | ||
68 | .id = 2, | ||
69 | .dev = { | ||
70 | .platform_data = &scif2_platform_data, | ||
71 | }, | ||
72 | }; | ||
73 | |||
74 | static struct plat_sci_port scif3_platform_data = { | ||
75 | .mapbase = 0xffed0000, | ||
76 | .flags = UPF_BOOT_AUTOCONF, | ||
77 | .type = PORT_SCIF, | ||
78 | .irqs = { 51, 51, 51, 51 }, | ||
79 | }; | ||
80 | |||
81 | static struct platform_device scif3_device = { | ||
82 | .name = "sh-sci", | ||
83 | .id = 3, | ||
84 | .dev = { | ||
85 | .platform_data = &scif3_platform_data, | ||
86 | }, | ||
87 | }; | ||
88 | |||
89 | static struct plat_sci_port scif4_platform_data = { | ||
90 | .mapbase = 0xffee0000, | ||
91 | .flags = UPF_BOOT_AUTOCONF, | ||
92 | .type = PORT_SCIF, | ||
93 | .irqs = { 52, 52, 52, 52 }, | ||
94 | }; | ||
95 | |||
96 | static struct platform_device scif4_device = { | ||
97 | .name = "sh-sci", | ||
98 | .id = 4, | ||
99 | .dev = { | ||
100 | .platform_data = &scif4_platform_data, | ||
101 | }, | ||
102 | }; | ||
103 | |||
104 | static struct plat_sci_port scif5_platform_data = { | ||
105 | .mapbase = 0xffef0000, | ||
106 | .flags = UPF_BOOT_AUTOCONF, | ||
107 | .type = PORT_SCIF, | ||
108 | .irqs = { 53, 53, 53, 53 }, | ||
109 | }; | ||
110 | |||
111 | static struct platform_device scif5_device = { | ||
112 | .name = "sh-sci", | ||
113 | .id = 5, | ||
69 | .dev = { | 114 | .dev = { |
70 | .platform_data = sci_platform_data, | 115 | .platform_data = &scif5_platform_data, |
71 | }, | 116 | }, |
72 | }; | 117 | }; |
73 | 118 | ||
@@ -459,6 +504,12 @@ static struct platform_device usb_ohci_device = { | |||
459 | }; | 504 | }; |
460 | 505 | ||
461 | static struct platform_device *sh7786_early_devices[] __initdata = { | 506 | static struct platform_device *sh7786_early_devices[] __initdata = { |
507 | &scif0_device, | ||
508 | &scif1_device, | ||
509 | &scif2_device, | ||
510 | &scif3_device, | ||
511 | &scif4_device, | ||
512 | &scif5_device, | ||
462 | &tmu0_device, | 513 | &tmu0_device, |
463 | &tmu1_device, | 514 | &tmu1_device, |
464 | &tmu2_device, | 515 | &tmu2_device, |
@@ -474,7 +525,6 @@ static struct platform_device *sh7786_early_devices[] __initdata = { | |||
474 | }; | 525 | }; |
475 | 526 | ||
476 | static struct platform_device *sh7786_devices[] __initdata = { | 527 | static struct platform_device *sh7786_devices[] __initdata = { |
477 | &sci_device, | ||
478 | &usb_ohci_device, | 528 | &usb_ohci_device, |
479 | }; | 529 | }; |
480 | 530 | ||
diff --git a/arch/sh/kernel/cpu/sh4a/setup-shx3.c b/arch/sh/kernel/cpu/sh4a/setup-shx3.c index c7ba9166e18a..780ba17a5599 100644 --- a/arch/sh/kernel/cpu/sh4a/setup-shx3.c +++ b/arch/sh/kernel/cpu/sh4a/setup-shx3.c | |||
@@ -24,32 +24,48 @@ | |||
24 | * silicon in the first place, we just refuse to deal with the port at | 24 | * silicon in the first place, we just refuse to deal with the port at |
25 | * all rather than adding infrastructure to hack around it. | 25 | * all rather than adding infrastructure to hack around it. |
26 | */ | 26 | */ |
27 | static struct plat_sci_port sci_platform_data[] = { | 27 | static struct plat_sci_port scif0_platform_data = { |
28 | { | 28 | .mapbase = 0xffc30000, |
29 | .mapbase = 0xffc30000, | 29 | .flags = UPF_BOOT_AUTOCONF, |
30 | .flags = UPF_BOOT_AUTOCONF, | 30 | .type = PORT_SCIF, |
31 | .type = PORT_SCIF, | 31 | .irqs = { 40, 41, 43, 42 }, |
32 | .irqs = { 40, 41, 43, 42 }, | 32 | }; |
33 | }, { | 33 | |
34 | .mapbase = 0xffc40000, | 34 | static struct platform_device scif0_device = { |
35 | .flags = UPF_BOOT_AUTOCONF, | 35 | .name = "sh-sci", |
36 | .type = PORT_SCIF, | 36 | .id = 0, |
37 | .irqs = { 44, 45, 47, 46 }, | 37 | .dev = { |
38 | }, { | 38 | .platform_data = &scif0_platform_data, |
39 | .mapbase = 0xffc60000, | 39 | }, |
40 | .flags = UPF_BOOT_AUTOCONF, | 40 | }; |
41 | .type = PORT_SCIF, | 41 | |
42 | .irqs = { 52, 53, 55, 54 }, | 42 | static struct plat_sci_port scif1_platform_data = { |
43 | }, { | 43 | .mapbase = 0xffc40000, |
44 | .flags = 0, | 44 | .flags = UPF_BOOT_AUTOCONF, |
45 | } | 45 | .type = PORT_SCIF, |
46 | .irqs = { 44, 45, 47, 46 }, | ||
47 | }; | ||
48 | |||
49 | static struct platform_device scif1_device = { | ||
50 | .name = "sh-sci", | ||
51 | .id = 1, | ||
52 | .dev = { | ||
53 | .platform_data = &scif1_platform_data, | ||
54 | }, | ||
55 | }; | ||
56 | |||
57 | static struct plat_sci_port scif2_platform_data = { | ||
58 | .mapbase = 0xffc60000, | ||
59 | .flags = UPF_BOOT_AUTOCONF, | ||
60 | .type = PORT_SCIF, | ||
61 | .irqs = { 52, 53, 55, 54 }, | ||
46 | }; | 62 | }; |
47 | 63 | ||
48 | static struct platform_device sci_device = { | 64 | static struct platform_device scif2_device = { |
49 | .name = "sh-sci", | 65 | .name = "sh-sci", |
50 | .id = -1, | 66 | .id = 2, |
51 | .dev = { | 67 | .dev = { |
52 | .platform_data = sci_platform_data, | 68 | .platform_data = &scif2_platform_data, |
53 | }, | 69 | }, |
54 | }; | 70 | }; |
55 | 71 | ||
@@ -236,6 +252,9 @@ static struct platform_device tmu5_device = { | |||
236 | }; | 252 | }; |
237 | 253 | ||
238 | static struct platform_device *shx3_early_devices[] __initdata = { | 254 | static struct platform_device *shx3_early_devices[] __initdata = { |
255 | &scif0_device, | ||
256 | &scif1_device, | ||
257 | &scif2_device, | ||
239 | &tmu0_device, | 258 | &tmu0_device, |
240 | &tmu1_device, | 259 | &tmu1_device, |
241 | &tmu2_device, | 260 | &tmu2_device, |
@@ -244,21 +263,10 @@ static struct platform_device *shx3_early_devices[] __initdata = { | |||
244 | &tmu5_device, | 263 | &tmu5_device, |
245 | }; | 264 | }; |
246 | 265 | ||
247 | static struct platform_device *shx3_devices[] __initdata = { | ||
248 | &sci_device, | ||
249 | }; | ||
250 | |||
251 | static int __init shx3_devices_setup(void) | 266 | static int __init shx3_devices_setup(void) |
252 | { | 267 | { |
253 | int ret; | 268 | return platform_add_devices(shx3_early_devices, |
254 | |||
255 | ret = platform_add_devices(shx3_early_devices, | ||
256 | ARRAY_SIZE(shx3_early_devices)); | 269 | ARRAY_SIZE(shx3_early_devices)); |
257 | if (unlikely(ret != 0)) | ||
258 | return ret; | ||
259 | |||
260 | return platform_add_devices(shx3_devices, | ||
261 | ARRAY_SIZE(shx3_devices)); | ||
262 | } | 270 | } |
263 | arch_initcall(shx3_devices_setup); | 271 | arch_initcall(shx3_devices_setup); |
264 | 272 | ||