1*c66ec88fSEmmanuel Vadot* SHDMA Device Tree bindings 2*c66ec88fSEmmanuel Vadot 3*c66ec88fSEmmanuel VadotSh-/r-mobile and R-Car systems often have multiple identical DMA controller 4*c66ec88fSEmmanuel Vadotinstances, capable of serving any of a common set of DMA slave devices, using 5*c66ec88fSEmmanuel Vadotthe same configuration. To describe this topology we require all compatible 6*c66ec88fSEmmanuel VadotSHDMA DT nodes to be placed under a DMA multiplexer node. All such compatible 7*c66ec88fSEmmanuel VadotDMAC instances have the same number of channels and use the same DMA 8*c66ec88fSEmmanuel Vadotdescriptors. Therefore respective DMA DT bindings can also all be placed in the 9*c66ec88fSEmmanuel Vadotmultiplexer node. Even if there is only one such DMAC instance on a system, it 10*c66ec88fSEmmanuel Vadotstill has to be placed under such a multiplexer node. 11*c66ec88fSEmmanuel Vadot 12*c66ec88fSEmmanuel Vadot* DMA multiplexer 13*c66ec88fSEmmanuel Vadot 14*c66ec88fSEmmanuel VadotRequired properties: 15*c66ec88fSEmmanuel Vadot- compatible: should be "renesas,shdma-mux" 16*c66ec88fSEmmanuel Vadot- #dma-cells: should be <1>, see "dmas" property below 17*c66ec88fSEmmanuel Vadot 18*c66ec88fSEmmanuel VadotOptional properties (currently unused): 19*c66ec88fSEmmanuel Vadot- dma-channels: number of DMA channels 20*c66ec88fSEmmanuel Vadot- dma-requests: number of DMA request signals 21*c66ec88fSEmmanuel Vadot 22*c66ec88fSEmmanuel Vadot* DMA controller 23*c66ec88fSEmmanuel Vadot 24*c66ec88fSEmmanuel VadotRequired properties: 25*c66ec88fSEmmanuel Vadot- compatible: should be of the form "renesas,shdma-<soc>", where <soc> should 26*c66ec88fSEmmanuel Vadot be replaced with the desired SoC model, e.g. 27*c66ec88fSEmmanuel Vadot "renesas,shdma-r8a73a4" for the system DMAC on r8a73a4 SoC 28*c66ec88fSEmmanuel Vadot 29*c66ec88fSEmmanuel VadotExample: 30*c66ec88fSEmmanuel Vadot dmac: dma-multiplexer@0 { 31*c66ec88fSEmmanuel Vadot compatible = "renesas,shdma-mux"; 32*c66ec88fSEmmanuel Vadot #dma-cells = <1>; 33*c66ec88fSEmmanuel Vadot dma-channels = <20>; 34*c66ec88fSEmmanuel Vadot dma-requests = <256>; 35*c66ec88fSEmmanuel Vadot #address-cells = <2>; 36*c66ec88fSEmmanuel Vadot #size-cells = <2>; 37*c66ec88fSEmmanuel Vadot ranges; 38*c66ec88fSEmmanuel Vadot 39*c66ec88fSEmmanuel Vadot dma0: dma-controller@e6700020 { 40*c66ec88fSEmmanuel Vadot compatible = "renesas,shdma-r8a73a4"; 41*c66ec88fSEmmanuel Vadot reg = <0 0xe6700020 0 0x89e0>; 42*c66ec88fSEmmanuel Vadot interrupt-parent = <&gic>; 43*c66ec88fSEmmanuel Vadot interrupts = <0 220 4 44*c66ec88fSEmmanuel Vadot 0 200 4 45*c66ec88fSEmmanuel Vadot 0 201 4 46*c66ec88fSEmmanuel Vadot 0 202 4 47*c66ec88fSEmmanuel Vadot 0 203 4 48*c66ec88fSEmmanuel Vadot 0 204 4 49*c66ec88fSEmmanuel Vadot 0 205 4 50*c66ec88fSEmmanuel Vadot 0 206 4 51*c66ec88fSEmmanuel Vadot 0 207 4 52*c66ec88fSEmmanuel Vadot 0 208 4 53*c66ec88fSEmmanuel Vadot 0 209 4 54*c66ec88fSEmmanuel Vadot 0 210 4 55*c66ec88fSEmmanuel Vadot 0 211 4 56*c66ec88fSEmmanuel Vadot 0 212 4 57*c66ec88fSEmmanuel Vadot 0 213 4 58*c66ec88fSEmmanuel Vadot 0 214 4 59*c66ec88fSEmmanuel Vadot 0 215 4 60*c66ec88fSEmmanuel Vadot 0 216 4 61*c66ec88fSEmmanuel Vadot 0 217 4 62*c66ec88fSEmmanuel Vadot 0 218 4 63*c66ec88fSEmmanuel Vadot 0 219 4>; 64*c66ec88fSEmmanuel Vadot interrupt-names = "error", 65*c66ec88fSEmmanuel Vadot "ch0", "ch1", "ch2", "ch3", 66*c66ec88fSEmmanuel Vadot "ch4", "ch5", "ch6", "ch7", 67*c66ec88fSEmmanuel Vadot "ch8", "ch9", "ch10", "ch11", 68*c66ec88fSEmmanuel Vadot "ch12", "ch13", "ch14", "ch15", 69*c66ec88fSEmmanuel Vadot "ch16", "ch17", "ch18", "ch19"; 70*c66ec88fSEmmanuel Vadot }; 71*c66ec88fSEmmanuel Vadot }; 72*c66ec88fSEmmanuel Vadot 73*c66ec88fSEmmanuel Vadot* DMA client 74*c66ec88fSEmmanuel Vadot 75*c66ec88fSEmmanuel VadotRequired properties: 76*c66ec88fSEmmanuel Vadot- dmas: a list of <[DMA multiplexer phandle] [MID/RID value]> pairs, 77*c66ec88fSEmmanuel Vadot where MID/RID values are fixed handles, specified in the SoC 78*c66ec88fSEmmanuel Vadot manual 79*c66ec88fSEmmanuel Vadot- dma-names: a list of DMA channel names, one per "dmas" entry 80*c66ec88fSEmmanuel Vadot 81*c66ec88fSEmmanuel VadotExample: 82*c66ec88fSEmmanuel Vadot dmas = <&dmac 0xd1 83*c66ec88fSEmmanuel Vadot &dmac 0xd2>; 84*c66ec88fSEmmanuel Vadot dma-names = "tx", "rx"; 85