xref: /openbmc/linux/arch/arm64/boot/dts/renesas/ulcb-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 + 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 *
15*15ec87e0SKuninori Morimoto *	(A) aplay   -D plughw:0,0 xxx.wav
16*15ec87e0SKuninori Morimoto *	(B) aplay   -D plughw:0,1 xxx.wav
17*15ec87e0SKuninori Morimoto *
18*15ec87e0SKuninori Morimoto *	(A) arecord -D plughw:0,0 xxx.wav
19*15ec87e0SKuninori Morimoto */
20*15ec87e0SKuninori Morimoto/ {
21*15ec87e0SKuninori Morimoto	sound_card: sound {
22*15ec87e0SKuninori Morimoto		compatible = "audio-graph-card2";
23*15ec87e0SKuninori Morimoto		label = "rcar-sound";
24*15ec87e0SKuninori Morimoto
25*15ec87e0SKuninori Morimoto		routing = "ak4613 Playback", "DAI0 Playback",
26*15ec87e0SKuninori Morimoto			  "ak4613 Playback", "DAI1 Playback",
27*15ec87e0SKuninori Morimoto			  "DAI0 Capture",    "ak4613 Capture";
28*15ec87e0SKuninori Morimoto
29*15ec87e0SKuninori Morimoto		/delete-property/ dais;
30*15ec87e0SKuninori Morimoto		links = <&fe_a		/* (A) CPU0   */
31*15ec87e0SKuninori Morimoto			 &fe_b		/* (B) CPU1   */
32*15ec87e0SKuninori Morimoto			 &be_x		/* (X) ak4613 */
33*15ec87e0SKuninori Morimoto		>;
34*15ec87e0SKuninori Morimoto
35*15ec87e0SKuninori Morimoto		dpcm {
36*15ec87e0SKuninori Morimoto			#address-cells = <1>;
37*15ec87e0SKuninori Morimoto			#size-cells = <0>;
38*15ec87e0SKuninori Morimoto
39*15ec87e0SKuninori Morimoto			ports@0 {
40*15ec87e0SKuninori Morimoto				#address-cells = <1>;
41*15ec87e0SKuninori Morimoto				#size-cells = <0>;
42*15ec87e0SKuninori Morimoto				reg = <0>;
43*15ec87e0SKuninori Morimoto				/*
44*15ec87e0SKuninori Morimoto				 * FE
45*15ec87e0SKuninori Morimoto				 * (A) CPU0 (MIX-0)
46*15ec87e0SKuninori Morimoto				 * (B) CPU1 (MIX-1)
47*15ec87e0SKuninori Morimoto				 */
48*15ec87e0SKuninori Morimoto				fe_a: port@0 { reg = <0>; fe_a_ep: endpoint { remote-endpoint = <&rsnd_a_ep>; }; };
49*15ec87e0SKuninori Morimoto				fe_b: port@1 { reg = <1>; fe_b_ep: endpoint { remote-endpoint = <&rsnd_b_ep>; }; };
50*15ec87e0SKuninori Morimoto			};
51*15ec87e0SKuninori Morimoto
52*15ec87e0SKuninori Morimoto			ports@1 {
53*15ec87e0SKuninori Morimoto				#address-cells = <1>;
54*15ec87e0SKuninori Morimoto				#size-cells = <0>;
55*15ec87e0SKuninori Morimoto				reg = <1>;
56*15ec87e0SKuninori Morimoto				/*
57*15ec87e0SKuninori Morimoto				 * BE
58*15ec87e0SKuninori Morimoto				 * (X) ak4613
59*15ec87e0SKuninori Morimoto				 */
60*15ec87e0SKuninori Morimoto				be_x: port@0 { reg = <0>; be_x_ep: endpoint { remote-endpoint = <&ak4613_x_ep>; }; };
61*15ec87e0SKuninori Morimoto			};
62*15ec87e0SKuninori Morimoto		};
63*15ec87e0SKuninori Morimoto	};
64*15ec87e0SKuninori Morimoto};
65*15ec87e0SKuninori Morimoto
66*15ec87e0SKuninori Morimoto&ak4613 {
67*15ec87e0SKuninori Morimoto	port {
68*15ec87e0SKuninori Morimoto		/*
69*15ec87e0SKuninori Morimoto		 * (X) ak4613
70*15ec87e0SKuninori Morimoto		 */
71*15ec87e0SKuninori Morimoto		prefix = "ak4613";
72*15ec87e0SKuninori Morimoto		convert-rate = <48000>;
73*15ec87e0SKuninori Morimoto
74*15ec87e0SKuninori Morimoto		ak4613_x_ep: endpoint {
75*15ec87e0SKuninori Morimoto			remote-endpoint = <&be_x_ep>;
76*15ec87e0SKuninori Morimoto		};
77*15ec87e0SKuninori Morimoto	};
78*15ec87e0SKuninori Morimoto};
79*15ec87e0SKuninori Morimoto
80*15ec87e0SKuninori Morimoto&rcar_sound {
81*15ec87e0SKuninori Morimoto	ports {
82*15ec87e0SKuninori Morimoto		#address-cells = <1>;
83*15ec87e0SKuninori Morimoto		#size-cells = <0>;
84*15ec87e0SKuninori Morimoto
85*15ec87e0SKuninori Morimoto		/*
86*15ec87e0SKuninori Morimoto		 * (A) CPU0
87*15ec87e0SKuninori Morimoto		 */
88*15ec87e0SKuninori Morimoto		port@0 {
89*15ec87e0SKuninori Morimoto			reg = <0>;
90*15ec87e0SKuninori Morimoto			rsnd_a_ep: endpoint {
91*15ec87e0SKuninori Morimoto				remote-endpoint = <&fe_a_ep>;
92*15ec87e0SKuninori Morimoto				bitclock-master;
93*15ec87e0SKuninori Morimoto				frame-master;
94*15ec87e0SKuninori Morimoto				playback = <&src1 &ctu02 &mix0 &dvc0 &ssi0>;
95*15ec87e0SKuninori Morimoto				capture  = <&ssi1 &src0 &dvc1>;
96*15ec87e0SKuninori Morimoto			};
97*15ec87e0SKuninori Morimoto		};
98*15ec87e0SKuninori Morimoto		/*
99*15ec87e0SKuninori Morimoto		 * (B) CPU1
100*15ec87e0SKuninori Morimoto		 */
101*15ec87e0SKuninori Morimoto		port@1 {
102*15ec87e0SKuninori Morimoto			reg = <1>;
103*15ec87e0SKuninori Morimoto			rsnd_b_ep: endpoint {
104*15ec87e0SKuninori Morimoto				remote-endpoint = <&fe_b_ep>;
105*15ec87e0SKuninori Morimoto				bitclock-master;
106*15ec87e0SKuninori Morimoto				frame-master;
107*15ec87e0SKuninori Morimoto				playback = <&src2 &ctu03 &mix0 &dvc0 &ssi0>;
108*15ec87e0SKuninori Morimoto			};
109*15ec87e0SKuninori Morimoto		};
110*15ec87e0SKuninori Morimoto	};
111*15ec87e0SKuninori Morimoto};
112