diff options
Diffstat (limited to 'arch/arm/mach-shmobile/setup-sh7377.c')
-rw-r--r-- | arch/arm/mach-shmobile/setup-sh7377.c | 223 |
1 files changed, 223 insertions, 0 deletions
diff --git a/arch/arm/mach-shmobile/setup-sh7377.c b/arch/arm/mach-shmobile/setup-sh7377.c index e238d0e9453b..bb405b8e459b 100644 --- a/arch/arm/mach-shmobile/setup-sh7377.c +++ b/arch/arm/mach-shmobile/setup-sh7377.c | |||
@@ -22,6 +22,7 @@ | |||
22 | #include <linux/interrupt.h> | 22 | #include <linux/interrupt.h> |
23 | #include <linux/irq.h> | 23 | #include <linux/irq.h> |
24 | #include <linux/platform_device.h> | 24 | #include <linux/platform_device.h> |
25 | #include <linux/uio_driver.h> | ||
25 | #include <linux/delay.h> | 26 | #include <linux/delay.h> |
26 | #include <linux/input.h> | 27 | #include <linux/input.h> |
27 | #include <linux/io.h> | 28 | #include <linux/io.h> |
@@ -215,6 +216,214 @@ static struct platform_device cmt10_device = { | |||
215 | .num_resources = ARRAY_SIZE(cmt10_resources), | 216 | .num_resources = ARRAY_SIZE(cmt10_resources), |
216 | }; | 217 | }; |
217 | 218 | ||
219 | /* VPU */ | ||
220 | static struct uio_info vpu_platform_data = { | ||
221 | .name = "VPU5HG", | ||
222 | .version = "0", | ||
223 | .irq = intcs_evt2irq(0x980), | ||
224 | }; | ||
225 | |||
226 | static struct resource vpu_resources[] = { | ||
227 | [0] = { | ||
228 | .name = "VPU", | ||
229 | .start = 0xfe900000, | ||
230 | .end = 0xfe900157, | ||
231 | .flags = IORESOURCE_MEM, | ||
232 | }, | ||
233 | }; | ||
234 | |||
235 | static struct platform_device vpu_device = { | ||
236 | .name = "uio_pdrv_genirq", | ||
237 | .id = 0, | ||
238 | .dev = { | ||
239 | .platform_data = &vpu_platform_data, | ||
240 | }, | ||
241 | .resource = vpu_resources, | ||
242 | .num_resources = ARRAY_SIZE(vpu_resources), | ||
243 | }; | ||
244 | |||
245 | /* VEU0 */ | ||
246 | static struct uio_info veu0_platform_data = { | ||
247 | .name = "VEU0", | ||
248 | .version = "0", | ||
249 | .irq = intcs_evt2irq(0x700), | ||
250 | }; | ||
251 | |||
252 | static struct resource veu0_resources[] = { | ||
253 | [0] = { | ||
254 | .name = "VEU0", | ||
255 | .start = 0xfe920000, | ||
256 | .end = 0xfe9200cb, | ||
257 | .flags = IORESOURCE_MEM, | ||
258 | }, | ||
259 | }; | ||
260 | |||
261 | static struct platform_device veu0_device = { | ||
262 | .name = "uio_pdrv_genirq", | ||
263 | .id = 1, | ||
264 | .dev = { | ||
265 | .platform_data = &veu0_platform_data, | ||
266 | }, | ||
267 | .resource = veu0_resources, | ||
268 | .num_resources = ARRAY_SIZE(veu0_resources), | ||
269 | }; | ||
270 | |||
271 | /* VEU1 */ | ||
272 | static struct uio_info veu1_platform_data = { | ||
273 | .name = "VEU1", | ||
274 | .version = "0", | ||
275 | .irq = intcs_evt2irq(0x720), | ||
276 | }; | ||
277 | |||
278 | static struct resource veu1_resources[] = { | ||
279 | [0] = { | ||
280 | .name = "VEU1", | ||
281 | .start = 0xfe924000, | ||
282 | .end = 0xfe9240cb, | ||
283 | .flags = IORESOURCE_MEM, | ||
284 | }, | ||
285 | }; | ||
286 | |||
287 | static struct platform_device veu1_device = { | ||
288 | .name = "uio_pdrv_genirq", | ||
289 | .id = 2, | ||
290 | .dev = { | ||
291 | .platform_data = &veu1_platform_data, | ||
292 | }, | ||
293 | .resource = veu1_resources, | ||
294 | .num_resources = ARRAY_SIZE(veu1_resources), | ||
295 | }; | ||
296 | |||
297 | /* VEU2 */ | ||
298 | static struct uio_info veu2_platform_data = { | ||
299 | .name = "VEU2", | ||
300 | .version = "0", | ||
301 | .irq = intcs_evt2irq(0x740), | ||
302 | }; | ||
303 | |||
304 | static struct resource veu2_resources[] = { | ||
305 | [0] = { | ||
306 | .name = "VEU2", | ||
307 | .start = 0xfe928000, | ||
308 | .end = 0xfe928307, | ||
309 | .flags = IORESOURCE_MEM, | ||
310 | }, | ||
311 | }; | ||
312 | |||
313 | static struct platform_device veu2_device = { | ||
314 | .name = "uio_pdrv_genirq", | ||
315 | .id = 3, | ||
316 | .dev = { | ||
317 | .platform_data = &veu2_platform_data, | ||
318 | }, | ||
319 | .resource = veu2_resources, | ||
320 | .num_resources = ARRAY_SIZE(veu2_resources), | ||
321 | }; | ||
322 | |||
323 | /* VEU3 */ | ||
324 | static struct uio_info veu3_platform_data = { | ||
325 | .name = "VEU3", | ||
326 | .version = "0", | ||
327 | .irq = intcs_evt2irq(0x760), | ||
328 | }; | ||
329 | |||
330 | static struct resource veu3_resources[] = { | ||
331 | [0] = { | ||
332 | .name = "VEU3", | ||
333 | .start = 0xfe92c000, | ||
334 | .end = 0xfe92c307, | ||
335 | .flags = IORESOURCE_MEM, | ||
336 | }, | ||
337 | }; | ||
338 | |||
339 | static struct platform_device veu3_device = { | ||
340 | .name = "uio_pdrv_genirq", | ||
341 | .id = 4, | ||
342 | .dev = { | ||
343 | .platform_data = &veu3_platform_data, | ||
344 | }, | ||
345 | .resource = veu3_resources, | ||
346 | .num_resources = ARRAY_SIZE(veu3_resources), | ||
347 | }; | ||
348 | |||
349 | /* JPU */ | ||
350 | static struct uio_info jpu_platform_data = { | ||
351 | .name = "JPU", | ||
352 | .version = "0", | ||
353 | .irq = intcs_evt2irq(0x560), | ||
354 | }; | ||
355 | |||
356 | static struct resource jpu_resources[] = { | ||
357 | [0] = { | ||
358 | .name = "JPU", | ||
359 | .start = 0xfe980000, | ||
360 | .end = 0xfe9902d3, | ||
361 | .flags = IORESOURCE_MEM, | ||
362 | }, | ||
363 | }; | ||
364 | |||
365 | static struct platform_device jpu_device = { | ||
366 | .name = "uio_pdrv_genirq", | ||
367 | .id = 5, | ||
368 | .dev = { | ||
369 | .platform_data = &jpu_platform_data, | ||
370 | }, | ||
371 | .resource = jpu_resources, | ||
372 | .num_resources = ARRAY_SIZE(jpu_resources), | ||
373 | }; | ||
374 | |||
375 | /* SPU2DSP0 */ | ||
376 | static struct uio_info spu0_platform_data = { | ||
377 | .name = "SPU2DSP0", | ||
378 | .version = "0", | ||
379 | .irq = evt2irq(0x1800), | ||
380 | }; | ||
381 | |||
382 | static struct resource spu0_resources[] = { | ||
383 | [0] = { | ||
384 | .name = "SPU2DSP0", | ||
385 | .start = 0xfe200000, | ||
386 | .end = 0xfe2fffff, | ||
387 | .flags = IORESOURCE_MEM, | ||
388 | }, | ||
389 | }; | ||
390 | |||
391 | static struct platform_device spu0_device = { | ||
392 | .name = "uio_pdrv_genirq", | ||
393 | .id = 6, | ||
394 | .dev = { | ||
395 | .platform_data = &spu0_platform_data, | ||
396 | }, | ||
397 | .resource = spu0_resources, | ||
398 | .num_resources = ARRAY_SIZE(spu0_resources), | ||
399 | }; | ||
400 | |||
401 | /* SPU2DSP1 */ | ||
402 | static struct uio_info spu1_platform_data = { | ||
403 | .name = "SPU2DSP1", | ||
404 | .version = "0", | ||
405 | .irq = evt2irq(0x1820), | ||
406 | }; | ||
407 | |||
408 | static struct resource spu1_resources[] = { | ||
409 | [0] = { | ||
410 | .name = "SPU2DSP1", | ||
411 | .start = 0xfe300000, | ||
412 | .end = 0xfe3fffff, | ||
413 | .flags = IORESOURCE_MEM, | ||
414 | }, | ||
415 | }; | ||
416 | |||
417 | static struct platform_device spu1_device = { | ||
418 | .name = "uio_pdrv_genirq", | ||
419 | .id = 7, | ||
420 | .dev = { | ||
421 | .platform_data = &spu1_platform_data, | ||
422 | }, | ||
423 | .resource = spu1_resources, | ||
424 | .num_resources = ARRAY_SIZE(spu1_resources), | ||
425 | }; | ||
426 | |||
218 | static struct platform_device *sh7377_early_devices[] __initdata = { | 427 | static struct platform_device *sh7377_early_devices[] __initdata = { |
219 | &scif0_device, | 428 | &scif0_device, |
220 | &scif1_device, | 429 | &scif1_device, |
@@ -227,10 +436,24 @@ static struct platform_device *sh7377_early_devices[] __initdata = { | |||
227 | &cmt10_device, | 436 | &cmt10_device, |
228 | }; | 437 | }; |
229 | 438 | ||
439 | static struct platform_device *sh7377_devices[] __initdata = { | ||
440 | &vpu_device, | ||
441 | &veu0_device, | ||
442 | &veu1_device, | ||
443 | &veu2_device, | ||
444 | &veu3_device, | ||
445 | &jpu_device, | ||
446 | &spu0_device, | ||
447 | &spu1_device, | ||
448 | }; | ||
449 | |||
230 | void __init sh7377_add_standard_devices(void) | 450 | void __init sh7377_add_standard_devices(void) |
231 | { | 451 | { |
232 | platform_add_devices(sh7377_early_devices, | 452 | platform_add_devices(sh7377_early_devices, |
233 | ARRAY_SIZE(sh7377_early_devices)); | 453 | ARRAY_SIZE(sh7377_early_devices)); |
454 | |||
455 | platform_add_devices(sh7377_devices, | ||
456 | ARRAY_SIZE(sh7377_devices)); | ||
234 | } | 457 | } |
235 | 458 | ||
236 | #define SMSTPCR3 0xe615013c | 459 | #define SMSTPCR3 0xe615013c |