Commit d70be079 authored by Kuninori Morimoto's avatar Kuninori Morimoto Committed by Geert Uytterhoeven

arm64: dts: renesas: ulcb/kf: Use multi Component sound

	+-- ULCB -------------------+
	|+--------+       +--------+|
	||    SSI0| <---> |ak4613  ||
	||    SSI1| <---> |        ||
	||        |       +--------+|
	||        |       +--------+|
	||    SSI2| <---> |HDMI    ||
	||        |       +--------+|
	||    SSI3| <--+            |
	||    SSI4| <-+|            |
	|+--------+   ||            |
	+-------------||------------+
	+-- Kingfisher -------------+
	|             ||  +--------+|
	|             |+->|pcm3168a||
	|             +-->|        ||
	|                 +--------+|
	+---------------------------+

On UCLB/KF, we intuitively think we want to handle these as "2 Sound
Cards":

	card0,0: 1st sound of ULCB (SSI0 - ak4613)
	card0,1: 2nd sound of ULCB (SSI2 - HDMI)
	card1,0: 1st sound of KF   (SSI3 - pcm3168a)
	    ^ ^

However, because of ASoC Component vs. Card framework limitations, we
needed to handle this as "1 big Sound Card":

	card0,0: 1st sound of ULCB/KF (SSI0 - ak4613)
	card0,1: 2nd sound of ULCB/KF (SSI2 - HDMI)
	card0,2: 3rd sound of ULCB/KF (SSI3 - pcm3168a)
	    ^ ^

Now ASoC supports multi Component, which allows us to handle "2 Sound
Cards" such as "ULCB Sound Card" and "Kingfisher Sound Card", all
ULCB/KF Audio dtsi can be updated.

