xref: /freebsd/sys/contrib/device-tree/src/arm64/renesas/ulcb-kf-audio-graph-card2-mix+split.dtsi (revision a7db82cfd940431037e748280825931a46ed2d12)
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