1// SPDX-License-Identifier: GPL-2.0 2/* 3 * Device Tree for ULCB + Kingfisher + Audio Graph Card2 (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 sound_card_kf: expand-sound { 36 compatible = "audio-graph-card2"; 37 label = "snd-kf-split"; 38 39 routing = "pcm3168a Playback", "DAI2 Playback", 40 "pcm3168a Playback", "DAI3 Playback", 41 "pcm3168a Playback", "DAI4 Playback", 42 "pcm3168a Playback", "DAI5 Playback", 43 "DAI6 Capture", "pcm3168a Capture", 44 "DAI7 Capture", "pcm3168a Capture", 45 "DAI8 Capture", "pcm3168a Capture"; 46 47 links = <&fe_c /* (C) CPU2 */ 48 &fe_d /* (D) CPU3 */ 49 &fe_e /* (E) CPU4 */ 50 &fe_f /* (F) CPU5 */ 51 &fe_g /* (G) CPU6 */ 52 &fe_h /* (H) CPU7 */ 53 &fe_i /* (I) CPU8 */ 54 &be_y /* (Y) PCM3168A-p */ 55 &be_z /* (Z) PCM3168A-c */ 56 >; 57 58 dpcm: dpcm { 59 #address-cells = <1>; 60 #size-cells = <0>; 61 non-supplier; 62 63 ports@0 { 64 #address-cells = <1>; 65 #size-cells = <0>; 66 reg = <0>; 67 68 /* 69 * FE 70 * 71 * (C) CPU2 72 * (D) CPU3 73 * (E) CPU4 74 * (F) CPU5 75 * (G) CPU6 76 * (H) CPU7 77 * (I) CPU8 78 */ 79 fe_c: port@2 { reg = <2>; fe_c_ep: endpoint { remote-endpoint = <&rsnd_c_ep>; }; }; 80 fe_d: port@3 { reg = <3>; fe_d_ep: endpoint { remote-endpoint = <&rsnd_d_ep>; }; }; 81 fe_e: port@4 { reg = <4>; fe_e_ep: endpoint { remote-endpoint = <&rsnd_e_ep>; }; }; 82 fe_f: port@5 { reg = <5>; fe_f_ep: endpoint { remote-endpoint = <&rsnd_f_ep>; }; }; 83 84 fe_g: port@6 { reg = <6>; fe_g_ep: endpoint { remote-endpoint = <&rsnd_g_ep>; }; }; 85 fe_h: port@7 { reg = <7>; fe_h_ep: endpoint { remote-endpoint = <&rsnd_h_ep>; }; }; 86 fe_i: port@8 { reg = <8>; fe_i_ep: endpoint { remote-endpoint = <&rsnd_i_ep>; }; }; 87 }; 88 89 ports@1 { 90 #address-cells = <1>; 91 #size-cells = <0>; 92 reg = <1>; 93 /* 94 * BE 95 * 96 * (Y) PCM3168A-p 97 * (Z) PCM3168A-c 98 */ 99 be_y: port@0 { reg = <0>; be_y_ep: endpoint { remote-endpoint = <&pcm3168a_y_ep>; }; }; 100 be_z: port@1 { reg = <1>; be_z_ep: endpoint { remote-endpoint = <&pcm3168a_z_ep>; }; }; 101 }; 102 }; 103 }; 104}; 105 106&pcm3168a { 107 ports { 108 #address-cells = <1>; 109 #size-cells = <0>; 110 111 mclk-fs = <512>; 112 prefix = "pcm3168a"; 113 114 /* 115 * (Y) PCM3168A-p 116 */ 117 port@0 { 118 reg = <0>; 119 convert-channels = <8>; /* to 8ch TDM */ 120 pcm3168a_y_ep: endpoint { 121 remote-endpoint = <&be_y_ep>; 122 clocks = <&clksndsel>; 123 }; 124 }; 125 /* 126 * (Z) PCM3168A-c 127 */ 128 port@1 { 129 reg = <1>; 130 convert-channels = <6>; /* to 6ch TDM */ 131 pcm3168a_z_ep: endpoint { 132 remote-endpoint = <&be_z_ep>; 133 clocks = <&clksndsel>; 134 }; 135 }; 136 }; 137}; 138 139&rcar_sound { 140 ports@1 { 141 #address-cells = <1>; 142 #size-cells = <0>; 143 reg = <1>; 144 145 /* 146 * (C) CPU2 147 */ 148 port@2 { 149 reg = <2>; 150 rsnd_c_ep: endpoint { 151 remote-endpoint = <&fe_c_ep>; 152 bitclock-master; 153 frame-master; 154 playback = <&ssiu30 &ssi3>; 155 }; 156 }; 157 /* 158 * (D) CPU3 159 */ 160 port@3 { 161 reg = <3>; 162 rsnd_d_ep: endpoint { 163 remote-endpoint = <&fe_d_ep>; 164 bitclock-master; 165 frame-master; 166 playback = <&ssiu31 &ssi3>; 167 }; 168 }; 169 /* 170 * (E) CPU4 171 */ 172 port@4 { 173 reg = <4>; 174 rsnd_e_ep: endpoint { 175 remote-endpoint = <&fe_e_ep>; 176 bitclock-master; 177 frame-master; 178 playback = <&ssiu32 &ssi3>; 179 }; 180 }; 181 /* 182 * (F) CPU5 183 */ 184 port@5 { 185 reg = <5>; 186 rsnd_f_ep: endpoint { 187 remote-endpoint = <&fe_f_ep>; 188 bitclock-master; 189 frame-master; 190 playback = <&ssiu33 &ssi3>; 191 }; 192 }; 193 /* 194 * (G) CPU6 195 */ 196 port@6 { 197 reg = <6>; 198 rsnd_g_ep: endpoint { 199 remote-endpoint = <&fe_g_ep>; 200 bitclock-master; 201 frame-master; 202 capture = <&ssiu40 &ssi4>; 203 }; 204 }; 205 /* 206 * (H) CPU7 207 */ 208 port@7 { 209 reg = <7>; 210 rsnd_h_ep: endpoint { 211 remote-endpoint = <&fe_h_ep>; 212 bitclock-master; 213 frame-master; 214 capture = <&ssiu41 &ssi4>; 215 }; 216 }; 217 /* 218 * (I) CPU8 219 */ 220 port@8 { 221 reg = <8>; 222 rsnd_i_ep: endpoint { 223 remote-endpoint = <&fe_i_ep>; 224 bitclock-master; 225 frame-master; 226 capture = <&ssiu42 &ssi4>; 227 }; 228 }; 229 }; 230}; 231