1// SPDX-License-Identifier: GPL-2.0 2/* 3 * Device Tree for ULCB + Kingfisher + Audio Graph 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) CPU2 (2ch) ----> (8ch) (Y) PCM3168A-p (TDM-0 : 0,1ch) 15 * (D) CPU3 (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-scu-card"; 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 40 dais = <&snd_kf1 /* (C) CPU2 */ 41 &snd_kf2 /* (D) CPU3 */ 42 &snd_kf3 /* (E) CPU4 */ 43 &snd_kf4 /* (F) CPU5 */ 44 &snd_kf5 /* (G) GPU6 */ 45 >; 46 }; 47}; 48 49&pcm3168a { 50 ports { 51 #address-cells = <1>; 52 #size-cells = <0>; 53 mclk-fs = <512>; 54 55 /* 56 * (Y) PCM3168A-p 57 */ 58 port@0 { 59 #address-cells = <1>; 60 #size-cells = <0>; 61 reg = <0>; 62 prefix = "pcm3168a"; 63 convert-channels = <8>; /* to 8ch TDM */ 64 65 /* (C) CPU2 -> (Y) PCM3168A-p */ 66 pcm3168a_endpoint_p1: endpoint@0 { 67 reg = <0>; 68 remote-endpoint = <&rsnd_for_pcm3168a_play1>; 69 clocks = <&clksndsel>; 70 }; 71 /* (D) CPU3 -> (Y) PCM3168A-p */ 72 pcm3168a_endpoint_p2: endpoint@1 { 73 reg = <1>; 74 remote-endpoint = <&rsnd_for_pcm3168a_play2>; 75 clocks = <&clksndsel>; 76 }; 77 /* (E) CPU4 -> (Y) PCM3168A-p */ 78 pcm3168a_endpoint_p3: endpoint@2 { 79 reg = <2>; 80 remote-endpoint = <&rsnd_for_pcm3168a_play3>; 81 clocks = <&clksndsel>; 82 }; 83 /* (F) CPU5 -> (Y) PCM3168A-p */ 84 pcm3168a_endpoint_p4: endpoint@3 { 85 reg = <3>; 86 remote-endpoint = <&rsnd_for_pcm3168a_play4>; 87 clocks = <&clksndsel>; 88 }; 89 }; 90 /* 91 * (Z) PCM3168A-c 92 */ 93 port@1 { 94 reg = <1>; 95 /* (G) CPU6 <- PCM3168A-c */ 96 pcm3168a_endpoint_c: endpoint { 97 remote-endpoint = <&rsnd_for_pcm3168a_capture>; 98 clocks = <&clksndsel>; 99 }; 100 }; 101 }; 102}; 103 104&rcar_sound { 105 ports@1 { 106 #address-cells = <1>; 107 #size-cells = <0>; 108 reg = <1>; 109 110 /* 111 * (C) CPU2 112 */ 113 snd_kf1: port@2 { 114 reg = <2>; 115 rsnd_for_pcm3168a_play1: endpoint { 116 remote-endpoint = <&pcm3168a_endpoint_p1>; 117 bitclock-master; 118 frame-master; 119 playback = <&ssiu30 &ssi3>; 120 }; 121 }; 122 /* 123 * (D) CPU3 124 */ 125 snd_kf2: port@3 { 126 reg = <3>; 127 rsnd_for_pcm3168a_play2: endpoint { 128 remote-endpoint = <&pcm3168a_endpoint_p2>; 129 bitclock-master; 130 frame-master; 131 playback = <&ssiu31 &ssi3>; 132 }; 133 }; 134 /* 135 * (E) CPU4 136 */ 137 snd_kf3: port@4 { 138 reg = <4>; 139 rsnd_for_pcm3168a_play3: endpoint { 140 remote-endpoint = <&pcm3168a_endpoint_p3>; 141 bitclock-master; 142 frame-master; 143 playback = <&ssiu32 &ssi3>; 144 }; 145 }; 146 /* 147 * (F) CPU5 148 */ 149 snd_kf4: port@5 { 150 reg = <5>; 151 rsnd_for_pcm3168a_play4: endpoint { 152 remote-endpoint = <&pcm3168a_endpoint_p4>; 153 bitclock-master; 154 frame-master; 155 playback = <&ssiu33 &ssi3>; 156 }; 157 }; 158 /* 159 * (G) CPU6 160 */ 161 snd_kf5: port@6 { 162 reg = <6>; 163 rsnd_for_pcm3168a_capture: endpoint { 164 remote-endpoint = <&pcm3168a_endpoint_c>; 165 bitclock-master; 166 frame-master; 167 dai-tdm-slot-num = <6>; 168 capture = <&ssi4>; 169 }; 170 }; 171 }; 172}; 173