diff mbox series

arm64: dts: renesas: use multi Component for ULCB/KF

Message ID 87wmwxh4av.wl-kuninori.morimoto.gx@renesas.com (mailing list archive)
State Superseded
Delegated to: Geert Uytterhoeven
Headers show
Series arm64: dts: renesas: use multi Component for ULCB/KF | expand

Commit Message

Kuninori Morimoto Sept. 11, 2023, 1:44 a.m. UTC
+-- 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)
	    ^ ^

But, we needed to handle it as "1 big Sound Card",
because of ASoC Component vs Card framwork limitation.

	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 support multi Component which allow us to handle "2 Sound Cards"
such as "ULCB Sound Card" and "Kingfisher Sound Card".

This patch updates all ULCB/KF Audio dtsi.
One note is that Sound Card specification method from userland will be
changed, especially for Kingfisher Sound.

Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
---
 .../ulcb-audio-graph-card-mix+split.dtsi      |  10 +-
 .../dts/renesas/ulcb-audio-graph-card.dtsi    |  10 +-
 .../ulcb-audio-graph-card2-mix+split.dtsi     |   3 +-
 .../dts/renesas/ulcb-audio-graph-card2.dtsi   |   4 +-
 .../ulcb-kf-audio-graph-card-mix+split.dtsi   |  56 +++----
 .../dts/renesas/ulcb-kf-audio-graph-card.dtsi |  30 ++--
 .../ulcb-kf-audio-graph-card2-mix+split.dtsi  | 111 +++++++------
 .../renesas/ulcb-kf-audio-graph-card2.dtsi    |  14 +-
 .../ulcb-kf-simple-audio-card-mix+split.dtsi  | 155 +++++++++---------
 .../renesas/ulcb-kf-simple-audio-card.dtsi    |  78 +++++----
 .../ulcb-simple-audio-card-mix+split.dtsi     |   2 +-
 .../dts/renesas/ulcb-simple-audio-card.dtsi   |   2 +-
 12 files changed, 253 insertions(+), 222 deletions(-)

Comments

Geert Uytterhoeven Sept. 18, 2023, 2:42 p.m. UTC | #1
Hi Morimoto-san,

On Mon, Sep 11, 2023 at 3:44 AM Kuninori Morimoto
<kuninori.morimoto.gx@renesas.com> wrote:
>         +-- 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)
>             ^ ^
>
> But, we needed to handle it as "1 big Sound Card",
> because of ASoC Component vs Card framwork limitation.
>
>         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 support multi Component which allow us to handle "2 Sound Cards"
> such as "ULCB Sound Card" and "Kingfisher Sound Card".
>
> This patch updates all ULCB/KF Audio dtsi.
> One note is that Sound Card specification method from userland will be
> changed, especially for Kingfisher Sound.
>
> Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>

Thanks for your patch!

