xref: /linux/arch/arm64/boot/dts/renesas/ulcb-audio-graph-card2-mix+split.dtsi (revision 0ea5c948cb64bab5bc7a5516774eb8536f05aa0d)
115ec87e0SKuninori Morimoto// SPDX-License-Identifier: GPL-2.0
215ec87e0SKuninori Morimoto/*
315ec87e0SKuninori Morimoto * Device Tree for ULCB + Audio Graph Card2 (MIX + TDM Split)
415ec87e0SKuninori Morimoto *
515ec87e0SKuninori Morimoto * Copyright (C) 2022 Renesas Electronics Corp.
615ec87e0SKuninori Morimoto */
715ec87e0SKuninori Morimoto
815ec87e0SKuninori Morimoto/*
915ec87e0SKuninori Morimoto * Note:
1015ec87e0SKuninori Morimoto * The HDMI output is ignored due to the limited number of subdevices
1115ec87e0SKuninori Morimoto *
1215ec87e0SKuninori Morimoto *	(A) CPU0 (2ch) <----> (2ch) (X) ak4613	(MIX-0)
1315ec87e0SKuninori Morimoto *	(B) CPU1 (2ch)  --/			(MIX-1)
1415ec87e0SKuninori Morimoto *
1515ec87e0SKuninori Morimoto *	(A) aplay   -D plughw:0,0 xxx.wav
1615ec87e0SKuninori Morimoto *	(B) aplay   -D plughw:0,1 xxx.wav
1715ec87e0SKuninori Morimoto *
1815ec87e0SKuninori Morimoto *	(A) arecord -D plughw:0,0 xxx.wav
1915ec87e0SKuninori Morimoto */
2015ec87e0SKuninori Morimoto/ {
2115ec87e0SKuninori Morimoto	sound_card: sound {
2215ec87e0SKuninori Morimoto		compatible = "audio-graph-card2";
23*d70be079SKuninori Morimoto		label = "snd-ulcb-mix";
2415ec87e0SKuninori Morimoto
2515ec87e0SKuninori Morimoto		routing = "ak4613 Playback", "DAI0 Playback",
2615ec87e0SKuninori Morimoto			  "ak4613 Playback", "DAI1 Playback",
2715ec87e0SKuninori Morimoto			  "DAI0 Capture",    "ak4613 Capture";
2815ec87e0SKuninori Morimoto
2915ec87e0SKuninori Morimoto		links = <&fe_a		/* (A) CPU0   */
3015ec87e0SKuninori Morimoto			 &fe_b		/* (B) CPU1   */
3115ec87e0SKuninori Morimoto			 &be_x		/* (X) ak4613 */
3215ec87e0SKuninori Morimoto		>;
3315ec87e0SKuninori Morimoto
3415ec87e0SKuninori Morimoto		dpcm {
3515ec87e0SKuninori Morimoto			#address-cells = <1>;
3615ec87e0SKuninori Morimoto			#size-cells = <0>;
3715ec87e0SKuninori Morimoto
3815ec87e0SKuninori Morimoto			ports@0 {
3915ec87e0SKuninori Morimoto				#address-cells = <1>;
4015ec87e0SKuninori Morimoto				#size-cells = <0>;
4115ec87e0SKuninori Morimoto				reg = <0>;
4215ec87e0SKuninori Morimoto				/*
4315ec87e0SKuninori Morimoto				 * FE
4415ec87e0SKuninori Morimoto				 * (A) CPU0 (MIX-0)
4515ec87e0SKuninori Morimoto				 * (B) CPU1 (MIX-1)
4615ec87e0SKuninori Morimoto				 */
4715ec87e0SKuninori Morimoto				fe_a: port@0 { reg = <0>; fe_a_ep: endpoint { remote-endpoint = <&rsnd_a_ep>; }; };
4815ec87e0SKuninori Morimoto				fe_b: port@1 { reg = <1>; fe_b_ep: endpoint { remote-endpoint = <&rsnd_b_ep>; }; };
4915ec87e0SKuninori Morimoto			};
5015ec87e0SKuninori Morimoto
5115ec87e0SKuninori Morimoto			ports@1 {
5215ec87e0SKuninori Morimoto				reg = <1>;
5315ec87e0SKuninori Morimoto				/*
5415ec87e0SKuninori Morimoto				 * BE
5515ec87e0SKuninori Morimoto				 * (X) ak4613
5615ec87e0SKuninori Morimoto				 */
57*d70be079SKuninori Morimoto				be_x: port { be_x_ep: endpoint { remote-endpoint = <&ak4613_x_ep>; }; };
5815ec87e0SKuninori Morimoto			};
5915ec87e0SKuninori Morimoto		};
6015ec87e0SKuninori Morimoto	};
6115ec87e0SKuninori Morimoto};
6215ec87e0SKuninori Morimoto
6315ec87e0SKuninori Morimoto&ak4613 {
6415ec87e0SKuninori Morimoto	port {
6515ec87e0SKuninori Morimoto		/*
6615ec87e0SKuninori Morimoto		 * (X) ak4613
6715ec87e0SKuninori Morimoto		 */
6815ec87e0SKuninori Morimoto		prefix = "ak4613";
6915ec87e0SKuninori Morimoto		convert-rate = <48000>;
7015ec87e0SKuninori Morimoto
7115ec87e0SKuninori Morimoto		ak4613_x_ep: endpoint {
7215ec87e0SKuninori Morimoto			remote-endpoint = <&be_x_ep>;
7315ec87e0SKuninori Morimoto		};
7415ec87e0SKuninori Morimoto	};
7515ec87e0SKuninori Morimoto};
7615ec87e0SKuninori Morimoto
7715ec87e0SKuninori Morimoto&rcar_sound {
7815ec87e0SKuninori Morimoto	#address-cells = <1>;
7915ec87e0SKuninori Morimoto	#size-cells = <0>;
8015ec87e0SKuninori Morimoto
81*d70be079SKuninori Morimoto	ports@0 {
82*d70be079SKuninori Morimoto		#address-cells = <1>;
83*d70be079SKuninori Morimoto		#size-cells = <0>;
84*d70be079SKuninori Morimoto		reg = <0>;
85*d70be079SKuninori Morimoto
8615ec87e0SKuninori Morimoto		/*
8715ec87e0SKuninori Morimoto		 * (A) CPU0
8815ec87e0SKuninori Morimoto		 */
8915ec87e0SKuninori Morimoto		port@0 {
9015ec87e0SKuninori Morimoto			reg = <0>;
9115ec87e0SKuninori Morimoto			rsnd_a_ep: endpoint {
9215ec87e0SKuninori Morimoto				remote-endpoint = <&fe_a_ep>;
9315ec87e0SKuninori Morimoto				bitclock-master;
9415ec87e0SKuninori Morimoto				frame-master;
9515ec87e0SKuninori Morimoto				playback = <&src1 &ctu02 &mix0 &dvc0 &ssi0>;
9615ec87e0SKuninori Morimoto				capture  = <&ssi1 &src0 &dvc1>;
9715ec87e0SKuninori Morimoto			};
9815ec87e0SKuninori Morimoto		};
9915ec87e0SKuninori Morimoto		/*
10015ec87e0SKuninori Morimoto		 * (B) CPU1
10115ec87e0SKuninori Morimoto		 */
10215ec87e0SKuninori Morimoto		port@1 {
10315ec87e0SKuninori Morimoto			reg = <1>;
10415ec87e0SKuninori Morimoto			rsnd_b_ep: endpoint {
10515ec87e0SKuninori Morimoto				remote-endpoint = <&fe_b_ep>;
10615ec87e0SKuninori Morimoto				bitclock-master;
10715ec87e0SKuninori Morimoto				frame-master;
10815ec87e0SKuninori Morimoto				playback = <&src2 &ctu03 &mix0 &dvc0 &ssi0>;
10915ec87e0SKuninori Morimoto			};
11015ec87e0SKuninori Morimoto		};
11115ec87e0SKuninori Morimoto	};
11215ec87e0SKuninori Morimoto};
113