forked from Minki/linux
4981c4dc19
This facilitates DMAC DT support by eliminating the need in AUXDATA and avoiding creating complex DT data. This also fits well with DMAC devices, of which SoCs often have multiple identical copies and it is perfectly valid to use a single configuration data set for all of them. Signed-off-by: Guennadi Liakhovetski <g.liakhovetski+renesas@gmail.com> Signed-off-by: Vinod Koul <vinod.koul@intel.com>
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";
|