xref: /linux/arch/arm64/boot/dts/renesas/ulcb-kf-simple-audio-card-mix+split.dtsi (revision 2f24482304ebd32c5aa374f31465b9941a860b92)
1c9d95cf0SKuninori Morimoto// SPDX-License-Identifier: GPL-2.0
2c9d95cf0SKuninori Morimoto/*
3c9d95cf0SKuninori Morimoto * Device Tree for ULCB + Kingfisher + Simple Audio Card (MIX + TDM Split)
4c9d95cf0SKuninori Morimoto *
5c9d95cf0SKuninori Morimoto * Copyright (C) 2022 Renesas Electronics Corp.
6c9d95cf0SKuninori Morimoto */
7c9d95cf0SKuninori Morimoto
8c9d95cf0SKuninori Morimoto/*
9c9d95cf0SKuninori Morimoto * Note:
10c9d95cf0SKuninori Morimoto * The HDMI output is ignored due to the limited number of subdevices
11c9d95cf0SKuninori Morimoto *
12c9d95cf0SKuninori Morimoto *	(A) CPU0 (2ch) <----> (2ch) (X)	ak4613	   (MIX-0)
13c9d95cf0SKuninori Morimoto *	(B) CPU1 (2ch)  --/			   (MIX-1)
14c9d95cf0SKuninori Morimoto *	(C) CPU3 (2ch)  ----> (8ch) (Y)	PCM3168A-p (TDM-0 : 0,1ch)
15c9d95cf0SKuninori Morimoto *	(D) CPU2 (2ch)  --/			   (TDM-1 : 2,3ch)
16c9d95cf0SKuninori Morimoto *	(E) CPU4 (2ch)  --/			   (TDM-2 : 4,5ch)
17c9d95cf0SKuninori Morimoto *	(F) CPU5 (2ch)  --/			   (TDM-3 : 6,7ch)
18*35a1c35eSKuninori Morimoto *	(G) CPU6 (2ch) <----  (6ch) (Z) PCM3168A-c (TDM-a: 0,1ch)
19*35a1c35eSKuninori Morimoto *	(H) CPU7 (2ch) <--/			   (TDM-b: 2,3ch)
20*35a1c35eSKuninori Morimoto *	(I) CPU8 (2ch) <--/			   (TDM-c: 4,5ch)
21c9d95cf0SKuninori Morimoto *
22c9d95cf0SKuninori Morimoto *	(A) aplay   -D plughw:0,0 xxx.wav (MIX-0)
23c9d95cf0SKuninori Morimoto *	(B) aplay   -D plughw:0,1 xxx.wav (MIX-1)
24d70be079SKuninori Morimoto *	(C) aplay   -D plughw:1,0 xxx.wav (TDM-0)
25d70be079SKuninori Morimoto *	(D) aplay   -D plughw:1,1 xxx.wav (TDM-1)
26d70be079SKuninori Morimoto *	(E) aplay   -D plughw:1,2 xxx.wav (TDM-2)
27d70be079SKuninori Morimoto *	(F) aplay   -D plughw:1,3 xxx.wav (TDM-3)
28c9d95cf0SKuninori Morimoto *
29c9d95cf0SKuninori Morimoto *	(A) arecord -D plughw:0,0 xxx.wav
30*35a1c35eSKuninori Morimoto *	(G) arecord -D plughw:1,4 xxx.wav (TDM-a)
31*35a1c35eSKuninori Morimoto *	(H) arecord -D plughw:1,5 xxx.wav (TDM-b)
32*35a1c35eSKuninori Morimoto *	(I) arecord -D plughw:1,6 xxx.wav (TDM-c)
33c9d95cf0SKuninori Morimoto */
34c9d95cf0SKuninori Morimoto
35d70be079SKuninori Morimoto/ {
36d70be079SKuninori Morimoto	sound_card_kf: expand-sound {
37d70be079SKuninori Morimoto		#address-cells = <1>;
38d70be079SKuninori Morimoto		#size-cells = <0>;
39c9d95cf0SKuninori Morimoto
40d70be079SKuninori Morimoto		compatible = "simple-scu-audio-card";
41d70be079SKuninori Morimoto		label = "snd-kf-split";
42d70be079SKuninori Morimoto
43d70be079SKuninori Morimoto		simple-audio-card,routing = "pcm3168a Playback", "DAI2 Playback",
44c9d95cf0SKuninori Morimoto					    "pcm3168a Playback", "DAI3 Playback",
45c9d95cf0SKuninori Morimoto					    "pcm3168a Playback", "DAI4 Playback",
46*35a1c35eSKuninori Morimoto					    "pcm3168a Playback", "DAI5 Playback",
47*35a1c35eSKuninori Morimoto					    "DAI6 Capture",      "pcm3168a Capture",
48*35a1c35eSKuninori Morimoto					    "DAI7 Capture",      "pcm3168a Capture",
49*35a1c35eSKuninori Morimoto					    "DAI8 Capture",      "pcm3168a Capture";
50c9d95cf0SKuninori Morimoto
51d70be079SKuninori Morimoto		simple-audio-card,dai-link@0 {
52c9d95cf0SKuninori Morimoto			#address-cells = <1>;
53c9d95cf0SKuninori Morimoto			#size-cells = <0>;
54d70be079SKuninori Morimoto			reg = <0>;
55c9d95cf0SKuninori Morimoto			convert-channels = <8>; /* to 8ch TDM */
56c9d95cf0SKuninori Morimoto
57c9d95cf0SKuninori Morimoto			/*
58c9d95cf0SKuninori Morimoto			 * (C) CPU2
59c9d95cf0SKuninori Morimoto			 */
60c9d95cf0SKuninori Morimoto			cpu@0 {
61c9d95cf0SKuninori Morimoto				reg = <0>;
62c9d95cf0SKuninori Morimoto				bitclock-master;
63c9d95cf0SKuninori Morimoto				frame-master;
64c9d95cf0SKuninori Morimoto				sound-dai = <&rcar_sound 2>;
65c9d95cf0SKuninori Morimoto			};
66c9d95cf0SKuninori Morimoto			/*
67c9d95cf0SKuninori Morimoto			 * (D) CPU3
68c9d95cf0SKuninori Morimoto			 */
69c9d95cf0SKuninori Morimoto			cpu@1 {
70c9d95cf0SKuninori Morimoto				reg = <1>;
71c9d95cf0SKuninori Morimoto				sound-dai = <&rcar_sound 3>;
72c9d95cf0SKuninori Morimoto			};
73c9d95cf0SKuninori Morimoto			/*
74c9d95cf0SKuninori Morimoto			 * (E) CPU4
75c9d95cf0SKuninori Morimoto			 */
76c9d95cf0SKuninori Morimoto			cpu@2 {
77c9d95cf0SKuninori Morimoto				reg = <2>;
78c9d95cf0SKuninori Morimoto				sound-dai = <&rcar_sound 4>;
79c9d95cf0SKuninori Morimoto			};
80c9d95cf0SKuninori Morimoto			/*
81c9d95cf0SKuninori Morimoto			 * (F) CPU5
82c9d95cf0SKuninori Morimoto			 */
83c9d95cf0SKuninori Morimoto			cpu@3 {
84c9d95cf0SKuninori Morimoto				reg = <3>;
85c9d95cf0SKuninori Morimoto				sound-dai = <&rcar_sound 5>;
86c9d95cf0SKuninori Morimoto			};
87c9d95cf0SKuninori Morimoto			/*
88c9d95cf0SKuninori Morimoto			 * (Y) PCM3168A-p
89c9d95cf0SKuninori Morimoto			 */
90c9d95cf0SKuninori Morimoto			codec {
91c9d95cf0SKuninori Morimoto				prefix = "pcm3168a";
92c9d95cf0SKuninori Morimoto				mclk-fs = <512>;
93c9d95cf0SKuninori Morimoto				sound-dai = <&pcm3168a 0>;
94c9d95cf0SKuninori Morimoto			};
95c9d95cf0SKuninori Morimoto		};
96d70be079SKuninori Morimoto
97d70be079SKuninori Morimoto		simple-audio-card,dai-link@1 {
98*35a1c35eSKuninori Morimoto			#address-cells = <1>;
99*35a1c35eSKuninori Morimoto			#size-cells = <0>;
100d70be079SKuninori Morimoto			reg = <1>;
101*35a1c35eSKuninori Morimoto			convert-channels = <6>; /* to 6ch TDM */
102*35a1c35eSKuninori Morimoto
103c9d95cf0SKuninori Morimoto			/*
104c9d95cf0SKuninori Morimoto			 * (G) CPU6
105c9d95cf0SKuninori Morimoto			 */
106*35a1c35eSKuninori Morimoto			cpu@0 {
107*35a1c35eSKuninori Morimoto				reg = <0>;
108c9d95cf0SKuninori Morimoto				bitclock-master;
109c9d95cf0SKuninori Morimoto				frame-master;
110c9d95cf0SKuninori Morimoto				sound-dai = <&rcar_sound 6>;
111c9d95cf0SKuninori Morimoto			};
112c9d95cf0SKuninori Morimoto			/*
113*35a1c35eSKuninori Morimoto			 * (H) CPU7
114*35a1c35eSKuninori Morimoto			 */
115*35a1c35eSKuninori Morimoto			cpu@1 {
116*35a1c35eSKuninori Morimoto				reg = <1>;
117*35a1c35eSKuninori Morimoto				bitclock-master;
118*35a1c35eSKuninori Morimoto				frame-master;
119*35a1c35eSKuninori Morimoto				sound-dai = <&rcar_sound 7>;
120*35a1c35eSKuninori Morimoto			};
121*35a1c35eSKuninori Morimoto			/*
122*35a1c35eSKuninori Morimoto			 * (I) CPU8
123*35a1c35eSKuninori Morimoto			 */
124*35a1c35eSKuninori Morimoto			cpu@2 {
125*35a1c35eSKuninori Morimoto				reg = <2>;
126*35a1c35eSKuninori Morimoto				bitclock-master;
127*35a1c35eSKuninori Morimoto				frame-master;
128*35a1c35eSKuninori Morimoto				sound-dai = <&rcar_sound 8>;
129*35a1c35eSKuninori Morimoto			};
130*35a1c35eSKuninori Morimoto
131*35a1c35eSKuninori Morimoto			/*
132c9d95cf0SKuninori Morimoto			 * (Z) PCM3168A-c
133c9d95cf0SKuninori Morimoto			 */
134c9d95cf0SKuninori Morimoto			codec {
135c9d95cf0SKuninori Morimoto				prefix = "pcm3168a";
136c9d95cf0SKuninori Morimoto				mclk-fs = <512>;
137c9d95cf0SKuninori Morimoto				sound-dai = <&pcm3168a 1>;
138c9d95cf0SKuninori Morimoto			};
139c9d95cf0SKuninori Morimoto		};
140c9d95cf0SKuninori Morimoto	};
141d70be079SKuninori Morimoto};
142c9d95cf0SKuninori Morimoto
143c9d95cf0SKuninori Morimoto&pcm3168a {
144c9d95cf0SKuninori Morimoto	/*
145c9d95cf0SKuninori Morimoto	 * (Y) PCM3168A-p
146c9d95cf0SKuninori Morimoto	 * (Z) PCM3168A-c
147c9d95cf0SKuninori Morimoto	 */
148c9d95cf0SKuninori Morimoto	#sound-dai-cells = <1>;
149c9d95cf0SKuninori Morimoto};
150c9d95cf0SKuninori Morimoto
151c9d95cf0SKuninori Morimoto&rcar_sound {
152d70be079SKuninori Morimoto	rcar_sound,dai@1 {
153d70be079SKuninori Morimoto		reg = <1>;
154c9d95cf0SKuninori Morimoto
155c9d95cf0SKuninori Morimoto		/* dai0-1 are defined in ulcb.dtsi */
156c9d95cf0SKuninori Morimoto
157c9d95cf0SKuninori Morimoto		/*
158c9d95cf0SKuninori Morimoto		 * (C) CPU2
159c9d95cf0SKuninori Morimoto		 */
160c9d95cf0SKuninori Morimoto		dai2 {
161c9d95cf0SKuninori Morimoto			playback = <&ssiu30 &ssi3>;
162c9d95cf0SKuninori Morimoto		};
163c9d95cf0SKuninori Morimoto		/*
164c9d95cf0SKuninori Morimoto		 * (D) CPU3
165c9d95cf0SKuninori Morimoto		 */
166c9d95cf0SKuninori Morimoto		dai3 {
167c9d95cf0SKuninori Morimoto			playback = <&ssiu31 &ssi3>;
168c9d95cf0SKuninori Morimoto		};
169c9d95cf0SKuninori Morimoto		/*
170c9d95cf0SKuninori Morimoto		 * (E) CPU4
171c9d95cf0SKuninori Morimoto		 */
172c9d95cf0SKuninori Morimoto		dai4 {
173c9d95cf0SKuninori Morimoto			playback = <&ssiu32 &ssi3>;
174c9d95cf0SKuninori Morimoto		};
175c9d95cf0SKuninori Morimoto		/*
176c9d95cf0SKuninori Morimoto		 * (F) CPU5
177c9d95cf0SKuninori Morimoto		 */
178c9d95cf0SKuninori Morimoto		dai5 {
179c9d95cf0SKuninori Morimoto			playback = <&ssiu33 &ssi3>;
180c9d95cf0SKuninori Morimoto		};
181c9d95cf0SKuninori Morimoto		/*
182c9d95cf0SKuninori Morimoto		 * (G) CPU6
183c9d95cf0SKuninori Morimoto		 */
184c9d95cf0SKuninori Morimoto		dai6 {
185*35a1c35eSKuninori Morimoto			capture = <&ssiu40 &ssi4>;
186*35a1c35eSKuninori Morimoto		};
187*35a1c35eSKuninori Morimoto		/*
188*35a1c35eSKuninori Morimoto		 * (H) CPU7
189*35a1c35eSKuninori Morimoto		 */
190*35a1c35eSKuninori Morimoto		dai7 {
191*35a1c35eSKuninori Morimoto			capture = <&ssiu41 &ssi4>;
192*35a1c35eSKuninori Morimoto		};
193*35a1c35eSKuninori Morimoto		/*
194*35a1c35eSKuninori Morimoto		 * (I) CPU8
195*35a1c35eSKuninori Morimoto		 */
196*35a1c35eSKuninori Morimoto		dai8 {
197*35a1c35eSKuninori Morimoto			capture = <&ssiu42 &ssi4>;
198c9d95cf0SKuninori Morimoto		};
199c9d95cf0SKuninori Morimoto	};
200c9d95cf0SKuninori Morimoto};
201