Note that this changes the Sound Card specification method from
userland, especially for Kingfisher Sound.
Signed-off-by: default avatarKuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Reviewed-by: default avatarGeert Uytterhoeven <geert+renesas@glider.be>
Link: https://lore.kernel.org/r/87fs382yhk.wl-kuninori.morimoto.gx@renesas.comSigned-off-by: default avatarGeert Uytterhoeven <geert+renesas@glider.be>
parent 98537eb7
...@@ -21,14 +21,14 @@ ...@@ -21,14 +21,14 @@
/ { / {
sound_card: sound { sound_card: sound {
compatible = "audio-graph-scu-card"; compatible = "audio-graph-scu-card";
label = "rcar-sound"; label = "snd-ulcb-mix";
routing = "ak4613 Playback", "DAI0 Playback", routing = "ak4613 Playback", "DAI0 Playback",
"ak4613 Playback", "DAI1 Playback", "ak4613 Playback", "DAI1 Playback",
"DAI0 Capture", "ak4613 Capture"; "DAI0 Capture", "ak4613 Capture";
dais = <&rsnd_port0 /* (A) CPU0 */ dais = <&snd_ulcb1 /* (A) CPU0 */
&rsnd_port1 /* (B) CPU1 */ &snd_ulcb2 /* (B) CPU1 */
>; >;
}; };
}; };
...@@ -58,14 +58,18 @@ ak4613_ep2: endpoint@1 { ...@@ -58,14 +58,18 @@ ak4613_ep2: endpoint@1 {
}; };
&rcar_sound { &rcar_sound {
ports {
#address-cells = <1>; #address-cells = <1>;
#size-cells = <0>; #size-cells = <0>;
ports@0 {
#address-cells = <1>;
#size-cells = <0>;
reg = <0>;
/* /*
* (A) CPU0 * (A) CPU0
*/ */
rsnd_port0: port@0 { snd_ulcb1: port@0 {
reg = <0>; reg = <0>;
rsnd_for_ak4613_1: endpoint { rsnd_for_ak4613_1: endpoint {
remote-endpoint = <&ak4613_ep1>; remote-endpoint = <&ak4613_ep1>;
...@@ -78,7 +82,7 @@ rsnd_for_ak4613_1: endpoint { ...@@ -78,7 +82,7 @@ rsnd_for_ak4613_1: endpoint {
/* /*
* (B) CPU1 * (B) CPU1
*/ */
rsnd_port1: port@1 { snd_ulcb2: port@1 {
reg = <1>; reg = <1>;
rsnd_for_ak4613_2: endpoint { rsnd_for_ak4613_2: endpoint {
remote-endpoint = <&ak4613_ep2>; remote-endpoint = <&ak4613_ep2>;
......
...@@ -18,10 +18,10 @@ ...@@ -18,10 +18,10 @@
/ { / {
sound_card: sound { sound_card: sound {
compatible = "audio-graph-card"; compatible = "audio-graph-card";
label = "rcar-sound"; label = "snd-ulcb";
dais = <&rsnd_port0 /* (A) CPU0 <-> ak4613 */ dais = <&snd_ulcb1 /* (A) CPU0 <-> ak4613 */
&rsnd_port1 /* (B) CPU1 -> HDMI */ &snd_ulcb2 /* (B) CPU1 -> HDMI */
>; >;
}; };
}; };
...@@ -53,10 +53,15 @@ dw_hdmi0_snd_in: endpoint { ...@@ -53,10 +53,15 @@ dw_hdmi0_snd_in: endpoint {
}; };
&rcar_sound { &rcar_sound {
ports {
#address-cells = <1>; #address-cells = <1>;
#size-cells = <0>; #size-cells = <0>;
rsnd_port0: port@0 {
ports@0 {
#address-cells = <1>;
#size-cells = <0>;
reg = <0>;
snd_ulcb1: port@0 {
/* /*
* (A) CPU0 <-> ak4613 * (A) CPU0 <-> ak4613
*/ */
...@@ -69,7 +74,7 @@ rsnd_for_ak4613: endpoint { ...@@ -69,7 +74,7 @@ rsnd_for_ak4613: endpoint {
capture = <&ssi1>, <&src1>, <&dvc1>; capture = <&ssi1>, <&src1>, <&dvc1>;
}; };
}; };
rsnd_port1: port@1 { snd_ulcb2: port@1 {
/* /*
* (B) CPU1 -> HDMI * (B) CPU1 -> HDMI
*/ */
......
...@@ -20,13 +20,12 @@ ...@@ -20,13 +20,12 @@
/ { / {
sound_card: sound { sound_card: sound {
compatible = "audio-graph-card2"; compatible = "audio-graph-card2";
label = "rcar-sound"; label = "snd-ulcb-mix";
routing = "ak4613 Playback", "DAI0 Playback", routing = "ak4613 Playback", "DAI0 Playback",
"ak4613 Playback", "DAI1 Playback", "ak4613 Playback", "DAI1 Playback",
"DAI0 Capture", "ak4613 Capture"; "DAI0 Capture", "ak4613 Capture";
/delete-property/ dais;
links = <&fe_a /* (A) CPU0 */ links = <&fe_a /* (A) CPU0 */
&fe_b /* (B) CPU1 */ &fe_b /* (B) CPU1 */
&be_x /* (X) ak4613 */ &be_x /* (X) ak4613 */
...@@ -50,14 +49,12 @@ ports@0 { ...@@ -50,14 +49,12 @@ ports@0 {
}; };
ports@1 { ports@1 {
#address-cells = <1>;
#size-cells = <0>;
reg = <1>; reg = <1>;
/* /*
* BE * BE
* (X) ak4613 * (X) ak4613
*/ */
be_x: port@0 { reg = <0>; be_x_ep: endpoint { remote-endpoint = <&ak4613_x_ep>; }; }; be_x: port { be_x_ep: endpoint { remote-endpoint = <&ak4613_x_ep>; }; };
}; };
}; };
}; };
...@@ -78,10 +75,14 @@ ak4613_x_ep: endpoint { ...@@ -78,10 +75,14 @@ ak4613_x_ep: endpoint {
}; };
&rcar_sound { &rcar_sound {
ports {
#address-cells = <1>; #address-cells = <1>;
#size-cells = <0>; #size-cells = <0>;
ports@0 {
#address-cells = <1>;
#size-cells = <0>;
reg = <0>;
/* /*
* (A) CPU0 * (A) CPU0
*/ */
......
...@@ -20,7 +20,7 @@ &sound_card { ...@@ -20,7 +20,7 @@ &sound_card {
compatible = "audio-graph-card2"; compatible = "audio-graph-card2";
/delete-property/ dais; /delete-property/ dais;
links = <&rsnd_port0 /* (A) CPU0 <-> ak4613 */ links = <&snd_ulcb1 /* (A) CPU0 <-> ak4613 */
&rsnd_port1 /* (B) CPU1 -> HDMI */ &snd_ulcb2 /* (B) CPU1 -> HDMI */
>; >;
}; };
...@@ -19,32 +19,31 @@ ...@@ -19,32 +19,31 @@
* *
* (A) aplay -D plughw:0,0 xxx.wav (MIX-0) * (A) aplay -D plughw:0,0 xxx.wav (MIX-0)
* (B) aplay -D plughw:0,1 xxx.wav (MIX-1) * (B) aplay -D plughw:0,1 xxx.wav (MIX-1)
* (C) aplay -D plughw:0,2 xxx.wav (TDM-0) * (C) aplay -D plughw:1,0 xxx.wav (TDM-0)
* (D) aplay -D plughw:0,3 xxx.wav (TDM-1) * (D) aplay -D plughw:1,1 xxx.wav (TDM-1)
* (E) aplay -D plughw:0,4 xxx.wav (TDM-2) * (E) aplay -D plughw:1,2 xxx.wav (TDM-2)
* (F) aplay -D plughw:0,5 xxx.wav (TDM-3) * (F) aplay -D plughw:1,3 xxx.wav (TDM-3)
* *
* (A) arecord -D plughw:0,0 xxx.wav * (A) arecord -D plughw:0,0 xxx.wav
* (G) arecord -D plughw:0,6 xxx.wav * (G) arecord -D plughw:1,4 xxx.wav
*/ */
/ {
sound_card_kf: expand-sound {
compatible = "audio-graph-scu-card";
label = "snd-kf-split";
&sound_card { routing = "pcm3168a Playback", "DAI2 Playback",
routing = "ak4613 Playback", "DAI0 Playback",
"ak4613 Playback", "DAI1 Playback",
"DAI0 Capture", "ak4613 Capture",
"pcm3168a Playback", "DAI2 Playback",
"pcm3168a Playback", "DAI3 Playback", "pcm3168a Playback", "DAI3 Playback",
"pcm3168a Playback", "DAI4 Playback", "pcm3168a Playback", "DAI4 Playback",
"pcm3168a Playback", "DAI5 Playback"; "pcm3168a Playback", "DAI5 Playback";
dais = <&rsnd_port0 /* (A) CPU0 */ dais = <&snd_kf1 /* (C) CPU2 */
&rsnd_port1 /* (B) CPU1 */ &snd_kf2 /* (D) CPU3 */
&rsnd_port2 /* (C) CPU2 */ &snd_kf3 /* (E) CPU4 */
&rsnd_port3 /* (D) CPU3 */ &snd_kf4 /* (F) CPU5 */
&rsnd_port4 /* (E) CPU4 */ &snd_kf5 /* (G) GPU6 */
&rsnd_port5 /* (F) CPU5 */
&rsnd_port6 /* (G) GPU6 */
>; >;
};
}; };
&pcm3168a { &pcm3168a {
...@@ -103,13 +102,15 @@ pcm3168a_endpoint_c: endpoint { ...@@ -103,13 +102,15 @@ pcm3168a_endpoint_c: endpoint {
}; };
&rcar_sound { &rcar_sound {
ports { ports@1 {
/* rsnd_port0-1 are defined in ulcb.dtsi */ #address-cells = <1>;
#size-cells = <0>;
reg = <1>;
/* /*
* (C) CPU2 * (C) CPU2
*/ */
rsnd_port2: port@2 { snd_kf1: port@2 {
reg = <2>; reg = <2>;
rsnd_for_pcm3168a_play1: endpoint { rsnd_for_pcm3168a_play1: endpoint {
remote-endpoint = <&pcm3168a_endpoint_p1>; remote-endpoint = <&pcm3168a_endpoint_p1>;
...@@ -121,7 +122,7 @@ rsnd_for_pcm3168a_play1: endpoint { ...@@ -121,7 +122,7 @@ rsnd_for_pcm3168a_play1: endpoint {
/* /*
* (D) CPU3 * (D) CPU3
*/ */
rsnd_port3: port@3 { snd_kf2: port@3 {
reg = <3>; reg = <3>;
rsnd_for_pcm3168a_play2: endpoint { rsnd_for_pcm3168a_play2: endpoint {
remote-endpoint = <&pcm3168a_endpoint_p2>; remote-endpoint = <&pcm3168a_endpoint_p2>;
...@@ -133,7 +134,7 @@ rsnd_for_pcm3168a_play2: endpoint { ...@@ -133,7 +134,7 @@ rsnd_for_pcm3168a_play2: endpoint {
/* /*
* (E) CPU4 * (E) CPU4
*/ */
rsnd_port4: port@4 { snd_kf3: port@4 {
reg = <4>; reg = <4>;
rsnd_for_pcm3168a_play3: endpoint { rsnd_for_pcm3168a_play3: endpoint {
remote-endpoint = <&pcm3168a_endpoint_p3>; remote-endpoint = <&pcm3168a_endpoint_p3>;
...@@ -145,7 +146,7 @@ rsnd_for_pcm3168a_play3: endpoint { ...@@ -145,7 +146,7 @@ rsnd_for_pcm3168a_play3: endpoint {
/* /*
* (F) CPU5 * (F) CPU5
*/ */
rsnd_port5: port@5 { snd_kf4: port@5 {
reg = <5>; reg = <5>;
rsnd_for_pcm3168a_play4: endpoint { rsnd_for_pcm3168a_play4: endpoint {
remote-endpoint = <&pcm3168a_endpoint_p4>; remote-endpoint = <&pcm3168a_endpoint_p4>;
...@@ -157,7 +158,7 @@ rsnd_for_pcm3168a_play4: endpoint { ...@@ -157,7 +158,7 @@ rsnd_for_pcm3168a_play4: endpoint {
/* /*
* (G) CPU6 * (G) CPU6
*/ */
rsnd_port6: port@6 { snd_kf5: port@6 {
reg = <6>; reg = <6>;
rsnd_for_pcm3168a_capture: endpoint { rsnd_for_pcm3168a_capture: endpoint {
remote-endpoint = <&pcm3168a_endpoint_c>; remote-endpoint = <&pcm3168a_endpoint_c>;
......
...@@ -13,18 +13,20 @@ ...@@ -13,18 +13,20 @@
* *
* (A) aplay -D plughw:0,0 xxx.wav * (A) aplay -D plughw:0,0 xxx.wav
* (B) aplay -D plughw:0,1 xxx.wav * (B) aplay -D plughw:0,1 xxx.wav
* (C) aplay -D plughw:0,2 xxx.wav * (C) aplay -D plughw:1,0 xxx.wav
* *
* (A) arecord -D plughw:0,0 xxx.wav * (A) arecord -D plughw:0,0 xxx.wav
* (D) arecord -D plughw:0,3 xxx.wav * (D) arecord -D plughw:1,1 xxx.wav
*/ */
/ {
sound_card_kf: expand-sound {
compatible = "audio-graph-card";
label = "snd-kf";
&sound_card { dais = <&snd_kf1 /* (C) CPU2 -> PCM3168A-p */
dais = <&rsnd_port0 /* (A) CPU0 <-> ak4613 */ &snd_kf2 /* (D) CPU3 <- PCM3168A-c */
&rsnd_port1 /* (B) CPU1 -> HDMI */
&rsnd_port2 /* (C) CPU2 -> PCM3168A-p */
&rsnd_port3 /* (D) CPU3 <- PCM3168A-c */
>; >;
};
}; };
&pcm3168a { &pcm3168a {
...@@ -56,12 +58,15 @@ pcm3168a_endpoint_c: endpoint { ...@@ -56,12 +58,15 @@ pcm3168a_endpoint_c: endpoint {
}; };
&rcar_sound { &rcar_sound {
ports { ports@1 {
/* rsnd_port0/1 are defined in ulcb.dtsi */ #address-cells = <1>;
#size-cells = <0>;
reg = <1>;
/* /*
* (C) CPU2 -> PCM3168A-p * (C) CPU2 -> PCM3168A-p
*/ */
rsnd_port2: port@2 { snd_kf1: port@2 {
reg = <2>; reg = <2>;
rsnd_for_pcm3168a_play: endpoint { rsnd_for_pcm3168a_play: endpoint {
remote-endpoint = <&pcm3168a_endpoint_p>; remote-endpoint = <&pcm3168a_endpoint_p>;
...@@ -74,7 +79,7 @@ rsnd_for_pcm3168a_play: endpoint { ...@@ -74,7 +79,7 @@ rsnd_for_pcm3168a_play: endpoint {
/* /*
* (D) CPU3 <- PCM3168A-c * (D) CPU3 <- PCM3168A-c
*/ */
rsnd_port3: port@3 { snd_kf2: port@3 {
reg = <3>; reg = <3>;
rsnd_for_pcm3168a_capture: endpoint { rsnd_for_pcm3168a_capture: endpoint {
remote-endpoint = <&pcm3168a_endpoint_c>; remote-endpoint = <&pcm3168a_endpoint_c>;
......
...@@ -19,42 +19,45 @@ ...@@ -19,42 +19,45 @@
* *
* (A) aplay -D plughw:0,0 xxx.wav (MIX-0) * (A) aplay -D plughw:0,0 xxx.wav (MIX-0)
* (B) aplay -D plughw:0,1 xxx.wav (MIX-1) * (B) aplay -D plughw:0,1 xxx.wav (MIX-1)
* (C) aplay -D plughw:0,2 xxx.wav (TDM-0) * (C) aplay -D plughw:1,0 xxx.wav (TDM-0)
* (D) aplay -D plughw:0,3 xxx.wav (TDM-1) * (D) aplay -D plughw:1,1 xxx.wav (TDM-1)
* (E) aplay -D plughw:0,4 xxx.wav (TDM-2) * (E) aplay -D plughw:1,2 xxx.wav (TDM-2)
* (F) aplay -D plughw:0,5 xxx.wav (TDM-3) * (F) aplay -D plughw:1,3 xxx.wav (TDM-3)
* *
* (A) arecord -D plughw:0,0 xxx.wav * (A) arecord -D plughw:0,0 xxx.wav
* (G) arecord -D plughw:0,6 xxx.wav * (G) arecord -D plughw:1,4 xxx.wav
*/ */
&sound_card { / {
routing = "ak4613 Playback", "DAI0 Playback", sound_card_kf: expand-sound {
"ak4613 Playback", "DAI1 Playback", compatible = "audio-graph-card2";
"DAI0 Capture", "ak4613 Capture", label = "snd-kf-split";
"pcm3168a Playback", "DAI2 Playback",
routing = "pcm3168a Playback", "DAI2 Playback",
"pcm3168a Playback", "DAI3 Playback", "pcm3168a Playback", "DAI3 Playback",
"pcm3168a Playback", "DAI4 Playback", "pcm3168a Playback", "DAI4 Playback",
"pcm3168a Playback", "DAI5 Playback", "pcm3168a Playback", "DAI5 Playback",
"DAI6 Capture", "pcm3168a Capture"; "DAI6 Capture", "pcm3168a Capture";
/delete-property/ dais; links = <&fe_c /* (C) CPU2 */
links = <&fe_a /* (A) CPU0 */
&fe_b /* (B) CPU1 */
&fe_c /* (C) CPU2 */
&fe_d /* (D) CPU3 */ &fe_d /* (D) CPU3 */
&fe_e /* (E) CPU4 */ &fe_e /* (E) CPU4 */
&fe_f /* (F) CPU5 */ &fe_f /* (F) CPU5 */
&rsnd_g /* (G) CPU6 */ &rsnd_g /* (G) CPU6 */
&be_x /* (X) ak4613 */
&be_y /* (Y) PCM3168A-p */ &be_y /* (Y) PCM3168A-p */
>; >;
dpcm { dpcm {
#address-cells = <1>;
#size-cells = <0>;
ports@0 { ports@0 {
#address-cells = <1>;
#size-cells = <0>;
reg = <0>;
/* /*
* FE * FE
* *
* (A)/(B) are defined on ulcb
* (C) CPU2 * (C) CPU2
* (D) CPU3 * (D) CPU3
* (E) CPU4 * (E) CPU4
...@@ -67,13 +70,14 @@ ports@0 { ...@@ -67,13 +70,14 @@ ports@0 {
}; };
ports@1 { ports@1 {
reg = <1>;
/* /*
* BE * BE
* *
* (X) is defined on ulcb
* (Y) PCM3168A-p * (Y) PCM3168A-p
*/ */
be_y: port@1 { reg = <1>; be_y_ep: endpoint { remote-endpoint = <&pcm3168a_y_ep>; }; }; be_y: port { be_y_ep: endpoint { remote-endpoint = <&pcm3168a_y_ep>; }; };
};
}; };
}; };
}; };
...@@ -111,8 +115,10 @@ pcm3168a_z_ep: endpoint { ...@@ -111,8 +115,10 @@ pcm3168a_z_ep: endpoint {
}; };
&rcar_sound { &rcar_sound {
ports { ports@1 {
/* (A)/(B) are defined in ulcb.dtsi */ #address-cells = <1>;
#size-cells = <0>;
reg = <1>;
/* /*
* (C) CPU2 * (C) CPU2
......
...@@ -13,18 +13,18 @@ ...@@ -13,18 +13,18 @@
* *
* (A) aplay -D plughw:0,0 xxx.wav * (A) aplay -D plughw:0,0 xxx.wav
* (B) aplay -D plughw:0,1 xxx.wav * (B) aplay -D plughw:0,1 xxx.wav
* (C) aplay -D plughw:0,2 xxx.wav * (C) aplay -D plughw:1,0 xxx.wav
* *
* (A) arecord -D plughw:0,0 xxx.wav * (A) arecord -D plughw:0,0 xxx.wav
* (D) arecord -D plughw:0,3 xxx.wav * (D) arecord -D plughw:1,1 xxx.wav
*/ */
#include "ulcb-kf-audio-graph-card.dtsi" #include "ulcb-kf-audio-graph-card.dtsi"
&sound_card { &sound_card_kf {
compatible = "audio-graph-card2";
/delete-property/ dais; /delete-property/ dais;
links = <&rsnd_port0 /* (A) CPU0 <-> ak4613 */ links = <&snd_kf1 /* (C) CPU2 -> PCM3168A-p */
&rsnd_port1 /* (B) CPU1 -> HDMI */ &snd_kf2 /* (D) CPU3 <- PCM3168A-c */
&rsnd_port2 /* (C) CPU2 -> PCM3168A-p */
&rsnd_port3 /* (D) CPU3 <- PCM3168A-c */
>; >;
}; };
...@@ -19,31 +19,32 @@ ...@@ -19,31 +19,32 @@
* *
* (A) aplay -D plughw:0,0 xxx.wav (MIX-0) * (A) aplay -D plughw:0,0 xxx.wav (MIX-0)
* (B) aplay -D plughw:0,1 xxx.wav (MIX-1) * (B) aplay -D plughw:0,1 xxx.wav (MIX-1)
* (C) aplay -D plughw:0,2 xxx.wav (TDM-0) * (C) aplay -D plughw:1,0 xxx.wav (TDM-0)
* (D) aplay -D plughw:0,3 xxx.wav (TDM-1) * (D) aplay -D plughw:1,1 xxx.wav (TDM-1)
* (E) aplay -D plughw:0,4 xxx.wav (TDM-2) * (E) aplay -D plughw:1,2 xxx.wav (TDM-2)
* (F) aplay -D plughw:0,5 xxx.wav (TDM-3) * (F) aplay -D plughw:1,3 xxx.wav (TDM-3)
* *
* (A) arecord -D plughw:0,0 xxx.wav * (A) arecord -D plughw:0,0 xxx.wav
* (G) arecord -D plughw:0,6 xxx.wav * (G) arecord -D plughw:1,4 xxx.wav
*/ */
&sound_card { / {
sound_card_kf: expand-sound {
#address-cells = <1>;
#size-cells = <0>;
simple-audio-card,routing = "ak4613 Playback", "DAI0 Playback", compatible = "simple-scu-audio-card";
"ak4613 Playback", "DAI1 Playback", label = "snd-kf-split";
"DAI0 Capture", "ak4613 Capture",
"pcm3168a Playback", "DAI2 Playback", simple-audio-card,routing = "pcm3168a Playback", "DAI2 Playback",
"pcm3168a Playback", "DAI3 Playback", "pcm3168a Playback", "DAI3 Playback",
"pcm3168a Playback", "DAI4 Playback", "pcm3168a Playback", "DAI4 Playback",
"pcm3168a Playback", "DAI5 Playback"; "pcm3168a Playback", "DAI5 Playback";
/* dai-link@0 is defined in ulcb.dtsi */ simple-audio-card,dai-link@0 {
simple-audio-card,dai-link@1 {
#address-cells = <1>; #address-cells = <1>;
#size-cells = <0>; #size-cells = <0>;
reg = <1>; reg = <0>;
convert-channels = <8>; /* to 8ch TDM */ convert-channels = <8>; /* to 8ch TDM */
/* /*
...@@ -85,8 +86,9 @@ codec { ...@@ -85,8 +86,9 @@ codec {
sound-dai = <&pcm3168a 0>; sound-dai = <&pcm3168a 0>;
}; };
}; };
simple-audio-card,dai-link@2 {
reg = <2>; simple-audio-card,dai-link@1 {
reg = <1>;
/* /*
* (G) CPU6 * (G) CPU6
*/ */
...@@ -104,6 +106,7 @@ codec { ...@@ -104,6 +106,7 @@ codec {
sound-dai = <&pcm3168a 1>; sound-dai = <&pcm3168a 1>;
}; };
}; };
};
}; };
&pcm3168a { &pcm3168a {
...@@ -115,7 +118,8 @@ &pcm3168a { ...@@ -115,7 +118,8 @@ &pcm3168a {
}; };
&rcar_sound { &rcar_sound {
rcar_sound,dai { rcar_sound,dai@1 {
reg = <1>;
/* dai0-1 are defined in ulcb.dtsi */ /* dai0-1 are defined in ulcb.dtsi */
......
...@@ -13,20 +13,25 @@ ...@@ -13,20 +13,25 @@
* *
* (A) aplay -D plughw:0,0 xxx.wav * (A) aplay -D plughw:0,0 xxx.wav
* (B) aplay -D plughw:0,1 xxx.wav * (B) aplay -D plughw:0,1 xxx.wav
* (C) aplay -D plughw:0,2 xxx.wav * (C) aplay -D plughw:1,0 xxx.wav
* *
* (A) arecord -D plughw:0,0 xxx.wav * (A) arecord -D plughw:0,0 xxx.wav
* (D) arecord -D plughw:0,3 xxx.wav * (D) arecord -D plughw:1,1 xxx.wav
*/ */
&sound_card { / {
/* dai-link@0/1 are defined in ulcb.dtsi */ sound_card_kf: expand-sound {
compatible = "simple-audio-card";
label = "snd-kf";
#address-cells = <1>;
#size-cells = <0>;
/* /*
* (C) CPU2 -> PCM3168A-p * (C) CPU2 -> PCM3168A-p
*/ */
simple-audio-card,dai-link@2 { simple-audio-card,dai-link@0 {
reg = <2>; reg = <0>;
cpu { cpu {
bitclock-master; bitclock-master;
frame-master; frame-master;
...@@ -41,8 +46,8 @@ codec { ...@@ -41,8 +46,8 @@ codec {
/* /*
* (D) CPU3 <- PCM3168A-c * (D) CPU3 <- PCM3168A-c
*/ */
simple-audio-card,dai-link@3 { simple-audio-card,dai-link@1 {
reg = <3>; reg = <1>;
cpu { cpu {
bitclock-master; bitclock-master;
frame-master; frame-master;
...@@ -54,6 +59,7 @@ codec { ...@@ -54,6 +59,7 @@ codec {
sound-dai = <&pcm3168a 1>; sound-dai = <&pcm3168a 1>;
}; };
}; };
};
}; };
&pcm3168a { &pcm3168a {
...@@ -65,9 +71,8 @@ &pcm3168a { ...@@ -65,9 +71,8 @@ &pcm3168a {
}; };
&rcar_sound { &rcar_sound {
rcar_sound,dai@1 {
rcar_sound,dai { reg = <1>;
/* dai0-1 are defined in ulcb.dtsi */
/* /*
* (C) CPU2 -> PCM3168A-p * (C) CPU2 -> PCM3168A-p
......
...@@ -24,7 +24,7 @@ sound_card: sound { ...@@ -24,7 +24,7 @@ sound_card: sound {
#size-cells = <0>; #size-cells = <0>;
compatible = "simple-scu-audio-card"; compatible = "simple-scu-audio-card";
label = "rcar-sound"; label = "snd-ulcb-mix";
simple-audio-card,prefix = "ak4613"; simple-audio-card,prefix = "ak4613";
simple-audio-card,routing = "ak4613 Playback", "DAI0 Playback", simple-audio-card,routing = "ak4613 Playback", "DAI0 Playback",
...@@ -72,9 +72,13 @@ &ak4613 { ...@@ -72,9 +72,13 @@ &ak4613 {
}; };
&rcar_sound { &rcar_sound {
#address-cells = <1>;
#size-cells = <0>;
#sound-dai-cells = <1>; #sound-dai-cells = <1>;
rcar_sound,dai { rcar_sound,dai@0 {
reg = <0>;
/* /*
* (A) CPU0 * (A) CPU0
*/ */
......
...@@ -18,7 +18,7 @@ ...@@ -18,7 +18,7 @@
/ { / {
sound_card: sound { sound_card: sound {
compatible = "simple-audio-card"; compatible = "simple-audio-card";
label = "rcar-sound"; label = "snd-ulcb";
#address-cells = <1>; #address-cells = <1>;
#size-cells = <0>; #size-cells = <0>;
...@@ -69,9 +69,13 @@ &hdmi0 { ...@@ -69,9 +69,13 @@ &hdmi0 {
}; };
&rcar_sound { &rcar_sound {
#address-cells = <1>;
#size-cells = <0>;
#sound-dai-cells = <1>; #sound-dai-cells = <1>;
rcar_sound,dai { rcar_sound,dai@0 {
reg = <0>;
/* /*
* (A) CPU0 <-> ak4613 * (A) CPU0 <-> ak4613
*/ */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment