Linux 6.7-rc7
[linux-modified.git] / arch / arm64 / boot / dts / renesas / ulcb-kf-audio-graph-card2-mix+split.dtsi
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 };