aboutsummaryrefslogtreecommitdiffstats
path: root/arch/sh
diff options
context:
space:
mode:
authorGuennadi Liakhovetski <g.liakhovetski@gmx.de>2010-01-19 03:09:06 -0500
committerPaul Mundt <lethal@linux-sh.org>2010-03-01 21:08:52 -0500
commit331af0c15284798f678057a52039ef24f7c04f22 (patch)
tree53c2872fa873b5d5157d34a6184e6d59afb8790a /arch/sh
parent13dda80e48439b446d0bc9bab34b91484bc8f533 (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.c103
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
24static 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
78static 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
84struct 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 */
24static struct plat_sci_port scif0_platform_data = { 93static 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
391static struct sh_dmae_pdata dma_platform_data = { 460static 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
395static struct platform_device dma_device = { 468static 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
480static 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