190e8e50fSKuninori MorimotoRenesas R-Car sound
290e8e50fSKuninori Morimoto
3f1511a14SKuninori Morimoto=============================================
4f1511a14SKuninori Morimoto* Modules
5f1511a14SKuninori Morimoto=============================================
6f1511a14SKuninori Morimoto
7b0a858a4SBiju DasRenesas R-Car and RZ/G sound is constructed from below modules
8f1511a14SKuninori Morimoto(for Gen2 or later)
9f1511a14SKuninori Morimoto
10f1511a14SKuninori Morimoto SCU		: Sampling Rate Converter Unit
11f1511a14SKuninori Morimoto  - SRC		: Sampling Rate Converter
12f1511a14SKuninori Morimoto  - CMD
13f1511a14SKuninori Morimoto   - CTU	: Channel Transfer Unit
14f1511a14SKuninori Morimoto   - MIX	: Mixer
15f1511a14SKuninori Morimoto   - DVC	: Digital Volume and Mute Function
16f1511a14SKuninori Morimoto SSIU		: Serial Sound Interface Unit
17f1511a14SKuninori Morimoto SSI		: Serial Sound Interface
18f1511a14SKuninori Morimoto
19f1511a14SKuninori MorimotoSee detail of each module's channels, connection, limitation on datasheet
20f1511a14SKuninori Morimoto
21f1511a14SKuninori Morimoto=============================================
22f1511a14SKuninori Morimoto* Multi channel
23f1511a14SKuninori Morimoto=============================================
24f1511a14SKuninori Morimoto
25f1511a14SKuninori MorimotoMulti channel is supported by Multi-SSI, or TDM-SSI.
26f1511a14SKuninori Morimoto
27f1511a14SKuninori Morimoto Multi-SSI	: 6ch case, you can use stereo x 3 SSI
28f1511a14SKuninori Morimoto TDM-SSI	: 6ch case, you can use TDM
29f1511a14SKuninori Morimoto
30f1511a14SKuninori Morimoto=============================================
31f1511a14SKuninori Morimoto* Enable/Disable each modules
32f1511a14SKuninori Morimoto=============================================
33f1511a14SKuninori Morimoto
34f1511a14SKuninori MorimotoSee datasheet to check SRC/CTU/MIX/DVC connect-limitation.
35f1511a14SKuninori MorimotoDT controls enabling/disabling module.
36f1511a14SKuninori Morimoto${LINUX}/arch/arm/boot/dts/r8a7790-lager.dts can be good example.
37f1511a14SKuninori MorimotoThis is example of
38f1511a14SKuninori Morimoto
39f1511a14SKuninori MorimotoPlayback: [MEM] -> [SRC2] -> [DVC0] -> [SSIU0/SSI0] -> [codec]
40f1511a14SKuninori MorimotoCapture:  [MEM] <- [DVC1] <- [SRC3] <- [SSIU1/SSI1] <- [codec]
41f1511a14SKuninori Morimoto
42bd7ff187SKuninori Morimotosee "Example: simple sound card"
43f1511a14SKuninori Morimoto
44f1511a14SKuninori MorimotoYou can use below.
45f1511a14SKuninori Morimoto${LINUX}/arch/arm/boot/dts/r8a7790.dts can be good example.
46f1511a14SKuninori Morimoto
47f1511a14SKuninori Morimoto	&src0	&ctu00	&mix0	&dvc0	&ssi0
48f1511a14SKuninori Morimoto	&src1	&ctu01	&mix1	&dvc1	&ssi1
49f1511a14SKuninori Morimoto	&src2	&ctu02			&ssi2
50f1511a14SKuninori Morimoto	&src3	&ctu03			&ssi3
51f1511a14SKuninori Morimoto	&src4				&ssi4
52f1511a14SKuninori Morimoto	&src5	&ctu10			&ssi5
53f1511a14SKuninori Morimoto	&src6	&ctu11			&ssi6
54f1511a14SKuninori Morimoto	&src7	&ctu12			&ssi7
55f1511a14SKuninori Morimoto	&src8	&ctu13			&ssi8
56f1511a14SKuninori Morimoto	&src9				&ssi9
57f1511a14SKuninori Morimoto
58f1511a14SKuninori Morimoto=============================================
59f1511a14SKuninori Morimoto* SRC (Sampling Rate Converter)
60f1511a14SKuninori Morimoto=============================================
61f1511a14SKuninori Morimoto
62f1511a14SKuninori Morimoto [xx]Hz        [yy]Hz
63f1511a14SKuninori Morimoto ------> [SRC] ------>
64f1511a14SKuninori Morimoto
65f1511a14SKuninori MorimotoSRC can convert [xx]Hz to [yy]Hz. Then, it has below 2 modes
66f1511a14SKuninori Morimoto
67f1511a14SKuninori Morimoto Asynchronous mode:	input data / output data are based on different clocks.
68f1511a14SKuninori Morimoto			you can use this mode on Playback / Capture
69f1511a14SKuninori Morimoto Synchronous mode:	input data / output data are based on same clocks.
70f1511a14SKuninori Morimoto			This mode will be used if system doesn't have its input clock,
71f1511a14SKuninori Morimoto			for example digital TV case.
72f1511a14SKuninori Morimoto			you can use this mode on Playback
73f1511a14SKuninori Morimoto
74f1511a14SKuninori Morimoto------------------
75f1511a14SKuninori Morimoto**     Asynchronous mode
76f1511a14SKuninori Morimoto------------------
77f1511a14SKuninori Morimoto
78bd7ff187SKuninori MorimotoYou need to use "simple-scu-audio-card" or "audio-graph-scu-card" for it.
79bd7ff187SKuninori Morimotosee "Example: simple sound card for Asynchronous mode"
80f1511a14SKuninori Morimoto
81f1511a14SKuninori Morimoto------------------
82f1511a14SKuninori Morimoto**     Synchronous mode
83f1511a14SKuninori Morimoto------------------
84f1511a14SKuninori Morimoto
85f1511a14SKuninori Morimoto	> amixer set "SRC Out Rate" on
86f1511a14SKuninori Morimoto	> aplay xxxx.wav
87f1511a14SKuninori Morimoto	> amixer set "SRC Out Rate" 48000
88f1511a14SKuninori Morimoto	> amixer set "SRC Out Rate" 44100
89f1511a14SKuninori Morimoto
90f1511a14SKuninori Morimoto=============================================
91f1511a14SKuninori Morimoto* CTU (Channel Transfer Unit)
92f1511a14SKuninori Morimoto=============================================
93f1511a14SKuninori Morimoto
94f1511a14SKuninori Morimoto [xx]ch        [yy]ch
95f1511a14SKuninori Morimoto ------> [CTU] -------->
96f1511a14SKuninori Morimoto
97f1511a14SKuninori MorimotoCTU can convert [xx]ch to [yy]ch, or exchange outputed channel.
98f1511a14SKuninori MorimotoCTU conversion needs matrix settings.
99f1511a14SKuninori MorimotoFor more detail information, see below
100f1511a14SKuninori Morimoto
101f1511a14SKuninori Morimoto	Renesas R-Car datasheet
102f1511a14SKuninori Morimoto	 - Sampling Rate Converter Unit (SCU)
103f1511a14SKuninori Morimoto	  - SCU Operation
104f1511a14SKuninori Morimoto	   - CMD Block
105f1511a14SKuninori Morimoto	    - Functional Blocks in CMD
106f1511a14SKuninori Morimoto
107f1511a14SKuninori Morimoto	Renesas R-Car datasheet
108f1511a14SKuninori Morimoto	 - Sampling Rate Converter Unit (SCU)
109f1511a14SKuninori Morimoto	  - Register Description
110f1511a14SKuninori Morimoto	   - CTUn Scale Value exx Register (CTUn_SVxxR)
111f1511a14SKuninori Morimoto
112f1511a14SKuninori Morimoto	${LINUX}/sound/soc/sh/rcar/ctu.c
113f1511a14SKuninori Morimoto	 - comment of header
114f1511a14SKuninori Morimoto
115bd7ff187SKuninori MorimotoYou need to use "simple-scu-audio-card" or "audio-graph-scu-card" for it.
116bd7ff187SKuninori Morimotosee "Example: simple sound card for channel convert"
117f1511a14SKuninori Morimoto
118f1511a14SKuninori MorimotoEx) Exchange output channel
119f1511a14SKuninori Morimoto Input -> Output
120f1511a14SKuninori Morimoto  1ch  ->  0ch
121f1511a14SKuninori Morimoto  0ch  ->  1ch
122f1511a14SKuninori Morimoto
123f1511a14SKuninori Morimoto  example of using matrix
124f1511a14SKuninori Morimoto	output 0ch = (input 0ch x 0) + (input 1ch x 1)
125f1511a14SKuninori Morimoto	output 1ch = (input 0ch x 1) + (input 1ch x 0)
126f1511a14SKuninori Morimoto
127f1511a14SKuninori Morimoto	amixer set "CTU Reset" on
128f1511a14SKuninori Morimoto	amixer set "CTU Pass" 9,10
129f1511a14SKuninori Morimoto	amixer set "CTU SV0" 0,4194304
130f1511a14SKuninori Morimoto	amixer set "CTU SV1" 4194304,0
131f1511a14SKuninori Morimoto
132f1511a14SKuninori Morimoto example of changing connection
133f1511a14SKuninori Morimoto	amixer set "CTU Reset" on
134f1511a14SKuninori Morimoto	amixer set "CTU Pass" 2,1
135f1511a14SKuninori Morimoto
136f1511a14SKuninori Morimoto=============================================
137f1511a14SKuninori Morimoto* MIX (Mixer)
138f1511a14SKuninori Morimoto=============================================
139f1511a14SKuninori Morimoto
140f1511a14SKuninori MorimotoMIX merges 2 sounds path. You can see 2 sound interface on system,
141f1511a14SKuninori Morimotoand these sounds will be merged by MIX.
142f1511a14SKuninori Morimoto
143f1511a14SKuninori Morimoto	aplay -D plughw:0,0 xxxx.wav &
144f1511a14SKuninori Morimoto	aplay -D plughw:0,1 yyyy.wav
145f1511a14SKuninori Morimoto
146bd7ff187SKuninori MorimotoYou need to use "simple-scu-audio-card" or "audio-graph-scu-card" for it.
147f1511a14SKuninori MorimotoEx)
148f1511a14SKuninori Morimoto	[MEM] -> [SRC1] -> [CTU02] -+-> [MIX0] -> [DVC0] -> [SSI0]
149f1511a14SKuninori Morimoto	                            |
150f1511a14SKuninori Morimoto	[MEM] -> [SRC2] -> [CTU03] -+
151f1511a14SKuninori Morimoto
152bd7ff187SKuninori Morimotosee "Example: simple sound card for MIXer"
153f1511a14SKuninori Morimoto
154f1511a14SKuninori Morimoto=============================================
155f1511a14SKuninori Morimoto* DVC (Digital Volume and Mute Function)
156f1511a14SKuninori Morimoto=============================================
157f1511a14SKuninori Morimoto
158f1511a14SKuninori MorimotoDVC controls Playback/Capture volume.
159f1511a14SKuninori Morimoto
160f1511a14SKuninori MorimotoPlayback Volume
161f1511a14SKuninori Morimoto	amixer set "DVC Out" 100%
162f1511a14SKuninori Morimoto
163f1511a14SKuninori MorimotoCapture Volume
164f1511a14SKuninori Morimoto	amixer set "DVC In" 100%
165f1511a14SKuninori Morimoto
166f1511a14SKuninori MorimotoPlayback Mute
167f1511a14SKuninori Morimoto	amixer set "DVC Out Mute" on
168f1511a14SKuninori Morimoto
169f1511a14SKuninori MorimotoCapture Mute
170f1511a14SKuninori Morimoto	amixer set "DVC In Mute" on
171f1511a14SKuninori Morimoto
172f1511a14SKuninori MorimotoVolume Ramp
173f1511a14SKuninori Morimoto	amixer set "DVC Out Ramp Up Rate"   "0.125 dB/64 steps"
174f1511a14SKuninori Morimoto	amixer set "DVC Out Ramp Down Rate" "0.125 dB/512 steps"
175f1511a14SKuninori Morimoto	amixer set "DVC Out Ramp" on
176f1511a14SKuninori Morimoto	aplay xxx.wav &
177f1511a14SKuninori Morimoto	amixer set "DVC Out"  80%  // Volume Down
178f1511a14SKuninori Morimoto	amixer set "DVC Out" 100%  // Volume Up
179f1511a14SKuninori Morimoto
180f1511a14SKuninori Morimoto=============================================
181f1511a14SKuninori Morimoto* SSIU (Serial Sound Interface Unit)
182f1511a14SKuninori Morimoto=============================================
183f1511a14SKuninori Morimoto
184f1511a14SKuninori MorimotoSSIU can avoid some under/over run error, because it has some buffer.
185f1511a14SKuninori MorimotoBut you can't use it if SSI was PIO mode.
186da48a6ebSKuninori MorimotoIn DMA mode, you can select not to use SSIU by using "no-busif" via SSI.
187f1511a14SKuninori Morimoto
188da48a6ebSKuninori MorimotoSSIU handles BUSIF which will be used for TDM Split mode.
189da48a6ebSKuninori MorimotoThis driver is assuming that audio-graph card will be used.
190f1511a14SKuninori Morimoto
191cf704dc8SKuninori MorimotoTDM Split mode merges 4 sounds. You can see 4 sound interface on system,
192cf704dc8SKuninori Morimotoand these sounds will be merged SSIU/SSI.
193cf704dc8SKuninori Morimoto
194cf704dc8SKuninori Morimoto	aplay -D plughw:0,0 xxxx.wav &
195cf704dc8SKuninori Morimoto	aplay -D plughw:0,1 xxxx.wav &
196cf704dc8SKuninori Morimoto	aplay -D plughw:0,2 xxxx.wav &
197cf704dc8SKuninori Morimoto	aplay -D plughw:0,3 xxxx.wav
198cf704dc8SKuninori Morimoto
199cf704dc8SKuninori Morimoto	          2ch                     8ch
200cf704dc8SKuninori Morimoto	[MEM] -> [SSIU 30] -+-> [SSIU 3] --> [Codec]
201cf704dc8SKuninori Morimoto	          2ch       |
202cf704dc8SKuninori Morimoto	[MEM] -> [SSIU 31] -+
203cf704dc8SKuninori Morimoto	          2ch       |
204cf704dc8SKuninori Morimoto	[MEM] -> [SSIU 32] -+
205cf704dc8SKuninori Morimoto	          2ch       |
206cf704dc8SKuninori Morimoto	[MEM] -> [SSIU 33] -+
207cf704dc8SKuninori Morimoto
208cf704dc8SKuninori Morimotosee "Example: simple sound card for TDM Split"
209cf704dc8SKuninori Morimoto
210f1511a14SKuninori Morimoto=============================================
211f1511a14SKuninori Morimoto* SSI (Serial Sound Interface)
212f1511a14SKuninori Morimoto=============================================
213f1511a14SKuninori Morimoto
214f1511a14SKuninori Morimoto**  PIO mode
215f1511a14SKuninori Morimoto
216f1511a14SKuninori MorimotoYou can use PIO mode which is for connection check by using.
217f1511a14SKuninori MorimotoNote: The system will drop non-SSI modules in PIO mode
218f1511a14SKuninori Morimotoeven though if DT is selecting other modules.
219f1511a14SKuninori Morimoto
220f1511a14SKuninori Morimoto	&ssi0 {
221f1511a14SKuninori Morimoto		pio-transfer
222f1511a14SKuninori Morimoto	};
223f1511a14SKuninori Morimoto
224f1511a14SKuninori Morimoto** DMA mode without SSIU
225f1511a14SKuninori Morimoto
226f1511a14SKuninori MorimotoYou can use DMA without SSIU.
227f1511a14SKuninori MorimotoNote: under/over run, or noise are likely to occur
228f1511a14SKuninori Morimoto
229f1511a14SKuninori Morimoto	&ssi0 {
230f1511a14SKuninori Morimoto		no-busif;
231f1511a14SKuninori Morimoto	};
232f1511a14SKuninori Morimoto
233f1511a14SKuninori Morimoto** PIN sharing
234f1511a14SKuninori Morimoto
235f1511a14SKuninori MorimotoEach SSI can share WS pin. It is based on platform.
236f1511a14SKuninori MorimotoThis is example if SSI1 want to share WS pin with SSI0
237f1511a14SKuninori Morimoto
238f1511a14SKuninori Morimoto	&ssi1 {
239f1511a14SKuninori Morimoto		shared-pin;
240f1511a14SKuninori Morimoto	};
241f1511a14SKuninori Morimoto
242f1511a14SKuninori Morimoto** Multi-SSI
243f1511a14SKuninori Morimoto
244f1511a14SKuninori MorimotoYou can use Multi-SSI.
245f1511a14SKuninori MorimotoThis is example of SSI0/SSI1/SSI2 (= for 6ch)
246f1511a14SKuninori Morimoto
247bd7ff187SKuninori Morimotosee "Example: simple sound card for Multi channel"
248f1511a14SKuninori Morimoto
249f1511a14SKuninori Morimoto** TDM-SSI
250f1511a14SKuninori Morimoto
251f1511a14SKuninori MorimotoYou can use TDM with SSI.
252f1511a14SKuninori MorimotoThis is example of TDM 6ch.
253f1511a14SKuninori MorimotoDriver can automatically switches TDM <-> stereo mode in this case.
254f1511a14SKuninori Morimoto
255bd7ff187SKuninori Morimotosee "Example: simple sound card for TDM"
256f1511a14SKuninori Morimoto
257f1511a14SKuninori Morimoto=============================================
25890e8e50fSKuninori MorimotoRequired properties:
259f1511a14SKuninori Morimoto=============================================
260f1511a14SKuninori Morimoto
26156ba98acSGeert Uytterhoeven- compatible			: "renesas,rcar_sound-<soctype>", fallbacks
26256ba98acSGeert Uytterhoeven				  "renesas,rcar_sound-gen1" if generation1, and
263b0a858a4SBiju Das				  "renesas,rcar_sound-gen2" if generation2 (or RZ/G1)
2646fbf9d8eSFabrizio Castro				  "renesas,rcar_sound-gen3" if generation3 (or RZ/G2)
26556ba98acSGeert Uytterhoeven				  Examples with soctypes are:
266b0a858a4SBiju Das				    - "renesas,rcar_sound-r8a7743" (RZ/G1M)
267765f50d4SBiju Das				    - "renesas,rcar_sound-r8a7744" (RZ/G1N)
268b0a858a4SBiju Das				    - "renesas,rcar_sound-r8a7745" (RZ/G1E)
2696fbf9d8eSFabrizio Castro				    - "renesas,rcar_sound-r8a774a1" (RZ/G2M)
2707667f716SGeert Uytterhoeven				    - "renesas,rcar_sound-r8a7778" (R-Car M1A)
2714eb404d0SSimon Horman				    - "renesas,rcar_sound-r8a7779" (R-Car H1)
27256ba98acSGeert Uytterhoeven				    - "renesas,rcar_sound-r8a7790" (R-Car H2)
27356ba98acSGeert Uytterhoeven				    - "renesas,rcar_sound-r8a7791" (R-Car M2-W)
2744eb404d0SSimon Horman				    - "renesas,rcar_sound-r8a7793" (R-Car M2-N)
2754eb404d0SSimon Horman				    - "renesas,rcar_sound-r8a7794" (R-Car E2)
276ac37a45bSKuninori Morimoto				    - "renesas,rcar_sound-r8a7795" (R-Car H3)
277da263026SGeert Uytterhoeven				    - "renesas,rcar_sound-r8a7796" (R-Car M3-W)
278150a6dc8SHiroyuki Yokoyama				    - "renesas,rcar_sound-r8a77965" (R-Car M3-N)
279e058a403SHiroyuki Yokoyama				    - "renesas,rcar_sound-r8a77990" (R-Car E3)
28090e8e50fSKuninori Morimoto- reg				: Should contain the register physical address.
28190e8e50fSKuninori Morimoto				  required register is
28290e8e50fSKuninori Morimoto				   SRU/ADG/SSI      if generation1
28390e8e50fSKuninori Morimoto				   SRU/ADG/SSIU/SSI if generation2
2848bab0dd5SKuninori Morimoto- rcar_sound,ssi		: Should contain SSI feature.
2858bab0dd5SKuninori Morimoto				  The number of SSI subnode should be same as HW.
2868bab0dd5SKuninori Morimoto				  see below for detail.
287da48a6ebSKuninori Morimoto- rcar_sound,ssiu		: Should contain SSIU feature.
288da48a6ebSKuninori Morimoto				  The number of SSIU subnode should be same as HW.
289da48a6ebSKuninori Morimoto				  see below for detail.
2908bab0dd5SKuninori Morimoto- rcar_sound,src		: Should contain SRC feature.
2918bab0dd5SKuninori Morimoto				  The number of SRC subnode should be same as HW.
2928bab0dd5SKuninori Morimoto				  see below for detail.
2939269e3c3SKuninori Morimoto- rcar_sound,ctu		: Should contain CTU feature.
2949269e3c3SKuninori Morimoto				  The number of CTU subnode should be same as HW.
2959269e3c3SKuninori Morimoto				  see below for detail.
29670fb1052SKuninori Morimoto- rcar_sound,mix		: Should contain MIX feature.
29770fb1052SKuninori Morimoto				  The number of MIX subnode should be same as HW.
29870fb1052SKuninori Morimoto				  see below for detail.
29934cb6123SKuninori Morimoto- rcar_sound,dvc		: Should contain DVC feature.
30034cb6123SKuninori Morimoto				  The number of DVC subnode should be same as HW.
30134cb6123SKuninori Morimoto				  see below for detail.
3028bab0dd5SKuninori Morimoto- rcar_sound,dai		: DAI contents.
3038bab0dd5SKuninori Morimoto				  The number of DAI subnode should be same as HW.
3048bab0dd5SKuninori Morimoto				  see below for detail.
305e3d2cec8SKuninori Morimoto- #sound-dai-cells		: it must be 0 if your system is using single DAI
306e3d2cec8SKuninori Morimoto				  it must be 1 if your system is using multi  DAI
3075b3889f8SKuninori Morimoto- clocks			: References to SSI/SRC/MIX/CTU/DVC/AUDIO_CLK clocks.
3085b3889f8SKuninori Morimoto- clock-names			: List of necessary clock names.
3095b3889f8SKuninori Morimoto				  "ssi-all", "ssi.X", "src.X", "mix.X", "ctu.X",
3105b3889f8SKuninori Morimoto				  "dvc.X", "clk_a", "clk_b", "clk_c", "clk_i"
311209c0907SKuninori Morimoto
312209c0907SKuninori MorimotoOptional properties:
3132a46db4aSKuninori Morimoto- #clock-cells			: it must be 0 if your system has audio_clkout
3142a46db4aSKuninori Morimoto				  it must be 1 if your system has audio_clkout0/1/2/3
3152a46db4aSKuninori Morimoto- clock-frequency		: for all audio_clkout0/1/2/3
3167dc20319SKuninori Morimoto- clkout-lr-asynchronous	: boolean property. it indicates that audio_clkoutn
3177dc20319SKuninori Morimoto				  is asynchronizes with lr-clock.
3185f440c48SGeert Uytterhoeven- resets			: References to SSI resets.
3195f440c48SGeert Uytterhoeven- reset-names			: List of valid reset names.
3205f440c48SGeert Uytterhoeven				  "ssi-all", "ssi.X"
32190e8e50fSKuninori Morimoto
32290e8e50fSKuninori MorimotoSSI subnode properties:
32390e8e50fSKuninori Morimoto- interrupts			: Should contain SSI interrupt for PIO transfer
32490e8e50fSKuninori Morimoto- shared-pin			: if shared clock pin
325199e7688SKuninori Morimoto- pio-transfer			: use PIO transfer mode
326d9288d0bSKuninori Morimoto- no-busif			: BUSIF is not ussed when [mem -> SSI] via DMA case
327e80a2fb1SKuninori Morimoto- dma				: Should contain Audio DMAC entry
328e80a2fb1SKuninori Morimoto- dma-names			: SSI  case "rx"  (=playback), "tx"  (=capture)
329e80a2fb1SKuninori Morimoto				  SSIU case "rxu" (=playback), "txu" (=capture)
33090e8e50fSKuninori Morimoto
3318bab0dd5SKuninori MorimotoSRC subnode properties:
332e80a2fb1SKuninori Morimoto- dma				: Should contain Audio DMAC entry
333e80a2fb1SKuninori Morimoto- dma-names			: "rx" (=playback), "tx" (=capture)
334e80a2fb1SKuninori Morimoto
335e80a2fb1SKuninori MorimotoDVC subnode properties:
336e80a2fb1SKuninori Morimoto- dma				: Should contain Audio DMAC entry
337e80a2fb1SKuninori Morimoto- dma-names			: "tx" (=playback/capture)
3388bab0dd5SKuninori Morimoto
33990e8e50fSKuninori MorimotoDAI subnode properties:
34090e8e50fSKuninori Morimoto- playback			: list of playback modules
34190e8e50fSKuninori Morimoto- capture			: list of capture  modules
34290e8e50fSKuninori Morimoto
343f1511a14SKuninori Morimoto
344f1511a14SKuninori Morimoto=============================================
34590e8e50fSKuninori MorimotoExample:
346f1511a14SKuninori Morimoto=============================================
34790e8e50fSKuninori Morimoto
348596f74ecSGeert Uytterhoevenrcar_sound: sound@ec500000 {
34990e8e50fSKuninori Morimoto	#sound-dai-cells = <1>;
35056ba98acSGeert Uytterhoeven	compatible = "renesas,rcar_sound-r8a7791", "renesas,rcar_sound-gen2";
35190e8e50fSKuninori Morimoto	reg =	<0 0xec500000 0 0x1000>, /* SCU */
35290e8e50fSKuninori Morimoto		<0 0xec5a0000 0 0x100>,  /* ADG */
35390e8e50fSKuninori Morimoto		<0 0xec540000 0 0x1000>, /* SSIU */
354d3b1c0baSKuninori Morimoto		<0 0xec541000 0 0x1280>, /* SSI */
355d3b1c0baSKuninori Morimoto		<0 0xec740000 0 0x200>;  /* Audio DMAC peri peri*/
356d3b1c0baSKuninori Morimoto	reg-names = "scu", "adg", "ssiu", "ssi", "audmapp";
35790e8e50fSKuninori Morimoto
358bb02714fSKuninori Morimoto	clocks = <&mstp10_clks R8A7790_CLK_SSI_ALL>,
359bb02714fSKuninori Morimoto		<&mstp10_clks R8A7790_CLK_SSI9>, <&mstp10_clks R8A7790_CLK_SSI8>,
360bb02714fSKuninori Morimoto		<&mstp10_clks R8A7790_CLK_SSI7>, <&mstp10_clks R8A7790_CLK_SSI6>,
361bb02714fSKuninori Morimoto		<&mstp10_clks R8A7790_CLK_SSI5>, <&mstp10_clks R8A7790_CLK_SSI4>,
362bb02714fSKuninori Morimoto		<&mstp10_clks R8A7790_CLK_SSI3>, <&mstp10_clks R8A7790_CLK_SSI2>,
363bb02714fSKuninori Morimoto		<&mstp10_clks R8A7790_CLK_SSI1>, <&mstp10_clks R8A7790_CLK_SSI0>,
364bb02714fSKuninori Morimoto		<&mstp10_clks R8A7790_CLK_SCU_SRC9>, <&mstp10_clks R8A7790_CLK_SCU_SRC8>,
365bb02714fSKuninori Morimoto		<&mstp10_clks R8A7790_CLK_SCU_SRC7>, <&mstp10_clks R8A7790_CLK_SCU_SRC6>,
366bb02714fSKuninori Morimoto		<&mstp10_clks R8A7790_CLK_SCU_SRC5>, <&mstp10_clks R8A7790_CLK_SCU_SRC4>,
367bb02714fSKuninori Morimoto		<&mstp10_clks R8A7790_CLK_SCU_SRC3>, <&mstp10_clks R8A7790_CLK_SCU_SRC2>,
368bb02714fSKuninori Morimoto		<&mstp10_clks R8A7790_CLK_SCU_SRC1>, <&mstp10_clks R8A7790_CLK_SCU_SRC0>,
369bb02714fSKuninori Morimoto		<&mstp10_clks R8A7790_CLK_SCU_DVC0>, <&mstp10_clks R8A7790_CLK_SCU_DVC1>,
370bb02714fSKuninori Morimoto		<&audio_clk_a>, <&audio_clk_b>, <&audio_clk_c>, <&m2_clk>;
371bb02714fSKuninori Morimoto	clock-names = "ssi-all",
372bb02714fSKuninori Morimoto			"ssi.9", "ssi.8", "ssi.7", "ssi.6", "ssi.5",
373bb02714fSKuninori Morimoto			"ssi.4", "ssi.3", "ssi.2", "ssi.1", "ssi.0",
374bb02714fSKuninori Morimoto			"src.9", "src.8", "src.7", "src.6", "src.5",
375bb02714fSKuninori Morimoto			"src.4", "src.3", "src.2", "src.1", "src.0",
376bb02714fSKuninori Morimoto			"dvc.0", "dvc.1",
377bb02714fSKuninori Morimoto			"clk_a", "clk_b", "clk_c", "clk_i";
378bb02714fSKuninori Morimoto
37934cb6123SKuninori Morimoto	rcar_sound,dvc {
380a5702e1cSGeert Uytterhoeven		dvc0: dvc-0 {
381e80a2fb1SKuninori Morimoto			dmas = <&audma0 0xbc>;
382e80a2fb1SKuninori Morimoto			dma-names = "tx";
383e80a2fb1SKuninori Morimoto		};
384a5702e1cSGeert Uytterhoeven		dvc1: dvc-1 {
385e80a2fb1SKuninori Morimoto			dmas = <&audma0 0xbe>;
386e80a2fb1SKuninori Morimoto			dma-names = "tx";
387e80a2fb1SKuninori Morimoto		};
38834cb6123SKuninori Morimoto	};
38934cb6123SKuninori Morimoto
39070fb1052SKuninori Morimoto	rcar_sound,mix {
391a5702e1cSGeert Uytterhoeven		mix0: mix-0 { };
392a5702e1cSGeert Uytterhoeven		mix1: mix-1 { };
39370fb1052SKuninori Morimoto	};
39470fb1052SKuninori Morimoto
3959269e3c3SKuninori Morimoto	rcar_sound,ctu {
396a5702e1cSGeert Uytterhoeven		ctu00: ctu-0 { };
397a5702e1cSGeert Uytterhoeven		ctu01: ctu-1 { };
398a5702e1cSGeert Uytterhoeven		ctu02: ctu-2 { };
399a5702e1cSGeert Uytterhoeven		ctu03: ctu-3 { };
400a5702e1cSGeert Uytterhoeven		ctu10: ctu-4 { };
401a5702e1cSGeert Uytterhoeven		ctu11: ctu-5 { };
402a5702e1cSGeert Uytterhoeven		ctu12: ctu-6 { };
403a5702e1cSGeert Uytterhoeven		ctu13: ctu-7 { };
4049269e3c3SKuninori Morimoto	};
4059269e3c3SKuninori Morimoto
40690e8e50fSKuninori Morimoto	rcar_sound,src {
407a5702e1cSGeert Uytterhoeven		src0: src-0 {
4085cf4f686SKuninori Morimoto			interrupts = <0 352 IRQ_TYPE_LEVEL_HIGH>;
409e80a2fb1SKuninori Morimoto			dmas = <&audma0 0x85>, <&audma1 0x9a>;
410e80a2fb1SKuninori Morimoto			dma-names = "rx", "tx";
4115cf4f686SKuninori Morimoto		};
412a5702e1cSGeert Uytterhoeven		src1: src-1 {
4135cf4f686SKuninori Morimoto			interrupts = <0 353 IRQ_TYPE_LEVEL_HIGH>;
414e80a2fb1SKuninori Morimoto			dmas = <&audma0 0x87>, <&audma1 0x9c>;
415e80a2fb1SKuninori Morimoto			dma-names = "rx", "tx";
4165cf4f686SKuninori Morimoto		};
417a5702e1cSGeert Uytterhoeven		src2: src-2 {
4185cf4f686SKuninori Morimoto			interrupts = <0 354 IRQ_TYPE_LEVEL_HIGH>;
419e80a2fb1SKuninori Morimoto			dmas = <&audma0 0x89>, <&audma1 0x9e>;
420e80a2fb1SKuninori Morimoto			dma-names = "rx", "tx";
4215cf4f686SKuninori Morimoto		};
422a5702e1cSGeert Uytterhoeven		src3: src-3 {
4235cf4f686SKuninori Morimoto			interrupts = <0 355 IRQ_TYPE_LEVEL_HIGH>;
424e80a2fb1SKuninori Morimoto			dmas = <&audma0 0x8b>, <&audma1 0xa0>;
425e80a2fb1SKuninori Morimoto			dma-names = "rx", "tx";
4265cf4f686SKuninori Morimoto		};
427a5702e1cSGeert Uytterhoeven		src4: src-4 {
4285cf4f686SKuninori Morimoto			interrupts = <0 356 IRQ_TYPE_LEVEL_HIGH>;
429e80a2fb1SKuninori Morimoto			dmas = <&audma0 0x8d>, <&audma1 0xb0>;
430e80a2fb1SKuninori Morimoto			dma-names = "rx", "tx";
4315cf4f686SKuninori Morimoto		};
432a5702e1cSGeert Uytterhoeven		src5: src-5 {
4335cf4f686SKuninori Morimoto			interrupts = <0 357 IRQ_TYPE_LEVEL_HIGH>;
434e80a2fb1SKuninori Morimoto			dmas = <&audma0 0x8f>, <&audma1 0xb2>;
435e80a2fb1SKuninori Morimoto			dma-names = "rx", "tx";
4365cf4f686SKuninori Morimoto		};
437a5702e1cSGeert Uytterhoeven		src6: src-6 {
4385cf4f686SKuninori Morimoto			interrupts = <0 358 IRQ_TYPE_LEVEL_HIGH>;
439e80a2fb1SKuninori Morimoto			dmas = <&audma0 0x91>, <&audma1 0xb4>;
440e80a2fb1SKuninori Morimoto			dma-names = "rx", "tx";
4415cf4f686SKuninori Morimoto		};
442a5702e1cSGeert Uytterhoeven		src7: src-7 {
4435cf4f686SKuninori Morimoto			interrupts = <0 359 IRQ_TYPE_LEVEL_HIGH>;
444e80a2fb1SKuninori Morimoto			dmas = <&audma0 0x93>, <&audma1 0xb6>;
445e80a2fb1SKuninori Morimoto			dma-names = "rx", "tx";
4465cf4f686SKuninori Morimoto		};
447a5702e1cSGeert Uytterhoeven		src8: src-8 {
4485cf4f686SKuninori Morimoto			interrupts = <0 360 IRQ_TYPE_LEVEL_HIGH>;
449e80a2fb1SKuninori Morimoto			dmas = <&audma0 0x95>, <&audma1 0xb8>;
450e80a2fb1SKuninori Morimoto			dma-names = "rx", "tx";
4515cf4f686SKuninori Morimoto		};
452a5702e1cSGeert Uytterhoeven		src9: src-9 {
4535cf4f686SKuninori Morimoto			interrupts = <0 361 IRQ_TYPE_LEVEL_HIGH>;
454e80a2fb1SKuninori Morimoto			dmas = <&audma0 0x97>, <&audma1 0xba>;
455e80a2fb1SKuninori Morimoto			dma-names = "rx", "tx";
4565cf4f686SKuninori Morimoto		};
45790e8e50fSKuninori Morimoto	};
45890e8e50fSKuninori Morimoto
459da48a6ebSKuninori Morimoto	rcar_sound,ssiu {
460da48a6ebSKuninori Morimoto		ssiu00: ssiu-0 {
461da48a6ebSKuninori Morimoto			dmas = <&audma0 0x15>, <&audma1 0x16>;
462da48a6ebSKuninori Morimoto			dma-names = "rx", "tx";
463da48a6ebSKuninori Morimoto		};
464da48a6ebSKuninori Morimoto		ssiu01: ssiu-1 {
465da48a6ebSKuninori Morimoto			dmas = <&audma0 0x35>, <&audma1 0x36>;
466da48a6ebSKuninori Morimoto			dma-names = "rx", "tx";
467da48a6ebSKuninori Morimoto		};
468da48a6ebSKuninori Morimoto
469da48a6ebSKuninori Morimoto		...
470da48a6ebSKuninori Morimoto
471da48a6ebSKuninori Morimoto		ssiu95: ssiu-49 {
472da48a6ebSKuninori Morimoto			dmas = <&audma0 0xA5>, <&audma1 0xA6>;
473da48a6ebSKuninori Morimoto			dma-names = "rx", "tx";
474da48a6ebSKuninori Morimoto		};
475da48a6ebSKuninori Morimoto		ssiu96: ssiu-50 {
476da48a6ebSKuninori Morimoto			dmas = <&audma0 0xA7>, <&audma1 0xA8>;
477da48a6ebSKuninori Morimoto			dma-names = "rx", "tx";
478da48a6ebSKuninori Morimoto		};
479da48a6ebSKuninori Morimoto		ssiu97: ssiu-51 {
480da48a6ebSKuninori Morimoto			dmas = <&audma0 0xA9>, <&audma1 0xAA>;
481da48a6ebSKuninori Morimoto			dma-names = "rx", "tx";
482da48a6ebSKuninori Morimoto		};
483da48a6ebSKuninori Morimoto	};
484da48a6ebSKuninori Morimoto
48590e8e50fSKuninori Morimoto	rcar_sound,ssi {
486a5702e1cSGeert Uytterhoeven		ssi0: ssi-0 {
48790e8e50fSKuninori Morimoto			interrupts = <0 370 IRQ_TYPE_LEVEL_HIGH>;
488da48a6ebSKuninori Morimoto			dmas = <&audma0 0x01>, <&audma1 0x02>;
489da48a6ebSKuninori Morimoto			dma-names = "rx", "tx";
49090e8e50fSKuninori Morimoto		};
491a5702e1cSGeert Uytterhoeven		ssi1: ssi-1 {
49290e8e50fSKuninori Morimoto			interrupts = <0 371 IRQ_TYPE_LEVEL_HIGH>;
493da48a6ebSKuninori Morimoto			dmas = <&audma0 0x03>, <&audma1 0x04>;
494da48a6ebSKuninori Morimoto			dma-names = "rx", "tx";
49590e8e50fSKuninori Morimoto		};
496da48a6ebSKuninori Morimoto
497da48a6ebSKuninori Morimoto		...
498da48a6ebSKuninori Morimoto
499a5702e1cSGeert Uytterhoeven		ssi8: ssi-8 {
50090e8e50fSKuninori Morimoto			interrupts = <0 378 IRQ_TYPE_LEVEL_HIGH>;
501da48a6ebSKuninori Morimoto			dmas = <&audma0 0x11>, <&audma1 0x12>;
502da48a6ebSKuninori Morimoto			dma-names = "rx", "tx";
50390e8e50fSKuninori Morimoto		};
504a5702e1cSGeert Uytterhoeven		ssi9: ssi-9 {
50590e8e50fSKuninori Morimoto			interrupts = <0 379 IRQ_TYPE_LEVEL_HIGH>;
506da48a6ebSKuninori Morimoto			dmas = <&audma0 0x13>, <&audma1 0x14>;
507da48a6ebSKuninori Morimoto			dma-names = "rx", "tx";
50890e8e50fSKuninori Morimoto		};
50990e8e50fSKuninori Morimoto	};
51090e8e50fSKuninori Morimoto
51190e8e50fSKuninori Morimoto	rcar_sound,dai {
51290e8e50fSKuninori Morimoto		dai0 {
51390e8e50fSKuninori Morimoto			playback = <&ssi5 &src5>;
51490e8e50fSKuninori Morimoto			capture  = <&ssi6>;
51590e8e50fSKuninori Morimoto		};
51690e8e50fSKuninori Morimoto		dai1 {
51790e8e50fSKuninori Morimoto			playback = <&ssi3>;
51890e8e50fSKuninori Morimoto		};
51990e8e50fSKuninori Morimoto		dai2 {
52090e8e50fSKuninori Morimoto			capture  = <&ssi4>;
52190e8e50fSKuninori Morimoto		};
52290e8e50fSKuninori Morimoto		dai3 {
52390e8e50fSKuninori Morimoto			playback = <&ssi7>;
52490e8e50fSKuninori Morimoto		};
52590e8e50fSKuninori Morimoto		dai4 {
52690e8e50fSKuninori Morimoto			capture  = <&ssi8>;
52790e8e50fSKuninori Morimoto		};
52890e8e50fSKuninori Morimoto	};
52990e8e50fSKuninori Morimoto};
530f3f17d32SKuninori Morimoto
531f1511a14SKuninori Morimoto=============================================
532f3f17d32SKuninori MorimotoExample: simple sound card
533f1511a14SKuninori Morimoto=============================================
534f3f17d32SKuninori Morimoto
535f3f17d32SKuninori Morimoto	rsnd_ak4643: sound {
536f3f17d32SKuninori Morimoto		compatible = "simple-audio-card";
537f3f17d32SKuninori Morimoto
538f3f17d32SKuninori Morimoto		simple-audio-card,format = "left_j";
539f3f17d32SKuninori Morimoto		simple-audio-card,bitclock-master = <&sndcodec>;
540f3f17d32SKuninori Morimoto		simple-audio-card,frame-master = <&sndcodec>;
541f3f17d32SKuninori Morimoto
542f3f17d32SKuninori Morimoto		sndcpu: simple-audio-card,cpu {
543f3f17d32SKuninori Morimoto			sound-dai = <&rcar_sound>;
544f3f17d32SKuninori Morimoto		};
545f3f17d32SKuninori Morimoto
546f3f17d32SKuninori Morimoto		sndcodec: simple-audio-card,codec {
547f3f17d32SKuninori Morimoto			sound-dai = <&ak4643>;
548f3f17d32SKuninori Morimoto			clocks = <&audio_clock>;
549f3f17d32SKuninori Morimoto		};
550f3f17d32SKuninori Morimoto	};
551f3f17d32SKuninori Morimoto
552f3f17d32SKuninori Morimoto&rcar_sound {
553f3f17d32SKuninori Morimoto	pinctrl-0 = <&sound_pins &sound_clk_pins>;
554f3f17d32SKuninori Morimoto	pinctrl-names = "default";
555f3f17d32SKuninori Morimoto
556f3f17d32SKuninori Morimoto	/* Single DAI */
557f3f17d32SKuninori Morimoto	#sound-dai-cells = <0>;
558f3f17d32SKuninori Morimoto
559f3f17d32SKuninori Morimoto
560f3f17d32SKuninori Morimoto	rcar_sound,dai {
561f3f17d32SKuninori Morimoto		dai0 {
562f3f17d32SKuninori Morimoto			playback = <&ssi0 &src2 &dvc0>;
563f3f17d32SKuninori Morimoto			capture  = <&ssi1 &src3 &dvc1>;
564f3f17d32SKuninori Morimoto		};
565f3f17d32SKuninori Morimoto	};
566f3f17d32SKuninori Morimoto};
567f3f17d32SKuninori Morimoto
568f3f17d32SKuninori Morimoto&ssi1 {
569f3f17d32SKuninori Morimoto	shared-pin;
570f3f17d32SKuninori Morimoto};
57144bf5361SKuninori Morimoto
572f1511a14SKuninori Morimoto=============================================
573bd7ff187SKuninori MorimotoExample: simple sound card for Asynchronous mode
574bd7ff187SKuninori Morimoto=============================================
575bd7ff187SKuninori Morimoto
576bd7ff187SKuninori Morimotosound {
577bd7ff187SKuninori Morimoto	compatible = "simple-scu-audio-card";
578bd7ff187SKuninori Morimoto	...
579bd7ff187SKuninori Morimoto	/*
580bd7ff187SKuninori Morimoto	 * SRC Asynchronous mode setting
581bd7ff187SKuninori Morimoto	 * Playback:
582bd7ff187SKuninori Morimoto	 * All input data will be converted to 48kHz
583bd7ff187SKuninori Morimoto	 * Capture:
584bd7ff187SKuninori Morimoto	 * Inputed 48kHz data will be converted to
585bd7ff187SKuninori Morimoto	 * system specified Hz
586bd7ff187SKuninori Morimoto	 */
587bd7ff187SKuninori Morimoto	simple-audio-card,convert-rate = <48000>;
588bd7ff187SKuninori Morimoto	...
589bd7ff187SKuninori Morimoto	simple-audio-card,cpu {
590bd7ff187SKuninori Morimoto		sound-dai = <&rcar_sound>;
591bd7ff187SKuninori Morimoto	};
592bd7ff187SKuninori Morimoto	simple-audio-card,codec {
593bd7ff187SKuninori Morimoto		...
594bd7ff187SKuninori Morimoto	};
595bd7ff187SKuninori Morimoto};
596bd7ff187SKuninori Morimoto
597bd7ff187SKuninori Morimoto=============================================
598bd7ff187SKuninori MorimotoExample: simple sound card for channel convert
599bd7ff187SKuninori Morimoto=============================================
600bd7ff187SKuninori Morimoto
601bd7ff187SKuninori Morimotosound {
602bd7ff187SKuninori Morimoto	compatible = "simple-scu-audio-card";
603bd7ff187SKuninori Morimoto	...
604bd7ff187SKuninori Morimoto	/*
605bd7ff187SKuninori Morimoto	 * CTU setting
606bd7ff187SKuninori Morimoto	 * All input data will be converted to 2ch
607bd7ff187SKuninori Morimoto	 * as output data
608bd7ff187SKuninori Morimoto	 */
609bd7ff187SKuninori Morimoto	simple-audio-card,convert-channels = <2>;
610bd7ff187SKuninori Morimoto	...
611bd7ff187SKuninori Morimoto	simple-audio-card,cpu {
612bd7ff187SKuninori Morimoto		sound-dai = <&rcar_sound>;
613bd7ff187SKuninori Morimoto	};
614bd7ff187SKuninori Morimoto	simple-audio-card,codec {
615bd7ff187SKuninori Morimoto		...
616bd7ff187SKuninori Morimoto	};
617bd7ff187SKuninori Morimoto};
618bd7ff187SKuninori Morimoto
619bd7ff187SKuninori Morimoto=============================================
620bd7ff187SKuninori MorimotoExample: simple sound card for MIXer
621bd7ff187SKuninori Morimoto=============================================
622bd7ff187SKuninori Morimoto
623bd7ff187SKuninori Morimotosound {
624bd7ff187SKuninori Morimoto	compatible = "simple-scu-audio-card";
625bd7ff187SKuninori Morimoto	...
626bd7ff187SKuninori Morimoto	simple-audio-card,cpu@0 {
627bd7ff187SKuninori Morimoto		sound-dai = <&rcar_sound 0>;
628bd7ff187SKuninori Morimoto	};
629bd7ff187SKuninori Morimoto	simple-audio-card,cpu@1 {
630bd7ff187SKuninori Morimoto		sound-dai = <&rcar_sound 1>;
631bd7ff187SKuninori Morimoto	};
632bd7ff187SKuninori Morimoto	simple-audio-card,codec {
633bd7ff187SKuninori Morimoto		...
634bd7ff187SKuninori Morimoto	};
635bd7ff187SKuninori Morimoto};
636bd7ff187SKuninori Morimoto
637bd7ff187SKuninori Morimoto&rcar_sound {
638bd7ff187SKuninori Morimoto	...
639bd7ff187SKuninori Morimoto	rcar_sound,dai {
640bd7ff187SKuninori Morimoto		dai0 {
641bd7ff187SKuninori Morimoto			playback = <&src1 &ctu02 &mix0 &dvc0 &ssi0>;
642bd7ff187SKuninori Morimoto		};
643bd7ff187SKuninori Morimoto		dai1 {
644bd7ff187SKuninori Morimoto			playback = <&src2 &ctu03 &mix0 &dvc0 &ssi0>;
645bd7ff187SKuninori Morimoto		};
646bd7ff187SKuninori Morimoto	};
647bd7ff187SKuninori Morimoto};
648bd7ff187SKuninori Morimoto
649bd7ff187SKuninori Morimoto=============================================
65044bf5361SKuninori MorimotoExample: simple sound card for TDM
651f1511a14SKuninori Morimoto=============================================
65244bf5361SKuninori Morimoto
65344bf5361SKuninori Morimotorsnd_tdm: sound {
65444bf5361SKuninori Morimoto	compatible = "simple-audio-card";
65544bf5361SKuninori Morimoto
65644bf5361SKuninori Morimoto	simple-audio-card,format = "left_j";
65744bf5361SKuninori Morimoto	simple-audio-card,bitclock-master = <&sndcodec>;
65844bf5361SKuninori Morimoto	simple-audio-card,frame-master = <&sndcodec>;
65944bf5361SKuninori Morimoto
66044bf5361SKuninori Morimoto	sndcpu: simple-audio-card,cpu {
66144bf5361SKuninori Morimoto		sound-dai = <&rcar_sound>;
66244bf5361SKuninori Morimoto		dai-tdm-slot-num = <6>;
66344bf5361SKuninori Morimoto	};
66444bf5361SKuninori Morimoto
66544bf5361SKuninori Morimoto	sndcodec: simple-audio-card,codec {
66644bf5361SKuninori Morimoto		sound-dai = <&xxx>;
66744bf5361SKuninori Morimoto	};
66844bf5361SKuninori Morimoto};
669b4c83b17SKuninori Morimoto
670f1511a14SKuninori Morimoto=============================================
671cf704dc8SKuninori MorimotoExample: simple sound card for TDM Split
672cf704dc8SKuninori Morimoto=============================================
673cf704dc8SKuninori Morimoto
674cf704dc8SKuninori Morimotosound_card: sound {
675cf704dc8SKuninori Morimoto	compatible = "audio-graph-scu-card";
676cf704dc8SKuninori Morimoto	prefix = "xxxx";
677cf704dc8SKuninori Morimoto	routing = "xxxx Playback", "DAI0 Playback",
678cf704dc8SKuninori Morimoto		  "xxxx Playback", "DAI1 Playback",
679cf704dc8SKuninori Morimoto		  "xxxx Playback", "DAI2 Playback",
680cf704dc8SKuninori Morimoto		  "xxxx Playback", "DAI3 Playback";
681cf704dc8SKuninori Morimoto	convert-channels = <8>; /* TDM Split */
682cf704dc8SKuninori Morimoto
683cf704dc8SKuninori Morimoto	dais = <&rsnd_port0     /* playback ch1/ch2 */
684cf704dc8SKuninori Morimoto		&rsnd_port1     /* playback ch3/ch4 */
685cf704dc8SKuninori Morimoto		&rsnd_port2     /* playback ch5/ch6 */
686cf704dc8SKuninori Morimoto		&rsnd_port3     /* playback ch7/ch8 */
687cf704dc8SKuninori Morimoto		>;
688cf704dc8SKuninori Morimoto};
689cf704dc8SKuninori Morimoto
690cf704dc8SKuninori Morimotoaudio-codec {
691cf704dc8SKuninori Morimoto	...
692cf704dc8SKuninori Morimoto	port {
693cf704dc8SKuninori Morimoto		codec_0: endpoint@1 {
694cf704dc8SKuninori Morimoto			remote-endpoint = <&rsnd_ep0>;
695cf704dc8SKuninori Morimoto		};
696cf704dc8SKuninori Morimoto		codec_1: endpoint@2 {
697cf704dc8SKuninori Morimoto			remote-endpoint = <&rsnd_ep1>;
698cf704dc8SKuninori Morimoto		};
699cf704dc8SKuninori Morimoto		codec_2: endpoint@3 {
700cf704dc8SKuninori Morimoto			remote-endpoint = <&rsnd_ep2>;
701cf704dc8SKuninori Morimoto		};
702cf704dc8SKuninori Morimoto		codec_3: endpoint@4 {
703cf704dc8SKuninori Morimoto			remote-endpoint = <&rsnd_ep3>;
704cf704dc8SKuninori Morimoto		};
705cf704dc8SKuninori Morimoto	};
706cf704dc8SKuninori Morimoto};
707cf704dc8SKuninori Morimoto
708cf704dc8SKuninori Morimoto&rcar_sound {
709cf704dc8SKuninori Morimoto	...
710cf704dc8SKuninori Morimoto	ports {
711cf704dc8SKuninori Morimoto		rsnd_port0: port@0 {
712cf704dc8SKuninori Morimoto			rsnd_ep0: endpoint {
713cf704dc8SKuninori Morimoto				remote-endpoint = <&codec_0>;
714cf704dc8SKuninori Morimoto				...
715cf704dc8SKuninori Morimoto				playback = <&ssiu30 &ssi3>;
716cf704dc8SKuninori Morimoto			};
717cf704dc8SKuninori Morimoto		};
718cf704dc8SKuninori Morimoto		rsnd_port1: port@1 {
719cf704dc8SKuninori Morimoto			rsnd_ep1: endpoint {
720cf704dc8SKuninori Morimoto				remote-endpoint = <&codec_1>;
721cf704dc8SKuninori Morimoto				...
722cf704dc8SKuninori Morimoto				playback = <&ssiu31 &ssi3>;
723cf704dc8SKuninori Morimoto			};
724cf704dc8SKuninori Morimoto		};
725cf704dc8SKuninori Morimoto		rsnd_port2: port@2 {
726cf704dc8SKuninori Morimoto			rsnd_ep2: endpoint {
727cf704dc8SKuninori Morimoto				remote-endpoint = <&codec_2>;
728cf704dc8SKuninori Morimoto				...
729cf704dc8SKuninori Morimoto				playback = <&ssiu32 &ssi3>;
730cf704dc8SKuninori Morimoto			};
731cf704dc8SKuninori Morimoto		};
732cf704dc8SKuninori Morimoto		rsnd_port3: port@3 {
733cf704dc8SKuninori Morimoto			rsnd_ep3: endpoint {
734cf704dc8SKuninori Morimoto				remote-endpoint = <&codec_3>;
735cf704dc8SKuninori Morimoto				...
736cf704dc8SKuninori Morimoto				playback = <&ssiu33 &ssi3>;
737cf704dc8SKuninori Morimoto			};
738cf704dc8SKuninori Morimoto		};
739cf704dc8SKuninori Morimoto	};
740cf704dc8SKuninori Morimoto};
741cf704dc8SKuninori Morimoto
742cf704dc8SKuninori Morimoto=============================================
743b4c83b17SKuninori MorimotoExample: simple sound card for Multi channel
744f1511a14SKuninori Morimoto=============================================
745b4c83b17SKuninori Morimoto
746b4c83b17SKuninori Morimoto&rcar_sound {
747b4c83b17SKuninori Morimoto	pinctrl-0 = <&sound_pins &sound_clk_pins>;
748b4c83b17SKuninori Morimoto	pinctrl-names = "default";
749b4c83b17SKuninori Morimoto
750b4c83b17SKuninori Morimoto	/* Single DAI */
751b4c83b17SKuninori Morimoto	#sound-dai-cells = <0>;
752b4c83b17SKuninori Morimoto
753b4c83b17SKuninori Morimoto
754b4c83b17SKuninori Morimoto	rcar_sound,dai {
755b4c83b17SKuninori Morimoto		dai0 {
756b4c83b17SKuninori Morimoto			playback = <&ssi0 &ssi1 &ssi2 &src0 &dvc0>;
757b4c83b17SKuninori Morimoto		};
758b4c83b17SKuninori Morimoto	};
759b4c83b17SKuninori Morimoto};
760