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 | |
| 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>
| -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 | ||
