diff options
author | Guennadi Liakhovetski <g.liakhovetski@gmx.de> | 2010-01-19 03:09:06 -0500 |
---|---|---|
committer | Paul Mundt <lethal@linux-sh.org> | 2010-03-01 21:08:52 -0500 |
commit | 331af0c15284798f678057a52039ef24f7c04f22 (patch) | |
tree | 53c2872fa873b5d5157d34a6184e6d59afb8790a /arch/sh | |
parent | 13dda80e48439b446d0bc9bab34b91484bc8f533 (diff) |
sh: add DMA slave definitions and SIU platform data to sh7722 setup
This patch is required to use the SIU ASoC driver on sh7722 systems.
Signed-off-by: Guennadi Liakhovetski <g.liakhovetski@gmx.de>
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Diffstat (limited to 'arch/sh')
-rw-r--r-- | arch/sh/kernel/cpu/sh4a/setup-sh7722.c | 103 |
1 files changed, 97 insertions, 6 deletions
diff --git a/arch/sh/kernel/cpu/sh4a/setup-sh7722.c b/arch/sh/kernel/cpu/sh4a/setup-sh7722.c index ef3f97827808..538280a3dc66 100644 --- a/arch/sh/kernel/cpu/sh4a/setup-sh7722.c +++ b/arch/sh/kernel/cpu/sh4a/setup-sh7722.c | |||
@@ -18,8 +18,77 @@ | |||
18 | #include <asm/clock.h> | 18 | #include <asm/clock.h> |
19 | #include <asm/mmzone.h> | 19 | #include <asm/mmzone.h> |
20 | #include <asm/dma-sh.h> | 20 | #include <asm/dma-sh.h> |
21 | #include <asm/siu.h> | ||
21 | #include <cpu/sh7722.h> | 22 | #include <cpu/sh7722.h> |
22 | 23 | ||
24 | static struct sh_dmae_slave_config sh7722_dmae_slaves[] = { | ||
25 | { | ||
26 | .slave_id = SHDMA_SLAVE_SCIF0_TX, | ||
27 | .addr = 0xffe0000c, | ||
28 | .chcr = DM_FIX | SM_INC | 0x800 | TS_INDEX2VAL(XMIT_SZ_8BIT), | ||
29 | .mid_rid = 0x21, | ||
30 | }, { | ||
31 | .slave_id = SHDMA_SLAVE_SCIF0_RX, | ||
32 | .addr = 0xffe00014, | ||
33 | .chcr = DM_INC | SM_FIX | 0x800 | TS_INDEX2VAL(XMIT_SZ_8BIT), | ||
34 | .mid_rid = 0x22, | ||
35 | }, { | ||
36 | .slave_id = SHDMA_SLAVE_SCIF1_TX, | ||
37 | .addr = 0xffe1000c, | ||
38 | .chcr = DM_FIX | SM_INC | 0x800 | TS_INDEX2VAL(XMIT_SZ_8BIT), | ||
39 | .mid_rid = 0x25, | ||
40 | }, { | ||
41 | .slave_id = SHDMA_SLAVE_SCIF1_RX, | ||
42 | .addr = 0xffe10014, | ||
43 | .chcr = DM_INC | SM_FIX | 0x800 | TS_INDEX2VAL(XMIT_SZ_8BIT), | ||
44 | .mid_rid = 0x26, | ||
45 | }, { | ||
46 | .slave_id = SHDMA_SLAVE_SCIF2_TX, | ||
47 | .addr = 0xffe2000c, | ||
48 | .chcr = DM_FIX | SM_INC | 0x800 | TS_INDEX2VAL(XMIT_SZ_8BIT), | ||
49 | .mid_rid = 0x29, | ||
50 | }, { | ||
51 | .slave_id = SHDMA_SLAVE_SCIF2_RX, | ||
52 | .addr = 0xffe20014, | ||
53 | .chcr = DM_INC | SM_FIX | 0x800 | TS_INDEX2VAL(XMIT_SZ_8BIT), | ||
54 | .mid_rid = 0x2a, | ||
55 | }, { | ||
56 | .slave_id = SHDMA_SLAVE_SIUA_TX, | ||
57 | .addr = 0xa454c098, | ||
58 | .chcr = DM_FIX | SM_INC | 0x800 | TS_INDEX2VAL(XMIT_SZ_32BIT), | ||
59 | .mid_rid = 0xb1, | ||
60 | }, { | ||
61 | .slave_id = SHDMA_SLAVE_SIUA_RX, | ||
62 | .addr = 0xa454c090, | ||
63 | .chcr = DM_INC | SM_FIX | 0x800 | TS_INDEX2VAL(XMIT_SZ_32BIT), | ||
64 | .mid_rid = 0xb2, | ||
65 | }, { | ||
66 | .slave_id = SHDMA_SLAVE_SIUB_TX, | ||
67 | .addr = 0xa454c09c, | ||
68 | .chcr = DM_FIX | SM_INC | 0x800 | TS_INDEX2VAL(XMIT_SZ_32BIT), | ||
69 | .mid_rid = 0xb5, | ||
70 | }, { | ||
71 | .slave_id = SHDMA_SLAVE_SIUB_RX, | ||
72 | .addr = 0xa454c094, | ||
73 | .chcr = DM_INC | SM_FIX | 0x800 | TS_INDEX2VAL(XMIT_SZ_32BIT), | ||
74 | .mid_rid = 0xb6, | ||
75 | }, | ||
76 | }; | ||
77 | |||
78 | static struct sh_dmae_pdata dma_platform_data = { | ||
79 | .mode = 0, | ||
80 | .config = sh7722_dmae_slaves, | ||
81 | .config_num = ARRAY_SIZE(sh7722_dmae_slaves), | ||
82 | }; | ||
83 | |||
84 | struct platform_device dma_device = { | ||
85 | .name = "sh-dma-engine", | ||
86 | .id = -1, | ||
87 | .dev = { | ||
88 | .platform_data = &dma_platform_data, | ||
89 | }, | ||
90 | }; | ||
91 | |||
23 | /* Serial */ | 92 | /* Serial */ |
24 | static struct plat_sci_port scif0_platform_data = { | 93 | static struct plat_sci_port scif0_platform_data = { |
25 | .mapbase = 0xffe00000, | 94 | .mapbase = 0xffe00000, |
@@ -388,15 +457,36 @@ static struct platform_device tmu2_device = { | |||
388 | }, | 457 | }, |
389 | }; | 458 | }; |
390 | 459 | ||
391 | static struct sh_dmae_pdata dma_platform_data = { | 460 | static struct siu_platform siu_platform_data = { |
392 | .mode = 0, | 461 | .dma_dev = &dma_device.dev, |
462 | .dma_slave_tx_a = SHDMA_SLAVE_SIUA_TX, | ||
463 | .dma_slave_rx_a = SHDMA_SLAVE_SIUA_RX, | ||
464 | .dma_slave_tx_b = SHDMA_SLAVE_SIUB_TX, | ||
465 | .dma_slave_rx_b = SHDMA_SLAVE_SIUB_RX, | ||
393 | }; | 466 | }; |
394 | 467 | ||
395 | static struct platform_device dma_device = { | 468 | static struct resource siu_resources[] = { |
396 | .name = "sh-dma-engine", | 469 | [0] = { |
470 | .start = 0xa4540000, | ||
471 | .end = 0xa454c10f, | ||
472 | .flags = IORESOURCE_MEM, | ||
473 | }, | ||
474 | [1] = { | ||
475 | .start = 108, | ||
476 | .flags = IORESOURCE_IRQ, | ||
477 | }, | ||
478 | }; | ||
479 | |||
480 | static struct platform_device siu_device = { | ||
481 | .name = "sh_siu", | ||
397 | .id = -1, | 482 | .id = -1, |
398 | .dev = { | 483 | .dev = { |
399 | .platform_data = &dma_platform_data, | 484 | .platform_data = &siu_platform_data, |
485 | }, | ||
486 | .resource = siu_resources, | ||
487 | .num_resources = ARRAY_SIZE(siu_resources), | ||
488 | .archdata = { | ||
489 | .hwblk_id = HWBLK_SIU, | ||
400 | }, | 490 | }, |
401 | }; | 491 | }; |
402 | 492 | ||
@@ -414,6 +504,7 @@ static struct platform_device *sh7722_devices[] __initdata = { | |||
414 | &vpu_device, | 504 | &vpu_device, |
415 | &veu_device, | 505 | &veu_device, |
416 | &jpu_device, | 506 | &jpu_device, |
507 | &siu_device, | ||
417 | &dma_device, | 508 | &dma_device, |
418 | }; | 509 | }; |
419 | 510 | ||