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
10 - Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
19 - renesas,rcar_sound-r8a7778 # R-Car M1A
20 - renesas,rcar_sound-r8a7779 # R-Car H1
21 - const: renesas,rcar_sound-gen1
25 - renesas,rcar_sound-r8a7742 # RZ/G1H
26 - renesas,rcar_sound-r8a7743 # RZ/G1M
27 - renesas,rcar_sound-r8a7744 # RZ/G1N
28 - renesas,rcar_sound-r8a7745 # RZ/G1E
29 - renesas,rcar_sound-r8a77470 # RZ/G1C
30 - renesas,rcar_sound-r8a7790 # R-Car H2
31 - renesas,rcar_sound-r8a7791 # R-Car M2-W
32 - renesas,rcar_sound-r8a7793 # R-Car M2-N
33 - renesas,rcar_sound-r8a7794 # R-Car E2
34 - const: renesas,rcar_sound-gen2
38 - renesas,rcar_sound-r8a774a1 # RZ/G2M
39 - renesas,rcar_sound-r8a774b1 # RZ/G2N
40 - renesas,rcar_sound-r8a774c0 # RZ/G2E
41 - renesas,rcar_sound-r8a774e1 # RZ/G2H
42 - renesas,rcar_sound-r8a7795 # R-Car H3
43 - renesas,rcar_sound-r8a7796 # R-Car M3-W
44 - renesas,rcar_sound-r8a77961 # R-Car M3-W+
45 - renesas,rcar_sound-r8a77965 # R-Car M3-N
46 - renesas,rcar_sound-r8a77990 # R-Car E3
47 - renesas,rcar_sound-r8a77995 # R-Car D3
48 - const: renesas,rcar_sound-gen3
51 - const: renesas,rcar_sound-r8a779g0 # R-Car V4H
52 - const: renesas,rcar_sound-gen4
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
71 This is used on simple-audio-card
76 it must be 0 if your system has audio_clkout
77 it must be 1 if your system has audio_clkout0/1/2/3
87 description: for audio_clkout0/1/2/3
89 clkout-lr-asynchronous:
90 description: audio_clkoutn is asynchronizes with lr-clock.
91 $ref: /schemas/types.yaml#/definitions/flag
104 description: References to SSI/SRC/MIX/CTU/DVC/AUDIO_CLK clocks.
109 description: List of necessary clock names.
110 # details are defined below
114 $ref: audio-graph-port.yaml#/definitions/port-base
115 unevaluatedProperties: false
117 "^endpoint(@[0-9a-f]+)?":
118 $ref: audio-graph-port.yaml#/definitions/endpoint-base
121 $ref: /schemas/types.yaml#/definitions/phandle-array
123 $ref: /schemas/types.yaml#/definitions/phandle-array
124 unevaluatedProperties: false
127 description: DVC subnode.
132 additionalProperties: false
142 additionalProperties: false
145 description: MIX subnode.
150 additionalProperties: false
151 additionalProperties: false
154 description: CTU subnode.
159 additionalProperties: false
160 additionalProperties: false
163 description: SRC subnode.
168 additionalProperties: false
181 additionalProperties: false
184 description: SSIU subnode.
189 additionalProperties: false
203 additionalProperties: false
206 description: SSI subnode.
211 additionalProperties: false
225 - txu # if no ssiu node
226 - rxu # if no ssiu node
229 description: shared clock pin
230 $ref: /schemas/types.yaml#/definitions/flag
232 description: PIO transfer mode
233 $ref: /schemas/types.yaml#/definitions/flag
235 description: BUSIF is not used when [mem -> SSI] via DMA case
236 $ref: /schemas/types.yaml#/definitions/flag
239 additionalProperties: false
243 'rcar_sound,dai(@[0-9a-f]+)?$':
244 description: DAI subnode.
249 additionalProperties: false
253 $ref: /schemas/types.yaml#/definitions/phandle-array
255 $ref: /schemas/types.yaml#/definitions/phandle-array
261 additionalProperties: false
263 'ports(@[0-9a-f]+)?$':
264 $ref: audio-graph-port.yaml#/definitions/port-base
265 unevaluatedProperties: false
267 '^port(@[0-9a-f]+)?$':
268 $ref: "#/properties/port"
278 - $ref: dai-common.yaml#
280 # --------------------
282 # --------------------
288 const: renesas,rcar_sound-gen1
305 - renesas,rcar_sound-gen2
306 - renesas,rcar_sound-gen3
324 const: renesas,rcar_sound-gen4
337 # --------------------
339 # --------------------
344 const: renesas,rcar_sound-gen4
362 - pattern: '^ssi\.[0-9]$'
363 - pattern: '^src\.[0-9]$'
364 - pattern: '^mix\.[0-1]$'
365 - pattern: '^ctu\.[0-1]$'
366 - pattern: '^dvc\.[0-1]$'
367 - pattern: '^clk_(a|b|c|i)$'
369 unevaluatedProperties: false
373 #include <dt-bindings/clock/r8a7790-cpg-mssr.h>
374 #include <dt-bindings/interrupt-controller/arm-gic.h>
375 #include <dt-bindings/power/r8a7790-sysc.h>
376 rcar_sound: sound@ec500000 {
377 #sound-dai-cells = <1>;
378 compatible = "renesas,rcar_sound-r8a7790", "renesas,rcar_sound-gen2";
379 reg = <0xec500000 0x1000>, /* SCU */
380 <0xec5a0000 0x100>, /* ADG */
381 <0xec540000 0x1000>, /* SSIU */
382 <0xec541000 0x280>, /* SSI */
383 <0xec740000 0x200>; /* Audio DMAC peri peri*/
384 reg-names = "scu", "adg", "ssiu", "ssi", "audmapp";
386 clocks = <&cpg CPG_MOD 1005>, /* SSI-ALL */
387 <&cpg CPG_MOD 1006>, <&cpg CPG_MOD 1007>, /* SSI9, SSI8 */
388 <&cpg CPG_MOD 1008>, <&cpg CPG_MOD 1009>, /* SSI7, SSI6 */
389 <&cpg CPG_MOD 1010>, <&cpg CPG_MOD 1011>, /* SSI5, SSI4 */
390 <&cpg CPG_MOD 1012>, <&cpg CPG_MOD 1013>, /* SSI3, SSI2 */
391 <&cpg CPG_MOD 1014>, <&cpg CPG_MOD 1015>, /* SSI1, SSI0 */
392 <&cpg CPG_MOD 1022>, <&cpg CPG_MOD 1023>, /* SRC9, SRC8 */
393 <&cpg CPG_MOD 1024>, <&cpg CPG_MOD 1025>, /* SRC7, SRC6 */
394 <&cpg CPG_MOD 1026>, <&cpg CPG_MOD 1027>, /* SRC5, SRC4 */
395 <&cpg CPG_MOD 1028>, <&cpg CPG_MOD 1029>, /* SRC3, SRC2 */
396 <&cpg CPG_MOD 1030>, <&cpg CPG_MOD 1031>, /* SRC1, SRC0 */
397 <&cpg CPG_MOD 1020>, <&cpg CPG_MOD 1021>, /* MIX1, MIX0 */
398 <&cpg CPG_MOD 1020>, <&cpg CPG_MOD 1021>, /* CTU1, CTU0 */
399 <&cpg CPG_MOD 1019>, <&cpg CPG_MOD 1018>, /* DVC0, DVC1 */
400 <&audio_clk_a>, <&audio_clk_b>, /* CLKA, CLKB */
401 <&audio_clk_c>, <&audio_clk_i>; /* CLKC, CLKI */
403 clock-names = "ssi-all",
420 power-domains = <&sysc R8A7790_PD_ALWAYS_ON>;
422 resets = <&cpg 1005>,
423 <&cpg 1006>, <&cpg 1007>, <&cpg 1008>, <&cpg 1009>,
424 <&cpg 1010>, <&cpg 1011>, <&cpg 1012>, <&cpg 1013>,
425 <&cpg 1014>, <&cpg 1015>;
426 reset-names = "ssi-all",
427 "ssi.9", "ssi.8", "ssi.7", "ssi.6",
428 "ssi.5", "ssi.4", "ssi.3", "ssi.2",
433 dmas = <&audma0 0xbc>;
437 dmas = <&audma0 0xbe>;
463 interrupts = <GIC_SPI 353 IRQ_TYPE_LEVEL_HIGH>;
464 dmas = <&audma0 0x87>, <&audma1 0x9c>;
465 dma-names = "rx", "tx";
467 /* skip after src-2 */
472 dmas = <&audma0 0x15>, <&audma1 0x16>;
473 dma-names = "rx", "tx";
476 dmas = <&audma0 0x35>, <&audma1 0x36>;
477 dma-names = "rx", "tx";
479 /* skip after ssiu-2 */
484 interrupts = <GIC_SPI 370 IRQ_TYPE_LEVEL_HIGH>;
485 dmas = <&audma0 0x01>, <&audma1 0x02>;
486 dma-names = "rx", "tx";
489 interrupts = <GIC_SPI 371 IRQ_TYPE_LEVEL_HIGH>;
490 dmas = <&audma0 0x03>, <&audma1 0x04>;
491 dma-names = "rx", "tx";
493 /* skip other ssi-2 */
499 playback = <&ssi5>, <&src5>;
516 /* assume audio-graph */
518 rsnd_endpoint: endpoint {
519 remote-endpoint = <&codec_endpoint>;
521 dai-format = "left_j";
522 bitclock-master = <&rsnd_endpoint0>;
523 frame-master = <&rsnd_endpoint0>;
525 playback = <&ssi0>, <&src0>, <&dvc0>;
526 capture = <&ssi1>, <&src1>, <&dvc1>;
531 /* assume audio-graph */
534 codec_endpoint: endpoint {
535 remote-endpoint = <&rsnd_endpoint>;