blob: 8ae6af1af094906fcc4fbeb8557df6dafe621199 [file] [log] [blame]
Tom Rini53633a82024-02-29 12:33:36 -05001// 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};