190e8e50fSKuninori MorimotoRenesas R-Car sound
290e8e50fSKuninori Morimoto
390e8e50fSKuninori MorimotoRequired properties:
456ba98acSGeert Uytterhoeven- compatible			: "renesas,rcar_sound-<soctype>", fallbacks
556ba98acSGeert Uytterhoeven				  "renesas,rcar_sound-gen1" if generation1, and
690e8e50fSKuninori Morimoto				  "renesas,rcar_sound-gen2" if generation2
7ac37a45bSKuninori Morimoto				  "renesas,rcar_sound-gen3" if generation3
856ba98acSGeert Uytterhoeven				  Examples with soctypes are:
97667f716SGeert Uytterhoeven				    - "renesas,rcar_sound-r8a7778" (R-Car M1A)
1056ba98acSGeert Uytterhoeven				    - "renesas,rcar_sound-r8a7790" (R-Car H2)
1156ba98acSGeert Uytterhoeven				    - "renesas,rcar_sound-r8a7791" (R-Car M2-W)
12ac37a45bSKuninori Morimoto				    - "renesas,rcar_sound-r8a7795" (R-Car H3)
1390e8e50fSKuninori Morimoto- reg				: Should contain the register physical address.
1490e8e50fSKuninori Morimoto				  required register is
1590e8e50fSKuninori Morimoto				   SRU/ADG/SSI      if generation1
1690e8e50fSKuninori Morimoto				   SRU/ADG/SSIU/SSI if generation2
178bab0dd5SKuninori Morimoto- rcar_sound,ssi		: Should contain SSI feature.
188bab0dd5SKuninori Morimoto				  The number of SSI subnode should be same as HW.
198bab0dd5SKuninori Morimoto				  see below for detail.
208bab0dd5SKuninori Morimoto- rcar_sound,src		: Should contain SRC feature.
218bab0dd5SKuninori Morimoto				  The number of SRC subnode should be same as HW.
228bab0dd5SKuninori Morimoto				  see below for detail.
239269e3c3SKuninori Morimoto- rcar_sound,ctu		: Should contain CTU feature.
249269e3c3SKuninori Morimoto				  The number of CTU subnode should be same as HW.
259269e3c3SKuninori Morimoto				  see below for detail.
2670fb1052SKuninori Morimoto- rcar_sound,mix		: Should contain MIX feature.
2770fb1052SKuninori Morimoto				  The number of MIX subnode should be same as HW.
2870fb1052SKuninori Morimoto				  see below for detail.
2934cb6123SKuninori Morimoto- rcar_sound,dvc		: Should contain DVC feature.
3034cb6123SKuninori Morimoto				  The number of DVC subnode should be same as HW.
3134cb6123SKuninori Morimoto				  see below for detail.
328bab0dd5SKuninori Morimoto- rcar_sound,dai		: DAI contents.
338bab0dd5SKuninori Morimoto				  The number of DAI subnode should be same as HW.
348bab0dd5SKuninori Morimoto				  see below for detail.
35e3d2cec8SKuninori Morimoto- #sound-dai-cells		: it must be 0 if your system is using single DAI
36e3d2cec8SKuninori Morimoto				  it must be 1 if your system is using multi  DAI
37209c0907SKuninori Morimoto
38209c0907SKuninori MorimotoOptional properties:
392a46db4aSKuninori Morimoto- #clock-cells			: it must be 0 if your system has audio_clkout
402a46db4aSKuninori Morimoto				  it must be 1 if your system has audio_clkout0/1/2/3
412a46db4aSKuninori Morimoto- clock-frequency		: for all audio_clkout0/1/2/3
4290e8e50fSKuninori Morimoto
4390e8e50fSKuninori MorimotoSSI subnode properties:
4490e8e50fSKuninori Morimoto- interrupts			: Should contain SSI interrupt for PIO transfer
4590e8e50fSKuninori Morimoto- shared-pin			: if shared clock pin
46199e7688SKuninori Morimoto- pio-transfer			: use PIO transfer mode
47d9288d0bSKuninori Morimoto- no-busif			: BUSIF is not ussed when [mem -> SSI] via DMA case
48e80a2fb1SKuninori Morimoto- dma				: Should contain Audio DMAC entry
49e80a2fb1SKuninori Morimoto- dma-names			: SSI  case "rx"  (=playback), "tx"  (=capture)
50e80a2fb1SKuninori Morimoto				  SSIU case "rxu" (=playback), "txu" (=capture)
5190e8e50fSKuninori Morimoto
528bab0dd5SKuninori MorimotoSRC subnode properties:
53e80a2fb1SKuninori Morimoto- dma				: Should contain Audio DMAC entry
54e80a2fb1SKuninori Morimoto- dma-names			: "rx" (=playback), "tx" (=capture)
55e80a2fb1SKuninori Morimoto
56e80a2fb1SKuninori MorimotoDVC subnode properties:
57e80a2fb1SKuninori Morimoto- dma				: Should contain Audio DMAC entry
58e80a2fb1SKuninori Morimoto- dma-names			: "tx" (=playback/capture)
598bab0dd5SKuninori Morimoto
6090e8e50fSKuninori MorimotoDAI subnode properties:
6190e8e50fSKuninori Morimoto- playback			: list of playback modules
6290e8e50fSKuninori Morimoto- capture			: list of capture  modules
6390e8e50fSKuninori Morimoto
6490e8e50fSKuninori MorimotoExample:
6590e8e50fSKuninori Morimoto
66596f74ecSGeert Uytterhoevenrcar_sound: sound@ec500000 {
6790e8e50fSKuninori Morimoto	#sound-dai-cells = <1>;
6856ba98acSGeert Uytterhoeven	compatible = "renesas,rcar_sound-r8a7791", "renesas,rcar_sound-gen2";
6990e8e50fSKuninori Morimoto	reg =	<0 0xec500000 0 0x1000>, /* SCU */
7090e8e50fSKuninori Morimoto		<0 0xec5a0000 0 0x100>,  /* ADG */
7190e8e50fSKuninori Morimoto		<0 0xec540000 0 0x1000>, /* SSIU */
72d3b1c0baSKuninori Morimoto		<0 0xec541000 0 0x1280>, /* SSI */
73d3b1c0baSKuninori Morimoto		<0 0xec740000 0 0x200>;  /* Audio DMAC peri peri*/
74d3b1c0baSKuninori Morimoto	reg-names = "scu", "adg", "ssiu", "ssi", "audmapp";
7590e8e50fSKuninori Morimoto
76bb02714fSKuninori Morimoto	clocks = <&mstp10_clks R8A7790_CLK_SSI_ALL>,
77bb02714fSKuninori Morimoto		<&mstp10_clks R8A7790_CLK_SSI9>, <&mstp10_clks R8A7790_CLK_SSI8>,
78bb02714fSKuninori Morimoto		<&mstp10_clks R8A7790_CLK_SSI7>, <&mstp10_clks R8A7790_CLK_SSI6>,
79bb02714fSKuninori Morimoto		<&mstp10_clks R8A7790_CLK_SSI5>, <&mstp10_clks R8A7790_CLK_SSI4>,
80bb02714fSKuninori Morimoto		<&mstp10_clks R8A7790_CLK_SSI3>, <&mstp10_clks R8A7790_CLK_SSI2>,
81bb02714fSKuninori Morimoto		<&mstp10_clks R8A7790_CLK_SSI1>, <&mstp10_clks R8A7790_CLK_SSI0>,
82bb02714fSKuninori Morimoto		<&mstp10_clks R8A7790_CLK_SCU_SRC9>, <&mstp10_clks R8A7790_CLK_SCU_SRC8>,
83bb02714fSKuninori Morimoto		<&mstp10_clks R8A7790_CLK_SCU_SRC7>, <&mstp10_clks R8A7790_CLK_SCU_SRC6>,
84bb02714fSKuninori Morimoto		<&mstp10_clks R8A7790_CLK_SCU_SRC5>, <&mstp10_clks R8A7790_CLK_SCU_SRC4>,
85bb02714fSKuninori Morimoto		<&mstp10_clks R8A7790_CLK_SCU_SRC3>, <&mstp10_clks R8A7790_CLK_SCU_SRC2>,
86bb02714fSKuninori Morimoto		<&mstp10_clks R8A7790_CLK_SCU_SRC1>, <&mstp10_clks R8A7790_CLK_SCU_SRC0>,
87bb02714fSKuninori Morimoto		<&mstp10_clks R8A7790_CLK_SCU_DVC0>, <&mstp10_clks R8A7790_CLK_SCU_DVC1>,
88bb02714fSKuninori Morimoto		<&audio_clk_a>, <&audio_clk_b>, <&audio_clk_c>, <&m2_clk>;
89bb02714fSKuninori Morimoto	clock-names = "ssi-all",
90bb02714fSKuninori Morimoto			"ssi.9", "ssi.8", "ssi.7", "ssi.6", "ssi.5",
91bb02714fSKuninori Morimoto			"ssi.4", "ssi.3", "ssi.2", "ssi.1", "ssi.0",
92bb02714fSKuninori Morimoto			"src.9", "src.8", "src.7", "src.6", "src.5",
93bb02714fSKuninori Morimoto			"src.4", "src.3", "src.2", "src.1", "src.0",
94bb02714fSKuninori Morimoto			"dvc.0", "dvc.1",
95bb02714fSKuninori Morimoto			"clk_a", "clk_b", "clk_c", "clk_i";
96bb02714fSKuninori Morimoto
9734cb6123SKuninori Morimoto	rcar_sound,dvc {
98e80a2fb1SKuninori Morimoto		dvc0: dvc@0 {
99e80a2fb1SKuninori Morimoto			dmas = <&audma0 0xbc>;
100e80a2fb1SKuninori Morimoto			dma-names = "tx";
101e80a2fb1SKuninori Morimoto		};
102e80a2fb1SKuninori Morimoto		dvc1: dvc@1 {
103e80a2fb1SKuninori Morimoto			dmas = <&audma0 0xbe>;
104e80a2fb1SKuninori Morimoto			dma-names = "tx";
105e80a2fb1SKuninori Morimoto		};
10634cb6123SKuninori Morimoto	};
10734cb6123SKuninori Morimoto
10870fb1052SKuninori Morimoto	rcar_sound,mix {
10970fb1052SKuninori Morimoto		mix0: mix@0 { };
11070fb1052SKuninori Morimoto		mix1: mix@1 { };
11170fb1052SKuninori Morimoto	};
11270fb1052SKuninori Morimoto
1139269e3c3SKuninori Morimoto	rcar_sound,ctu {
1149269e3c3SKuninori Morimoto		ctu00: ctu@0 { };
1159269e3c3SKuninori Morimoto		ctu01: ctu@1 { };
1169269e3c3SKuninori Morimoto		ctu02: ctu@2 { };
1179269e3c3SKuninori Morimoto		ctu03: ctu@3 { };
1189269e3c3SKuninori Morimoto		ctu10: ctu@4 { };
1199269e3c3SKuninori Morimoto		ctu11: ctu@5 { };
1209269e3c3SKuninori Morimoto		ctu12: ctu@6 { };
1219269e3c3SKuninori Morimoto		ctu13: ctu@7 { };
1229269e3c3SKuninori Morimoto	};
1239269e3c3SKuninori Morimoto
12490e8e50fSKuninori Morimoto	rcar_sound,src {
1255cf4f686SKuninori Morimoto		src0: src@0 {
1265cf4f686SKuninori Morimoto			interrupts = <0 352 IRQ_TYPE_LEVEL_HIGH>;
127e80a2fb1SKuninori Morimoto			dmas = <&audma0 0x85>, <&audma1 0x9a>;
128e80a2fb1SKuninori Morimoto			dma-names = "rx", "tx";
1295cf4f686SKuninori Morimoto		};
1305cf4f686SKuninori Morimoto		src1: src@1 {
1315cf4f686SKuninori Morimoto			interrupts = <0 353 IRQ_TYPE_LEVEL_HIGH>;
132e80a2fb1SKuninori Morimoto			dmas = <&audma0 0x87>, <&audma1 0x9c>;
133e80a2fb1SKuninori Morimoto			dma-names = "rx", "tx";
1345cf4f686SKuninori Morimoto		};
1355cf4f686SKuninori Morimoto		src2: src@2 {
1365cf4f686SKuninori Morimoto			interrupts = <0 354 IRQ_TYPE_LEVEL_HIGH>;
137e80a2fb1SKuninori Morimoto			dmas = <&audma0 0x89>, <&audma1 0x9e>;
138e80a2fb1SKuninori Morimoto			dma-names = "rx", "tx";
1395cf4f686SKuninori Morimoto		};
1405cf4f686SKuninori Morimoto		src3: src@3 {
1415cf4f686SKuninori Morimoto			interrupts = <0 355 IRQ_TYPE_LEVEL_HIGH>;
142e80a2fb1SKuninori Morimoto			dmas = <&audma0 0x8b>, <&audma1 0xa0>;
143e80a2fb1SKuninori Morimoto			dma-names = "rx", "tx";
1445cf4f686SKuninori Morimoto		};
1455cf4f686SKuninori Morimoto		src4: src@4 {
1465cf4f686SKuninori Morimoto			interrupts = <0 356 IRQ_TYPE_LEVEL_HIGH>;
147e80a2fb1SKuninori Morimoto			dmas = <&audma0 0x8d>, <&audma1 0xb0>;
148e80a2fb1SKuninori Morimoto			dma-names = "rx", "tx";
1495cf4f686SKuninori Morimoto		};
1505cf4f686SKuninori Morimoto		src5: src@5 {
1515cf4f686SKuninori Morimoto			interrupts = <0 357 IRQ_TYPE_LEVEL_HIGH>;
152e80a2fb1SKuninori Morimoto			dmas = <&audma0 0x8f>, <&audma1 0xb2>;
153e80a2fb1SKuninori Morimoto			dma-names = "rx", "tx";
1545cf4f686SKuninori Morimoto		};
1555cf4f686SKuninori Morimoto		src6: src@6 {
1565cf4f686SKuninori Morimoto			interrupts = <0 358 IRQ_TYPE_LEVEL_HIGH>;
157e80a2fb1SKuninori Morimoto			dmas = <&audma0 0x91>, <&audma1 0xb4>;
158e80a2fb1SKuninori Morimoto			dma-names = "rx", "tx";
1595cf4f686SKuninori Morimoto		};
1605cf4f686SKuninori Morimoto		src7: src@7 {
1615cf4f686SKuninori Morimoto			interrupts = <0 359 IRQ_TYPE_LEVEL_HIGH>;
162e80a2fb1SKuninori Morimoto			dmas = <&audma0 0x93>, <&audma1 0xb6>;
163e80a2fb1SKuninori Morimoto			dma-names = "rx", "tx";
1645cf4f686SKuninori Morimoto		};
1655cf4f686SKuninori Morimoto		src8: src@8 {
1665cf4f686SKuninori Morimoto			interrupts = <0 360 IRQ_TYPE_LEVEL_HIGH>;
167e80a2fb1SKuninori Morimoto			dmas = <&audma0 0x95>, <&audma1 0xb8>;
168e80a2fb1SKuninori Morimoto			dma-names = "rx", "tx";
1695cf4f686SKuninori Morimoto		};
1705cf4f686SKuninori Morimoto		src9: src@9 {
1715cf4f686SKuninori Morimoto			interrupts = <0 361 IRQ_TYPE_LEVEL_HIGH>;
172e80a2fb1SKuninori Morimoto			dmas = <&audma0 0x97>, <&audma1 0xba>;
173e80a2fb1SKuninori Morimoto			dma-names = "rx", "tx";
1745cf4f686SKuninori Morimoto		};
17590e8e50fSKuninori Morimoto	};
17690e8e50fSKuninori Morimoto
17790e8e50fSKuninori Morimoto	rcar_sound,ssi {
17890e8e50fSKuninori Morimoto		ssi0: ssi@0 {
17990e8e50fSKuninori Morimoto			interrupts = <0 370 IRQ_TYPE_LEVEL_HIGH>;
180e80a2fb1SKuninori Morimoto			dmas = <&audma0 0x01>, <&audma1 0x02>, <&audma0 0x15>, <&audma1 0x16>;
181e80a2fb1SKuninori Morimoto			dma-names = "rx", "tx", "rxu", "txu";
18290e8e50fSKuninori Morimoto		};
18390e8e50fSKuninori Morimoto		ssi1: ssi@1 {
18490e8e50fSKuninori Morimoto			interrupts = <0 371 IRQ_TYPE_LEVEL_HIGH>;
185e80a2fb1SKuninori Morimoto			dmas = <&audma0 0x03>, <&audma1 0x04>, <&audma0 0x49>, <&audma1 0x4a>;
186e80a2fb1SKuninori Morimoto			dma-names = "rx", "tx", "rxu", "txu";
18790e8e50fSKuninori Morimoto		};
18890e8e50fSKuninori Morimoto		ssi2: ssi@2 {
18990e8e50fSKuninori Morimoto			interrupts = <0 372 IRQ_TYPE_LEVEL_HIGH>;
190e80a2fb1SKuninori Morimoto			dmas = <&audma0 0x05>, <&audma1 0x06>, <&audma0 0x63>, <&audma1 0x64>;
191e80a2fb1SKuninori Morimoto			dma-names = "rx", "tx", "rxu", "txu";
19290e8e50fSKuninori Morimoto		};
19390e8e50fSKuninori Morimoto		ssi3: ssi@3 {
19490e8e50fSKuninori Morimoto			interrupts = <0 373 IRQ_TYPE_LEVEL_HIGH>;
195e80a2fb1SKuninori Morimoto			dmas = <&audma0 0x07>, <&audma1 0x08>, <&audma0 0x6f>, <&audma1 0x70>;
196e80a2fb1SKuninori Morimoto			dma-names = "rx", "tx", "rxu", "txu";
19790e8e50fSKuninori Morimoto		};
19890e8e50fSKuninori Morimoto		ssi4: ssi@4 {
19990e8e50fSKuninori Morimoto			interrupts = <0 374 IRQ_TYPE_LEVEL_HIGH>;
200e80a2fb1SKuninori Morimoto			dmas = <&audma0 0x09>, <&audma1 0x0a>, <&audma0 0x71>, <&audma1 0x72>;
201e80a2fb1SKuninori Morimoto			dma-names = "rx", "tx", "rxu", "txu";
20290e8e50fSKuninori Morimoto		};
20390e8e50fSKuninori Morimoto		ssi5: ssi@5 {
20490e8e50fSKuninori Morimoto			interrupts = <0 375 IRQ_TYPE_LEVEL_HIGH>;
205e80a2fb1SKuninori Morimoto			dmas = <&audma0 0x0b>, <&audma1 0x0c>, <&audma0 0x73>, <&audma1 0x74>;
206e80a2fb1SKuninori Morimoto			dma-names = "rx", "tx", "rxu", "txu";
20790e8e50fSKuninori Morimoto		};
20890e8e50fSKuninori Morimoto		ssi6: ssi@6 {
20990e8e50fSKuninori Morimoto			interrupts = <0 376 IRQ_TYPE_LEVEL_HIGH>;
210e80a2fb1SKuninori Morimoto			dmas = <&audma0 0x0d>, <&audma1 0x0e>, <&audma0 0x75>, <&audma1 0x76>;
211e80a2fb1SKuninori Morimoto			dma-names = "rx", "tx", "rxu", "txu";
21290e8e50fSKuninori Morimoto		};
21390e8e50fSKuninori Morimoto		ssi7: ssi@7 {
21490e8e50fSKuninori Morimoto			interrupts = <0 377 IRQ_TYPE_LEVEL_HIGH>;
215e80a2fb1SKuninori Morimoto			dmas = <&audma0 0x0f>, <&audma1 0x10>, <&audma0 0x79>, <&audma1 0x7a>;
216e80a2fb1SKuninori Morimoto			dma-names = "rx", "tx", "rxu", "txu";
21790e8e50fSKuninori Morimoto		};
21890e8e50fSKuninori Morimoto		ssi8: ssi@8 {
21990e8e50fSKuninori Morimoto			interrupts = <0 378 IRQ_TYPE_LEVEL_HIGH>;
220e80a2fb1SKuninori Morimoto			dmas = <&audma0 0x11>, <&audma1 0x12>, <&audma0 0x7b>, <&audma1 0x7c>;
221e80a2fb1SKuninori Morimoto			dma-names = "rx", "tx", "rxu", "txu";
22290e8e50fSKuninori Morimoto		};
22390e8e50fSKuninori Morimoto		ssi9: ssi@9 {
22490e8e50fSKuninori Morimoto			interrupts = <0 379 IRQ_TYPE_LEVEL_HIGH>;
225e80a2fb1SKuninori Morimoto			dmas = <&audma0 0x13>, <&audma1 0x14>, <&audma0 0x7d>, <&audma1 0x7e>;
226e80a2fb1SKuninori Morimoto			dma-names = "rx", "tx", "rxu", "txu";
22790e8e50fSKuninori Morimoto		};
22890e8e50fSKuninori Morimoto	};
22990e8e50fSKuninori Morimoto
23090e8e50fSKuninori Morimoto	rcar_sound,dai {
23190e8e50fSKuninori Morimoto		dai0 {
23290e8e50fSKuninori Morimoto			playback = <&ssi5 &src5>;
23390e8e50fSKuninori Morimoto			capture  = <&ssi6>;
23490e8e50fSKuninori Morimoto		};
23590e8e50fSKuninori Morimoto		dai1 {
23690e8e50fSKuninori Morimoto			playback = <&ssi3>;
23790e8e50fSKuninori Morimoto		};
23890e8e50fSKuninori Morimoto		dai2 {
23990e8e50fSKuninori Morimoto			capture  = <&ssi4>;
24090e8e50fSKuninori Morimoto		};
24190e8e50fSKuninori Morimoto		dai3 {
24290e8e50fSKuninori Morimoto			playback = <&ssi7>;
24390e8e50fSKuninori Morimoto		};
24490e8e50fSKuninori Morimoto		dai4 {
24590e8e50fSKuninori Morimoto			capture  = <&ssi8>;
24690e8e50fSKuninori Morimoto		};
24790e8e50fSKuninori Morimoto	};
24890e8e50fSKuninori Morimoto};
249