1 # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
4 $id: http://devicetree.org/schemas/sound/renesas,rsnd.yaml#
5 $schema: http://devicetree.org/meta-schemas/core.yaml#
7 title: Renesas R-Car Sound Driver Device Tree Bindings
10 - Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
19 - renesas,rcar_sound-r8a7778 # R-Car M1A
20 - renesas,rcar_sound-r8a7779 # R-Car H1
22 - renesas,rcar_sound-gen1
26 - renesas,rcar_sound-r8a7742 # RZ/G1H
27 - renesas,rcar_sound-r8a7743 # RZ/G1M
28 - renesas,rcar_sound-r8a7744 # RZ/G1N
29 - renesas,rcar_sound-r8a7745 # RZ/G1E
30 - renesas,rcar_sound-r8a77470 # RZ/G1C
31 - renesas,rcar_sound-r8a7790 # R-Car H2
32 - renesas,rcar_sound-r8a7791 # R-Car M2-W
33 - renesas,rcar_sound-r8a7793 # R-Car M2-N
34 - renesas,rcar_sound-r8a7794 # R-Car E2
36 - renesas,rcar_sound-gen2
40 - renesas,rcar_sound-r8a774a1 # RZ/G2M
41 - renesas,rcar_sound-r8a774b1 # RZ/G2N
42 - renesas,rcar_sound-r8a774c0 # RZ/G2E
43 - renesas,rcar_sound-r8a774e1 # RZ/G2H
44 - renesas,rcar_sound-r8a7795 # R-Car H3
45 - renesas,rcar_sound-r8a7796 # R-Car M3-W
46 - renesas,rcar_sound-r8a77961 # R-Car M3-W+
47 - renesas,rcar_sound-r8a77965 # R-Car M3-N
48 - renesas,rcar_sound-r8a77990 # R-Car E3
49 - renesas,rcar_sound-r8a77995 # R-Car D3
51 - renesas,rcar_sound-gen3
55 - renesas,rcar_sound-gen1
56 - renesas,rcar_sound-gen2
57 - renesas,rcar_sound-gen3
69 it must be 0 if your system is using single DAI
70 it must be 1 if your system is using multi DAIs
75 it must be 0 if your system has audio_clkout
76 it must be 1 if your system has audio_clkout0/1/2/3
80 description: for audio_clkout0/1/2/3
81 $ref: /schemas/types.yaml#/definitions/uint32-array
83 clkout-lr-asynchronous:
84 description: audio_clkoutn is asynchronizes with lr-clock.
85 $ref: /schemas/types.yaml#/definitions/flag
96 description: References to SSI/SRC/MIX/CTU/DVC/AUDIO_CLK clocks.
101 description: List of necessary clock names.
107 - pattern: '^ssi\.[0-9]$'
108 - pattern: '^src\.[0-9]$'
109 - pattern: '^mix\.[0-1]$'
110 - pattern: '^ctu\.[0-1]$'
111 - pattern: '^dvc\.[0-1]$'
112 - pattern: '^clk_(a|b|c|i)$'
116 # use patternProperties to avoid naming "xxx,yyy" issue
119 description: DVC subnode.
132 additionalProperties: false
135 description: MIX subnode.
141 additionalProperties: false
144 description: CTU subnode.
150 additionalProperties: false
153 description: SRC subnode.
173 additionalProperties: false
176 description: SSIU subnode.
193 additionalProperties: false
196 description: SSI subnode.
213 - txu # if no ssiu node
214 - rxu # if no ssiu node
217 description: shared clock pin
218 $ref: /schemas/types.yaml#/definitions/flag
220 description: PIO transfer mode
221 $ref: /schemas/types.yaml#/definitions/flag
223 description: BUSIF is not used when [mem -> SSI] via DMA case
224 $ref: /schemas/types.yaml#/definitions/flag
229 additionalProperties: false
233 description: DAI subnode.
240 $ref: /schemas/types.yaml#/definitions/phandle-array
242 $ref: /schemas/types.yaml#/definitions/phandle-array
248 additionalProperties: false
259 - $ref: audio-graph.yaml#
260 - $ref: audio-graph-port.yaml#
265 const: renesas,rcar_sound-gen1
291 additionalProperties: false
295 rcar_sound: sound@ec500000 {
296 #sound-dai-cells = <1>;
297 compatible = "renesas,rcar_sound-r8a7790", "renesas,rcar_sound-gen2";
298 reg = <0xec500000 0x1000>, /* SCU */
299 <0xec5a0000 0x100>, /* ADG */
300 <0xec540000 0x1000>, /* SSIU */
301 <0xec541000 0x1280>, /* SSI */
302 <0xec740000 0x200>; /* Audio DMAC peri peri*/
303 reg-names = "scu", "adg", "ssiu", "ssi", "audmapp";
305 clocks = <&mstp10_clks 1005>, /* SSI-ALL */
306 <&mstp10_clks 1006>, <&mstp10_clks 1007>, /* SSI9, SSI8 */
307 <&mstp10_clks 1008>, <&mstp10_clks 1009>, /* SSI7, SSI6 */
308 <&mstp10_clks 1010>, <&mstp10_clks 1011>, /* SSI5, SSI4 */
309 <&mstp10_clks 1012>, <&mstp10_clks 1013>, /* SSI3, SSI2 */
310 <&mstp10_clks 1014>, <&mstp10_clks 1015>, /* SSI1, SSI0 */
311 <&mstp10_clks 1022>, <&mstp10_clks 1023>, /* SRC9, SRC8 */
312 <&mstp10_clks 1024>, <&mstp10_clks 1025>, /* SRC7, SRC6 */
313 <&mstp10_clks 1026>, <&mstp10_clks 1027>, /* SRC5, SRC4 */
314 <&mstp10_clks 1028>, <&mstp10_clks 1029>, /* SRC3, SRC2 */
315 <&mstp10_clks 1030>, <&mstp10_clks 1031>, /* SRC1, SRC0 */
316 <&mstp10_clks 1020>, <&mstp10_clks 1021>, /* MIX1, MIX0 */
317 <&mstp10_clks 1020>, <&mstp10_clks 1021>, /* CTU1, CTU0 */
318 <&mstp10_clks 1019>, <&mstp10_clks 1018>, /* DVC0, DVC1 */
319 <&audio_clk_a>, <&audio_clk_b>, /* CLKA, CLKB */
320 <&audio_clk_c>, <&audio_clk_i>; /* CLKC, CLKI */
322 clock-names = "ssi-all",
341 dmas = <&audma0 0xbc>;
345 dmas = <&audma0 0xbe>;
371 interrupts = <0 353 0>;
372 dmas = <&audma0 0x87>, <&audma1 0x9c>;
373 dma-names = "rx", "tx";
375 /* skip after src-2 */
380 dmas = <&audma0 0x15>, <&audma1 0x16>;
381 dma-names = "rx", "tx";
384 dmas = <&audma0 0x35>, <&audma1 0x36>;
385 dma-names = "rx", "tx";
387 /* skip after ssiu-2 */
392 interrupts = <0 370 1>;
393 dmas = <&audma0 0x01>, <&audma1 0x02>;
394 dma-names = "rx", "tx";
397 interrupts = <0 371 1>;
398 dmas = <&audma0 0x03>, <&audma1 0x04>;
399 dma-names = "rx", "tx";
401 /* skip other ssi-2 */
407 playback = <&ssi5 &src5>;
424 /* assume audio-graph */
426 rsnd_endpoint: endpoint {
427 remote-endpoint = <&codec_endpoint>;
429 dai-format = "left_j";
430 bitclock-master = <&rsnd_endpoint0>;
431 frame-master = <&rsnd_endpoint0>;
433 playback = <&ssi0 &src0 &dvc0>;
434 capture = <&ssi1 &src1 &dvc1>;
440 /* assume audio-graph */
443 codec_endpoint: endpoint {
444 remote-endpoint = <&rsnd_endpoint>;