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
82 clkout-lr-asynchronous:
83 description: audio_clkoutn is asynchronizes with lr-clock.
84 $ref: /schemas/types.yaml#/definitions/flag
97 description: References to SSI/SRC/MIX/CTU/DVC/AUDIO_CLK clocks.
102 description: List of necessary clock names.
108 - pattern: '^ssi\.[0-9]$'
109 - pattern: '^src\.[0-9]$'
110 - pattern: '^mix\.[0-1]$'
111 - pattern: '^ctu\.[0-1]$'
112 - pattern: '^dvc\.[0-1]$'
113 - pattern: '^clk_(a|b|c|i)$'
116 $ref: /schemas/graph.yaml#/properties/ports
119 $ref: audio-graph-port.yaml#
120 unevaluatedProperties: false
123 $ref: audio-graph-port.yaml#
124 unevaluatedProperties: false
126 # use patternProperties to avoid naming "xxx,yyy" issue
129 description: DVC subnode.
142 additionalProperties: false
145 description: MIX subnode.
151 additionalProperties: false
154 description: CTU subnode.
160 additionalProperties: false
163 description: SRC subnode.
183 additionalProperties: false
186 description: SSIU subnode.
203 additionalProperties: false
206 description: SSI subnode.
223 - txu # if no ssiu node
224 - rxu # if no ssiu node
227 description: shared clock pin
228 $ref: /schemas/types.yaml#/definitions/flag
230 description: PIO transfer mode
231 $ref: /schemas/types.yaml#/definitions/flag
233 description: BUSIF is not used when [mem -> SSI] via DMA case
234 $ref: /schemas/types.yaml#/definitions/flag
239 additionalProperties: false
243 description: DAI subnode.
250 $ref: /schemas/types.yaml#/definitions/phandle-array
252 $ref: /schemas/types.yaml#/definitions/phandle-array
258 additionalProperties: false
273 const: renesas,rcar_sound-gen1
299 additionalProperties: false
303 rcar_sound: sound@ec500000 {
304 #sound-dai-cells = <1>;
305 compatible = "renesas,rcar_sound-r8a7790", "renesas,rcar_sound-gen2";
306 reg = <0xec500000 0x1000>, /* SCU */
307 <0xec5a0000 0x100>, /* ADG */
308 <0xec540000 0x1000>, /* SSIU */
309 <0xec541000 0x1280>, /* SSI */
310 <0xec740000 0x200>; /* Audio DMAC peri peri*/
311 reg-names = "scu", "adg", "ssiu", "ssi", "audmapp";
313 clocks = <&mstp10_clks 1005>, /* SSI-ALL */
314 <&mstp10_clks 1006>, <&mstp10_clks 1007>, /* SSI9, SSI8 */
315 <&mstp10_clks 1008>, <&mstp10_clks 1009>, /* SSI7, SSI6 */
316 <&mstp10_clks 1010>, <&mstp10_clks 1011>, /* SSI5, SSI4 */
317 <&mstp10_clks 1012>, <&mstp10_clks 1013>, /* SSI3, SSI2 */
318 <&mstp10_clks 1014>, <&mstp10_clks 1015>, /* SSI1, SSI0 */
319 <&mstp10_clks 1022>, <&mstp10_clks 1023>, /* SRC9, SRC8 */
320 <&mstp10_clks 1024>, <&mstp10_clks 1025>, /* SRC7, SRC6 */
321 <&mstp10_clks 1026>, <&mstp10_clks 1027>, /* SRC5, SRC4 */
322 <&mstp10_clks 1028>, <&mstp10_clks 1029>, /* SRC3, SRC2 */
323 <&mstp10_clks 1030>, <&mstp10_clks 1031>, /* SRC1, SRC0 */
324 <&mstp10_clks 1020>, <&mstp10_clks 1021>, /* MIX1, MIX0 */
325 <&mstp10_clks 1020>, <&mstp10_clks 1021>, /* CTU1, CTU0 */
326 <&mstp10_clks 1019>, <&mstp10_clks 1018>, /* DVC0, DVC1 */
327 <&audio_clk_a>, <&audio_clk_b>, /* CLKA, CLKB */
328 <&audio_clk_c>, <&audio_clk_i>; /* CLKC, CLKI */
330 clock-names = "ssi-all",
349 dmas = <&audma0 0xbc>;
353 dmas = <&audma0 0xbe>;
379 interrupts = <0 353 0>;
380 dmas = <&audma0 0x87>, <&audma1 0x9c>;
381 dma-names = "rx", "tx";
383 /* skip after src-2 */
388 dmas = <&audma0 0x15>, <&audma1 0x16>;
389 dma-names = "rx", "tx";
392 dmas = <&audma0 0x35>, <&audma1 0x36>;
393 dma-names = "rx", "tx";
395 /* skip after ssiu-2 */
400 interrupts = <0 370 1>;
401 dmas = <&audma0 0x01>, <&audma1 0x02>;
402 dma-names = "rx", "tx";
405 interrupts = <0 371 1>;
406 dmas = <&audma0 0x03>, <&audma1 0x04>;
407 dma-names = "rx", "tx";
409 /* skip other ssi-2 */
415 playback = <&ssi5>, <&src5>;
432 /* assume audio-graph */
434 rsnd_endpoint: endpoint {
435 remote-endpoint = <&codec_endpoint>;
437 dai-format = "left_j";
438 bitclock-master = <&rsnd_endpoint0>;
439 frame-master = <&rsnd_endpoint0>;
441 playback = <&ssi0>, <&src0>, <&dvc0>;
442 capture = <&ssi1>, <&src1>, <&dvc1>;
448 /* assume audio-graph */
451 codec_endpoint: endpoint {
452 remote-endpoint = <&rsnd_endpoint>;