162306a36Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0
262306a36Sopenharmony_ci/*
362306a36Sopenharmony_ci * Device Tree for ULCB + Audio Graph Card2 (MIX + TDM Split)
462306a36Sopenharmony_ci *
562306a36Sopenharmony_ci * Copyright (C) 2022 Renesas Electronics Corp.
662306a36Sopenharmony_ci */
762306a36Sopenharmony_ci
862306a36Sopenharmony_ci/*
962306a36Sopenharmony_ci * Note:
1062306a36Sopenharmony_ci * The HDMI output is ignored due to the limited number of subdevices
1162306a36Sopenharmony_ci *
1262306a36Sopenharmony_ci *	(A) CPU0 (2ch) <----> (2ch) (X) ak4613	(MIX-0)
1362306a36Sopenharmony_ci *	(B) CPU1 (2ch)  --/			(MIX-1)
1462306a36Sopenharmony_ci *
1562306a36Sopenharmony_ci *	(A) aplay   -D plughw:0,0 xxx.wav
1662306a36Sopenharmony_ci *	(B) aplay   -D plughw:0,1 xxx.wav
1762306a36Sopenharmony_ci *
1862306a36Sopenharmony_ci *	(A) arecord -D plughw:0,0 xxx.wav
1962306a36Sopenharmony_ci */
2062306a36Sopenharmony_ci/ {
2162306a36Sopenharmony_ci	sound_card: sound {
2262306a36Sopenharmony_ci		compatible = "audio-graph-card2";
2362306a36Sopenharmony_ci		label = "rcar-sound";
2462306a36Sopenharmony_ci
2562306a36Sopenharmony_ci		routing = "ak4613 Playback", "DAI0 Playback",
2662306a36Sopenharmony_ci			  "ak4613 Playback", "DAI1 Playback",
2762306a36Sopenharmony_ci			  "DAI0 Capture",    "ak4613 Capture";
2862306a36Sopenharmony_ci
2962306a36Sopenharmony_ci		/delete-property/ dais;
3062306a36Sopenharmony_ci		links = <&fe_a		/* (A) CPU0   */
3162306a36Sopenharmony_ci			 &fe_b		/* (B) CPU1   */
3262306a36Sopenharmony_ci			 &be_x		/* (X) ak4613 */
3362306a36Sopenharmony_ci		>;
3462306a36Sopenharmony_ci
3562306a36Sopenharmony_ci		dpcm {
3662306a36Sopenharmony_ci			#address-cells = <1>;
3762306a36Sopenharmony_ci			#size-cells = <0>;
3862306a36Sopenharmony_ci
3962306a36Sopenharmony_ci			ports@0 {
4062306a36Sopenharmony_ci				#address-cells = <1>;
4162306a36Sopenharmony_ci				#size-cells = <0>;
4262306a36Sopenharmony_ci				reg = <0>;
4362306a36Sopenharmony_ci				/*
4462306a36Sopenharmony_ci				 * FE
4562306a36Sopenharmony_ci				 * (A) CPU0 (MIX-0)
4662306a36Sopenharmony_ci				 * (B) CPU1 (MIX-1)
4762306a36Sopenharmony_ci				 */
4862306a36Sopenharmony_ci				fe_a: port@0 { reg = <0>; fe_a_ep: endpoint { remote-endpoint = <&rsnd_a_ep>; }; };
4962306a36Sopenharmony_ci				fe_b: port@1 { reg = <1>; fe_b_ep: endpoint { remote-endpoint = <&rsnd_b_ep>; }; };
5062306a36Sopenharmony_ci			};
5162306a36Sopenharmony_ci
5262306a36Sopenharmony_ci			ports@1 {
5362306a36Sopenharmony_ci				#address-cells = <1>;
5462306a36Sopenharmony_ci				#size-cells = <0>;
5562306a36Sopenharmony_ci				reg = <1>;
5662306a36Sopenharmony_ci				/*
5762306a36Sopenharmony_ci				 * BE
5862306a36Sopenharmony_ci				 * (X) ak4613
5962306a36Sopenharmony_ci				 */
6062306a36Sopenharmony_ci				be_x: port@0 { reg = <0>; be_x_ep: endpoint { remote-endpoint = <&ak4613_x_ep>; }; };
6162306a36Sopenharmony_ci			};
6262306a36Sopenharmony_ci		};
6362306a36Sopenharmony_ci	};
6462306a36Sopenharmony_ci};
6562306a36Sopenharmony_ci
6662306a36Sopenharmony_ci&ak4613 {
6762306a36Sopenharmony_ci	port {
6862306a36Sopenharmony_ci		/*
6962306a36Sopenharmony_ci		 * (X) ak4613
7062306a36Sopenharmony_ci		 */
7162306a36Sopenharmony_ci		prefix = "ak4613";
7262306a36Sopenharmony_ci		convert-rate = <48000>;
7362306a36Sopenharmony_ci
7462306a36Sopenharmony_ci		ak4613_x_ep: endpoint {
7562306a36Sopenharmony_ci			remote-endpoint = <&be_x_ep>;
7662306a36Sopenharmony_ci		};
7762306a36Sopenharmony_ci	};
7862306a36Sopenharmony_ci};
7962306a36Sopenharmony_ci
8062306a36Sopenharmony_ci&rcar_sound {
8162306a36Sopenharmony_ci	ports {
8262306a36Sopenharmony_ci		#address-cells = <1>;
8362306a36Sopenharmony_ci		#size-cells = <0>;
8462306a36Sopenharmony_ci
8562306a36Sopenharmony_ci		/*
8662306a36Sopenharmony_ci		 * (A) CPU0
8762306a36Sopenharmony_ci		 */
8862306a36Sopenharmony_ci		port@0 {
8962306a36Sopenharmony_ci			reg = <0>;
9062306a36Sopenharmony_ci			rsnd_a_ep: endpoint {
9162306a36Sopenharmony_ci				remote-endpoint = <&fe_a_ep>;
9262306a36Sopenharmony_ci				bitclock-master;
9362306a36Sopenharmony_ci				frame-master;
9462306a36Sopenharmony_ci				playback = <&src1 &ctu02 &mix0 &dvc0 &ssi0>;
9562306a36Sopenharmony_ci				capture  = <&ssi1 &src0 &dvc1>;
9662306a36Sopenharmony_ci			};
9762306a36Sopenharmony_ci		};
9862306a36Sopenharmony_ci		/*
9962306a36Sopenharmony_ci		 * (B) CPU1
10062306a36Sopenharmony_ci		 */
10162306a36Sopenharmony_ci		port@1 {
10262306a36Sopenharmony_ci			reg = <1>;
10362306a36Sopenharmony_ci			rsnd_b_ep: endpoint {
10462306a36Sopenharmony_ci				remote-endpoint = <&fe_b_ep>;
10562306a36Sopenharmony_ci				bitclock-master;
10662306a36Sopenharmony_ci				frame-master;
10762306a36Sopenharmony_ci				playback = <&src2 &ctu03 &mix0 &dvc0 &ssi0>;
10862306a36Sopenharmony_ci			};
10962306a36Sopenharmony_ci		};
11062306a36Sopenharmony_ci	};
11162306a36Sopenharmony_ci};
112