blob: 4cf632bc46215fdadd3674d47d965d960ad8282c [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 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};