ARM: shmobile: Koelsch SYS-DMAC and MSIOF prototype
Subsystems (5)
Magnus Damm
maintainerPATCH 5/5 ARM: shmobile: Koelsch SYS-DMAC and MSIOF prototype
From: Magnus Damm <[email protected]>
Enable DMA for MSIOF on r8a7791 Koelsch.
Signed-off-by Magnus Damm <[email protected]>
---
arch/arm/boot/dts/r8a7791.dtsi | 6 +++--- arch/arm/mach-shmobile/board-koelsch-reference.c | 19 +++++++++++++++++++ 2 files changed, 22 insertions(+), 3 deletions(-)
arch/arm/boot/dts/r8a7791.dtsi +3 -3
@@ -933,7 +933,7 @@ msiof0: spi@e6e20000 { compatible = "renesas,msiof-r8a7791"; - reg = <0 0xe6e20000 0 0x0064>; + reg = <0 0xe6e20000 0 0x0064>, <0 0xe7e20000 0 0x0064>; interrupts = <0 156 IRQ_TYPE_LEVEL_HIGH>; clocks = <&mstp0_clks R8A7791_CLK_MSIOF0>; #address-cells = <1>;
@@ -943,7 +943,7 @@ msiof1: spi@e6e10000 { compatible = "renesas,msiof-r8a7791"; - reg = <0 0xe6e10000 0 0x0064>; + reg = <0 0xe6e10000 0 0x0064>, <0 0xe7e10000 0 0x0064>; interrupts = <0 157 IRQ_TYPE_LEVEL_HIGH>; clocks = <&mstp2_clks R8A7791_CLK_MSIOF1>; #address-cells = <1>;
@@ -953,7 +953,7 @@ msiof2: spi@e6e00000 { compatible = "renesas,msiof-r8a7791"; - reg = <0 0xe6e00000 0 0x0064>; + reg = <0 0xe6e00000 0 0x0064>, <0 0xe7e00000 0 0x0064>; interrupts = <0 158 IRQ_TYPE_LEVEL_HIGH>; clocks = <&mstp2_clks R8A7791_CLK_MSIOF2>; #address-cells = <1>;
arch/arm/mach-shmobile/board-koelsch-reference.c +19 -0
@@ -72,6 +72,7 @@ static const struct resource du_resource#include <linux/mfd/tmio.h> #include <linux/mmc/sh_mobile_sdhi.h> #include <linux/serial_sci.h> +#include <linux/spi/sh_msiof.h> /* Local DMA slave IDs */ enum {
@@ -118,6 +119,12 @@ enum {SYS_DMAC_SLAVE_HSCIF1_RX ,SYS_DMAC_SLAVE_HSCIF2_TX ,SYS_DMAC_SLAVE_HSCIF2_RX , +SYS_DMAC_SLAVE_MSIOF0_TX , +SYS_DMAC_SLAVE_MSIOF0_RX , +SYS_DMAC_SLAVE_MSIOF1_TX , +SYS_DMAC_SLAVE_MSIOF1_RX , +SYS_DMAC_SLAVE_MSIOF2_TX , + SYS_DMAC_SLAVE_MSIOF2_RX, };#define DMAE_CHANNEL (a, b) \
@@ -172,6 +179,9 @@ static const struct sh_dmae_slave_configSYS_DMAC_SLAVE_TX (HSCIF0 ,8 ,0xe62c0000 ,0xc ,0x14 ,0x39 ,0x3a ),SYS_DMAC_SLAVE_TX (HSCIF1 ,8 ,0xe62c8000 ,0xc ,0x14 ,0x4d ,0x4e ),SYS_DMAC_SLAVE_TX (HSCIF2 ,8 ,0xe62d0000 ,0xc ,0x14 ,0x3b ,0x3c ), +SYS_DMAC_SLAVE (MSIOF0 ,32 ,0xe7e20000 ,0x50 ,0x60 ,0x51 ,0x52 ), +SYS_DMAC_SLAVE (MSIOF1 ,32 ,0xe7e10000 ,0x50 ,0x60 ,0x55 ,0x56 ), + SYS_DMAC_SLAVE(MSIOF2, 32, 0xe7e00000, 0x50, 0x60, 0x41, 0x42), }; static const struct sh_dmae_channel r8a7791_sys_dmac_channels[] = {
@@ -312,6 +322,13 @@ PDATA_HSCIF(17, 0xe6cd0000, gic_spi(21),#define AUXDATA_SCIFB (index, baseaddr, irq) SCIF_AD("scifb", index, baseaddr)#define AUXDATA_HSCIF (index, baseaddr, irq) SCIF_AD("hscif", index, baseaddr) +static struct sh_msiof_spi_info msiof0_info = { + .rx_fifo_override =256 , + .num_chipselect =1 , + .dma_tx_id =SYS_DMAC_SLAVE_MSIOF0_TX , + .dma_rx_id =SYS_DMAC_SLAVE_MSIOF0_RX , +}; +static struct of_dev_auxdata koelsch_auxdata_lookup[]__initdata = {OF_DEV_AUXDATA ("renesas,sdhi-r8a7791" ,0xee100000 ,"sdhi0" , &sdhi0_info),
@@ -337,6 +354,8 @@ static struct of_dev_auxdata koelsch_auxAUXDATA_HSCIF (15 ,0xe62c0000 ,gic_spi (154 )),/* HSCIF0 */ AUXDATA_HSCIF (16 ,0xe62c8000 ,gic_spi (155 )),/* HSCIF1 */ AUXDATA_HSCIF (17 ,0xe6cd0000 ,gic_spi (21 )),/* HSCIF2 */ +OF_DEV_AUXDATA ("renesas,msiof-r8a7791" ,0xe6e20000 , + "spi_r8a7791_msiof.0", &msiof0_info), {}, };