arm64: dts: renesas: ulcb/kf: Use multi Component sound
authorKuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Wed, 20 Sep 2023 23:53:12 +0000 (23:53 +0000)
committerGeert Uytterhoeven <geert+renesas@glider.be>
Mon, 25 Sep 2023 07:25:04 +0000 (09:25 +0200)
+-- 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: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
Link: https://lore.kernel.org/r/87fs382yhk.wl-kuninori.morimoto.gx@renesas.com
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
12 files changed:
arch/arm64/boot/dts/renesas/ulcb-audio-graph-card-mix+split.dtsi
arch/arm64/boot/dts/renesas/ulcb-audio-graph-card.dtsi
arch/arm64/boot/dts/renesas/ulcb-audio-graph-card2-mix+split.dtsi
arch/arm64/boot/dts/renesas/ulcb-audio-graph-card2.dtsi
arch/arm64/boot/dts/renesas/ulcb-kf-audio-graph-card-mix+split.dtsi
arch/arm64/boot/dts/renesas/ulcb-kf-audio-graph-card.dtsi
arch/arm64/boot/dts/renesas/ulcb-kf-audio-graph-card2-mix+split.dtsi
arch/arm64/boot/dts/renesas/ulcb-kf-audio-graph-card2.dtsi
arch/arm64/boot/dts/renesas/ulcb-kf-simple-audio-card-mix+split.dtsi
arch/arm64/boot/dts/renesas/ulcb-kf-simple-audio-card.dtsi
arch/arm64/boot/dts/renesas/ulcb-simple-audio-card-mix+split.dtsi
arch/arm64/boot/dts/renesas/ulcb-simple-audio-card.dtsi

