85 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			85 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
* SHDMA Device Tree bindings
 | 
						|
 | 
						|
Sh-/r-mobile and R-Car systems often have multiple identical DMA controller
 | 
						|
instances, capable of serving any of a common set of DMA slave devices, using
 | 
						|
the same configuration. To describe this topology we require all compatible
 | 
						|
SHDMA DT nodes to be placed under a DMA multiplexer node. All such compatible
 | 
						|
DMAC instances have the same number of channels and use the same DMA
 | 
						|
descriptors. Therefore respective DMA DT bindings can also all be placed in the
 | 
						|
multiplexer node. Even if there is only one such DMAC instance on a system, it
 | 
						|
still has to be placed under such a multiplexer node.
 | 
						|
 | 
						|
* DMA multiplexer
 | 
						|
 | 
						|
Required properties:
 | 
						|
- compatible:	should be "renesas,shdma-mux"
 | 
						|
- #dma-cells:	should be <1>, see "dmas" property below
 | 
						|
 | 
						|
Optional properties (currently unused):
 | 
						|
- dma-channels:	number of DMA channels
 | 
						|
- dma-requests:	number of DMA request signals
 | 
						|
 | 
						|
* DMA controller
 | 
						|
 | 
						|
Required properties:
 | 
						|
- compatible:	should be of the form "renesas,shdma-<soc>", where <soc> should
 | 
						|
		be replaced with the desired SoC model, e.g.
 | 
						|
		"renesas,shdma-r8a73a4" for the system DMAC on r8a73a4 SoC
 | 
						|
 | 
						|
Example:
 | 
						|
	dmac: dma-multiplexer@0 {
 | 
						|
		compatible = "renesas,shdma-mux";
 | 
						|
		#dma-cells = <1>;
 | 
						|
		dma-channels = <20>;
 | 
						|
		dma-requests = <256>;
 | 
						|
		#address-cells = <2>;
 | 
						|
		#size-cells = <2>;
 | 
						|
		ranges;
 | 
						|
 | 
						|
		dma0: dma-controller@e6700020 {
 | 
						|
			compatible = "renesas,shdma-r8a73a4";
 | 
						|
			reg = <0 0xe6700020 0 0x89e0>;
 | 
						|
			interrupt-parent = <&gic>;
 | 
						|
			interrupts = <0 220 4
 | 
						|
					0 200 4
 | 
						|
					0 201 4
 | 
						|
					0 202 4
 | 
						|
					0 203 4
 | 
						|
					0 204 4
 | 
						|
					0 205 4
 | 
						|
					0 206 4
 | 
						|
					0 207 4
 | 
						|
					0 208 4
 | 
						|
					0 209 4
 | 
						|
					0 210 4
 | 
						|
					0 211 4
 | 
						|
					0 212 4
 | 
						|
					0 213 4
 | 
						|
					0 214 4
 | 
						|
					0 215 4
 | 
						|
					0 216 4
 | 
						|
					0 217 4
 | 
						|
					0 218 4
 | 
						|
					0 219 4>;
 | 
						|
			interrupt-names = "error",
 | 
						|
					"ch0", "ch1", "ch2", "ch3",
 | 
						|
					"ch4", "ch5", "ch6", "ch7",
 | 
						|
					"ch8", "ch9", "ch10", "ch11",
 | 
						|
					"ch12", "ch13", "ch14", "ch15",
 | 
						|
					"ch16", "ch17", "ch18", "ch19";
 | 
						|
		};
 | 
						|
	};
 | 
						|
 | 
						|
* DMA client
 | 
						|
 | 
						|
Required properties:
 | 
						|
- dmas:		a list of <[DMA multiplexer phandle] [MID/RID value]> pairs,
 | 
						|
		where MID/RID values are fixed handles, specified in the SoC
 | 
						|
		manual
 | 
						|
- dma-names:	a list of DMA channel names, one per "dmas" entry
 | 
						|
 | 
						|
Example:
 | 
						|
	dmas = <&dmac 0xd1
 | 
						|
		&dmac 0xd2>;
 | 
						|
	dma-names = "tx", "rx";
 |