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 (6ch) <---- (6ch) (Z) PCM3168A-c 19 * 20 * (A) aplay -D plughw:0,0 xxx.wav (MIX-0) 21 * (B) aplay -D plughw:0,1 xxx.wav (MIX-1) 22 * (C) aplay -D plughw:1,0 xxx.wav (TDM-0) 23 * (D) aplay -D plughw:1,1 xxx.wav (TDM-1) 24 * (E) aplay -D plughw:1,2 xxx.wav (TDM-2) 25 * (F) aplay -D plughw:1,3 xxx.wav (TDM-3) 26 * 27 * (A) arecord -D plughw:0,0 xxx.wav 28 * (G) arecord -D plughw:1,4 xxx.wav 29 */ 30/ { 31 sound_card_kf: expand-sound { 32 compatible = "audio-graph-card2"; 33 label = "snd-kf-split"; 34 35 routing = "pcm3168a Playback", "DAI2 Playback", 36 "pcm3168a Playback", "DAI3 Playback", 37 "pcm3168a Playback", "DAI4 Playback", 38 "pcm3168a Playback", "DAI5 Playback", 39 "DAI6 Capture", "pcm3168a Capture"; 40 41 links = <&fe_c /* (C) CPU2 */ 42 &fe_d /* (D) CPU3 */ 43 &fe_e /* (E) CPU4 */ 44 &fe_f /* (F) CPU5 */ 45 &rsnd_g /* (G) CPU6 */ 46 &be_y /* (Y) PCM3168A-p */ 47 >; 48 49 dpcm { 50 #address-cells = <1>; 51 #size-cells = <0>; 52 53 ports@0 { 54 #address-cells = <1>; 55 #size-cells = <0>; 56 reg = <0>; 57 58 /* 59 * FE 60 * 61 * (C) CPU2 62 * (D) CPU3 63 * (E) CPU4 64 * (F) CPU5 65 */ 66 fe_c: port@2 { reg = <2>; fe_c_ep: endpoint { remote-endpoint = <&rsnd_c_ep>; }; }; 67 fe_d: port@3 { reg = <3>; fe_d_ep: endpoint { remote-endpoint = <&rsnd_d_ep>; }; }; 68 fe_e: port@4 { reg = <4>; fe_e_ep: endpoint { remote-endpoint = <&rsnd_e_ep>; }; }; 69 fe_f: port@5 { reg = <5>; fe_f_ep: endpoint { remote-endpoint = <&rsnd_f_ep>; }; }; 70 }; 71 72 ports@1 { 73 reg = <1>; 74 /* 75 * BE 76 * 77 * (Y) PCM3168A-p 78 */ 79 be_y: port { be_y_ep: endpoint { remote-endpoint = <&pcm3168a_y_ep>; }; }; 80 }; 81 }; 82 }; 83}; 84 85&pcm3168a { 86 ports { 87 #address-cells = <1>; 88 #size-cells = <0>; 89 90 mclk-fs = <512>; 91 prefix = "pcm3168a"; 92 93 /* 94 * (Y) PCM3168A-p 95 */ 96 port@0 { 97 reg = <0>; 98 convert-channels = <8>; /* to 8ch TDM */ 99 pcm3168a_y_ep: endpoint { 100 remote-endpoint = <&be_y_ep>; 101 clocks = <&clksndsel>; 102 }; 103 }; 104 /* 105 * (Z) PCM3168A-c 106 */ 107 port@1 { 108 reg = <1>; 109 pcm3168a_z_ep: endpoint { 110 remote-endpoint = <&rsnd_g_ep>; 111 clocks = <&clksndsel>; 112 }; 113 }; 114 }; 115}; 116 117&rcar_sound { 118 ports@1 { 119 #address-cells = <1>; 120 #size-cells = <0>; 121 reg = <1>; 122 123 /* 124 * (C) CPU2 125 */ 126 port@2 { 127 reg = <2>; 128 rsnd_c_ep: endpoint { 129 remote-endpoint = <&fe_c_ep>; 130 bitclock-master; 131 frame-master; 132 playback = <&ssiu30 &ssi3>; 133 }; 134 }; 135 /* 136 * (D) CPU3 137 */ 138 port@3 { 139 reg = <3>; 140 rsnd_d_ep: endpoint { 141 remote-endpoint = <&fe_d_ep>; 142 bitclock-master; 143 frame-master; 144 playback = <&ssiu31 &ssi3>; 145 }; 146 }; 147 /* 148 * (E) CPU4 149 */ 150 port@4 { 151 reg = <4>; 152 rsnd_e_ep: endpoint { 153 remote-endpoint = <&fe_e_ep>; 154 bitclock-master; 155 frame-master; 156 playback = <&ssiu32 &ssi3>; 157 }; 158 }; 159 /* 160 * (F) CPU5 161 */ 162 port@5 { 163 reg = <5>; 164 rsnd_f_ep: endpoint { 165 remote-endpoint = <&fe_f_ep>; 166 bitclock-master; 167 frame-master; 168 playback = <&ssiu33 &ssi3>; 169 }; 170 }; 171 /* 172 * (G) CPU6 173 */ 174 rsnd_g: port@6 { 175 reg = <6>; 176 rsnd_g_ep: endpoint { 177 remote-endpoint = <&pcm3168a_z_ep>; 178 bitclock-master; 179 frame-master; 180 capture = <&ssi4>; 181 }; 182 }; 183 }; 184}; 185