xref: /freebsd/sys/contrib/device-tree/src/arm64/renesas/ulcb-audio-graph-card2-mix+split.dtsi (revision 84943d6f38e936ac3b7a3947ca26eeb27a39f938)
1cb7aa33aSEmmanuel Vadot// SPDX-License-Identifier: GPL-2.0
2cb7aa33aSEmmanuel Vadot/*
3cb7aa33aSEmmanuel Vadot * Device Tree for ULCB + Audio Graph Card2 (MIX + TDM Split)
4cb7aa33aSEmmanuel Vadot *
5cb7aa33aSEmmanuel Vadot * Copyright (C) 2022 Renesas Electronics Corp.
6cb7aa33aSEmmanuel Vadot */
7cb7aa33aSEmmanuel Vadot
8cb7aa33aSEmmanuel Vadot/*
9cb7aa33aSEmmanuel Vadot * Note:
10cb7aa33aSEmmanuel Vadot * The HDMI output is ignored due to the limited number of subdevices
11cb7aa33aSEmmanuel Vadot *
12cb7aa33aSEmmanuel Vadot *	(A) CPU0 (2ch) <----> (2ch) (X) ak4613	(MIX-0)
13cb7aa33aSEmmanuel Vadot *	(B) CPU1 (2ch)  --/			(MIX-1)
14cb7aa33aSEmmanuel Vadot *
15cb7aa33aSEmmanuel Vadot *	(A) aplay   -D plughw:0,0 xxx.wav
16cb7aa33aSEmmanuel Vadot *	(B) aplay   -D plughw:0,1 xxx.wav
17cb7aa33aSEmmanuel Vadot *
18cb7aa33aSEmmanuel Vadot *	(A) arecord -D plughw:0,0 xxx.wav
19cb7aa33aSEmmanuel Vadot */
20cb7aa33aSEmmanuel Vadot/ {
21cb7aa33aSEmmanuel Vadot	sound_card: sound {
22cb7aa33aSEmmanuel Vadot		compatible = "audio-graph-card2";
23*84943d6fSEmmanuel Vadot		label = "snd-ulcb-mix";
24cb7aa33aSEmmanuel Vadot
25cb7aa33aSEmmanuel Vadot		routing = "ak4613 Playback", "DAI0 Playback",
26cb7aa33aSEmmanuel Vadot			  "ak4613 Playback", "DAI1 Playback",
27cb7aa33aSEmmanuel Vadot			  "DAI0 Capture",    "ak4613 Capture";
28cb7aa33aSEmmanuel Vadot
29cb7aa33aSEmmanuel Vadot		links = <&fe_a		/* (A) CPU0   */
30cb7aa33aSEmmanuel Vadot			 &fe_b		/* (B) CPU1   */
31cb7aa33aSEmmanuel Vadot			 &be_x		/* (X) ak4613 */
32cb7aa33aSEmmanuel Vadot		>;
33cb7aa33aSEmmanuel Vadot
34cb7aa33aSEmmanuel Vadot		dpcm {
35cb7aa33aSEmmanuel Vadot			#address-cells = <1>;
36cb7aa33aSEmmanuel Vadot			#size-cells = <0>;
37cb7aa33aSEmmanuel Vadot
38cb7aa33aSEmmanuel Vadot			ports@0 {
39cb7aa33aSEmmanuel Vadot				#address-cells = <1>;
40cb7aa33aSEmmanuel Vadot				#size-cells = <0>;
41cb7aa33aSEmmanuel Vadot				reg = <0>;
42cb7aa33aSEmmanuel Vadot				/*
43cb7aa33aSEmmanuel Vadot				 * FE
44cb7aa33aSEmmanuel Vadot				 * (A) CPU0 (MIX-0)
45cb7aa33aSEmmanuel Vadot				 * (B) CPU1 (MIX-1)
46cb7aa33aSEmmanuel Vadot				 */
47cb7aa33aSEmmanuel Vadot				fe_a: port@0 { reg = <0>; fe_a_ep: endpoint { remote-endpoint = <&rsnd_a_ep>; }; };
48cb7aa33aSEmmanuel Vadot				fe_b: port@1 { reg = <1>; fe_b_ep: endpoint { remote-endpoint = <&rsnd_b_ep>; }; };
49cb7aa33aSEmmanuel Vadot			};
50cb7aa33aSEmmanuel Vadot
51cb7aa33aSEmmanuel Vadot			ports@1 {
52cb7aa33aSEmmanuel Vadot				reg = <1>;
53cb7aa33aSEmmanuel Vadot				/*
54cb7aa33aSEmmanuel Vadot				 * BE
55cb7aa33aSEmmanuel Vadot				 * (X) ak4613
56cb7aa33aSEmmanuel Vadot				 */
57*84943d6fSEmmanuel Vadot				be_x: port { be_x_ep: endpoint { remote-endpoint = <&ak4613_x_ep>; }; };
58cb7aa33aSEmmanuel Vadot			};
59cb7aa33aSEmmanuel Vadot		};
60cb7aa33aSEmmanuel Vadot	};
61cb7aa33aSEmmanuel Vadot};
62cb7aa33aSEmmanuel Vadot
63cb7aa33aSEmmanuel Vadot&ak4613 {
64cb7aa33aSEmmanuel Vadot	port {
65cb7aa33aSEmmanuel Vadot		/*
66cb7aa33aSEmmanuel Vadot		 * (X) ak4613
67cb7aa33aSEmmanuel Vadot		 */
68cb7aa33aSEmmanuel Vadot		prefix = "ak4613";
69cb7aa33aSEmmanuel Vadot		convert-rate = <48000>;
70cb7aa33aSEmmanuel Vadot
71cb7aa33aSEmmanuel Vadot		ak4613_x_ep: endpoint {
72cb7aa33aSEmmanuel Vadot			remote-endpoint = <&be_x_ep>;
73cb7aa33aSEmmanuel Vadot		};
74cb7aa33aSEmmanuel Vadot	};
75cb7aa33aSEmmanuel Vadot};
76cb7aa33aSEmmanuel Vadot
77cb7aa33aSEmmanuel Vadot&rcar_sound {
78cb7aa33aSEmmanuel Vadot	#address-cells = <1>;
79cb7aa33aSEmmanuel Vadot	#size-cells = <0>;
80cb7aa33aSEmmanuel Vadot
81*84943d6fSEmmanuel Vadot	ports@0 {
82*84943d6fSEmmanuel Vadot		#address-cells = <1>;
83*84943d6fSEmmanuel Vadot		#size-cells = <0>;
84*84943d6fSEmmanuel Vadot		reg = <0>;
85*84943d6fSEmmanuel Vadot
86cb7aa33aSEmmanuel Vadot		/*
87cb7aa33aSEmmanuel Vadot		 * (A) CPU0
88cb7aa33aSEmmanuel Vadot		 */
89cb7aa33aSEmmanuel Vadot		port@0 {
90cb7aa33aSEmmanuel Vadot			reg = <0>;
91cb7aa33aSEmmanuel Vadot			rsnd_a_ep: endpoint {
92cb7aa33aSEmmanuel Vadot				remote-endpoint = <&fe_a_ep>;
93cb7aa33aSEmmanuel Vadot				bitclock-master;
94cb7aa33aSEmmanuel Vadot				frame-master;
95cb7aa33aSEmmanuel Vadot				playback = <&src1 &ctu02 &mix0 &dvc0 &ssi0>;
96cb7aa33aSEmmanuel Vadot				capture  = <&ssi1 &src0 &dvc1>;
97cb7aa33aSEmmanuel Vadot			};
98cb7aa33aSEmmanuel Vadot		};
99cb7aa33aSEmmanuel Vadot		/*
100cb7aa33aSEmmanuel Vadot		 * (B) CPU1
101cb7aa33aSEmmanuel Vadot		 */
102cb7aa33aSEmmanuel Vadot		port@1 {
103cb7aa33aSEmmanuel Vadot			reg = <1>;
104cb7aa33aSEmmanuel Vadot			rsnd_b_ep: endpoint {
105cb7aa33aSEmmanuel Vadot				remote-endpoint = <&fe_b_ep>;
106cb7aa33aSEmmanuel Vadot				bitclock-master;
107cb7aa33aSEmmanuel Vadot				frame-master;
108cb7aa33aSEmmanuel Vadot				playback = <&src2 &ctu03 &mix0 &dvc0 &ssi0>;
109cb7aa33aSEmmanuel Vadot			};
110cb7aa33aSEmmanuel Vadot		};
111cb7aa33aSEmmanuel Vadot	};
112cb7aa33aSEmmanuel Vadot};
113