> --- a/arch/arm64/boot/dts/renesas/ulcb-kf-audio-graph-card-mix+split.dtsi
> +++ b/arch/arm64/boot/dts/renesas/ulcb-kf-audio-graph-card-mix+split.dtsi
> @@ -19,32 +19,31 @@
>   *
>   *     (A) aplay   -D plughw:0,0 xxx.wav (MIX-0)
>   *     (B) aplay   -D plughw:0,1 xxx.wav (MIX-1)
> - *     (C) aplay   -D plughw:0,2 xxx.wav (TDM-0)
> - *     (D) aplay   -D plughw:0,3 xxx.wav (TDM-1)
> - *     (E) aplay   -D plughw:0,4 xxx.wav (TDM-2)
> - *     (F) aplay   -D plughw:0,5 xxx.wav (TDM-3)
> + *     (C) aplay   -D plughw:1,0 xxx.wav (TDM-0)
> + *     (D) aplay   -D plughw:1,1 xxx.wav (TDM-1)
> + *     (E) aplay   -D plughw:1,2 xxx.wav (TDM-2)
> + *     (F) aplay   -D plughw:1,3 xxx.wav (TDM-3)
>   *
>   *     (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 {

Please no underscores in (new) node names (everywhere)

expand-sound?

> +               compatible = "audio-graph-scu-card";
> +               label = "snd-kf-split";
>
> -&sound_card {
> -       routing = "ak4613 Playback",   "DAI0 Playback",
> -                 "ak4613 Playback",   "DAI1 Playback",
> -                 "DAI0 Capture",      "ak4613 Capture",
> -                 "pcm3168a Playback", "DAI2 Playback",
> -                 "pcm3168a Playback", "DAI3 Playback",
> -                 "pcm3168a Playback", "DAI4 Playback",
> -                 "pcm3168a Playback", "DAI5 Playback";
> +               routing = "pcm3168a Playback", "DAI2 Playback",
> +                         "pcm3168a Playback", "DAI3 Playback",
> +                         "pcm3168a Playback", "DAI4 Playback",
> +                         "pcm3168a Playback", "DAI5 Playback";
>
> -       dais = <&rsnd_port0 /* (A) CPU0 */
> -               &rsnd_port1 /* (B) CPU1 */
> -               &rsnd_port2 /* (C) CPU2 */
> -               &rsnd_port3 /* (D) CPU3 */
> -               &rsnd_port4 /* (E) CPU4 */
> -               &rsnd_port5 /* (F) CPU5 */
> -               &rsnd_port6 /* (G) GPU6 */
> -       >;
> +               dais = <&snd_kf1 /* (C) CPU2 */
> +                       &snd_kf2 /* (D) CPU3 */
> +                       &snd_kf3 /* (E) CPU4 */
> +                       &snd_kf4 /* (F) CPU5 */
> +                       &snd_kf5 /* (G) GPU6 */
> +               >;
> +       };
>  };
>
>  &pcm3168a {
> @@ -103,13 +102,14 @@ pcm3168a_endpoint_c: endpoint {
>  };
>
>  &rcar_sound {
> -       ports {
> -               /* rsnd_port0-1 are defined in ulcb.dtsi */

Don't you need to add

    #address-cells = <1>;
    #size-cells = <0>;

like in the other files?

> +       ports@1 {

So now you end up with a "ports" node without a unit address, and a
"ports@1" node with a unit address, which looks very strange to me...

According to the example in the description for commit 547b02f74e4ac1e7
("ASoC: rsnd: enable multi Component support for Audio Graph
Card/Card2"), the first node should be named "ports@0":

    Ex) Audio Graph Card/Card2

            rcar_sound {
                    /* Component0 */
                    ports@0 {
                            ...
                    };

                    /* Component1 */
                    ports@1 {
                            ...
                    };
            };

This comment is valid for the other .dtsi files, too.

> +               #address-cells = <1>;
> +               #size-cells = <0>;
>
>                 /*
>                  * (C) CPU2
>                  */
> -               rsnd_port2: port@2 {
> +               snd_kf1: port@2 {
>                         reg = <2>;
>                         rsnd_for_pcm3168a_play1: endpoint {
>                                 remote-endpoint = <&pcm3168a_endpoint_p1>;

> --- a/arch/arm64/boot/dts/renesas/ulcb-kf-simple-audio-card-mix+split.dtsi
> +++ b/arch/arm64/boot/dts/renesas/ulcb-kf-simple-audio-card-mix+split.dtsi

> @@ -115,7 +118,11 @@ &pcm3168a {
>  };
>
>  &rcar_sound {
> -       rcar_sound,dai {
> +       #address-cells = <1>;
> +       #size-cells = <0>;
> +
> +       rcar_sound,dai@1 {

Same here: "rcar_sound,dai" node without a unit address, and
"rcar_sound,dai@1" node with a unit address.

According to the example in the description for commit 547b02f74e4ac1e7
("ASoC: rsnd: enable multi Component support for Audio Graph
Card/Card2"), the first node should be named "rcar_sound,dai@0":

    Ex) Simple Card

            rcar_sound {
                    ...

                    /* Component0 */
                    rcar_sound,dai@0 {
                            ...
                    };

                    /* Component1 */
                    rcar_sound,dai@1 {
                            ...
                    };
            };

This comment is valid for the other .dtsi files, too.

> +               reg = <1>;
>
>                 /* dai0-1 are defined in ulcb.dtsi */
>

The rest LGTM (for a sound-illiterate reviewer like me ;-)

Gr{oetje,eeting}s,

                        Geert
Kuninori Morimoto Sept. 19, 2023, 1:13 a.m. UTC | #2
Hi Geert

Thank you for the review

> > +       sound_card_kf: expand_sound {
> 
> Please no underscores in (new) node names (everywhere)
> 
> expand-sound?

OK, will fix in v2 patch

> >  &rcar_sound {
> > -       ports {
> > -               /* rsnd_port0-1 are defined in ulcb.dtsi */
> 
> Don't you need to add
> 
>     #address-cells = <1>;
>     #size-cells = <0>;
> 
> like in the other files?

It is a little bit difficult to understand, but Audio Graph Card dtsi
relationship is "for ULCB" + "for ULCB-KF".

"for ULCB" side has "#address-cells" and "#size-cells",
"for ULCB-KF" side adds extra part on it.

> > +       ports@1 {
> 
> So now you end up with a "ports" node without a unit address, and a
> "ports@1" node with a unit address, which looks very strange to me...

It is another part of a little bit difficult part...
"for ULCB-KF" part needs "for ULCB" part,
this means "for ULCB" part is used for both "ULCB only dts" and "ULCB-KF dts".

If we uses "ports@1" on "for ULCB" part, dts check will indicates
extra warning, because it is not needed for "ULCB only dts".

	"ULCB    dts" needs "ports"
	"ULCB-KF dts" needs "ports@1"

To avoid extra warning, it is using "ports".

> Same here: "rcar_sound,dai" node without a unit address, and
> "rcar_sound,dai@1" node with a unit address.

Same above

If it is OK for you, I will post v2 patch

Thank you for your help !!

Best regards
---
Kuninori Morimoto
Geert Uytterhoeven Sept. 19, 2023, 6:56 a.m. UTC | #3
Hi Morimoto-san,

CC DT

On Tue, Sep 19, 2023 at 3:13 AM Kuninori Morimoto
<kuninori.morimoto.gx@renesas.com> wrote:
> > >  &rcar_sound {
> > > -       ports {
> > > -               /* rsnd_port0-1 are defined in ulcb.dtsi */
> >
> > Don't you need to add
> >
> >     #address-cells = <1>;
> >     #size-cells = <0>;
> >
> > like in the other files?
>
> It is a little bit difficult to understand, but Audio Graph Card dtsi
> relationship is "for ULCB" + "for ULCB-KF".
>
> "for ULCB" side has "#address-cells" and "#size-cells",
> "for ULCB-KF" side adds extra part on it.

I think you misunderstood: ulcb-kf-audio-graph-card-mix+split.dtsi
is the only file that has "ports@1", but does not have the corresponding
"#address-cells = <1>;" and "#size-cells = <0>;" right before it.

You can see this in the output of
"git grep -A4 "&rcar_sound\s{" -- arch/arm64/boot/dts/renesas/ulcb*"

> > > +       ports@1 {
> >
> > So now you end up with a "ports" node without a unit address, and a
> > "ports@1" node with a unit address, which looks very strange to me...
>
> It is another part of a little bit difficult part...
> "for ULCB-KF" part needs "for ULCB" part,
> this means "for ULCB" part is used for both "ULCB only dts" and "ULCB-KF dts".
>
> If we uses "ports@1" on "for ULCB" part, dts check will indicates
> extra warning, because it is not needed for "ULCB only dts".
>
>         "ULCB    dts" needs "ports"
>         "ULCB-KF dts" needs "ports@1"
>
> To avoid extra warning, it is using "ports".

Can't you use "ports@0" instead of "ports" in the base DTS?
When there can be multiple subnodes, we usually use unit addresses
for all of them.

> > Same here: "rcar_sound,dai" node without a unit address, and
> > "rcar_sound,dai@1" node with a unit address.
>
> Same above

Full thread at
https://lore.kernel.org/all/87wmwxh4av.wl-kuninori.morimoto.gx@renesas.com

Gr{oetje,eeting}s,

                        Geert
Kuninori Morimoto Sept. 19, 2023, 11:57 p.m. UTC | #4
Hi Geert

> I think you misunderstood: ulcb-kf-audio-graph-card-mix+split.dtsi
> is the only file that has "ports@1", but does not have the corresponding
> "#address-cells = <1>;" and "#size-cells = <0>;" right before it.

Oh, I see. Thank you for pointing it !

> Can't you use "ports@0" instead of "ports" in the base DTS?
> When there can be multiple subnodes, we usually use unit addresses
> for all of them.

Hmm... I could do it...
(I don't remember detail, but I got some warning when I did it before...)

I will post v2 patch.


Thank you for your help !!

Best regards
---
Kuninori Morimoto
diff mbox series

Patch

diff --git a/arch/arm64/boot/dts/renesas/ulcb-audio-graph-card-mix+split.dtsi b/arch/arm64/boot/dts/renesas/ulcb-audio-graph-card-mix+split.dtsi
index 672b0a224ef96..7f1758f893177 100644
--- a/arch/arm64/boot/dts/renesas/ulcb-audio-graph-card-mix+split.dtsi
+++ b/arch/arm64/boot/dts/renesas/ulcb-audio-graph-card-mix+split.dtsi
@@ -21,14 +21,14 @@ 
 / {
 	sound_card: sound {
 		compatible = "audio-graph-scu-card";
-		label = "rcar-sound";
+		label = "snd-ulcb-mix";
 
 		routing = "ak4613 Playback", "DAI0 Playback",
 			  "ak4613 Playback", "DAI1 Playback",
 			  "DAI0 Capture",    "ak4613 Capture";
 
-		dais = <&rsnd_port0 /* (A) CPU0 */
-			&rsnd_port1 /* (B) CPU1 */
+		dais = <&snd_ulcb1 /* (A) CPU0 */
+			&snd_ulcb2 /* (B) CPU1 */
 		>;
 	};
 };
@@ -65,7 +65,7 @@  ports {
 		/*
 		 * (A) CPU0
 		 */
-		rsnd_port0: port@0 {
+		snd_ulcb1: port@0 {
 			reg = <0>;
 			rsnd_for_ak4613_1: endpoint {
 				remote-endpoint = <&ak4613_ep1>;
@@ -78,7 +78,7 @@  rsnd_for_ak4613_1: endpoint {
 		/*
 		 * (B) CPU1
 		 */
-		rsnd_port1: port@1 {
+		snd_ulcb2: port@1 {
 			reg = <1>;
 			rsnd_for_ak4613_2: endpoint {
 				remote-endpoint = <&ak4613_ep2>;
diff --git a/arch/arm64/boot/dts/renesas/ulcb-audio-graph-card.dtsi b/arch/arm64/boot/dts/renesas/ulcb-audio-graph-card.dtsi
index 3be54df645e6c..967db5f79eb45 100644
--- a/arch/arm64/boot/dts/renesas/ulcb-audio-graph-card.dtsi
+++ b/arch/arm64/boot/dts/renesas/ulcb-audio-graph-card.dtsi
@@ -18,10 +18,10 @@ 
 / {
 	sound_card: sound {
 		compatible = "audio-graph-card";
-		label = "rcar-sound";
+		label = "snd-ulcb";
 
-		dais = <&rsnd_port0 /* (A) CPU0 <-> ak4613 */
-			&rsnd_port1 /* (B) CPU1  -> HDMI   */
+		dais = <&snd_ulcb1 /* (A) CPU0 <-> ak4613 */
+			&snd_ulcb2 /* (B) CPU1  -> HDMI   */
 		>;
 	};
 };
@@ -56,7 +56,7 @@  &rcar_sound {
 	ports {
 		#address-cells = <1>;
 		#size-cells = <0>;
-		rsnd_port0: port@0 {
+		snd_ulcb1: port@0 {
 			/*
 			 * (A) CPU0 <-> ak4613
 			 */
@@ -69,7 +69,7 @@  rsnd_for_ak4613: endpoint {
 				capture  = <&ssi1>, <&src1>, <&dvc1>;
 			};
 		};
-		rsnd_port1: port@1 {
+		snd_ulcb2: port@1 {
 			/*
 			 * (B) CPU1 -> HDMI
 			 */
diff --git a/arch/arm64/boot/dts/renesas/ulcb-audio-graph-card2-mix+split.dtsi b/arch/arm64/boot/dts/renesas/ulcb-audio-graph-card2-mix+split.dtsi
index 75b024e3fef13..77fff167070ba 100644
--- a/arch/arm64/boot/dts/renesas/ulcb-audio-graph-card2-mix+split.dtsi
+++ b/arch/arm64/boot/dts/renesas/ulcb-audio-graph-card2-mix+split.dtsi
@@ -20,13 +20,12 @@ 
 / {
 	sound_card: sound {
 		compatible = "audio-graph-card2";
-		label = "rcar-sound";
+		label = "snd-ulcb-mix";
 
 		routing = "ak4613 Playback", "DAI0 Playback",
 			  "ak4613 Playback", "DAI1 Playback",
 			  "DAI0 Capture",    "ak4613 Capture";
 
-		/delete-property/ dais;
 		links = <&fe_a		/* (A) CPU0   */
 			 &fe_b		/* (B) CPU1   */
 			 &be_x		/* (X) ak4613 */
diff --git a/arch/arm64/boot/dts/renesas/ulcb-audio-graph-card2.dtsi b/arch/arm64/boot/dts/renesas/ulcb-audio-graph-card2.dtsi
index 5ebec12358436..19fa6e1029955 100644
--- a/arch/arm64/boot/dts/renesas/ulcb-audio-graph-card2.dtsi
+++ b/arch/arm64/boot/dts/renesas/ulcb-audio-graph-card2.dtsi
@@ -20,7 +20,7 @@  &sound_card {
 	compatible = "audio-graph-card2";
 
 	/delete-property/ dais;
-	links = <&rsnd_port0	/* (A) CPU0 <-> ak4613 */
-		 &rsnd_port1	/* (B) CPU1  -> HDMI   */
+	links = <&snd_ulcb1	/* (A) CPU0 <-> ak4613 */
+		 &snd_ulcb2	/* (B) CPU1  -> HDMI   */
 		>;
 };
diff --git a/arch/arm64/boot/dts/renesas/ulcb-kf-audio-graph-card-mix+split.dtsi b/arch/arm64/boot/dts/renesas/ulcb-kf-audio-graph-card-mix+split.dtsi
index 9b01354940fdf..aa403a511497b 100644
--- a/arch/arm64/boot/dts/renesas/ulcb-kf-audio-graph-card-mix+split.dtsi
+++ b/arch/arm64/boot/dts/renesas/ulcb-kf-audio-graph-card-mix+split.dtsi
@@ -19,32 +19,31 @@ 
  *
  *	(A) aplay   -D plughw:0,0 xxx.wav (MIX-0)
  *	(B) aplay   -D plughw:0,1 xxx.wav (MIX-1)
- *	(C) aplay   -D plughw:0,2 xxx.wav (TDM-0)
- *	(D) aplay   -D plughw:0,3 xxx.wav (TDM-1)
- *	(E) aplay   -D plughw:0,4 xxx.wav (TDM-2)
- *	(F) aplay   -D plughw:0,5 xxx.wav (TDM-3)
+ *	(C) aplay   -D plughw:1,0 xxx.wav (TDM-0)
+ *	(D) aplay   -D plughw:1,1 xxx.wav (TDM-1)
+ *	(E) aplay   -D plughw:1,2 xxx.wav (TDM-2)
+ *	(F) aplay   -D plughw:1,3 xxx.wav (TDM-3)
  *
  *	(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 = "ak4613 Playback",   "DAI0 Playback",
-		  "ak4613 Playback",   "DAI1 Playback",
-		  "DAI0 Capture",      "ak4613 Capture",
-		  "pcm3168a Playback", "DAI2 Playback",
-		  "pcm3168a Playback", "DAI3 Playback",
-		  "pcm3168a Playback", "DAI4 Playback",
-		  "pcm3168a Playback", "DAI5 Playback";
+		routing = "pcm3168a Playback", "DAI2 Playback",
+			  "pcm3168a Playback", "DAI3 Playback",
+			  "pcm3168a Playback", "DAI4 Playback",
+			  "pcm3168a Playback", "DAI5 Playback";
 
-	dais = <&rsnd_port0 /* (A) CPU0 */
-		&rsnd_port1 /* (B) CPU1 */
-		&rsnd_port2 /* (C) CPU2 */
-		&rsnd_port3 /* (D) CPU3 */
-		&rsnd_port4 /* (E) CPU4 */
-		&rsnd_port5 /* (F) CPU5 */
-		&rsnd_port6 /* (G) GPU6 */
-	>;
+		dais = <&snd_kf1 /* (C) CPU2 */
+			&snd_kf2 /* (D) CPU3 */
+			&snd_kf3 /* (E) CPU4 */
+			&snd_kf4 /* (F) CPU5 */
+			&snd_kf5 /* (G) GPU6 */
+		>;
+	};
 };
 
 &pcm3168a {
@@ -103,13 +102,14 @@  pcm3168a_endpoint_c: endpoint {
 };
 
 &rcar_sound {
-	ports {
-		/* rsnd_port0-1 are defined in ulcb.dtsi */
+	ports@1 {
+		#address-cells = <1>;
+		#size-cells = <0>;
 
 		/*
 		 * (C) CPU2
 		 */
-		rsnd_port2: port@2 {
+		snd_kf1: port@2 {
 			reg = <2>;
 			rsnd_for_pcm3168a_play1: endpoint {
 				remote-endpoint = <&pcm3168a_endpoint_p1>;
@@ -121,7 +121,7 @@  rsnd_for_pcm3168a_play1: endpoint {
 		/*
 		 * (D) CPU3
 		 */
-		rsnd_port3: port@3 {
+		snd_kf2: port@3 {
 			reg = <3>;
 			rsnd_for_pcm3168a_play2: endpoint {
 				remote-endpoint = <&pcm3168a_endpoint_p2>;
@@ -133,7 +133,7 @@  rsnd_for_pcm3168a_play2: endpoint {
 		/*
 		 * (E) CPU4
 		 */
-		rsnd_port4: port@4 {
+		snd_kf3: port@4 {
 			reg = <4>;
 			rsnd_for_pcm3168a_play3: endpoint {
 				remote-endpoint = <&pcm3168a_endpoint_p3>;
@@ -145,7 +145,7 @@  rsnd_for_pcm3168a_play3: endpoint {
 		/*
 		 * (F) CPU5
 		 */
-		rsnd_port5: port@5 {
+		snd_kf4: port@5 {
 			reg = <5>;
 			rsnd_for_pcm3168a_play4: endpoint {
 				remote-endpoint = <&pcm3168a_endpoint_p4>;
@@ -157,7 +157,7 @@  rsnd_for_pcm3168a_play4: endpoint {
 		/*
 		 * (G) CPU6
 		 */
-		rsnd_port6: port@6 {
+		snd_kf5: port@6 {
 			reg = <6>;
 			rsnd_for_pcm3168a_capture: endpoint {
 				remote-endpoint = <&pcm3168a_endpoint_c>;
diff --git a/arch/arm64/boot/dts/renesas/ulcb-kf-audio-graph-card.dtsi b/arch/arm64/boot/dts/renesas/ulcb-kf-audio-graph-card.dtsi
index 1db99b7608f01..6fd6f7c652aff 100644
--- a/arch/arm64/boot/dts/renesas/ulcb-kf-audio-graph-card.dtsi
+++ b/arch/arm64/boot/dts/renesas/ulcb-kf-audio-graph-card.dtsi
@@ -13,18 +13,20 @@ 
  *
  *	(A) aplay   -D plughw:0,0 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
- *	(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 = <&rsnd_port0 /* (A) CPU0 <-> ak4613 */
-		&rsnd_port1 /* (B) CPU1  -> HDMI   */
-		&rsnd_port2 /* (C) CPU2  -> PCM3168A-p */
-		&rsnd_port3 /* (D) CPU3 <-  PCM3168A-c */
+		dais = <&snd_kf1 /* (C) CPU2  -> PCM3168A-p */
+			&snd_kf2 /* (D) CPU3 <-  PCM3168A-c */
 		>;
+	};
 };
 
 &pcm3168a {
@@ -56,12 +58,18 @@  pcm3168a_endpoint_c: endpoint {
 };
 
 &rcar_sound {
-	ports {
-		/* rsnd_port0/1 are defined in ulcb.dtsi */
+	#address-cells = <1>;
+	#size-cells = <0>;
+
+	ports@1 {
+		#address-cells = <1>;
+		#size-cells = <0>;
+		reg = <1>;
+
 		/*
 		 * (C) CPU2 -> PCM3168A-p
 		 */
-		rsnd_port2: port@2 {
+		snd_kf1: port@2 {
 			reg = <2>;
 			rsnd_for_pcm3168a_play: endpoint {
 				remote-endpoint = <&pcm3168a_endpoint_p>;
@@ -74,7 +82,7 @@  rsnd_for_pcm3168a_play: endpoint {
 		/*
 		 * (D) CPU3 <- PCM3168A-c
 		 */
-		rsnd_port3: port@3 {
+		snd_kf2: port@3 {
 			reg = <3>;
 			rsnd_for_pcm3168a_capture: endpoint {
 				remote-endpoint = <&pcm3168a_endpoint_c>;
diff --git a/arch/arm64/boot/dts/renesas/ulcb-kf-audio-graph-card2-mix+split.dtsi b/arch/arm64/boot/dts/renesas/ulcb-kf-audio-graph-card2-mix+split.dtsi
index da644128a9aed..944fc092e0c27 100644
--- a/arch/arm64/boot/dts/renesas/ulcb-kf-audio-graph-card2-mix+split.dtsi
+++ b/arch/arm64/boot/dts/renesas/ulcb-kf-audio-graph-card2-mix+split.dtsi
@@ -19,61 +19,65 @@ 
  *
  *	(A) aplay   -D plughw:0,0 xxx.wav (MIX-0)
  *	(B) aplay   -D plughw:0,1 xxx.wav (MIX-1)
- *	(C) aplay   -D plughw:0,2 xxx.wav (TDM-0)
- *	(D) aplay   -D plughw:0,3 xxx.wav (TDM-1)
- *	(E) aplay   -D plughw:0,4 xxx.wav (TDM-2)
- *	(F) aplay   -D plughw:0,5 xxx.wav (TDM-3)
+ *	(C) aplay   -D plughw:1,0 xxx.wav (TDM-0)
+ *	(D) aplay   -D plughw:1,1 xxx.wav (TDM-1)
+ *	(E) aplay   -D plughw:1,2 xxx.wav (TDM-2)
+ *	(F) aplay   -D plughw:1,3 xxx.wav (TDM-3)
  *
  *	(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",
-		  "ak4613 Playback",   "DAI1 Playback",
-		  "DAI0 Capture",      "ak4613 Capture",
-		  "pcm3168a Playback", "DAI2 Playback",
-		  "pcm3168a Playback", "DAI3 Playback",
-		  "pcm3168a Playback", "DAI4 Playback",
-		  "pcm3168a Playback", "DAI5 Playback",
-		  "DAI6 Capture",      "pcm3168a Capture";
+/ {
+	sound_card_kf: expand_sound {
+		compatible = "audio-graph-card2";
+		label = "snd-kf-split";
 
-	/delete-property/ dais;
-	links = <&fe_a		/* (A) CPU0	  */
-		 &fe_b		/* (B) CPU1	  */
-		 &fe_c		/* (C) CPU2	  */
-		 &fe_d		/* (D) CPU3	  */
-		 &fe_e		/* (E) CPU4	  */
-		 &fe_f		/* (F) CPU5	  */
-		 &rsnd_g	/* (G) CPU6	  */
-		 &be_x		/* (X) ak4613	  */
-		 &be_y		/* (Y) PCM3168A-p */
-	>;
+		routing = "pcm3168a Playback", "DAI2 Playback",
+			  "pcm3168a Playback", "DAI3 Playback",
+			  "pcm3168a Playback", "DAI4 Playback",
+			  "pcm3168a Playback", "DAI5 Playback",
+			  "DAI6 Capture",      "pcm3168a Capture";
 
-	dpcm {
-		ports@0 {
-		/*
-		 * FE
-		 *
-		 * (A)/(B) are defined on ulcb
-		 * (C) CPU2
-		 * (D) CPU3
-		 * (E) CPU4
-		 * (F) CPU5
-		 */
-		fe_c:	port@2 { reg = <2>; fe_c_ep: endpoint { remote-endpoint = <&rsnd_c_ep>; }; };
-		fe_d:	port@3 { reg = <3>; fe_d_ep: endpoint { remote-endpoint = <&rsnd_d_ep>; }; };
-		fe_e:	port@4 { reg = <4>; fe_e_ep: endpoint { remote-endpoint = <&rsnd_e_ep>; }; };
-		fe_f:	port@5 { reg = <5>; fe_f_ep: endpoint { remote-endpoint = <&rsnd_f_ep>; }; };
-		};
+		links = <&fe_c		/* (C) CPU2	  */
+			 &fe_d		/* (D) CPU3	  */
+			 &fe_e		/* (E) CPU4	  */
+			 &fe_f		/* (F) CPU5	  */
+			 &rsnd_g	/* (G) CPU6	  */
+			 &be_y		/* (Y) PCM3168A-p */
+		>;
 
-		ports@1 {
-		/*
-		 * BE
-		 *
-		 * (X) is defined on ulcb
-		 * (Y) PCM3168A-p
-		 */
-		be_y:	port@1 { reg = <1>; be_y_ep: endpoint { remote-endpoint = <&pcm3168a_y_ep>; }; };
+		dpcm {
+			#address-cells = <1>;
+			#size-cells = <0>;
+
+			ports@0 {
+				#address-cells = <1>;
+				#size-cells = <0>;
+				reg = <0>;
+
+				/*
+				* FE
+				*
+				* (C) CPU2
+				* (D) CPU3
+				* (E) CPU4
+				* (F) CPU5
+				*/
+			fe_c:	port@2 { reg = <2>; fe_c_ep: endpoint { remote-endpoint = <&rsnd_c_ep>; }; };
+			fe_d:	port@3 { reg = <3>; fe_d_ep: endpoint { remote-endpoint = <&rsnd_d_ep>; }; };
+			fe_e:	port@4 { reg = <4>; fe_e_ep: endpoint { remote-endpoint = <&rsnd_e_ep>; }; };
+			fe_f:	port@5 { reg = <5>; fe_f_ep: endpoint { remote-endpoint = <&rsnd_f_ep>; }; };
+			};
+
+			ports@1 {
+				reg = <1>;
+				/*
+				* BE
+				*
+				* (Y) PCM3168A-p
+				*/
+			be_y:	port { be_y_ep: endpoint { remote-endpoint = <&pcm3168a_y_ep>; }; };
+			};
 		};
 	};
 };
@@ -111,8 +115,13 @@  pcm3168a_z_ep: endpoint {
 };
 
 &rcar_sound {
-	ports {
-		/* (A)/(B) are defined in ulcb.dtsi */
+	#address-cells = <1>;
+	#size-cells = <0>;
+
+	ports@1 {
+		#address-cells = <1>;
+		#size-cells = <0>;
+		reg = <1>;
 
 		/*
 		 * (C) CPU2
diff --git a/arch/arm64/boot/dts/renesas/ulcb-kf-audio-graph-card2.dtsi b/arch/arm64/boot/dts/renesas/ulcb-kf-audio-graph-card2.dtsi
index c30e056538e46..4fc229418dd77 100644
--- a/arch/arm64/boot/dts/renesas/ulcb-kf-audio-graph-card2.dtsi
+++ b/arch/arm64/boot/dts/renesas/ulcb-kf-audio-graph-card2.dtsi
@@ -13,18 +13,18 @@ 
  *
  *	(A) aplay   -D plughw:0,0 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
- *	(D) arecord -D plughw:0,3 xxx.wav
+ *	(D) arecord -D plughw:1,1 xxx.wav
  */
 #include "ulcb-kf-audio-graph-card.dtsi"
 
-&sound_card {
+&sound_card_kf {
+	compatible = "audio-graph-card2";
+
 	/delete-property/ dais;
-	links = <&rsnd_port0	/* (A) CPU0 <-> ak4613 */
-		 &rsnd_port1	/* (B) CPU1  -> HDMI   */
-		 &rsnd_port2	/* (C) CPU2  -> PCM3168A-p */
-		 &rsnd_port3	/* (D) CPU3 <-  PCM3168A-c */
+	links = <&snd_kf1 /* (C) CPU2  -> PCM3168A-p */
+		 &snd_kf2 /* (D) CPU3 <-  PCM3168A-c */
 		>;
 };
diff --git a/arch/arm64/boot/dts/renesas/ulcb-kf-simple-audio-card-mix+split.dtsi b/arch/arm64/boot/dts/renesas/ulcb-kf-simple-audio-card-mix+split.dtsi
index bc221f9944731..bd5b4063f2373 100644
--- a/arch/arm64/boot/dts/renesas/ulcb-kf-simple-audio-card-mix+split.dtsi
+++ b/arch/arm64/boot/dts/renesas/ulcb-kf-simple-audio-card-mix+split.dtsi
@@ -19,89 +19,92 @@ 
  *
  *	(A) aplay   -D plughw:0,0 xxx.wav (MIX-0)
  *	(B) aplay   -D plughw:0,1 xxx.wav (MIX-1)
- *	(C) aplay   -D plughw:0,2 xxx.wav (TDM-0)
- *	(D) aplay   -D plughw:0,3 xxx.wav (TDM-1)
- *	(E) aplay   -D plughw:0,4 xxx.wav (TDM-2)
- *	(F) aplay   -D plughw:0,5 xxx.wav (TDM-3)
+ *	(C) aplay   -D plughw:1,0 xxx.wav (TDM-0)
+ *	(D) aplay   -D plughw:1,1 xxx.wav (TDM-1)
+ *	(E) aplay   -D plughw:1,2 xxx.wav (TDM-2)
+ *	(F) aplay   -D plughw:1,3 xxx.wav (TDM-3)
  *
  *	(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 {
-
-	simple-audio-card,routing = "ak4613 Playback",   "DAI0 Playback",
-				    "ak4613 Playback",   "DAI1 Playback",
-				    "DAI0 Capture",      "ak4613 Capture",
-				    "pcm3168a Playback", "DAI2 Playback",
-				    "pcm3168a Playback", "DAI3 Playback",
-				    "pcm3168a Playback", "DAI4 Playback",
-				    "pcm3168a Playback", "DAI5 Playback";
-
-	/* dai-link@0 is defined in ulcb.dtsi */
-
-	simple-audio-card,dai-link@1 {
+/ {
+	sound_card_kf: expand_sound {
 		#address-cells = <1>;
 		#size-cells = <0>;
-		reg = <1>;
-		convert-channels = <8>; /* to 8ch TDM */
 
-		/*
-		 * (C) CPU2
-		 */
-		cpu@0 {
+		compatible = "simple-scu-audio-card";
+		label = "snd-kf-split";
+
+		simple-audio-card,routing = "pcm3168a Playback", "DAI2 Playback",
+					    "pcm3168a Playback", "DAI3 Playback",
+					    "pcm3168a Playback", "DAI4 Playback",
+					    "pcm3168a Playback", "DAI5 Playback";
+
+		simple-audio-card,dai-link@0 {
+			#address-cells = <1>;
+			#size-cells = <0>;
 			reg = <0>;
-			bitclock-master;
-			frame-master;
-			sound-dai = <&rcar_sound 2>;
+			convert-channels = <8>; /* to 8ch TDM */
+
+			/*
+			* (C) CPU2
+			*/
+			cpu@0 {
+				reg = <0>;
+				bitclock-master;
+				frame-master;
+				sound-dai = <&rcar_sound 2>;
+			};
+			/*
+			* (D) CPU3
+			*/
+			cpu@1 {
+				reg = <1>;
+				sound-dai = <&rcar_sound 3>;
+			};
+			/*
+			* (E) CPU4
+			*/
+			cpu@2 {
+				reg = <2>;
+				sound-dai = <&rcar_sound 4>;
+			};
+			/*
+			* (F) CPU5
+			*/
+			cpu@3 {
+				reg = <3>;
+				sound-dai = <&rcar_sound 5>;
+			};
+			/*
+			* (Y) PCM3168A-p
+			*/
+			codec {
+				prefix = "pcm3168a";
+				mclk-fs = <512>;
+				sound-dai = <&pcm3168a 0>;
+			};
 		};
-		/*
-		 * (D) CPU3
-		 */
-		cpu@1 {
+
+		simple-audio-card,dai-link@1 {
 			reg = <1>;
-			sound-dai = <&rcar_sound 3>;
-		};
-		/*
-		 * (E) CPU4
-		 */
-		cpu@2 {
-			reg = <2>;
-			sound-dai = <&rcar_sound 4>;
-		};
-		/*
-		 * (F) CPU5
-		 */
-		cpu@3 {
-			reg = <3>;
-			sound-dai = <&rcar_sound 5>;
-		};
-		/*
-		 * (Y) PCM3168A-p
-		 */
-		codec {
-			prefix = "pcm3168a";
-			mclk-fs = <512>;
-			sound-dai = <&pcm3168a 0>;
-		};
-	};
-	simple-audio-card,dai-link@2 {
-		reg = <2>;
-		/*
-		 * (G) CPU6
-		 */
-		cpu {
-			bitclock-master;
-			frame-master;
-			sound-dai = <&rcar_sound 6>;
-		};
-		/*
-		 * (Z) PCM3168A-c
-		 */
-		codec {
-			prefix = "pcm3168a";
-			mclk-fs = <512>;
-			sound-dai = <&pcm3168a 1>;
+			/*
+			* (G) CPU6
+			*/
+			cpu {
+				bitclock-master;
+				frame-master;
+				sound-dai = <&rcar_sound 6>;
+			};
+			/*
+			* (Z) PCM3168A-c
+			*/
+			codec {
+				prefix = "pcm3168a";
+				mclk-fs = <512>;
+				sound-dai = <&pcm3168a 1>;
+			};
 		};
 	};
 };
@@ -115,7 +118,11 @@  &pcm3168a {
 };
 
 &rcar_sound {
-	rcar_sound,dai {
+	#address-cells = <1>;
+	#size-cells = <0>;
+
+	rcar_sound,dai@1 {
+		reg = <1>;
 
 		/* dai0-1 are defined in ulcb.dtsi */
 
diff --git a/arch/arm64/boot/dts/renesas/ulcb-kf-simple-audio-card.dtsi b/arch/arm64/boot/dts/renesas/ulcb-kf-simple-audio-card.dtsi
index 2010e8ac7fdc3..828501c3f1fc0 100644
--- a/arch/arm64/boot/dts/renesas/ulcb-kf-simple-audio-card.dtsi
+++ b/arch/arm64/boot/dts/renesas/ulcb-kf-simple-audio-card.dtsi
@@ -13,45 +13,51 @@ 
  *
  *	(A) aplay   -D plughw:0,0 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
- *	(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";
 
-	/*
-	 * (C) CPU2 -> PCM3168A-p
-	 */
-	simple-audio-card,dai-link@2 {
-		reg = <2>;
-		cpu {
-			bitclock-master;
-			frame-master;
-			dai-tdm-slot-num = <8>;
-			sound-dai = <&rcar_sound 2>;
-		};
-		codec {
-			mclk-fs = <512>;
-			sound-dai = <&pcm3168a 0>;
-		};
-	};
-	/*
-	 * (D) CPU3 <- PCM3168A-c
-	 */
-	simple-audio-card,dai-link@3 {
-		reg = <3>;
-		cpu {
-			bitclock-master;
-			frame-master;
-			dai-tdm-slot-num = <6>;
-			sound-dai = <&rcar_sound 3>;
+		#address-cells = <1>;
+		#size-cells = <0>;
+
+		/*
+		* (C) CPU2 -> PCM3168A-p
+		*/
+		simple-audio-card,dai-link@0 {
+			reg = <0>;
+			cpu {
+				bitclock-master;
+				frame-master;
+				dai-tdm-slot-num = <8>;
+				sound-dai = <&rcar_sound 2>;
+			};
+			codec {
+				mclk-fs = <512>;
+				sound-dai = <&pcm3168a 0>;
+			};
 		};
-		codec {
-			mclk-fs = <512>;
-			sound-dai = <&pcm3168a 1>;
+		/*
+		* (D) CPU3 <- PCM3168A-c
+		*/
+		simple-audio-card,dai-link@1 {
+			reg = <1>;
+			cpu {
+				bitclock-master;
+				frame-master;
+				dai-tdm-slot-num = <6>;
+				sound-dai = <&rcar_sound 3>;
+			};
+			codec {
+				mclk-fs = <512>;
+				sound-dai = <&pcm3168a 1>;
+			};
 		};
 	};
 };
@@ -65,9 +71,11 @@  &pcm3168a {
 };
 
 &rcar_sound {
+	#address-cells = <1>;
+	#size-cells = <0>;
 
-	rcar_sound,dai {
-		/* dai0-1 are defined in ulcb.dtsi */
+	rcar_sound,dai@1 {
+		reg = <1>;
 
 		/*
 		 * (C) CPU2 -> PCM3168A-p
diff --git a/arch/arm64/boot/dts/renesas/ulcb-simple-audio-card-mix+split.dtsi b/arch/arm64/boot/dts/renesas/ulcb-simple-audio-card-mix+split.dtsi
index 217d890198459..d98624e22126a 100644
--- a/arch/arm64/boot/dts/renesas/ulcb-simple-audio-card-mix+split.dtsi
+++ b/arch/arm64/boot/dts/renesas/ulcb-simple-audio-card-mix+split.dtsi
@@ -24,7 +24,7 @@  sound_card: sound {
 		#size-cells = <0>;
 
 		compatible = "simple-scu-audio-card";
-		label = "rcar-sound";
+		label = "snd-ulcb-mix";
 
 		simple-audio-card,prefix  = "ak4613";
 		simple-audio-card,routing = "ak4613 Playback", "DAI0 Playback",
diff --git a/arch/arm64/boot/dts/renesas/ulcb-simple-audio-card.dtsi b/arch/arm64/boot/dts/renesas/ulcb-simple-audio-card.dtsi
index 751cfd8c52570..44a6584ca7d77 100644
--- a/arch/arm64/boot/dts/renesas/ulcb-simple-audio-card.dtsi
+++ b/arch/arm64/boot/dts/renesas/ulcb-simple-audio-card.dtsi
@@ -18,7 +18,7 @@ 
 / {
 	sound_card: sound {
 		compatible = "simple-audio-card";
-		label = "rcar-sound";
+		label = "snd-ulcb";
 
 		#address-cells = <1>;
 		#size-cells = <0>;