xref: /openbmc/linux/scripts/dtc/include-prefixes/arm64/renesas/ulcb-kf-audio-graph-card2-mix+split.dtsi (revision 9a87ffc99ec8eb8d35eed7c4f816d75f5cc9662e)
1*15ec87e0SKuninori Morimoto// SPDX-License-Identifier: GPL-2.0
2*15ec87e0SKuninori Morimoto/*
3*15ec87e0SKuninori Morimoto * Device Tree for ULCB + Kingfisher + Audio Graph Card2 (MIX + TDM Split)
4*15ec87e0SKuninori Morimoto *
5*15ec87e0SKuninori Morimoto * Copyright (C) 2022 Renesas Electronics Corp.
6*15ec87e0SKuninori Morimoto */
7*15ec87e0SKuninori Morimoto
8*15ec87e0SKuninori Morimoto/*
9*15ec87e0SKuninori Morimoto * Note:
10*15ec87e0SKuninori Morimoto * The HDMI output is ignored due to the limited number of subdevices
11*15ec87e0SKuninori Morimoto *
12*15ec87e0SKuninori Morimoto *	(A) CPU0 (2ch) <----> (2ch) (X)	ak4613	   (MIX-0)
13*15ec87e0SKuninori Morimoto *	(B) CPU1 (2ch)  --/			   (MIX-1)
14*15ec87e0SKuninori Morimoto *	(C) CPU3 (2ch)  ----> (8ch) (Y)	PCM3168A-p (TDM-0 : 0,1ch)
15*15ec87e0SKuninori Morimoto *	(D) CPU2 (2ch)  --/			   (TDM-1 : 2,3ch)
16*15ec87e0SKuninori Morimoto *	(E) CPU4 (2ch)  --/			   (TDM-2 : 4,5ch)
17*15ec87e0SKuninori Morimoto *	(F) CPU5 (2ch)  --/			   (TDM-3 : 6,7ch)
18*15ec87e0SKuninori Morimoto *	(G) CPU6 (6ch) <----  (6ch) (Z)	PCM3168A-c
19*15ec87e0SKuninori Morimoto *
20*15ec87e0SKuninori Morimoto *	(A) aplay   -D plughw:0,0 xxx.wav (MIX-0)
21*15ec87e0SKuninori Morimoto *	(B) aplay   -D plughw:0,1 xxx.wav (MIX-1)
22*15ec87e0SKuninori Morimoto *	(C) aplay   -D plughw:0,2 xxx.wav (TDM-0)
23*15ec87e0SKuninori Morimoto *	(D) aplay   -D plughw:0,3 xxx.wav (TDM-1)
24*15ec87e0SKuninori Morimoto *	(E) aplay   -D plughw:0,4 xxx.wav (TDM-2)
25*15ec87e0SKuninori Morimoto *	(F) aplay   -D plughw:0,5 xxx.wav (TDM-3)
26*15ec87e0SKuninori Morimoto *
27*15ec87e0SKuninori Morimoto *	(A) arecord -D plughw:0,0 xxx.wav
28*15ec87e0SKuninori Morimoto *	(G) arecord -D plughw:0,6 xxx.wav
29*15ec87e0SKuninori Morimoto */
30*15ec87e0SKuninori Morimoto&sound_card {
31*15ec87e0SKuninori Morimoto	routing = "ak4613 Playback",   "DAI0 Playback",
32*15ec87e0SKuninori Morimoto		  "ak4613 Playback",   "DAI1 Playback",
33*15ec87e0SKuninori Morimoto		  "DAI0 Capture",      "ak4613 Capture",
34*15ec87e0SKuninori Morimoto		  "pcm3168a Playback", "DAI2 Playback",
35*15ec87e0SKuninori Morimoto		  "pcm3168a Playback", "DAI3 Playback",
36*15ec87e0SKuninori Morimoto		  "pcm3168a Playback", "DAI4 Playback",
37*15ec87e0SKuninori Morimoto		  "pcm3168a Playback", "DAI5 Playback",
38*15ec87e0SKuninori Morimoto		  "DAI6 Capture",      "pcm3168a Capture";
39*15ec87e0SKuninori Morimoto
40*15ec87e0SKuninori Morimoto	/delete-property/ dais;
41*15ec87e0SKuninori Morimoto	links = <&fe_a		/* (A) CPU0	  */
42*15ec87e0SKuninori Morimoto		 &fe_b		/* (B) CPU1	  */
43*15ec87e0SKuninori Morimoto		 &fe_c		/* (C) CPU2	  */
44*15ec87e0SKuninori Morimoto		 &fe_d		/* (D) CPU3	  */
45*15ec87e0SKuninori Morimoto		 &fe_e		/* (E) CPU4	  */
46*15ec87e0SKuninori Morimoto		 &fe_f		/* (F) CPU5	  */
47*15ec87e0SKuninori Morimoto		 &rsnd_g	/* (G) CPU6	  */
48*15ec87e0SKuninori Morimoto		 &be_x		/* (X) ak4613	  */
49*15ec87e0SKuninori Morimoto		 &be_y		/* (Y) PCM3168A-p */
50*15ec87e0SKuninori Morimoto	>;
51*15ec87e0SKuninori Morimoto
52*15ec87e0SKuninori Morimoto	dpcm {
53*15ec87e0SKuninori Morimoto		ports@0 {
54*15ec87e0SKuninori Morimoto		/*
55*15ec87e0SKuninori Morimoto		 * FE
56*15ec87e0SKuninori Morimoto		 *
57*15ec87e0SKuninori Morimoto		 * (A)/(B) are defined on ulcb
58*15ec87e0SKuninori Morimoto		 * (C) CPU2
59*15ec87e0SKuninori Morimoto		 * (D) CPU3
60*15ec87e0SKuninori Morimoto		 * (E) CPU4
61*15ec87e0SKuninori Morimoto		 * (F) CPU5
62*15ec87e0SKuninori Morimoto		 */
63*15ec87e0SKuninori Morimoto		fe_c:	port@2 { reg = <2>; fe_c_ep: endpoint { remote-endpoint = <&rsnd_c_ep>; }; };
64*15ec87e0SKuninori Morimoto		fe_d:	port@3 { reg = <3>; fe_d_ep: endpoint { remote-endpoint = <&rsnd_d_ep>; }; };
65*15ec87e0SKuninori Morimoto		fe_e:	port@4 { reg = <4>; fe_e_ep: endpoint { remote-endpoint = <&rsnd_e_ep>; }; };
66*15ec87e0SKuninori Morimoto		fe_f:	port@5 { reg = <5>; fe_f_ep: endpoint { remote-endpoint = <&rsnd_f_ep>; }; };
67*15ec87e0SKuninori Morimoto		};
68*15ec87e0SKuninori Morimoto
69*15ec87e0SKuninori Morimoto		ports@1 {
70*15ec87e0SKuninori Morimoto		/*
71*15ec87e0SKuninori Morimoto		 * BE
72*15ec87e0SKuninori Morimoto		 *
73*15ec87e0SKuninori Morimoto		 * (X) is defined on ulcb
74*15ec87e0SKuninori Morimoto		 * (Y) PCM3168A-p
75*15ec87e0SKuninori Morimoto		 */
76*15ec87e0SKuninori Morimoto		be_y:	port@1 { reg = <1>; be_y_ep: endpoint { remote-endpoint = <&pcm3168a_y_ep>; }; };
77*15ec87e0SKuninori Morimoto		};
78*15ec87e0SKuninori Morimoto	};
79*15ec87e0SKuninori Morimoto};
80*15ec87e0SKuninori Morimoto
81*15ec87e0SKuninori Morimoto&pcm3168a {
82*15ec87e0SKuninori Morimoto	ports {
83*15ec87e0SKuninori Morimoto		#address-cells = <1>;
84*15ec87e0SKuninori Morimoto		#size-cells = <0>;
85*15ec87e0SKuninori Morimoto
86*15ec87e0SKuninori Morimoto		mclk-fs = <512>;
87*15ec87e0SKuninori Morimoto		prefix = "pcm3168a";
88*15ec87e0SKuninori Morimoto
89*15ec87e0SKuninori Morimoto		/*
90*15ec87e0SKuninori Morimoto		 * (Y) PCM3168A-p
91*15ec87e0SKuninori Morimoto		 */
92*15ec87e0SKuninori Morimoto		port@0 {
93*15ec87e0SKuninori Morimoto			reg = <0>;
94*15ec87e0SKuninori Morimoto			convert-channels = <8>; /* to 8ch TDM */
95*15ec87e0SKuninori Morimoto			pcm3168a_y_ep: endpoint {
96*15ec87e0SKuninori Morimoto				remote-endpoint = <&be_y_ep>;
97*15ec87e0SKuninori Morimoto				clocks = <&clksndsel>;
98*15ec87e0SKuninori Morimoto			};
99*15ec87e0SKuninori Morimoto		};
100*15ec87e0SKuninori Morimoto		/*
101*15ec87e0SKuninori Morimoto		 * (Z) PCM3168A-c
102*15ec87e0SKuninori Morimoto		 */
103*15ec87e0SKuninori Morimoto		port@1 {
104*15ec87e0SKuninori Morimoto			reg = <1>;
105*15ec87e0SKuninori Morimoto			pcm3168a_z_ep: endpoint {
106*15ec87e0SKuninori Morimoto				remote-endpoint = <&rsnd_g_ep>;
107*15ec87e0SKuninori Morimoto				clocks = <&clksndsel>;
108*15ec87e0SKuninori Morimoto			};
109*15ec87e0SKuninori Morimoto		};
110*15ec87e0SKuninori Morimoto	};
111*15ec87e0SKuninori Morimoto};
112*15ec87e0SKuninori Morimoto
113*15ec87e0SKuninori Morimoto&rcar_sound {
114*15ec87e0SKuninori Morimoto	ports {
115*15ec87e0SKuninori Morimoto		/* (A)/(B) are defined in ulcb.dtsi */
116*15ec87e0SKuninori Morimoto
117*15ec87e0SKuninori Morimoto		/*
118*15ec87e0SKuninori Morimoto		 * (C) CPU2
119*15ec87e0SKuninori Morimoto		 */
120*15ec87e0SKuninori Morimoto		port@2 {
121*15ec87e0SKuninori Morimoto			reg = <2>;
122*15ec87e0SKuninori Morimoto			rsnd_c_ep: endpoint {
123*15ec87e0SKuninori Morimoto				remote-endpoint = <&fe_c_ep>;
124*15ec87e0SKuninori Morimoto				bitclock-master;
125*15ec87e0SKuninori Morimoto				frame-master;
126*15ec87e0SKuninori Morimoto				playback = <&ssiu30 &ssi3>;
127*15ec87e0SKuninori Morimoto			};
128*15ec87e0SKuninori Morimoto		};
129*15ec87e0SKuninori Morimoto		/*
130*15ec87e0SKuninori Morimoto		 * (D) CPU3
131*15ec87e0SKuninori Morimoto		 */
132*15ec87e0SKuninori Morimoto		port@3 {
133*15ec87e0SKuninori Morimoto			reg = <3>;
134*15ec87e0SKuninori Morimoto			rsnd_d_ep: endpoint {
135*15ec87e0SKuninori Morimoto				remote-endpoint = <&fe_d_ep>;
136*15ec87e0SKuninori Morimoto				bitclock-master;
137*15ec87e0SKuninori Morimoto				frame-master;
138*15ec87e0SKuninori Morimoto				playback = <&ssiu31 &ssi3>;
139*15ec87e0SKuninori Morimoto			};
140*15ec87e0SKuninori Morimoto		};
141*15ec87e0SKuninori Morimoto		/*
142*15ec87e0SKuninori Morimoto		 * (E) CPU4
143*15ec87e0SKuninori Morimoto		 */
144*15ec87e0SKuninori Morimoto		port@4 {
145*15ec87e0SKuninori Morimoto			reg = <4>;
146*15ec87e0SKuninori Morimoto			rsnd_e_ep: endpoint {
147*15ec87e0SKuninori Morimoto				remote-endpoint = <&fe_e_ep>;
148*15ec87e0SKuninori Morimoto				bitclock-master;
149*15ec87e0SKuninori Morimoto				frame-master;
150*15ec87e0SKuninori Morimoto				playback = <&ssiu32 &ssi3>;
151*15ec87e0SKuninori Morimoto			};
152*15ec87e0SKuninori Morimoto		};
153*15ec87e0SKuninori Morimoto		/*
154*15ec87e0SKuninori Morimoto		 * (F) CPU5
155*15ec87e0SKuninori Morimoto		 */
156*15ec87e0SKuninori Morimoto		port@5 {
157*15ec87e0SKuninori Morimoto			reg = <5>;
158*15ec87e0SKuninori Morimoto			rsnd_f_ep: endpoint {
159*15ec87e0SKuninori Morimoto				remote-endpoint = <&fe_f_ep>;
160*15ec87e0SKuninori Morimoto				bitclock-master;
161*15ec87e0SKuninori Morimoto				frame-master;
162*15ec87e0SKuninori Morimoto				playback = <&ssiu33 &ssi3>;
163*15ec87e0SKuninori Morimoto			};
164*15ec87e0SKuninori Morimoto		};
165*15ec87e0SKuninori Morimoto		/*
166*15ec87e0SKuninori Morimoto		 * (G) CPU6
167*15ec87e0SKuninori Morimoto		 */
168*15ec87e0SKuninori Morimoto		rsnd_g: port@6 {
169*15ec87e0SKuninori Morimoto			reg = <6>;
170*15ec87e0SKuninori Morimoto			rsnd_g_ep: endpoint {
171*15ec87e0SKuninori Morimoto				remote-endpoint = <&pcm3168a_z_ep>;
172*15ec87e0SKuninori Morimoto				bitclock-master;
173*15ec87e0SKuninori Morimoto				frame-master;
174*15ec87e0SKuninori Morimoto				capture = <&ssi4>;
175*15ec87e0SKuninori Morimoto			};
176*15ec87e0SKuninori Morimoto		};
177*15ec87e0SKuninori Morimoto	};
178*15ec87e0SKuninori Morimoto};
179