xref: /freebsd/sys/contrib/device-tree/Bindings/dma/renesas,shdma.txt (revision c66ec88fed842fbaad62c30d510644ceb7bd2d71)
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