Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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>

authored by

Guennadi Liakhovetski and committed by
Paul Mundt
331af0c1 13dda80e

+97 -6
+97 -6
arch/sh/kernel/cpu/sh4a/setup-sh7722.c
··· 18 18 #include <asm/clock.h> 19 19 #include <asm/mmzone.h> 20 20 #include <asm/dma-sh.h> 21 + #include <asm/siu.h> 21 22 #include <cpu/sh7722.h> 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 + }; 22 91 23 92 /* Serial */ 24 93 static struct plat_sci_port scif0_platform_data = { ··· 457 388 }, 458 389 }; 459 390 460 - static struct sh_dmae_pdata dma_platform_data = { 461 - .mode = 0, 391 + static struct siu_platform siu_platform_data = { 392 + .dma_dev = &dma_device.dev, 393 + .dma_slave_tx_a = SHDMA_SLAVE_SIUA_TX, 394 + .dma_slave_rx_a = SHDMA_SLAVE_SIUA_RX, 395 + .dma_slave_tx_b = SHDMA_SLAVE_SIUB_TX, 396 + .dma_slave_rx_b = SHDMA_SLAVE_SIUB_RX, 462 397 }; 463 398 464 - static struct platform_device dma_device = { 465 - .name = "sh-dma-engine", 399 + static struct resource siu_resources[] = { 400 + [0] = { 401 + .start = 0xa4540000, 402 + .end = 0xa454c10f, 403 + .flags = IORESOURCE_MEM, 404 + }, 405 + [1] = { 406 + .start = 108, 407 + .flags = IORESOURCE_IRQ, 408 + }, 409 + }; 410 + 411 + static struct platform_device siu_device = { 412 + .name = "sh_siu", 466 413 .id = -1, 467 - .dev = { 468 - .platform_data = &dma_platform_data, 414 + .dev = { 415 + .platform_data = &siu_platform_data, 416 + }, 417 + .resource = siu_resources, 418 + .num_resources = ARRAY_SIZE(siu_resources), 419 + .archdata = { 420 + .hwblk_id = HWBLK_SIU, 469 421 }, 470 422 }; 471 423 ··· 504 414 &vpu_device, 505 415 &veu_device, 506 416 &jpu_device, 417 + &siu_device, 507 418 &dma_device, 508 419 }; 509 420