1// SPDX-License-Identifier: GPL-2.0 2/* 3 * Device Tree for ULCB + Kingfisher + Simple Audio Card (MIX + TDM Split) 4 * 5 * Copyright (C) 2022 Renesas Electronics Corp. 6 */ 7 8/* 9 * Note: 10 * The HDMI output is ignored due to the limited number of subdevices 11 * 12 * (A) CPU0 (2ch) <----> (2ch) (X) ak4613 (MIX-0) 13 * (B) CPU1 (2ch) --/ (MIX-1) 14 * (C) CPU3 (2ch) ----> (8ch) (Y) PCM3168A-p (TDM-0 : 0,1ch) 15 * (D) CPU2 (2ch) --/ (TDM-1 : 2,3ch) 16 * (E) CPU4 (2ch) --/ (TDM-2 : 4,5ch) 17 * (F) CPU5 (2ch) --/ (TDM-3 : 6,7ch) 18 * (G) CPU6 (2ch) <---- (6ch) (Z) PCM3168A-c (TDM-a: 0,1ch) 19 * (H) CPU7 (2ch) <--/ (TDM-b: 2,3ch) 20 * (I) CPU8 (2ch) <--/ (TDM-c: 4,5ch) 21 * 22 * (A) aplay -D plughw:0,0 xxx.wav (MIX-0) 23 * (B) aplay -D plughw:0,1 xxx.wav (MIX-1) 24 * (C) aplay -D plughw:1,0 xxx.wav (TDM-0) 25 * (D) aplay -D plughw:1,1 xxx.wav (TDM-1) 26 * (E) aplay -D plughw:1,2 xxx.wav (TDM-2) 27 * (F) aplay -D plughw:1,3 xxx.wav (TDM-3) 28 * 29 * (A) arecord -D plughw:0,0 xxx.wav 30 * (G) arecord -D plughw:1,4 xxx.wav (TDM-a) 31 * (H) arecord -D plughw:1,5 xxx.wav (TDM-b) 32 * (I) arecord -D plughw:1,6 xxx.wav (TDM-c) 33 */ 34 35/ { 36 sound_card_kf: expand-sound { 37 #address-cells = <1>; 38 #size-cells = <0>; 39 40 compatible = "simple-scu-audio-card"; 41 label = "snd-kf-split"; 42 43 simple-audio-card,routing = "pcm3168a Playback", "DAI2 Playback", 44 "pcm3168a Playback", "DAI3 Playback", 45 "pcm3168a Playback", "DAI4 Playback", 46 "pcm3168a Playback", "DAI5 Playback", 47 "DAI6 Capture", "pcm3168a Capture", 48 "DAI7 Capture", "pcm3168a Capture", 49 "DAI8 Capture", "pcm3168a Capture"; 50 51 simple-audio-card,dai-link@0 { 52 #address-cells = <1>; 53 #size-cells = <0>; 54 reg = <0>; 55 convert-channels = <8>; /* to 8ch TDM */ 56 57 /* 58 * (C) CPU2 59 */ 60 cpu@0 { 61 reg = <0>; 62 bitclock-master; 63 frame-master; 64 sound-dai = <&rcar_sound 2>; 65 }; 66 /* 67 * (D) CPU3 68 */ 69 cpu@1 { 70 reg = <1>; 71 sound-dai = <&rcar_sound 3>; 72 }; 73 /* 74 * (E) CPU4 75 */ 76 cpu@2 { 77 reg = <2>; 78 sound-dai = <&rcar_sound 4>; 79 }; 80 /* 81 * (F) CPU5 82 */ 83 cpu@3 { 84 reg = <3>; 85 sound-dai = <&rcar_sound 5>; 86 }; 87 /* 88 * (Y) PCM3168A-p 89 */ 90 codec { 91 prefix = "pcm3168a"; 92 mclk-fs = <512>; 93 sound-dai = <&pcm3168a 0>; 94 }; 95 }; 96 97 simple-audio-card,dai-link@1 { 98 #address-cells = <1>; 99 #size-cells = <0>; 100 reg = <1>; 101 convert-channels = <6>; /* to 6ch TDM */ 102 103 /* 104 * (G) CPU6 105 */ 106 cpu@0 { 107 reg = <0>; 108 bitclock-master; 109 frame-master; 110 sound-dai = <&rcar_sound 6>; 111 }; 112 /* 113 * (H) CPU7 114 */ 115 cpu@1 { 116 reg = <1>; 117 bitclock-master; 118 frame-master; 119 sound-dai = <&rcar_sound 7>; 120 }; 121 /* 122 * (I) CPU8 123 */ 124 cpu@2 { 125 reg = <2>; 126 bitclock-master; 127 frame-master; 128 sound-dai = <&rcar_sound 8>; 129 }; 130 131 /* 132 * (Z) PCM3168A-c 133 */ 134 codec { 135 prefix = "pcm3168a"; 136 mclk-fs = <512>; 137 sound-dai = <&pcm3168a 1>; 138 }; 139 }; 140 }; 141}; 142 143&pcm3168a { 144 /* 145 * (Y) PCM3168A-p 146 * (Z) PCM3168A-c 147 */ 148 #sound-dai-cells = <1>; 149}; 150 151&rcar_sound { 152 rcar_sound,dai@1 { 153 reg = <1>; 154 155 /* dai0-1 are defined in ulcb.dtsi */ 156 157 /* 158 * (C) CPU2 159 */ 160 dai2 { 161 playback = <&ssiu30 &ssi3>; 162 }; 163 /* 164 * (D) CPU3 165 */ 166 dai3 { 167 playback = <&ssiu31 &ssi3>; 168 }; 169 /* 170 * (E) CPU4 171 */ 172 dai4 { 173 playback = <&ssiu32 &ssi3>; 174 }; 175 /* 176 * (F) CPU5 177 */ 178 dai5 { 179 playback = <&ssiu33 &ssi3>; 180 }; 181 /* 182 * (G) CPU6 183 */ 184 dai6 { 185 capture = <&ssiu40 &ssi4>; 186 }; 187 /* 188 * (H) CPU7 189 */ 190 dai7 { 191 capture = <&ssiu41 &ssi4>; 192 }; 193 /* 194 * (I) CPU8 195 */ 196 dai8 { 197 capture = <&ssiu42 &ssi4>; 198 }; 199 }; 200}; 201