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
191f1511a14SKuninori Morimoto=============================================
192f1511a14SKuninori Morimoto* SSI (Serial Sound Interface)
193f1511a14SKuninori Morimoto=============================================
194f1511a14SKuninori Morimoto
195f1511a14SKuninori Morimoto**  PIO mode
196f1511a14SKuninori Morimoto
197f1511a14SKuninori MorimotoYou can use PIO mode which is for connection check by using.
198f1511a14SKuninori MorimotoNote: The system will drop non-SSI modules in PIO mode
199f1511a14SKuninori Morimotoeven though if DT is selecting other modules.
200f1511a14SKuninori Morimoto
201f1511a14SKuninori Morimoto	&ssi0 {
202f1511a14SKuninori Morimoto		pio-transfer
203f1511a14SKuninori Morimoto	};
204f1511a14SKuninori Morimoto
205f1511a14SKuninori Morimoto** DMA mode without SSIU
206f1511a14SKuninori Morimoto
207f1511a14SKuninori MorimotoYou can use DMA without SSIU.
208f1511a14SKuninori MorimotoNote: under/over run, or noise are likely to occur
209f1511a14SKuninori Morimoto
210f1511a14SKuninori Morimoto	&ssi0 {
211f1511a14SKuninori Morimoto		no-busif;
212f1511a14SKuninori Morimoto	};
213f1511a14SKuninori Morimoto
214f1511a14SKuninori Morimoto** PIN sharing
215f1511a14SKuninori Morimoto
216f1511a14SKuninori MorimotoEach SSI can share WS pin. It is based on platform.
217f1511a14SKuninori MorimotoThis is example if SSI1 want to share WS pin with SSI0
218f1511a14SKuninori Morimoto
219f1511a14SKuninori Morimoto	&ssi1 {
220f1511a14SKuninori Morimoto		shared-pin;
221f1511a14SKuninori Morimoto	};
222f1511a14SKuninori Morimoto
223f1511a14SKuninori Morimoto** Multi-SSI
224f1511a14SKuninori Morimoto
225f1511a14SKuninori MorimotoYou can use Multi-SSI.
226f1511a14SKuninori MorimotoThis is example of SSI0/SSI1/SSI2 (= for 6ch)
227f1511a14SKuninori Morimoto
228bd7ff187SKuninori Morimotosee "Example: simple sound card for Multi channel"
229f1511a14SKuninori Morimoto
230f1511a14SKuninori Morimoto** TDM-SSI
231f1511a14SKuninori Morimoto
232f1511a14SKuninori MorimotoYou can use TDM with SSI.
233f1511a14SKuninori MorimotoThis is example of TDM 6ch.
234f1511a14SKuninori MorimotoDriver can automatically switches TDM <-> stereo mode in this case.
235f1511a14SKuninori Morimoto
236bd7ff187SKuninori Morimotosee "Example: simple sound card for TDM"
237f1511a14SKuninori Morimoto
238f1511a14SKuninori Morimoto=============================================
23990e8e50fSKuninori MorimotoRequired properties:
240f1511a14SKuninori Morimoto=============================================
241f1511a14SKuninori Morimoto
24256ba98acSGeert Uytterhoeven- compatible			: "renesas,rcar_sound-<soctype>", fallbacks
24356ba98acSGeert Uytterhoeven				  "renesas,rcar_sound-gen1" if generation1, and
244b0a858a4SBiju Das				  "renesas,rcar_sound-gen2" if generation2 (or RZ/G1)
2456fbf9d8eSFabrizio Castro				  "renesas,rcar_sound-gen3" if generation3 (or RZ/G2)
24656ba98acSGeert Uytterhoeven				  Examples with soctypes are:
247b0a858a4SBiju Das				    - "renesas,rcar_sound-r8a7743" (RZ/G1M)
248765f50d4SBiju Das				    - "renesas,rcar_sound-r8a7744" (RZ/G1N)
249b0a858a4SBiju Das				    - "renesas,rcar_sound-r8a7745" (RZ/G1E)
2506fbf9d8eSFabrizio Castro				    - "renesas,rcar_sound-r8a774a1" (RZ/G2M)
2517667f716SGeert Uytterhoeven				    - "renesas,rcar_sound-r8a7778" (R-Car M1A)
2524eb404d0SSimon Horman				    - "renesas,rcar_sound-r8a7779" (R-Car H1)
25356ba98acSGeert Uytterhoeven				    - "renesas,rcar_sound-r8a7790" (R-Car H2)
25456ba98acSGeert Uytterhoeven				    - "renesas,rcar_sound-r8a7791" (R-Car M2-W)
2554eb404d0SSimon Horman				    - "renesas,rcar_sound-r8a7793" (R-Car M2-N)
2564eb404d0SSimon Horman				    - "renesas,rcar_sound-r8a7794" (R-Car E2)
257ac37a45bSKuninori Morimoto				    - "renesas,rcar_sound-r8a7795" (R-Car H3)
258da263026SGeert Uytterhoeven				    - "renesas,rcar_sound-r8a7796" (R-Car M3-W)
259150a6dc8SHiroyuki Yokoyama				    - "renesas,rcar_sound-r8a77965" (R-Car M3-N)
260e058a403SHiroyuki Yokoyama				    - "renesas,rcar_sound-r8a77990" (R-Car E3)
26190e8e50fSKuninori Morimoto- reg				: Should contain the register physical address.
26290e8e50fSKuninori Morimoto				  required register is
26390e8e50fSKuninori Morimoto				   SRU/ADG/SSI      if generation1
26490e8e50fSKuninori Morimoto				   SRU/ADG/SSIU/SSI if generation2
2658bab0dd5SKuninori Morimoto- rcar_sound,ssi		: Should contain SSI feature.
2668bab0dd5SKuninori Morimoto				  The number of SSI subnode should be same as HW.
2678bab0dd5SKuninori Morimoto				  see below for detail.
268da48a6ebSKuninori Morimoto- rcar_sound,ssiu		: Should contain SSIU feature.
269da48a6ebSKuninori Morimoto				  The number of SSIU subnode should be same as HW.
270da48a6ebSKuninori Morimoto				  see below for detail.
2718bab0dd5SKuninori Morimoto- rcar_sound,src		: Should contain SRC feature.
2728bab0dd5SKuninori Morimoto				  The number of SRC subnode should be same as HW.
2738bab0dd5SKuninori Morimoto				  see below for detail.
2749269e3c3SKuninori Morimoto- rcar_sound,ctu		: Should contain CTU feature.
2759269e3c3SKuninori Morimoto				  The number of CTU subnode should be same as HW.
2769269e3c3SKuninori Morimoto				  see below for detail.
27770fb1052SKuninori Morimoto- rcar_sound,mix		: Should contain MIX feature.
27870fb1052SKuninori Morimoto				  The number of MIX subnode should be same as HW.
27970fb1052SKuninori Morimoto				  see below for detail.
28034cb6123SKuninori Morimoto- rcar_sound,dvc		: Should contain DVC feature.
28134cb6123SKuninori Morimoto				  The number of DVC subnode should be same as HW.
28234cb6123SKuninori Morimoto				  see below for detail.
2838bab0dd5SKuninori Morimoto- rcar_sound,dai		: DAI contents.
2848bab0dd5SKuninori Morimoto				  The number of DAI subnode should be same as HW.
2858bab0dd5SKuninori Morimoto				  see below for detail.
286e3d2cec8SKuninori Morimoto- #sound-dai-cells		: it must be 0 if your system is using single DAI
287e3d2cec8SKuninori Morimoto				  it must be 1 if your system is using multi  DAI
2885b3889f8SKuninori Morimoto- clocks			: References to SSI/SRC/MIX/CTU/DVC/AUDIO_CLK clocks.
2895b3889f8SKuninori Morimoto- clock-names			: List of necessary clock names.
2905b3889f8SKuninori Morimoto				  "ssi-all", "ssi.X", "src.X", "mix.X", "ctu.X",
2915b3889f8SKuninori Morimoto				  "dvc.X", "clk_a", "clk_b", "clk_c", "clk_i"
292209c0907SKuninori Morimoto
293209c0907SKuninori MorimotoOptional properties:
2942a46db4aSKuninori Morimoto- #clock-cells			: it must be 0 if your system has audio_clkout
2952a46db4aSKuninori Morimoto				  it must be 1 if your system has audio_clkout0/1/2/3
2962a46db4aSKuninori Morimoto- clock-frequency		: for all audio_clkout0/1/2/3
2977dc20319SKuninori Morimoto- clkout-lr-asynchronous	: boolean property. it indicates that audio_clkoutn
2987dc20319SKuninori Morimoto				  is asynchronizes with lr-clock.
2995f440c48SGeert Uytterhoeven- resets			: References to SSI resets.
3005f440c48SGeert Uytterhoeven- reset-names			: List of valid reset names.
3015f440c48SGeert Uytterhoeven				  "ssi-all", "ssi.X"
30290e8e50fSKuninori Morimoto
30390e8e50fSKuninori MorimotoSSI subnode properties:
30490e8e50fSKuninori Morimoto- interrupts			: Should contain SSI interrupt for PIO transfer
30590e8e50fSKuninori Morimoto- shared-pin			: if shared clock pin
306199e7688SKuninori Morimoto- pio-transfer			: use PIO transfer mode
307d9288d0bSKuninori Morimoto- no-busif			: BUSIF is not ussed when [mem -> SSI] via DMA case
308e80a2fb1SKuninori Morimoto- dma				: Should contain Audio DMAC entry
309e80a2fb1SKuninori Morimoto- dma-names			: SSI  case "rx"  (=playback), "tx"  (=capture)
310e80a2fb1SKuninori Morimoto				  SSIU case "rxu" (=playback), "txu" (=capture)
31190e8e50fSKuninori Morimoto
3128bab0dd5SKuninori MorimotoSRC subnode properties:
313e80a2fb1SKuninori Morimoto- dma				: Should contain Audio DMAC entry
314e80a2fb1SKuninori Morimoto- dma-names			: "rx" (=playback), "tx" (=capture)
315e80a2fb1SKuninori Morimoto
316e80a2fb1SKuninori MorimotoDVC subnode properties:
317e80a2fb1SKuninori Morimoto- dma				: Should contain Audio DMAC entry
318e80a2fb1SKuninori Morimoto- dma-names			: "tx" (=playback/capture)
3198bab0dd5SKuninori Morimoto
32090e8e50fSKuninori MorimotoDAI subnode properties:
32190e8e50fSKuninori Morimoto- playback			: list of playback modules
32290e8e50fSKuninori Morimoto- capture			: list of capture  modules
32390e8e50fSKuninori Morimoto
324f1511a14SKuninori Morimoto
325f1511a14SKuninori Morimoto=============================================
32690e8e50fSKuninori MorimotoExample:
327f1511a14SKuninori Morimoto=============================================
32890e8e50fSKuninori Morimoto
329596f74ecSGeert Uytterhoevenrcar_sound: sound@ec500000 {
33090e8e50fSKuninori Morimoto	#sound-dai-cells = <1>;
33156ba98acSGeert Uytterhoeven	compatible = "renesas,rcar_sound-r8a7791", "renesas,rcar_sound-gen2";
33290e8e50fSKuninori Morimoto	reg =	<0 0xec500000 0 0x1000>, /* SCU */
33390e8e50fSKuninori Morimoto		<0 0xec5a0000 0 0x100>,  /* ADG */
33490e8e50fSKuninori Morimoto		<0 0xec540000 0 0x1000>, /* SSIU */
335d3b1c0baSKuninori Morimoto		<0 0xec541000 0 0x1280>, /* SSI */
336d3b1c0baSKuninori Morimoto		<0 0xec740000 0 0x200>;  /* Audio DMAC peri peri*/
337d3b1c0baSKuninori Morimoto	reg-names = "scu", "adg", "ssiu", "ssi", "audmapp";
33890e8e50fSKuninori Morimoto
339bb02714fSKuninori Morimoto	clocks = <&mstp10_clks R8A7790_CLK_SSI_ALL>,
340bb02714fSKuninori Morimoto		<&mstp10_clks R8A7790_CLK_SSI9>, <&mstp10_clks R8A7790_CLK_SSI8>,
341bb02714fSKuninori Morimoto		<&mstp10_clks R8A7790_CLK_SSI7>, <&mstp10_clks R8A7790_CLK_SSI6>,
342bb02714fSKuninori Morimoto		<&mstp10_clks R8A7790_CLK_SSI5>, <&mstp10_clks R8A7790_CLK_SSI4>,
343bb02714fSKuninori Morimoto		<&mstp10_clks R8A7790_CLK_SSI3>, <&mstp10_clks R8A7790_CLK_SSI2>,
344bb02714fSKuninori Morimoto		<&mstp10_clks R8A7790_CLK_SSI1>, <&mstp10_clks R8A7790_CLK_SSI0>,
345bb02714fSKuninori Morimoto		<&mstp10_clks R8A7790_CLK_SCU_SRC9>, <&mstp10_clks R8A7790_CLK_SCU_SRC8>,
346bb02714fSKuninori Morimoto		<&mstp10_clks R8A7790_CLK_SCU_SRC7>, <&mstp10_clks R8A7790_CLK_SCU_SRC6>,
347bb02714fSKuninori Morimoto		<&mstp10_clks R8A7790_CLK_SCU_SRC5>, <&mstp10_clks R8A7790_CLK_SCU_SRC4>,
348bb02714fSKuninori Morimoto		<&mstp10_clks R8A7790_CLK_SCU_SRC3>, <&mstp10_clks R8A7790_CLK_SCU_SRC2>,
349bb02714fSKuninori Morimoto		<&mstp10_clks R8A7790_CLK_SCU_SRC1>, <&mstp10_clks R8A7790_CLK_SCU_SRC0>,
350bb02714fSKuninori Morimoto		<&mstp10_clks R8A7790_CLK_SCU_DVC0>, <&mstp10_clks R8A7790_CLK_SCU_DVC1>,
351bb02714fSKuninori Morimoto		<&audio_clk_a>, <&audio_clk_b>, <&audio_clk_c>, <&m2_clk>;
352bb02714fSKuninori Morimoto	clock-names = "ssi-all",
353bb02714fSKuninori Morimoto			"ssi.9", "ssi.8", "ssi.7", "ssi.6", "ssi.5",
354bb02714fSKuninori Morimoto			"ssi.4", "ssi.3", "ssi.2", "ssi.1", "ssi.0",
355bb02714fSKuninori Morimoto			"src.9", "src.8", "src.7", "src.6", "src.5",
356bb02714fSKuninori Morimoto			"src.4", "src.3", "src.2", "src.1", "src.0",
357bb02714fSKuninori Morimoto			"dvc.0", "dvc.1",
358bb02714fSKuninori Morimoto			"clk_a", "clk_b", "clk_c", "clk_i";
359bb02714fSKuninori Morimoto
36034cb6123SKuninori Morimoto	rcar_sound,dvc {
361a5702e1cSGeert Uytterhoeven		dvc0: dvc-0 {
362e80a2fb1SKuninori Morimoto			dmas = <&audma0 0xbc>;
363e80a2fb1SKuninori Morimoto			dma-names = "tx";
364e80a2fb1SKuninori Morimoto		};
365a5702e1cSGeert Uytterhoeven		dvc1: dvc-1 {
366e80a2fb1SKuninori Morimoto			dmas = <&audma0 0xbe>;
367e80a2fb1SKuninori Morimoto			dma-names = "tx";
368e80a2fb1SKuninori Morimoto		};
36934cb6123SKuninori Morimoto	};
37034cb6123SKuninori Morimoto
37170fb1052SKuninori Morimoto	rcar_sound,mix {
372a5702e1cSGeert Uytterhoeven		mix0: mix-0 { };
373a5702e1cSGeert Uytterhoeven		mix1: mix-1 { };
37470fb1052SKuninori Morimoto	};
37570fb1052SKuninori Morimoto
3769269e3c3SKuninori Morimoto	rcar_sound,ctu {
377a5702e1cSGeert Uytterhoeven		ctu00: ctu-0 { };
378a5702e1cSGeert Uytterhoeven		ctu01: ctu-1 { };
379a5702e1cSGeert Uytterhoeven		ctu02: ctu-2 { };
380a5702e1cSGeert Uytterhoeven		ctu03: ctu-3 { };
381a5702e1cSGeert Uytterhoeven		ctu10: ctu-4 { };
382a5702e1cSGeert Uytterhoeven		ctu11: ctu-5 { };
383a5702e1cSGeert Uytterhoeven		ctu12: ctu-6 { };
384a5702e1cSGeert Uytterhoeven		ctu13: ctu-7 { };
3859269e3c3SKuninori Morimoto	};
3869269e3c3SKuninori Morimoto
38790e8e50fSKuninori Morimoto	rcar_sound,src {
388a5702e1cSGeert Uytterhoeven		src0: src-0 {
3895cf4f686SKuninori Morimoto			interrupts = <0 352 IRQ_TYPE_LEVEL_HIGH>;
390e80a2fb1SKuninori Morimoto			dmas = <&audma0 0x85>, <&audma1 0x9a>;
391e80a2fb1SKuninori Morimoto			dma-names = "rx", "tx";
3925cf4f686SKuninori Morimoto		};
393a5702e1cSGeert Uytterhoeven		src1: src-1 {
3945cf4f686SKuninori Morimoto			interrupts = <0 353 IRQ_TYPE_LEVEL_HIGH>;
395e80a2fb1SKuninori Morimoto			dmas = <&audma0 0x87>, <&audma1 0x9c>;
396e80a2fb1SKuninori Morimoto			dma-names = "rx", "tx";
3975cf4f686SKuninori Morimoto		};
398a5702e1cSGeert Uytterhoeven		src2: src-2 {
3995cf4f686SKuninori Morimoto			interrupts = <0 354 IRQ_TYPE_LEVEL_HIGH>;
400e80a2fb1SKuninori Morimoto			dmas = <&audma0 0x89>, <&audma1 0x9e>;
401e80a2fb1SKuninori Morimoto			dma-names = "rx", "tx";
4025cf4f686SKuninori Morimoto		};
403a5702e1cSGeert Uytterhoeven		src3: src-3 {
4045cf4f686SKuninori Morimoto			interrupts = <0 355 IRQ_TYPE_LEVEL_HIGH>;
405e80a2fb1SKuninori Morimoto			dmas = <&audma0 0x8b>, <&audma1 0xa0>;
406e80a2fb1SKuninori Morimoto			dma-names = "rx", "tx";
4075cf4f686SKuninori Morimoto		};
408a5702e1cSGeert Uytterhoeven		src4: src-4 {
4095cf4f686SKuninori Morimoto			interrupts = <0 356 IRQ_TYPE_LEVEL_HIGH>;
410e80a2fb1SKuninori Morimoto			dmas = <&audma0 0x8d>, <&audma1 0xb0>;
411e80a2fb1SKuninori Morimoto			dma-names = "rx", "tx";
4125cf4f686SKuninori Morimoto		};
413a5702e1cSGeert Uytterhoeven		src5: src-5 {
4145cf4f686SKuninori Morimoto			interrupts = <0 357 IRQ_TYPE_LEVEL_HIGH>;
415e80a2fb1SKuninori Morimoto			dmas = <&audma0 0x8f>, <&audma1 0xb2>;
416e80a2fb1SKuninori Morimoto			dma-names = "rx", "tx";
4175cf4f686SKuninori Morimoto		};
418a5702e1cSGeert Uytterhoeven		src6: src-6 {
4195cf4f686SKuninori Morimoto			interrupts = <0 358 IRQ_TYPE_LEVEL_HIGH>;
420e80a2fb1SKuninori Morimoto			dmas = <&audma0 0x91>, <&audma1 0xb4>;
421e80a2fb1SKuninori Morimoto			dma-names = "rx", "tx";
4225cf4f686SKuninori Morimoto		};
423a5702e1cSGeert Uytterhoeven		src7: src-7 {
4245cf4f686SKuninori Morimoto			interrupts = <0 359 IRQ_TYPE_LEVEL_HIGH>;
425e80a2fb1SKuninori Morimoto			dmas = <&audma0 0x93>, <&audma1 0xb6>;
426e80a2fb1SKuninori Morimoto			dma-names = "rx", "tx";
4275cf4f686SKuninori Morimoto		};
428a5702e1cSGeert Uytterhoeven		src8: src-8 {
4295cf4f686SKuninori Morimoto			interrupts = <0 360 IRQ_TYPE_LEVEL_HIGH>;
430e80a2fb1SKuninori Morimoto			dmas = <&audma0 0x95>, <&audma1 0xb8>;
431e80a2fb1SKuninori Morimoto			dma-names = "rx", "tx";
4325cf4f686SKuninori Morimoto		};
433a5702e1cSGeert Uytterhoeven		src9: src-9 {
4345cf4f686SKuninori Morimoto			interrupts = <0 361 IRQ_TYPE_LEVEL_HIGH>;
435e80a2fb1SKuninori Morimoto			dmas = <&audma0 0x97>, <&audma1 0xba>;
436e80a2fb1SKuninori Morimoto			dma-names = "rx", "tx";
4375cf4f686SKuninori Morimoto		};
43890e8e50fSKuninori Morimoto	};
43990e8e50fSKuninori Morimoto
440da48a6ebSKuninori Morimoto	rcar_sound,ssiu {
441da48a6ebSKuninori Morimoto		ssiu00: ssiu-0 {
442da48a6ebSKuninori Morimoto			dmas = <&audma0 0x15>, <&audma1 0x16>;
443da48a6ebSKuninori Morimoto			dma-names = "rx", "tx";
444da48a6ebSKuninori Morimoto		};
445da48a6ebSKuninori Morimoto		ssiu01: ssiu-1 {
446da48a6ebSKuninori Morimoto			dmas = <&audma0 0x35>, <&audma1 0x36>;
447da48a6ebSKuninori Morimoto			dma-names = "rx", "tx";
448da48a6ebSKuninori Morimoto		};
449da48a6ebSKuninori Morimoto
450da48a6ebSKuninori Morimoto		...
451da48a6ebSKuninori Morimoto
452da48a6ebSKuninori Morimoto		ssiu95: ssiu-49 {
453da48a6ebSKuninori Morimoto			dmas = <&audma0 0xA5>, <&audma1 0xA6>;
454da48a6ebSKuninori Morimoto			dma-names = "rx", "tx";
455da48a6ebSKuninori Morimoto		};
456da48a6ebSKuninori Morimoto		ssiu96: ssiu-50 {
457da48a6ebSKuninori Morimoto			dmas = <&audma0 0xA7>, <&audma1 0xA8>;
458da48a6ebSKuninori Morimoto			dma-names = "rx", "tx";
459da48a6ebSKuninori Morimoto		};
460da48a6ebSKuninori Morimoto		ssiu97: ssiu-51 {
461da48a6ebSKuninori Morimoto			dmas = <&audma0 0xA9>, <&audma1 0xAA>;
462da48a6ebSKuninori Morimoto			dma-names = "rx", "tx";
463da48a6ebSKuninori Morimoto		};
464da48a6ebSKuninori Morimoto	};
465da48a6ebSKuninori Morimoto
46690e8e50fSKuninori Morimoto	rcar_sound,ssi {
467a5702e1cSGeert Uytterhoeven		ssi0: ssi-0 {
46890e8e50fSKuninori Morimoto			interrupts = <0 370 IRQ_TYPE_LEVEL_HIGH>;
469da48a6ebSKuninori Morimoto			dmas = <&audma0 0x01>, <&audma1 0x02>;
470da48a6ebSKuninori Morimoto			dma-names = "rx", "tx";
47190e8e50fSKuninori Morimoto		};
472a5702e1cSGeert Uytterhoeven		ssi1: ssi-1 {
47390e8e50fSKuninori Morimoto			interrupts = <0 371 IRQ_TYPE_LEVEL_HIGH>;
474da48a6ebSKuninori Morimoto			dmas = <&audma0 0x03>, <&audma1 0x04>;
475da48a6ebSKuninori Morimoto			dma-names = "rx", "tx";
47690e8e50fSKuninori Morimoto		};
477da48a6ebSKuninori Morimoto
478da48a6ebSKuninori Morimoto		...
479da48a6ebSKuninori Morimoto
480a5702e1cSGeert Uytterhoeven		ssi8: ssi-8 {
48190e8e50fSKuninori Morimoto			interrupts = <0 378 IRQ_TYPE_LEVEL_HIGH>;
482da48a6ebSKuninori Morimoto			dmas = <&audma0 0x11>, <&audma1 0x12>;
483da48a6ebSKuninori Morimoto			dma-names = "rx", "tx";
48490e8e50fSKuninori Morimoto		};
485a5702e1cSGeert Uytterhoeven		ssi9: ssi-9 {
48690e8e50fSKuninori Morimoto			interrupts = <0 379 IRQ_TYPE_LEVEL_HIGH>;
487da48a6ebSKuninori Morimoto			dmas = <&audma0 0x13>, <&audma1 0x14>;
488da48a6ebSKuninori Morimoto			dma-names = "rx", "tx";
48990e8e50fSKuninori Morimoto		};
49090e8e50fSKuninori Morimoto	};
49190e8e50fSKuninori Morimoto
49290e8e50fSKuninori Morimoto	rcar_sound,dai {
49390e8e50fSKuninori Morimoto		dai0 {
49490e8e50fSKuninori Morimoto			playback = <&ssi5 &src5>;
49590e8e50fSKuninori Morimoto			capture  = <&ssi6>;
49690e8e50fSKuninori Morimoto		};
49790e8e50fSKuninori Morimoto		dai1 {
49890e8e50fSKuninori Morimoto			playback = <&ssi3>;
49990e8e50fSKuninori Morimoto		};
50090e8e50fSKuninori Morimoto		dai2 {
50190e8e50fSKuninori Morimoto			capture  = <&ssi4>;
50290e8e50fSKuninori Morimoto		};
50390e8e50fSKuninori Morimoto		dai3 {
50490e8e50fSKuninori Morimoto			playback = <&ssi7>;
50590e8e50fSKuninori Morimoto		};
50690e8e50fSKuninori Morimoto		dai4 {
50790e8e50fSKuninori Morimoto			capture  = <&ssi8>;
50890e8e50fSKuninori Morimoto		};
50990e8e50fSKuninori Morimoto	};
51090e8e50fSKuninori Morimoto};
511f3f17d32SKuninori Morimoto
512f1511a14SKuninori Morimoto=============================================
513f3f17d32SKuninori MorimotoExample: simple sound card
514f1511a14SKuninori Morimoto=============================================
515f3f17d32SKuninori Morimoto
516f3f17d32SKuninori Morimoto	rsnd_ak4643: sound {
517f3f17d32SKuninori Morimoto		compatible = "simple-audio-card";
518f3f17d32SKuninori Morimoto
519f3f17d32SKuninori Morimoto		simple-audio-card,format = "left_j";
520f3f17d32SKuninori Morimoto		simple-audio-card,bitclock-master = <&sndcodec>;
521f3f17d32SKuninori Morimoto		simple-audio-card,frame-master = <&sndcodec>;
522f3f17d32SKuninori Morimoto
523f3f17d32SKuninori Morimoto		sndcpu: simple-audio-card,cpu {
524f3f17d32SKuninori Morimoto			sound-dai = <&rcar_sound>;
525f3f17d32SKuninori Morimoto		};
526f3f17d32SKuninori Morimoto
527f3f17d32SKuninori Morimoto		sndcodec: simple-audio-card,codec {
528f3f17d32SKuninori Morimoto			sound-dai = <&ak4643>;
529f3f17d32SKuninori Morimoto			clocks = <&audio_clock>;
530f3f17d32SKuninori Morimoto		};
531f3f17d32SKuninori Morimoto	};
532f3f17d32SKuninori Morimoto
533f3f17d32SKuninori Morimoto&rcar_sound {
534f3f17d32SKuninori Morimoto	pinctrl-0 = <&sound_pins &sound_clk_pins>;
535f3f17d32SKuninori Morimoto	pinctrl-names = "default";
536f3f17d32SKuninori Morimoto
537f3f17d32SKuninori Morimoto	/* Single DAI */
538f3f17d32SKuninori Morimoto	#sound-dai-cells = <0>;
539f3f17d32SKuninori Morimoto
540f3f17d32SKuninori Morimoto
541f3f17d32SKuninori Morimoto	rcar_sound,dai {
542f3f17d32SKuninori Morimoto		dai0 {
543f3f17d32SKuninori Morimoto			playback = <&ssi0 &src2 &dvc0>;
544f3f17d32SKuninori Morimoto			capture  = <&ssi1 &src3 &dvc1>;
545f3f17d32SKuninori Morimoto		};
546f3f17d32SKuninori Morimoto	};
547f3f17d32SKuninori Morimoto};
548f3f17d32SKuninori Morimoto
549f3f17d32SKuninori Morimoto&ssi1 {
550f3f17d32SKuninori Morimoto	shared-pin;
551f3f17d32SKuninori Morimoto};
55244bf5361SKuninori Morimoto
553f1511a14SKuninori Morimoto=============================================
554bd7ff187SKuninori MorimotoExample: simple sound card for Asynchronous mode
555bd7ff187SKuninori Morimoto=============================================
556bd7ff187SKuninori Morimoto
557bd7ff187SKuninori Morimotosound {
558bd7ff187SKuninori Morimoto	compatible = "simple-scu-audio-card";
559bd7ff187SKuninori Morimoto	...
560bd7ff187SKuninori Morimoto	/*
561bd7ff187SKuninori Morimoto	 * SRC Asynchronous mode setting
562bd7ff187SKuninori Morimoto	 * Playback:
563bd7ff187SKuninori Morimoto	 * All input data will be converted to 48kHz
564bd7ff187SKuninori Morimoto	 * Capture:
565bd7ff187SKuninori Morimoto	 * Inputed 48kHz data will be converted to
566bd7ff187SKuninori Morimoto	 * system specified Hz
567bd7ff187SKuninori Morimoto	 */
568bd7ff187SKuninori Morimoto	simple-audio-card,convert-rate = <48000>;
569bd7ff187SKuninori Morimoto	...
570bd7ff187SKuninori Morimoto	simple-audio-card,cpu {
571bd7ff187SKuninori Morimoto		sound-dai = <&rcar_sound>;
572bd7ff187SKuninori Morimoto	};
573bd7ff187SKuninori Morimoto	simple-audio-card,codec {
574bd7ff187SKuninori Morimoto		...
575bd7ff187SKuninori Morimoto	};
576bd7ff187SKuninori Morimoto};
577bd7ff187SKuninori Morimoto
578bd7ff187SKuninori Morimoto=============================================
579bd7ff187SKuninori MorimotoExample: simple sound card for channel convert
580bd7ff187SKuninori Morimoto=============================================
581bd7ff187SKuninori Morimoto
582bd7ff187SKuninori Morimotosound {
583bd7ff187SKuninori Morimoto	compatible = "simple-scu-audio-card";
584bd7ff187SKuninori Morimoto	...
585bd7ff187SKuninori Morimoto	/*
586bd7ff187SKuninori Morimoto	 * CTU setting
587bd7ff187SKuninori Morimoto	 * All input data will be converted to 2ch
588bd7ff187SKuninori Morimoto	 * as output data
589bd7ff187SKuninori Morimoto	 */
590bd7ff187SKuninori Morimoto	simple-audio-card,convert-channels = <2>;
591bd7ff187SKuninori Morimoto	...
592bd7ff187SKuninori Morimoto	simple-audio-card,cpu {
593bd7ff187SKuninori Morimoto		sound-dai = <&rcar_sound>;
594bd7ff187SKuninori Morimoto	};
595bd7ff187SKuninori Morimoto	simple-audio-card,codec {
596bd7ff187SKuninori Morimoto		...
597bd7ff187SKuninori Morimoto	};
598bd7ff187SKuninori Morimoto};
599bd7ff187SKuninori Morimoto
600bd7ff187SKuninori Morimoto=============================================
601bd7ff187SKuninori MorimotoExample: simple sound card for MIXer
602bd7ff187SKuninori Morimoto=============================================
603bd7ff187SKuninori Morimoto
604bd7ff187SKuninori Morimotosound {
605bd7ff187SKuninori Morimoto	compatible = "simple-scu-audio-card";
606bd7ff187SKuninori Morimoto	...
607bd7ff187SKuninori Morimoto	simple-audio-card,cpu@0 {
608bd7ff187SKuninori Morimoto		sound-dai = <&rcar_sound 0>;
609bd7ff187SKuninori Morimoto	};
610bd7ff187SKuninori Morimoto	simple-audio-card,cpu@1 {
611bd7ff187SKuninori Morimoto		sound-dai = <&rcar_sound 1>;
612bd7ff187SKuninori Morimoto	};
613bd7ff187SKuninori Morimoto	simple-audio-card,codec {
614bd7ff187SKuninori Morimoto		...
615bd7ff187SKuninori Morimoto	};
616bd7ff187SKuninori Morimoto};
617bd7ff187SKuninori Morimoto
618bd7ff187SKuninori Morimoto&rcar_sound {
619bd7ff187SKuninori Morimoto	...
620bd7ff187SKuninori Morimoto	rcar_sound,dai {
621bd7ff187SKuninori Morimoto		dai0 {
622bd7ff187SKuninori Morimoto			playback = <&src1 &ctu02 &mix0 &dvc0 &ssi0>;
623bd7ff187SKuninori Morimoto		};
624bd7ff187SKuninori Morimoto		dai1 {
625bd7ff187SKuninori Morimoto			playback = <&src2 &ctu03 &mix0 &dvc0 &ssi0>;
626bd7ff187SKuninori Morimoto		};
627bd7ff187SKuninori Morimoto	};
628bd7ff187SKuninori Morimoto};
629bd7ff187SKuninori Morimoto
630bd7ff187SKuninori Morimoto=============================================
63144bf5361SKuninori MorimotoExample: simple sound card for TDM
632f1511a14SKuninori Morimoto=============================================
63344bf5361SKuninori Morimoto
63444bf5361SKuninori Morimotorsnd_tdm: sound {
63544bf5361SKuninori Morimoto	compatible = "simple-audio-card";
63644bf5361SKuninori Morimoto
63744bf5361SKuninori Morimoto	simple-audio-card,format = "left_j";
63844bf5361SKuninori Morimoto	simple-audio-card,bitclock-master = <&sndcodec>;
63944bf5361SKuninori Morimoto	simple-audio-card,frame-master = <&sndcodec>;
64044bf5361SKuninori Morimoto
64144bf5361SKuninori Morimoto	sndcpu: simple-audio-card,cpu {
64244bf5361SKuninori Morimoto		sound-dai = <&rcar_sound>;
64344bf5361SKuninori Morimoto		dai-tdm-slot-num = <6>;
64444bf5361SKuninori Morimoto	};
64544bf5361SKuninori Morimoto
64644bf5361SKuninori Morimoto	sndcodec: simple-audio-card,codec {
64744bf5361SKuninori Morimoto		sound-dai = <&xxx>;
64844bf5361SKuninori Morimoto	};
64944bf5361SKuninori Morimoto};
650b4c83b17SKuninori Morimoto
651f1511a14SKuninori Morimoto=============================================
652b4c83b17SKuninori MorimotoExample: simple sound card for Multi channel
653f1511a14SKuninori Morimoto=============================================
654b4c83b17SKuninori Morimoto
655b4c83b17SKuninori Morimoto&rcar_sound {
656b4c83b17SKuninori Morimoto	pinctrl-0 = <&sound_pins &sound_clk_pins>;
657b4c83b17SKuninori Morimoto	pinctrl-names = "default";
658b4c83b17SKuninori Morimoto
659b4c83b17SKuninori Morimoto	/* Single DAI */
660b4c83b17SKuninori Morimoto	#sound-dai-cells = <0>;
661b4c83b17SKuninori Morimoto
662b4c83b17SKuninori Morimoto
663b4c83b17SKuninori Morimoto	rcar_sound,dai {
664b4c83b17SKuninori Morimoto		dai0 {
665b4c83b17SKuninori Morimoto			playback = <&ssi0 &ssi1 &ssi2 &src0 &dvc0>;
666b4c83b17SKuninori Morimoto		};
667b4c83b17SKuninori Morimoto	};
668b4c83b17SKuninori Morimoto};
669