index 672b0a224ef96570464c5367dca345f00732e07f..be6d7a035739978adfe44752af178943fb4cafba 100644 (file)
 / {
        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 */
                >;
        };
 };
 };
 
 &rcar_sound {
-       ports {
+       #address-cells = <1>;
+       #size-cells = <0>;
+
+       ports@0 {
                #address-cells = <1>;
                #size-cells = <0>;
+               reg = <0>;
 
                /*
                 * (A) CPU0
                 */
-               rsnd_port0: port@0 {
+               snd_ulcb1: port@0 {
                        reg = <0>;
                        rsnd_for_ak4613_1: endpoint {
                                remote-endpoint = <&ak4613_ep1>;
@@ -78,7 +82,7 @@
                /*
                 * (B) CPU1
                 */
-               rsnd_port1: port@1 {
+               snd_ulcb2: port@1 {
                        reg = <1>;
                        rsnd_for_ak4613_2: endpoint {
                                remote-endpoint = <&ak4613_ep2>;
index 3be54df645e6c698c1ab44ad78c1b0f274329bdf..3f1df6ee17ea1e09740c158e5c351dadc24d78be 100644 (file)
 / {
        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   */
                >;
        };
 };
 };
 
 &rcar_sound {
-       ports {
+       #address-cells = <1>;
+       #size-cells = <0>;
+
+       ports@0 {
                #address-cells = <1>;
                #size-cells = <0>;
-               rsnd_port0: port@0 {
+               reg = <0>;
+
+               snd_ulcb1: port@0 {
                        /*
                         * (A) CPU0 <-> ak4613
                         */
@@ -69,7 +74,7 @@
                                capture  = <&ssi1>, <&src1>, <&dvc1>;
                        };
                };
-               rsnd_port1: port@1 {
+               snd_ulcb2: port@1 {
                        /*
                         * (B) CPU1 -> HDMI
                         */
index 75b024e3fef1315beaad44a1985138c29748eca2..8966e6a7d28b3eacf0710c6d8a11feffac56c1a6 100644 (file)
 / {
        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 */
                        };
 
                        ports@1 {
-                               #address-cells = <1>;
-                               #size-cells = <0>;
                                reg = <1>;
                                /*
                                 * BE
                                 * (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>; }; };
                        };
                };
        };
 };
 
 &rcar_sound {
-       ports {
+       #address-cells = <1>;
+       #size-cells = <0>;
+
+       ports@0 {
                #address-cells = <1>;
                #size-cells = <0>;
+               reg = <0>;
 
                /*
                 * (A) CPU0
index 5ebec1235843657fd3716a8fbabae79570de781c..19fa6e102995586c2f8c03f7d6a6216945daf446 100644 (file)
@@ -20,7 +20,7 @@
        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   */
                >;
 };
index 9b01354940fdfec66cfd63e5217665d4490e4cdd..8ae6af1af094906fcc4fbeb8557df6dafe621199 100644 (file)
  *
  *     (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 {
 };
 
 &rcar_sound {
-       ports {
-               /* rsnd_port0-1 are defined in ulcb.dtsi */
+       ports@1 {
+               #address-cells = <1>;
+               #size-cells = <0>;
+               reg = <1>;
 
                /*
                 * (C) CPU2
                 */
-               rsnd_port2: port@2 {
+               snd_kf1: port@2 {
                        reg = <2>;
                        rsnd_for_pcm3168a_play1: endpoint {
                                remote-endpoint = <&pcm3168a_endpoint_p1>;
                /*
                 * (D) CPU3
                 */
-               rsnd_port3: port@3 {
+               snd_kf2: port@3 {
                        reg = <3>;
                        rsnd_for_pcm3168a_play2: endpoint {
                                remote-endpoint = <&pcm3168a_endpoint_p2>;
                /*
                 * (E) CPU4
                 */
-               rsnd_port4: port@4 {
+               snd_kf3: port@4 {
                        reg = <4>;
                        rsnd_for_pcm3168a_play3: endpoint {
                                remote-endpoint = <&pcm3168a_endpoint_p3>;
                /*
                 * (F) CPU5
                 */
-               rsnd_port5: port@5 {
+               snd_kf4: port@5 {
                        reg = <5>;
                        rsnd_for_pcm3168a_play4: endpoint {
                                remote-endpoint = <&pcm3168a_endpoint_p4>;
                /*
                 * (G) CPU6
                 */
-               rsnd_port6: port@6 {
+               snd_kf5: port@6 {
                        reg = <6>;
                        rsnd_for_pcm3168a_capture: endpoint {
                                remote-endpoint = <&pcm3168a_endpoint_c>;
index 1db99b7608f018ab0378ce1b78d425565e520b8c..5fbd4ca83e20d1eb08611543db437d15a087ddd2 100644 (file)
  *
  *     (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 {
 };
 
 &rcar_sound {
-       ports {
-               /* rsnd_port0/1 are defined in ulcb.dtsi */
+       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 +79,7 @@
                /*
                 * (D) CPU3 <- PCM3168A-c
                 */
-               rsnd_port3: port@3 {
+               snd_kf2: port@3 {
                        reg = <3>;
                        rsnd_for_pcm3168a_capture: endpoint {
                                remote-endpoint = <&pcm3168a_endpoint_c>;
index da644128a9aed8ec0f2252bdd13579e849ba8533..4cf632bc46215fdadd3674d47d965d960ad8282c 100644 (file)
  *
  *     (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>; }; };
+                       };
                };
        };
 };
 };
 
 &rcar_sound {
-       ports {
-               /* (A)/(B) are defined in ulcb.dtsi */
+       ports@1 {
+               #address-cells = <1>;
+               #size-cells = <0>;
+               reg = <1>;
 
                /*
                 * (C) CPU2
index c30e056538e4633a166a43152b86ba5df71e2776..4fc229418dd7739bbe11f719a02076c50f184e63 100644 (file)
  *
  *     (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 */
                >;
 };
index bc221f9944731ac8997b54ca4e078c2a8ea4447d..f01d91aaadf3b92f73cf5f9a8c3e7d7b952b1f95 100644 (file)
  *
  *     (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>;
+                       };
                };
        };
 };
 };
 
 &rcar_sound {
-       rcar_sound,dai {
+       rcar_sound,dai@1 {
+               reg = <1>;
 
                /* dai0-1 are defined in ulcb.dtsi */
 
index 2010e8ac7fdc39ac406304684df462e920b99d26..28d29ecfb395b2378db83aae5862ffe8fe36466f 100644 (file)
  *
  *     (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,8 @@
 };
 
 &rcar_sound {
-
-       rcar_sound,dai {
-               /* dai0-1 are defined in ulcb.dtsi */
+       rcar_sound,dai@1 {
+               reg = <1>;
 
                /*
                 * (C) CPU2 -> PCM3168A-p
index 217d890198459d54a50fc2cf1eadd16414b7193a..9b955510e38e84da3fe6e833daf66b0d791068f2 100644 (file)
@@ -24,7 +24,7 @@
                #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",
 };
 
 &rcar_sound {
+       #address-cells = <1>;
+       #size-cells = <0>;
        #sound-dai-cells = <1>;
 
-       rcar_sound,dai {
+       rcar_sound,dai@0 {
+               reg = <0>;
+
                /*
                 * (A) CPU0
                 */
index 751cfd8c52570db9c362dd7e813cd01ce8bee270..ba0e188e7b21ba93567239bd588daf8184f8d4c1 100644 (file)
@@ -18,7 +18,7 @@
 / {
        sound_card: sound {
                compatible = "simple-audio-card";
-               label = "rcar-sound";
+               label = "snd-ulcb";
 
                #address-cells = <1>;
                #size-cells = <0>;
 };
 
 &rcar_sound {
+       #address-cells = <1>;
+       #size-cells = <0>;
        #sound-dai-cells = <1>;
 
-       rcar_sound,dai {
+       rcar_sound,dai@0 {
+               reg = <0>;
+
                /*
                 * (A) CPU0 <-> ak4613
                 */