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