18c2ecf20Sopenharmony_ciRenesas R-Car sound
28c2ecf20Sopenharmony_ci
38c2ecf20Sopenharmony_ci=============================================
48c2ecf20Sopenharmony_ci* Modules
58c2ecf20Sopenharmony_ci=============================================
68c2ecf20Sopenharmony_ci
78c2ecf20Sopenharmony_ciRenesas R-Car and RZ/G sound is constructed from below modules
88c2ecf20Sopenharmony_ci(for Gen2 or later)
98c2ecf20Sopenharmony_ci
108c2ecf20Sopenharmony_ci SCU		: Sampling Rate Converter Unit
118c2ecf20Sopenharmony_ci  - SRC		: Sampling Rate Converter
128c2ecf20Sopenharmony_ci  - CMD
138c2ecf20Sopenharmony_ci   - CTU	: Channel Transfer Unit
148c2ecf20Sopenharmony_ci   - MIX	: Mixer
158c2ecf20Sopenharmony_ci   - DVC	: Digital Volume and Mute Function
168c2ecf20Sopenharmony_ci SSIU		: Serial Sound Interface Unit
178c2ecf20Sopenharmony_ci SSI		: Serial Sound Interface
188c2ecf20Sopenharmony_ci
198c2ecf20Sopenharmony_ciSee detail of each module's channels, connection, limitation on datasheet
208c2ecf20Sopenharmony_ci
218c2ecf20Sopenharmony_ci=============================================
228c2ecf20Sopenharmony_ci* Multi channel
238c2ecf20Sopenharmony_ci=============================================
248c2ecf20Sopenharmony_ci
258c2ecf20Sopenharmony_ciMulti channel is supported by Multi-SSI, or TDM-SSI.
268c2ecf20Sopenharmony_ci
278c2ecf20Sopenharmony_ci Multi-SSI	: 6ch case, you can use stereo x 3 SSI
288c2ecf20Sopenharmony_ci TDM-SSI	: 6ch case, you can use TDM
298c2ecf20Sopenharmony_ci
308c2ecf20Sopenharmony_ci=============================================
318c2ecf20Sopenharmony_ci* Enable/Disable each modules
328c2ecf20Sopenharmony_ci=============================================
338c2ecf20Sopenharmony_ci
348c2ecf20Sopenharmony_ciSee datasheet to check SRC/CTU/MIX/DVC connect-limitation.
358c2ecf20Sopenharmony_ciDT controls enabling/disabling module.
368c2ecf20Sopenharmony_ci${LINUX}/arch/arm/boot/dts/r8a7790-lager.dts can be good example.
378c2ecf20Sopenharmony_ciThis is example of
388c2ecf20Sopenharmony_ci
398c2ecf20Sopenharmony_ciPlayback: [MEM] -> [SRC2] -> [DVC0] -> [SSIU0/SSI0] -> [codec]
408c2ecf20Sopenharmony_ciCapture:  [MEM] <- [DVC1] <- [SRC3] <- [SSIU1/SSI1] <- [codec]
418c2ecf20Sopenharmony_ci
428c2ecf20Sopenharmony_cisee "Example: simple sound card"
438c2ecf20Sopenharmony_ci
448c2ecf20Sopenharmony_ciYou can use below.
458c2ecf20Sopenharmony_ci${LINUX}/arch/arm/boot/dts/r8a7790.dts can be good example.
468c2ecf20Sopenharmony_ci
478c2ecf20Sopenharmony_ci	&src0	&ctu00	&mix0	&dvc0	&ssi0
488c2ecf20Sopenharmony_ci	&src1	&ctu01	&mix1	&dvc1	&ssi1
498c2ecf20Sopenharmony_ci	&src2	&ctu02			&ssi2
508c2ecf20Sopenharmony_ci	&src3	&ctu03			&ssi3
518c2ecf20Sopenharmony_ci	&src4				&ssi4
528c2ecf20Sopenharmony_ci	&src5	&ctu10			&ssi5
538c2ecf20Sopenharmony_ci	&src6	&ctu11			&ssi6
548c2ecf20Sopenharmony_ci	&src7	&ctu12			&ssi7
558c2ecf20Sopenharmony_ci	&src8	&ctu13			&ssi8
568c2ecf20Sopenharmony_ci	&src9				&ssi9
578c2ecf20Sopenharmony_ci
588c2ecf20Sopenharmony_ci=============================================
598c2ecf20Sopenharmony_ci* SRC (Sampling Rate Converter)
608c2ecf20Sopenharmony_ci=============================================
618c2ecf20Sopenharmony_ci
628c2ecf20Sopenharmony_ci [xx]Hz        [yy]Hz
638c2ecf20Sopenharmony_ci ------> [SRC] ------>
648c2ecf20Sopenharmony_ci
658c2ecf20Sopenharmony_ciSRC can convert [xx]Hz to [yy]Hz. Then, it has below 2 modes
668c2ecf20Sopenharmony_ci
678c2ecf20Sopenharmony_ci Asynchronous mode:	input data / output data are based on different clocks.
688c2ecf20Sopenharmony_ci			you can use this mode on Playback / Capture
698c2ecf20Sopenharmony_ci Synchronous mode:	input data / output data are based on same clocks.
708c2ecf20Sopenharmony_ci			This mode will be used if system doesn't have its input clock,
718c2ecf20Sopenharmony_ci			for example digital TV case.
728c2ecf20Sopenharmony_ci			you can use this mode on Playback
738c2ecf20Sopenharmony_ci
748c2ecf20Sopenharmony_ci------------------
758c2ecf20Sopenharmony_ci**     Asynchronous mode
768c2ecf20Sopenharmony_ci------------------
778c2ecf20Sopenharmony_ci
788c2ecf20Sopenharmony_ciYou need to use "simple-scu-audio-card" or "audio-graph-scu-card" for it.
798c2ecf20Sopenharmony_cisee "Example: simple sound card for Asynchronous mode"
808c2ecf20Sopenharmony_ci
818c2ecf20Sopenharmony_ci------------------
828c2ecf20Sopenharmony_ci**     Synchronous mode
838c2ecf20Sopenharmony_ci------------------
848c2ecf20Sopenharmony_ci
858c2ecf20Sopenharmony_ci	> amixer set "SRC Out Rate" on
868c2ecf20Sopenharmony_ci	> aplay xxxx.wav
878c2ecf20Sopenharmony_ci	> amixer set "SRC Out Rate" 48000
888c2ecf20Sopenharmony_ci	> amixer set "SRC Out Rate" 44100
898c2ecf20Sopenharmony_ci
908c2ecf20Sopenharmony_ci=============================================
918c2ecf20Sopenharmony_ci* CTU (Channel Transfer Unit)
928c2ecf20Sopenharmony_ci=============================================
938c2ecf20Sopenharmony_ci
948c2ecf20Sopenharmony_ci [xx]ch        [yy]ch
958c2ecf20Sopenharmony_ci ------> [CTU] -------->
968c2ecf20Sopenharmony_ci
978c2ecf20Sopenharmony_ciCTU can convert [xx]ch to [yy]ch, or exchange outputed channel.
988c2ecf20Sopenharmony_ciCTU conversion needs matrix settings.
998c2ecf20Sopenharmony_ciFor more detail information, see below
1008c2ecf20Sopenharmony_ci
1018c2ecf20Sopenharmony_ci	Renesas R-Car datasheet
1028c2ecf20Sopenharmony_ci	 - Sampling Rate Converter Unit (SCU)
1038c2ecf20Sopenharmony_ci	  - SCU Operation
1048c2ecf20Sopenharmony_ci	   - CMD Block
1058c2ecf20Sopenharmony_ci	    - Functional Blocks in CMD
1068c2ecf20Sopenharmony_ci
1078c2ecf20Sopenharmony_ci	Renesas R-Car datasheet
1088c2ecf20Sopenharmony_ci	 - Sampling Rate Converter Unit (SCU)
1098c2ecf20Sopenharmony_ci	  - Register Description
1108c2ecf20Sopenharmony_ci	   - CTUn Scale Value exx Register (CTUn_SVxxR)
1118c2ecf20Sopenharmony_ci
1128c2ecf20Sopenharmony_ci	${LINUX}/sound/soc/sh/rcar/ctu.c
1138c2ecf20Sopenharmony_ci	 - comment of header
1148c2ecf20Sopenharmony_ci
1158c2ecf20Sopenharmony_ciYou need to use "simple-scu-audio-card" or "audio-graph-scu-card" for it.
1168c2ecf20Sopenharmony_cisee "Example: simple sound card for channel convert"
1178c2ecf20Sopenharmony_ci
1188c2ecf20Sopenharmony_ciEx) Exchange output channel
1198c2ecf20Sopenharmony_ci Input -> Output
1208c2ecf20Sopenharmony_ci  1ch  ->  0ch
1218c2ecf20Sopenharmony_ci  0ch  ->  1ch
1228c2ecf20Sopenharmony_ci
1238c2ecf20Sopenharmony_ci  example of using matrix
1248c2ecf20Sopenharmony_ci	output 0ch = (input 0ch x 0) + (input 1ch x 1)
1258c2ecf20Sopenharmony_ci	output 1ch = (input 0ch x 1) + (input 1ch x 0)
1268c2ecf20Sopenharmony_ci
1278c2ecf20Sopenharmony_ci	amixer set "CTU Reset" on
1288c2ecf20Sopenharmony_ci	amixer set "CTU Pass" 9,10
1298c2ecf20Sopenharmony_ci	amixer set "CTU SV0" 0,4194304
1308c2ecf20Sopenharmony_ci	amixer set "CTU SV1" 4194304,0
1318c2ecf20Sopenharmony_ci
1328c2ecf20Sopenharmony_ci example of changing connection
1338c2ecf20Sopenharmony_ci	amixer set "CTU Reset" on
1348c2ecf20Sopenharmony_ci	amixer set "CTU Pass" 2,1
1358c2ecf20Sopenharmony_ci
1368c2ecf20Sopenharmony_ci=============================================
1378c2ecf20Sopenharmony_ci* MIX (Mixer)
1388c2ecf20Sopenharmony_ci=============================================
1398c2ecf20Sopenharmony_ci
1408c2ecf20Sopenharmony_ciMIX merges 2 sounds path. You can see 2 sound interface on system,
1418c2ecf20Sopenharmony_ciand these sounds will be merged by MIX.
1428c2ecf20Sopenharmony_ci
1438c2ecf20Sopenharmony_ci	aplay -D plughw:0,0 xxxx.wav &
1448c2ecf20Sopenharmony_ci	aplay -D plughw:0,1 yyyy.wav
1458c2ecf20Sopenharmony_ci
1468c2ecf20Sopenharmony_ciYou need to use "simple-scu-audio-card" or "audio-graph-scu-card" for it.
1478c2ecf20Sopenharmony_ciEx)
1488c2ecf20Sopenharmony_ci	[MEM] -> [SRC1] -> [CTU02] -+-> [MIX0] -> [DVC0] -> [SSI0]
1498c2ecf20Sopenharmony_ci	                            |
1508c2ecf20Sopenharmony_ci	[MEM] -> [SRC2] -> [CTU03] -+
1518c2ecf20Sopenharmony_ci
1528c2ecf20Sopenharmony_cisee "Example: simple sound card for MIXer"
1538c2ecf20Sopenharmony_ci
1548c2ecf20Sopenharmony_ci=============================================
1558c2ecf20Sopenharmony_ci* DVC (Digital Volume and Mute Function)
1568c2ecf20Sopenharmony_ci=============================================
1578c2ecf20Sopenharmony_ci
1588c2ecf20Sopenharmony_ciDVC controls Playback/Capture volume.
1598c2ecf20Sopenharmony_ci
1608c2ecf20Sopenharmony_ciPlayback Volume
1618c2ecf20Sopenharmony_ci	amixer set "DVC Out" 100%
1628c2ecf20Sopenharmony_ci
1638c2ecf20Sopenharmony_ciCapture Volume
1648c2ecf20Sopenharmony_ci	amixer set "DVC In" 100%
1658c2ecf20Sopenharmony_ci
1668c2ecf20Sopenharmony_ciPlayback Mute
1678c2ecf20Sopenharmony_ci	amixer set "DVC Out Mute" on
1688c2ecf20Sopenharmony_ci
1698c2ecf20Sopenharmony_ciCapture Mute
1708c2ecf20Sopenharmony_ci	amixer set "DVC In Mute" on
1718c2ecf20Sopenharmony_ci
1728c2ecf20Sopenharmony_ciVolume Ramp
1738c2ecf20Sopenharmony_ci	amixer set "DVC Out Ramp Up Rate"   "0.125 dB/64 steps"
1748c2ecf20Sopenharmony_ci	amixer set "DVC Out Ramp Down Rate" "0.125 dB/512 steps"
1758c2ecf20Sopenharmony_ci	amixer set "DVC Out Ramp" on
1768c2ecf20Sopenharmony_ci	aplay xxx.wav &
1778c2ecf20Sopenharmony_ci	amixer set "DVC Out"  80%  // Volume Down
1788c2ecf20Sopenharmony_ci	amixer set "DVC Out" 100%  // Volume Up
1798c2ecf20Sopenharmony_ci
1808c2ecf20Sopenharmony_ci=============================================
1818c2ecf20Sopenharmony_ci* SSIU (Serial Sound Interface Unit)
1828c2ecf20Sopenharmony_ci=============================================
1838c2ecf20Sopenharmony_ci
1848c2ecf20Sopenharmony_ciSSIU can avoid some under/over run error, because it has some buffer.
1858c2ecf20Sopenharmony_ciBut you can't use it if SSI was PIO mode.
1868c2ecf20Sopenharmony_ciIn DMA mode, you can select not to use SSIU by using "no-busif" via SSI.
1878c2ecf20Sopenharmony_ci
1888c2ecf20Sopenharmony_ciSSIU handles BUSIF which will be used for TDM Split mode.
1898c2ecf20Sopenharmony_ciThis driver is assuming that audio-graph card will be used.
1908c2ecf20Sopenharmony_ci
1918c2ecf20Sopenharmony_ciTDM Split mode merges 4 sounds. You can see 4 sound interface on system,
1928c2ecf20Sopenharmony_ciand these sounds will be merged SSIU/SSI.
1938c2ecf20Sopenharmony_ci
1948c2ecf20Sopenharmony_ci	aplay -D plughw:0,0 xxxx.wav &
1958c2ecf20Sopenharmony_ci	aplay -D plughw:0,1 xxxx.wav &
1968c2ecf20Sopenharmony_ci	aplay -D plughw:0,2 xxxx.wav &
1978c2ecf20Sopenharmony_ci	aplay -D plughw:0,3 xxxx.wav
1988c2ecf20Sopenharmony_ci
1998c2ecf20Sopenharmony_ci	          2ch                     8ch
2008c2ecf20Sopenharmony_ci	[MEM] -> [SSIU 30] -+-> [SSIU 3] --> [Codec]
2018c2ecf20Sopenharmony_ci	          2ch       |
2028c2ecf20Sopenharmony_ci	[MEM] -> [SSIU 31] -+
2038c2ecf20Sopenharmony_ci	          2ch       |
2048c2ecf20Sopenharmony_ci	[MEM] -> [SSIU 32] -+
2058c2ecf20Sopenharmony_ci	          2ch       |
2068c2ecf20Sopenharmony_ci	[MEM] -> [SSIU 33] -+
2078c2ecf20Sopenharmony_ci
2088c2ecf20Sopenharmony_cisee "Example: simple sound card for TDM Split"
2098c2ecf20Sopenharmony_ci
2108c2ecf20Sopenharmony_ci=============================================
2118c2ecf20Sopenharmony_ci* SSI (Serial Sound Interface)
2128c2ecf20Sopenharmony_ci=============================================
2138c2ecf20Sopenharmony_ci
2148c2ecf20Sopenharmony_ci**  PIO mode
2158c2ecf20Sopenharmony_ci
2168c2ecf20Sopenharmony_ciYou can use PIO mode which is for connection check by using.
2178c2ecf20Sopenharmony_ciNote: The system will drop non-SSI modules in PIO mode
2188c2ecf20Sopenharmony_cieven though if DT is selecting other modules.
2198c2ecf20Sopenharmony_ci
2208c2ecf20Sopenharmony_ci	&ssi0 {
2218c2ecf20Sopenharmony_ci		pio-transfer
2228c2ecf20Sopenharmony_ci	};
2238c2ecf20Sopenharmony_ci
2248c2ecf20Sopenharmony_ci** DMA mode without SSIU
2258c2ecf20Sopenharmony_ci
2268c2ecf20Sopenharmony_ciYou can use DMA without SSIU.
2278c2ecf20Sopenharmony_ciNote: under/over run, or noise are likely to occur
2288c2ecf20Sopenharmony_ci
2298c2ecf20Sopenharmony_ci	&ssi0 {
2308c2ecf20Sopenharmony_ci		no-busif;
2318c2ecf20Sopenharmony_ci	};
2328c2ecf20Sopenharmony_ci
2338c2ecf20Sopenharmony_ci** PIN sharing
2348c2ecf20Sopenharmony_ci
2358c2ecf20Sopenharmony_ciEach SSI can share WS pin. It is based on platform.
2368c2ecf20Sopenharmony_ciThis is example if SSI1 want to share WS pin with SSI0
2378c2ecf20Sopenharmony_ci
2388c2ecf20Sopenharmony_ci	&ssi1 {
2398c2ecf20Sopenharmony_ci		shared-pin;
2408c2ecf20Sopenharmony_ci	};
2418c2ecf20Sopenharmony_ci
2428c2ecf20Sopenharmony_ci** Multi-SSI
2438c2ecf20Sopenharmony_ci
2448c2ecf20Sopenharmony_ciYou can use Multi-SSI.
2458c2ecf20Sopenharmony_ciThis is example of SSI0/SSI1/SSI2 (= for 6ch)
2468c2ecf20Sopenharmony_ci
2478c2ecf20Sopenharmony_cisee "Example: simple sound card for Multi channel"
2488c2ecf20Sopenharmony_ci
2498c2ecf20Sopenharmony_ci** TDM-SSI
2508c2ecf20Sopenharmony_ci
2518c2ecf20Sopenharmony_ciYou can use TDM with SSI.
2528c2ecf20Sopenharmony_ciThis is example of TDM 6ch.
2538c2ecf20Sopenharmony_ciDriver can automatically switches TDM <-> stereo mode in this case.
2548c2ecf20Sopenharmony_ci
2558c2ecf20Sopenharmony_cisee "Example: simple sound card for TDM"
2568c2ecf20Sopenharmony_ci
2578c2ecf20Sopenharmony_ci=============================================
2588c2ecf20Sopenharmony_ciRequired properties:
2598c2ecf20Sopenharmony_ci=============================================
2608c2ecf20Sopenharmony_ci
2618c2ecf20Sopenharmony_ci- compatible			: "renesas,rcar_sound-<soctype>", fallbacks
2628c2ecf20Sopenharmony_ci				  "renesas,rcar_sound-gen1" if generation1, and
2638c2ecf20Sopenharmony_ci				  "renesas,rcar_sound-gen2" if generation2 (or RZ/G1)
2648c2ecf20Sopenharmony_ci				  "renesas,rcar_sound-gen3" if generation3 (or RZ/G2)
2658c2ecf20Sopenharmony_ci				  Examples with soctypes are:
2668c2ecf20Sopenharmony_ci				    - "renesas,rcar_sound-r8a7742" (RZ/G1H)
2678c2ecf20Sopenharmony_ci				    - "renesas,rcar_sound-r8a7743" (RZ/G1M)
2688c2ecf20Sopenharmony_ci				    - "renesas,rcar_sound-r8a7744" (RZ/G1N)
2698c2ecf20Sopenharmony_ci				    - "renesas,rcar_sound-r8a7745" (RZ/G1E)
2708c2ecf20Sopenharmony_ci				    - "renesas,rcar_sound-r8a77470" (RZ/G1C)
2718c2ecf20Sopenharmony_ci				    - "renesas,rcar_sound-r8a774a1" (RZ/G2M)
2728c2ecf20Sopenharmony_ci				    - "renesas,rcar_sound-r8a774b1" (RZ/G2N)
2738c2ecf20Sopenharmony_ci				    - "renesas,rcar_sound-r8a774c0" (RZ/G2E)
2748c2ecf20Sopenharmony_ci				    - "renesas,rcar_sound-r8a774e1" (RZ/G2H)
2758c2ecf20Sopenharmony_ci				    - "renesas,rcar_sound-r8a7778" (R-Car M1A)
2768c2ecf20Sopenharmony_ci				    - "renesas,rcar_sound-r8a7779" (R-Car H1)
2778c2ecf20Sopenharmony_ci				    - "renesas,rcar_sound-r8a7790" (R-Car H2)
2788c2ecf20Sopenharmony_ci				    - "renesas,rcar_sound-r8a7791" (R-Car M2-W)
2798c2ecf20Sopenharmony_ci				    - "renesas,rcar_sound-r8a7793" (R-Car M2-N)
2808c2ecf20Sopenharmony_ci				    - "renesas,rcar_sound-r8a7794" (R-Car E2)
2818c2ecf20Sopenharmony_ci				    - "renesas,rcar_sound-r8a7795" (R-Car H3)
2828c2ecf20Sopenharmony_ci				    - "renesas,rcar_sound-r8a7796" (R-Car M3-W)
2838c2ecf20Sopenharmony_ci				    - "renesas,rcar_sound-r8a77965" (R-Car M3-N)
2848c2ecf20Sopenharmony_ci				    - "renesas,rcar_sound-r8a77990" (R-Car E3)
2858c2ecf20Sopenharmony_ci				    - "renesas,rcar_sound-r8a77995" (R-Car D3)
2868c2ecf20Sopenharmony_ci- reg				: Should contain the register physical address.
2878c2ecf20Sopenharmony_ci				  required register is
2888c2ecf20Sopenharmony_ci				   SRU/ADG/SSI      if generation1
2898c2ecf20Sopenharmony_ci				   SRU/ADG/SSIU/SSI/AUDIO-DMAC-periperi if generation2/generation3
2908c2ecf20Sopenharmony_ci				   Select extended AUDIO-DMAC-periperi address if SoC has it,
2918c2ecf20Sopenharmony_ci				   otherwise select normal AUDIO-DMAC-periperi address.
2928c2ecf20Sopenharmony_ci- reg-names			: Should contain the register names.
2938c2ecf20Sopenharmony_ci				   scu/adg/ssi	if generation1
2948c2ecf20Sopenharmony_ci				   scu/adg/ssiu/ssi/audmapp if generation2/generation3
2958c2ecf20Sopenharmony_ci- rcar_sound,ssi		: Should contain SSI feature.
2968c2ecf20Sopenharmony_ci				  The number of SSI subnode should be same as HW.
2978c2ecf20Sopenharmony_ci				  see below for detail.
2988c2ecf20Sopenharmony_ci- rcar_sound,ssiu		: Should contain SSIU feature.
2998c2ecf20Sopenharmony_ci				  The number of SSIU subnode should be same as HW.
3008c2ecf20Sopenharmony_ci				  see below for detail.
3018c2ecf20Sopenharmony_ci- rcar_sound,src		: Should contain SRC feature.
3028c2ecf20Sopenharmony_ci				  The number of SRC subnode should be same as HW.
3038c2ecf20Sopenharmony_ci				  see below for detail.
3048c2ecf20Sopenharmony_ci- rcar_sound,ctu		: Should contain CTU feature.
3058c2ecf20Sopenharmony_ci				  The number of CTU subnode should be same as HW.
3068c2ecf20Sopenharmony_ci				  see below for detail.
3078c2ecf20Sopenharmony_ci- rcar_sound,mix		: Should contain MIX feature.
3088c2ecf20Sopenharmony_ci				  The number of MIX subnode should be same as HW.
3098c2ecf20Sopenharmony_ci				  see below for detail.
3108c2ecf20Sopenharmony_ci- rcar_sound,dvc		: Should contain DVC feature.
3118c2ecf20Sopenharmony_ci				  The number of DVC subnode should be same as HW.
3128c2ecf20Sopenharmony_ci				  see below for detail.
3138c2ecf20Sopenharmony_ci- rcar_sound,dai		: DAI contents.
3148c2ecf20Sopenharmony_ci				  The number of DAI subnode should be same as HW.
3158c2ecf20Sopenharmony_ci				  see below for detail.
3168c2ecf20Sopenharmony_ci- #sound-dai-cells		: it must be 0 if your system is using single DAI
3178c2ecf20Sopenharmony_ci				  it must be 1 if your system is using multi  DAI
3188c2ecf20Sopenharmony_ci- clocks			: References to SSI/SRC/MIX/CTU/DVC/AUDIO_CLK clocks.
3198c2ecf20Sopenharmony_ci- clock-names			: List of necessary clock names.
3208c2ecf20Sopenharmony_ci				  "ssi-all", "ssi.X", "src.X", "mix.X", "ctu.X",
3218c2ecf20Sopenharmony_ci				  "dvc.X", "clk_a", "clk_b", "clk_c", "clk_i"
3228c2ecf20Sopenharmony_ci
3238c2ecf20Sopenharmony_ciOptional properties:
3248c2ecf20Sopenharmony_ci- #clock-cells			: it must be 0 if your system has audio_clkout
3258c2ecf20Sopenharmony_ci				  it must be 1 if your system has audio_clkout0/1/2/3
3268c2ecf20Sopenharmony_ci- clock-frequency		: for all audio_clkout0/1/2/3
3278c2ecf20Sopenharmony_ci- clkout-lr-asynchronous	: boolean property. it indicates that audio_clkoutn
3288c2ecf20Sopenharmony_ci				  is asynchronizes with lr-clock.
3298c2ecf20Sopenharmony_ci- resets			: References to SSI resets.
3308c2ecf20Sopenharmony_ci- reset-names			: List of valid reset names.
3318c2ecf20Sopenharmony_ci				  "ssi-all", "ssi.X"
3328c2ecf20Sopenharmony_ci
3338c2ecf20Sopenharmony_ciSSI subnode properties:
3348c2ecf20Sopenharmony_ci- interrupts			: Should contain SSI interrupt for PIO transfer
3358c2ecf20Sopenharmony_ci- shared-pin			: if shared clock pin
3368c2ecf20Sopenharmony_ci- pio-transfer			: use PIO transfer mode
3378c2ecf20Sopenharmony_ci- no-busif			: BUSIF is not ussed when [mem -> SSI] via DMA case
3388c2ecf20Sopenharmony_ci- dma				: Should contain Audio DMAC entry
3398c2ecf20Sopenharmony_ci- dma-names			: SSI  case "rx"  (=playback), "tx"  (=capture)
3408c2ecf20Sopenharmony_ci				  Deprecated: see SSIU subnode properties
3418c2ecf20Sopenharmony_ci				  SSIU case "rxu" (=playback), "txu" (=capture)
3428c2ecf20Sopenharmony_ci
3438c2ecf20Sopenharmony_ciSSIU subnode properties:
3448c2ecf20Sopenharmony_ci- dma				: Should contain Audio DMAC entry
3458c2ecf20Sopenharmony_ci- dma-names			: "rx" (=playback), "tx" (=capture)
3468c2ecf20Sopenharmony_ci
3478c2ecf20Sopenharmony_ciSRC subnode properties:
3488c2ecf20Sopenharmony_ci- dma				: Should contain Audio DMAC entry
3498c2ecf20Sopenharmony_ci- dma-names			: "rx" (=playback), "tx" (=capture)
3508c2ecf20Sopenharmony_ci
3518c2ecf20Sopenharmony_ciDVC subnode properties:
3528c2ecf20Sopenharmony_ci- dma				: Should contain Audio DMAC entry
3538c2ecf20Sopenharmony_ci- dma-names			: "tx" (=playback/capture)
3548c2ecf20Sopenharmony_ci
3558c2ecf20Sopenharmony_ciDAI subnode properties:
3568c2ecf20Sopenharmony_ci- playback			: list of playback modules
3578c2ecf20Sopenharmony_ci- capture			: list of capture  modules
3588c2ecf20Sopenharmony_ci
3598c2ecf20Sopenharmony_ci
3608c2ecf20Sopenharmony_ci=============================================
3618c2ecf20Sopenharmony_ciExample:
3628c2ecf20Sopenharmony_ci=============================================
3638c2ecf20Sopenharmony_ci
3648c2ecf20Sopenharmony_circar_sound: sound@ec500000 {
3658c2ecf20Sopenharmony_ci	#sound-dai-cells = <1>;
3668c2ecf20Sopenharmony_ci	compatible = "renesas,rcar_sound-r8a7791", "renesas,rcar_sound-gen2";
3678c2ecf20Sopenharmony_ci	reg =	<0 0xec500000 0 0x1000>, /* SCU */
3688c2ecf20Sopenharmony_ci		<0 0xec5a0000 0 0x100>,  /* ADG */
3698c2ecf20Sopenharmony_ci		<0 0xec540000 0 0x1000>, /* SSIU */
3708c2ecf20Sopenharmony_ci		<0 0xec541000 0 0x1280>, /* SSI */
3718c2ecf20Sopenharmony_ci		<0 0xec740000 0 0x200>;  /* Audio DMAC peri peri*/
3728c2ecf20Sopenharmony_ci	reg-names = "scu", "adg", "ssiu", "ssi", "audmapp";
3738c2ecf20Sopenharmony_ci
3748c2ecf20Sopenharmony_ci	clocks = <&mstp10_clks R8A7790_CLK_SSI_ALL>,
3758c2ecf20Sopenharmony_ci		<&mstp10_clks R8A7790_CLK_SSI9>, <&mstp10_clks R8A7790_CLK_SSI8>,
3768c2ecf20Sopenharmony_ci		<&mstp10_clks R8A7790_CLK_SSI7>, <&mstp10_clks R8A7790_CLK_SSI6>,
3778c2ecf20Sopenharmony_ci		<&mstp10_clks R8A7790_CLK_SSI5>, <&mstp10_clks R8A7790_CLK_SSI4>,
3788c2ecf20Sopenharmony_ci		<&mstp10_clks R8A7790_CLK_SSI3>, <&mstp10_clks R8A7790_CLK_SSI2>,
3798c2ecf20Sopenharmony_ci		<&mstp10_clks R8A7790_CLK_SSI1>, <&mstp10_clks R8A7790_CLK_SSI0>,
3808c2ecf20Sopenharmony_ci		<&mstp10_clks R8A7790_CLK_SCU_SRC9>, <&mstp10_clks R8A7790_CLK_SCU_SRC8>,
3818c2ecf20Sopenharmony_ci		<&mstp10_clks R8A7790_CLK_SCU_SRC7>, <&mstp10_clks R8A7790_CLK_SCU_SRC6>,
3828c2ecf20Sopenharmony_ci		<&mstp10_clks R8A7790_CLK_SCU_SRC5>, <&mstp10_clks R8A7790_CLK_SCU_SRC4>,
3838c2ecf20Sopenharmony_ci		<&mstp10_clks R8A7790_CLK_SCU_SRC3>, <&mstp10_clks R8A7790_CLK_SCU_SRC2>,
3848c2ecf20Sopenharmony_ci		<&mstp10_clks R8A7790_CLK_SCU_SRC1>, <&mstp10_clks R8A7790_CLK_SCU_SRC0>,
3858c2ecf20Sopenharmony_ci		<&mstp10_clks R8A7790_CLK_SCU_DVC0>, <&mstp10_clks R8A7790_CLK_SCU_DVC1>,
3868c2ecf20Sopenharmony_ci		<&audio_clk_a>, <&audio_clk_b>, <&audio_clk_c>, <&m2_clk>;
3878c2ecf20Sopenharmony_ci	clock-names = "ssi-all",
3888c2ecf20Sopenharmony_ci			"ssi.9", "ssi.8", "ssi.7", "ssi.6", "ssi.5",
3898c2ecf20Sopenharmony_ci			"ssi.4", "ssi.3", "ssi.2", "ssi.1", "ssi.0",
3908c2ecf20Sopenharmony_ci			"src.9", "src.8", "src.7", "src.6", "src.5",
3918c2ecf20Sopenharmony_ci			"src.4", "src.3", "src.2", "src.1", "src.0",
3928c2ecf20Sopenharmony_ci			"dvc.0", "dvc.1",
3938c2ecf20Sopenharmony_ci			"clk_a", "clk_b", "clk_c", "clk_i";
3948c2ecf20Sopenharmony_ci
3958c2ecf20Sopenharmony_ci	rcar_sound,dvc {
3968c2ecf20Sopenharmony_ci		dvc0: dvc-0 {
3978c2ecf20Sopenharmony_ci			dmas = <&audma0 0xbc>;
3988c2ecf20Sopenharmony_ci			dma-names = "tx";
3998c2ecf20Sopenharmony_ci		};
4008c2ecf20Sopenharmony_ci		dvc1: dvc-1 {
4018c2ecf20Sopenharmony_ci			dmas = <&audma0 0xbe>;
4028c2ecf20Sopenharmony_ci			dma-names = "tx";
4038c2ecf20Sopenharmony_ci		};
4048c2ecf20Sopenharmony_ci	};
4058c2ecf20Sopenharmony_ci
4068c2ecf20Sopenharmony_ci	rcar_sound,mix {
4078c2ecf20Sopenharmony_ci		mix0: mix-0 { };
4088c2ecf20Sopenharmony_ci		mix1: mix-1 { };
4098c2ecf20Sopenharmony_ci	};
4108c2ecf20Sopenharmony_ci
4118c2ecf20Sopenharmony_ci	rcar_sound,ctu {
4128c2ecf20Sopenharmony_ci		ctu00: ctu-0 { };
4138c2ecf20Sopenharmony_ci		ctu01: ctu-1 { };
4148c2ecf20Sopenharmony_ci		ctu02: ctu-2 { };
4158c2ecf20Sopenharmony_ci		ctu03: ctu-3 { };
4168c2ecf20Sopenharmony_ci		ctu10: ctu-4 { };
4178c2ecf20Sopenharmony_ci		ctu11: ctu-5 { };
4188c2ecf20Sopenharmony_ci		ctu12: ctu-6 { };
4198c2ecf20Sopenharmony_ci		ctu13: ctu-7 { };
4208c2ecf20Sopenharmony_ci	};
4218c2ecf20Sopenharmony_ci
4228c2ecf20Sopenharmony_ci	rcar_sound,src {
4238c2ecf20Sopenharmony_ci		src0: src-0 {
4248c2ecf20Sopenharmony_ci			interrupts = <0 352 IRQ_TYPE_LEVEL_HIGH>;
4258c2ecf20Sopenharmony_ci			dmas = <&audma0 0x85>, <&audma1 0x9a>;
4268c2ecf20Sopenharmony_ci			dma-names = "rx", "tx";
4278c2ecf20Sopenharmony_ci		};
4288c2ecf20Sopenharmony_ci		src1: src-1 {
4298c2ecf20Sopenharmony_ci			interrupts = <0 353 IRQ_TYPE_LEVEL_HIGH>;
4308c2ecf20Sopenharmony_ci			dmas = <&audma0 0x87>, <&audma1 0x9c>;
4318c2ecf20Sopenharmony_ci			dma-names = "rx", "tx";
4328c2ecf20Sopenharmony_ci		};
4338c2ecf20Sopenharmony_ci		src2: src-2 {
4348c2ecf20Sopenharmony_ci			interrupts = <0 354 IRQ_TYPE_LEVEL_HIGH>;
4358c2ecf20Sopenharmony_ci			dmas = <&audma0 0x89>, <&audma1 0x9e>;
4368c2ecf20Sopenharmony_ci			dma-names = "rx", "tx";
4378c2ecf20Sopenharmony_ci		};
4388c2ecf20Sopenharmony_ci		src3: src-3 {
4398c2ecf20Sopenharmony_ci			interrupts = <0 355 IRQ_TYPE_LEVEL_HIGH>;
4408c2ecf20Sopenharmony_ci			dmas = <&audma0 0x8b>, <&audma1 0xa0>;
4418c2ecf20Sopenharmony_ci			dma-names = "rx", "tx";
4428c2ecf20Sopenharmony_ci		};
4438c2ecf20Sopenharmony_ci		src4: src-4 {
4448c2ecf20Sopenharmony_ci			interrupts = <0 356 IRQ_TYPE_LEVEL_HIGH>;
4458c2ecf20Sopenharmony_ci			dmas = <&audma0 0x8d>, <&audma1 0xb0>;
4468c2ecf20Sopenharmony_ci			dma-names = "rx", "tx";
4478c2ecf20Sopenharmony_ci		};
4488c2ecf20Sopenharmony_ci		src5: src-5 {
4498c2ecf20Sopenharmony_ci			interrupts = <0 357 IRQ_TYPE_LEVEL_HIGH>;
4508c2ecf20Sopenharmony_ci			dmas = <&audma0 0x8f>, <&audma1 0xb2>;
4518c2ecf20Sopenharmony_ci			dma-names = "rx", "tx";
4528c2ecf20Sopenharmony_ci		};
4538c2ecf20Sopenharmony_ci		src6: src-6 {
4548c2ecf20Sopenharmony_ci			interrupts = <0 358 IRQ_TYPE_LEVEL_HIGH>;
4558c2ecf20Sopenharmony_ci			dmas = <&audma0 0x91>, <&audma1 0xb4>;
4568c2ecf20Sopenharmony_ci			dma-names = "rx", "tx";
4578c2ecf20Sopenharmony_ci		};
4588c2ecf20Sopenharmony_ci		src7: src-7 {
4598c2ecf20Sopenharmony_ci			interrupts = <0 359 IRQ_TYPE_LEVEL_HIGH>;
4608c2ecf20Sopenharmony_ci			dmas = <&audma0 0x93>, <&audma1 0xb6>;
4618c2ecf20Sopenharmony_ci			dma-names = "rx", "tx";
4628c2ecf20Sopenharmony_ci		};
4638c2ecf20Sopenharmony_ci		src8: src-8 {
4648c2ecf20Sopenharmony_ci			interrupts = <0 360 IRQ_TYPE_LEVEL_HIGH>;
4658c2ecf20Sopenharmony_ci			dmas = <&audma0 0x95>, <&audma1 0xb8>;
4668c2ecf20Sopenharmony_ci			dma-names = "rx", "tx";
4678c2ecf20Sopenharmony_ci		};
4688c2ecf20Sopenharmony_ci		src9: src-9 {
4698c2ecf20Sopenharmony_ci			interrupts = <0 361 IRQ_TYPE_LEVEL_HIGH>;
4708c2ecf20Sopenharmony_ci			dmas = <&audma0 0x97>, <&audma1 0xba>;
4718c2ecf20Sopenharmony_ci			dma-names = "rx", "tx";
4728c2ecf20Sopenharmony_ci		};
4738c2ecf20Sopenharmony_ci	};
4748c2ecf20Sopenharmony_ci
4758c2ecf20Sopenharmony_ci	rcar_sound,ssiu {
4768c2ecf20Sopenharmony_ci		ssiu00: ssiu-0 {
4778c2ecf20Sopenharmony_ci			dmas = <&audma0 0x15>, <&audma1 0x16>;
4788c2ecf20Sopenharmony_ci			dma-names = "rx", "tx";
4798c2ecf20Sopenharmony_ci		};
4808c2ecf20Sopenharmony_ci		ssiu01: ssiu-1 {
4818c2ecf20Sopenharmony_ci			dmas = <&audma0 0x35>, <&audma1 0x36>;
4828c2ecf20Sopenharmony_ci			dma-names = "rx", "tx";
4838c2ecf20Sopenharmony_ci		};
4848c2ecf20Sopenharmony_ci
4858c2ecf20Sopenharmony_ci		...
4868c2ecf20Sopenharmony_ci
4878c2ecf20Sopenharmony_ci		ssiu95: ssiu-49 {
4888c2ecf20Sopenharmony_ci			dmas = <&audma0 0xA5>, <&audma1 0xA6>;
4898c2ecf20Sopenharmony_ci			dma-names = "rx", "tx";
4908c2ecf20Sopenharmony_ci		};
4918c2ecf20Sopenharmony_ci		ssiu96: ssiu-50 {
4928c2ecf20Sopenharmony_ci			dmas = <&audma0 0xA7>, <&audma1 0xA8>;
4938c2ecf20Sopenharmony_ci			dma-names = "rx", "tx";
4948c2ecf20Sopenharmony_ci		};
4958c2ecf20Sopenharmony_ci		ssiu97: ssiu-51 {
4968c2ecf20Sopenharmony_ci			dmas = <&audma0 0xA9>, <&audma1 0xAA>;
4978c2ecf20Sopenharmony_ci			dma-names = "rx", "tx";
4988c2ecf20Sopenharmony_ci		};
4998c2ecf20Sopenharmony_ci	};
5008c2ecf20Sopenharmony_ci
5018c2ecf20Sopenharmony_ci	rcar_sound,ssi {
5028c2ecf20Sopenharmony_ci		ssi0: ssi-0 {
5038c2ecf20Sopenharmony_ci			interrupts = <0 370 IRQ_TYPE_LEVEL_HIGH>;
5048c2ecf20Sopenharmony_ci			dmas = <&audma0 0x01>, <&audma1 0x02>;
5058c2ecf20Sopenharmony_ci			dma-names = "rx", "tx";
5068c2ecf20Sopenharmony_ci		};
5078c2ecf20Sopenharmony_ci		ssi1: ssi-1 {
5088c2ecf20Sopenharmony_ci			interrupts = <0 371 IRQ_TYPE_LEVEL_HIGH>;
5098c2ecf20Sopenharmony_ci			dmas = <&audma0 0x03>, <&audma1 0x04>;
5108c2ecf20Sopenharmony_ci			dma-names = "rx", "tx";
5118c2ecf20Sopenharmony_ci		};
5128c2ecf20Sopenharmony_ci
5138c2ecf20Sopenharmony_ci		...
5148c2ecf20Sopenharmony_ci
5158c2ecf20Sopenharmony_ci		ssi8: ssi-8 {
5168c2ecf20Sopenharmony_ci			interrupts = <0 378 IRQ_TYPE_LEVEL_HIGH>;
5178c2ecf20Sopenharmony_ci			dmas = <&audma0 0x11>, <&audma1 0x12>;
5188c2ecf20Sopenharmony_ci			dma-names = "rx", "tx";
5198c2ecf20Sopenharmony_ci		};
5208c2ecf20Sopenharmony_ci		ssi9: ssi-9 {
5218c2ecf20Sopenharmony_ci			interrupts = <0 379 IRQ_TYPE_LEVEL_HIGH>;
5228c2ecf20Sopenharmony_ci			dmas = <&audma0 0x13>, <&audma1 0x14>;
5238c2ecf20Sopenharmony_ci			dma-names = "rx", "tx";
5248c2ecf20Sopenharmony_ci		};
5258c2ecf20Sopenharmony_ci	};
5268c2ecf20Sopenharmony_ci
5278c2ecf20Sopenharmony_ci	rcar_sound,dai {
5288c2ecf20Sopenharmony_ci		dai0 {
5298c2ecf20Sopenharmony_ci			playback = <&ssi5 &src5>;
5308c2ecf20Sopenharmony_ci			capture  = <&ssi6>;
5318c2ecf20Sopenharmony_ci		};
5328c2ecf20Sopenharmony_ci		dai1 {
5338c2ecf20Sopenharmony_ci			playback = <&ssi3>;
5348c2ecf20Sopenharmony_ci		};
5358c2ecf20Sopenharmony_ci		dai2 {
5368c2ecf20Sopenharmony_ci			capture  = <&ssi4>;
5378c2ecf20Sopenharmony_ci		};
5388c2ecf20Sopenharmony_ci		dai3 {
5398c2ecf20Sopenharmony_ci			playback = <&ssi7>;
5408c2ecf20Sopenharmony_ci		};
5418c2ecf20Sopenharmony_ci		dai4 {
5428c2ecf20Sopenharmony_ci			capture  = <&ssi8>;
5438c2ecf20Sopenharmony_ci		};
5448c2ecf20Sopenharmony_ci	};
5458c2ecf20Sopenharmony_ci};
5468c2ecf20Sopenharmony_ci
5478c2ecf20Sopenharmony_ci=============================================
5488c2ecf20Sopenharmony_ciExample: simple sound card
5498c2ecf20Sopenharmony_ci=============================================
5508c2ecf20Sopenharmony_ci
5518c2ecf20Sopenharmony_ci	rsnd_ak4643: sound {
5528c2ecf20Sopenharmony_ci		compatible = "simple-audio-card";
5538c2ecf20Sopenharmony_ci
5548c2ecf20Sopenharmony_ci		simple-audio-card,format = "left_j";
5558c2ecf20Sopenharmony_ci		simple-audio-card,bitclock-master = <&sndcodec>;
5568c2ecf20Sopenharmony_ci		simple-audio-card,frame-master = <&sndcodec>;
5578c2ecf20Sopenharmony_ci
5588c2ecf20Sopenharmony_ci		sndcpu: simple-audio-card,cpu {
5598c2ecf20Sopenharmony_ci			sound-dai = <&rcar_sound>;
5608c2ecf20Sopenharmony_ci		};
5618c2ecf20Sopenharmony_ci
5628c2ecf20Sopenharmony_ci		sndcodec: simple-audio-card,codec {
5638c2ecf20Sopenharmony_ci			sound-dai = <&ak4643>;
5648c2ecf20Sopenharmony_ci			clocks = <&audio_clock>;
5658c2ecf20Sopenharmony_ci		};
5668c2ecf20Sopenharmony_ci	};
5678c2ecf20Sopenharmony_ci
5688c2ecf20Sopenharmony_ci&rcar_sound {
5698c2ecf20Sopenharmony_ci	pinctrl-0 = <&sound_pins &sound_clk_pins>;
5708c2ecf20Sopenharmony_ci	pinctrl-names = "default";
5718c2ecf20Sopenharmony_ci
5728c2ecf20Sopenharmony_ci	/* Single DAI */
5738c2ecf20Sopenharmony_ci	#sound-dai-cells = <0>;
5748c2ecf20Sopenharmony_ci
5758c2ecf20Sopenharmony_ci
5768c2ecf20Sopenharmony_ci	rcar_sound,dai {
5778c2ecf20Sopenharmony_ci		dai0 {
5788c2ecf20Sopenharmony_ci			playback = <&ssi0 &src2 &dvc0>;
5798c2ecf20Sopenharmony_ci			capture  = <&ssi1 &src3 &dvc1>;
5808c2ecf20Sopenharmony_ci		};
5818c2ecf20Sopenharmony_ci	};
5828c2ecf20Sopenharmony_ci};
5838c2ecf20Sopenharmony_ci
5848c2ecf20Sopenharmony_ci&ssi1 {
5858c2ecf20Sopenharmony_ci	shared-pin;
5868c2ecf20Sopenharmony_ci};
5878c2ecf20Sopenharmony_ci
5888c2ecf20Sopenharmony_ci=============================================
5898c2ecf20Sopenharmony_ciExample: simple sound card for Asynchronous mode
5908c2ecf20Sopenharmony_ci=============================================
5918c2ecf20Sopenharmony_ci
5928c2ecf20Sopenharmony_cisound {
5938c2ecf20Sopenharmony_ci	compatible = "simple-scu-audio-card";
5948c2ecf20Sopenharmony_ci	...
5958c2ecf20Sopenharmony_ci	/*
5968c2ecf20Sopenharmony_ci	 * SRC Asynchronous mode setting
5978c2ecf20Sopenharmony_ci	 * Playback:
5988c2ecf20Sopenharmony_ci	 * All input data will be converted to 48kHz
5998c2ecf20Sopenharmony_ci	 * Capture:
6008c2ecf20Sopenharmony_ci	 * Inputed 48kHz data will be converted to
6018c2ecf20Sopenharmony_ci	 * system specified Hz
6028c2ecf20Sopenharmony_ci	 */
6038c2ecf20Sopenharmony_ci	simple-audio-card,convert-rate = <48000>;
6048c2ecf20Sopenharmony_ci	...
6058c2ecf20Sopenharmony_ci	simple-audio-card,cpu {
6068c2ecf20Sopenharmony_ci		sound-dai = <&rcar_sound>;
6078c2ecf20Sopenharmony_ci	};
6088c2ecf20Sopenharmony_ci	simple-audio-card,codec {
6098c2ecf20Sopenharmony_ci		...
6108c2ecf20Sopenharmony_ci	};
6118c2ecf20Sopenharmony_ci};
6128c2ecf20Sopenharmony_ci
6138c2ecf20Sopenharmony_ci=============================================
6148c2ecf20Sopenharmony_ciExample: simple sound card for channel convert
6158c2ecf20Sopenharmony_ci=============================================
6168c2ecf20Sopenharmony_ci
6178c2ecf20Sopenharmony_cisound {
6188c2ecf20Sopenharmony_ci	compatible = "simple-scu-audio-card";
6198c2ecf20Sopenharmony_ci	...
6208c2ecf20Sopenharmony_ci	/*
6218c2ecf20Sopenharmony_ci	 * CTU setting
6228c2ecf20Sopenharmony_ci	 * All input data will be converted to 2ch
6238c2ecf20Sopenharmony_ci	 * as output data
6248c2ecf20Sopenharmony_ci	 */
6258c2ecf20Sopenharmony_ci	simple-audio-card,convert-channels = <2>;
6268c2ecf20Sopenharmony_ci	...
6278c2ecf20Sopenharmony_ci	simple-audio-card,cpu {
6288c2ecf20Sopenharmony_ci		sound-dai = <&rcar_sound>;
6298c2ecf20Sopenharmony_ci	};
6308c2ecf20Sopenharmony_ci	simple-audio-card,codec {
6318c2ecf20Sopenharmony_ci		...
6328c2ecf20Sopenharmony_ci	};
6338c2ecf20Sopenharmony_ci};
6348c2ecf20Sopenharmony_ci
6358c2ecf20Sopenharmony_ci=============================================
6368c2ecf20Sopenharmony_ciExample: simple sound card for MIXer
6378c2ecf20Sopenharmony_ci=============================================
6388c2ecf20Sopenharmony_ci
6398c2ecf20Sopenharmony_cisound {
6408c2ecf20Sopenharmony_ci	compatible = "simple-scu-audio-card";
6418c2ecf20Sopenharmony_ci	...
6428c2ecf20Sopenharmony_ci	simple-audio-card,cpu@0 {
6438c2ecf20Sopenharmony_ci		sound-dai = <&rcar_sound 0>;
6448c2ecf20Sopenharmony_ci	};
6458c2ecf20Sopenharmony_ci	simple-audio-card,cpu@1 {
6468c2ecf20Sopenharmony_ci		sound-dai = <&rcar_sound 1>;
6478c2ecf20Sopenharmony_ci	};
6488c2ecf20Sopenharmony_ci	simple-audio-card,codec {
6498c2ecf20Sopenharmony_ci		...
6508c2ecf20Sopenharmony_ci	};
6518c2ecf20Sopenharmony_ci};
6528c2ecf20Sopenharmony_ci
6538c2ecf20Sopenharmony_ci&rcar_sound {
6548c2ecf20Sopenharmony_ci	...
6558c2ecf20Sopenharmony_ci	rcar_sound,dai {
6568c2ecf20Sopenharmony_ci		dai0 {
6578c2ecf20Sopenharmony_ci			playback = <&src1 &ctu02 &mix0 &dvc0 &ssi0>;
6588c2ecf20Sopenharmony_ci		};
6598c2ecf20Sopenharmony_ci		dai1 {
6608c2ecf20Sopenharmony_ci			playback = <&src2 &ctu03 &mix0 &dvc0 &ssi0>;
6618c2ecf20Sopenharmony_ci		};
6628c2ecf20Sopenharmony_ci	};
6638c2ecf20Sopenharmony_ci};
6648c2ecf20Sopenharmony_ci
6658c2ecf20Sopenharmony_ci=============================================
6668c2ecf20Sopenharmony_ciExample: simple sound card for TDM
6678c2ecf20Sopenharmony_ci=============================================
6688c2ecf20Sopenharmony_ci
6698c2ecf20Sopenharmony_cirsnd_tdm: sound {
6708c2ecf20Sopenharmony_ci	compatible = "simple-audio-card";
6718c2ecf20Sopenharmony_ci
6728c2ecf20Sopenharmony_ci	simple-audio-card,format = "left_j";
6738c2ecf20Sopenharmony_ci	simple-audio-card,bitclock-master = <&sndcodec>;
6748c2ecf20Sopenharmony_ci	simple-audio-card,frame-master = <&sndcodec>;
6758c2ecf20Sopenharmony_ci
6768c2ecf20Sopenharmony_ci	sndcpu: simple-audio-card,cpu {
6778c2ecf20Sopenharmony_ci		sound-dai = <&rcar_sound>;
6788c2ecf20Sopenharmony_ci		dai-tdm-slot-num = <6>;
6798c2ecf20Sopenharmony_ci	};
6808c2ecf20Sopenharmony_ci
6818c2ecf20Sopenharmony_ci	sndcodec: simple-audio-card,codec {
6828c2ecf20Sopenharmony_ci		sound-dai = <&xxx>;
6838c2ecf20Sopenharmony_ci	};
6848c2ecf20Sopenharmony_ci};
6858c2ecf20Sopenharmony_ci
6868c2ecf20Sopenharmony_ci=============================================
6878c2ecf20Sopenharmony_ciExample: simple sound card for TDM Split
6888c2ecf20Sopenharmony_ci=============================================
6898c2ecf20Sopenharmony_ci
6908c2ecf20Sopenharmony_cisound_card: sound {
6918c2ecf20Sopenharmony_ci	compatible = "audio-graph-scu-card";
6928c2ecf20Sopenharmony_ci	prefix = "xxxx";
6938c2ecf20Sopenharmony_ci	routing = "xxxx Playback", "DAI0 Playback",
6948c2ecf20Sopenharmony_ci		  "xxxx Playback", "DAI1 Playback",
6958c2ecf20Sopenharmony_ci		  "xxxx Playback", "DAI2 Playback",
6968c2ecf20Sopenharmony_ci		  "xxxx Playback", "DAI3 Playback";
6978c2ecf20Sopenharmony_ci	convert-channels = <8>; /* TDM Split */
6988c2ecf20Sopenharmony_ci
6998c2ecf20Sopenharmony_ci	dais = <&rsnd_port0     /* playback ch1/ch2 */
7008c2ecf20Sopenharmony_ci		&rsnd_port1     /* playback ch3/ch4 */
7018c2ecf20Sopenharmony_ci		&rsnd_port2     /* playback ch5/ch6 */
7028c2ecf20Sopenharmony_ci		&rsnd_port3     /* playback ch7/ch8 */
7038c2ecf20Sopenharmony_ci		>;
7048c2ecf20Sopenharmony_ci};
7058c2ecf20Sopenharmony_ci
7068c2ecf20Sopenharmony_ciaudio-codec {
7078c2ecf20Sopenharmony_ci	...
7088c2ecf20Sopenharmony_ci	port {
7098c2ecf20Sopenharmony_ci		codec_0: endpoint@1 {
7108c2ecf20Sopenharmony_ci			remote-endpoint = <&rsnd_ep0>;
7118c2ecf20Sopenharmony_ci		};
7128c2ecf20Sopenharmony_ci		codec_1: endpoint@2 {
7138c2ecf20Sopenharmony_ci			remote-endpoint = <&rsnd_ep1>;
7148c2ecf20Sopenharmony_ci		};
7158c2ecf20Sopenharmony_ci		codec_2: endpoint@3 {
7168c2ecf20Sopenharmony_ci			remote-endpoint = <&rsnd_ep2>;
7178c2ecf20Sopenharmony_ci		};
7188c2ecf20Sopenharmony_ci		codec_3: endpoint@4 {
7198c2ecf20Sopenharmony_ci			remote-endpoint = <&rsnd_ep3>;
7208c2ecf20Sopenharmony_ci		};
7218c2ecf20Sopenharmony_ci	};
7228c2ecf20Sopenharmony_ci};
7238c2ecf20Sopenharmony_ci
7248c2ecf20Sopenharmony_ci&rcar_sound {
7258c2ecf20Sopenharmony_ci	...
7268c2ecf20Sopenharmony_ci	ports {
7278c2ecf20Sopenharmony_ci		rsnd_port0: port@0 {
7288c2ecf20Sopenharmony_ci			rsnd_ep0: endpoint {
7298c2ecf20Sopenharmony_ci				remote-endpoint = <&codec_0>;
7308c2ecf20Sopenharmony_ci				...
7318c2ecf20Sopenharmony_ci				playback = <&ssiu30 &ssi3>;
7328c2ecf20Sopenharmony_ci			};
7338c2ecf20Sopenharmony_ci		};
7348c2ecf20Sopenharmony_ci		rsnd_port1: port@1 {
7358c2ecf20Sopenharmony_ci			rsnd_ep1: endpoint {
7368c2ecf20Sopenharmony_ci				remote-endpoint = <&codec_1>;
7378c2ecf20Sopenharmony_ci				...
7388c2ecf20Sopenharmony_ci				playback = <&ssiu31 &ssi3>;
7398c2ecf20Sopenharmony_ci			};
7408c2ecf20Sopenharmony_ci		};
7418c2ecf20Sopenharmony_ci		rsnd_port2: port@2 {
7428c2ecf20Sopenharmony_ci			rsnd_ep2: endpoint {
7438c2ecf20Sopenharmony_ci				remote-endpoint = <&codec_2>;
7448c2ecf20Sopenharmony_ci				...
7458c2ecf20Sopenharmony_ci				playback = <&ssiu32 &ssi3>;
7468c2ecf20Sopenharmony_ci			};
7478c2ecf20Sopenharmony_ci		};
7488c2ecf20Sopenharmony_ci		rsnd_port3: port@3 {
7498c2ecf20Sopenharmony_ci			rsnd_ep3: endpoint {
7508c2ecf20Sopenharmony_ci				remote-endpoint = <&codec_3>;
7518c2ecf20Sopenharmony_ci				...
7528c2ecf20Sopenharmony_ci				playback = <&ssiu33 &ssi3>;
7538c2ecf20Sopenharmony_ci			};
7548c2ecf20Sopenharmony_ci		};
7558c2ecf20Sopenharmony_ci	};
7568c2ecf20Sopenharmony_ci};
7578c2ecf20Sopenharmony_ci
7588c2ecf20Sopenharmony_ci=============================================
7598c2ecf20Sopenharmony_ciExample: simple sound card for Multi channel
7608c2ecf20Sopenharmony_ci=============================================
7618c2ecf20Sopenharmony_ci
7628c2ecf20Sopenharmony_ci&rcar_sound {
7638c2ecf20Sopenharmony_ci	pinctrl-0 = <&sound_pins &sound_clk_pins>;
7648c2ecf20Sopenharmony_ci	pinctrl-names = "default";
7658c2ecf20Sopenharmony_ci
7668c2ecf20Sopenharmony_ci	/* Single DAI */
7678c2ecf20Sopenharmony_ci	#sound-dai-cells = <0>;
7688c2ecf20Sopenharmony_ci
7698c2ecf20Sopenharmony_ci
7708c2ecf20Sopenharmony_ci	rcar_sound,dai {
7718c2ecf20Sopenharmony_ci		dai0 {
7728c2ecf20Sopenharmony_ci			playback = <&ssi0 &ssi1 &ssi2 &src0 &dvc0>;
7738c2ecf20Sopenharmony_ci		};
7748c2ecf20Sopenharmony_ci	};
7758c2ecf20Sopenharmony_ci};
776