]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
arm64: dts: renesas: ulcb/kf: Use TDM Split Mode for capture
authorKuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Mon, 3 Feb 2025 05:47:19 +0000 (05:47 +0000)
committerGeert Uytterhoeven <geert+renesas@glider.be>
Fri, 21 Feb 2025 15:23:01 +0000 (16:23 +0100)
Current ulcb/kf of -mix+split.dtsi is using TDM Split Mode, but only for
playback. Use TDM Split Mode on capture too.

Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
Link: https://lore.kernel.org/875xlrshp5.wl-kuninori.morimoto.gx@renesas.com
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
arch/arm64/boot/dts/renesas/ulcb-kf-audio-graph-card-mix+split.dtsi
arch/arm64/boot/dts/renesas/ulcb-kf-audio-graph-card2-mix+split.dtsi
arch/arm64/boot/dts/renesas/ulcb-kf-simple-audio-card-mix+split.dtsi

index 8ae6af1af094906fcc4fbeb8557df6dafe621199..4caa0281a687e269abbcb467bfa4aca4a1458886 100644 (file)
@@ -15,7 +15,9 @@
  *     (D) CPU3 (2ch)  --/                        (TDM-1 : 2,3ch)
  *     (E) CPU4 (2ch)  --/                        (TDM-2 : 4,5ch)
  *     (F) CPU5 (2ch)  --/                        (TDM-3 : 6,7ch)
- *     (G) CPU6 (6ch) <----  (6ch) (Z) PCM3168A-c
+ *     (G) CPU6 (2ch) <----  (6ch) (Z) PCM3168A-c (TDM-a: 0,1ch)
+ *     (H) CPU7 (2ch) <--/                        (TDM-b: 2,3ch)
+ *     (I) CPU8 (2ch) <--/                        (TDM-c: 4,5ch)
  *
  *     (A) aplay   -D plughw:0,0 xxx.wav (MIX-0)
  *     (B) aplay   -D plughw:0,1 xxx.wav (MIX-1)
@@ -25,7 +27,9 @@
  *     (F) aplay   -D plughw:1,3 xxx.wav (TDM-3)
  *
  *     (A) arecord -D plughw:0,0 xxx.wav
- *     (G) arecord -D plughw:1,4 xxx.wav
+ *     (G) arecord -D plughw:1,4 xxx.wav (TDM-a)
+ *     (H) arecord -D plughw:1,5 xxx.wav (TDM-b)
+ *     (I) arecord -D plughw:1,6 xxx.wav (TDM-c)
  */
 / {
        sound_card_kf: expand-sound {
                routing = "pcm3168a Playback", "DAI2 Playback",
                          "pcm3168a Playback", "DAI3 Playback",
                          "pcm3168a Playback", "DAI4 Playback",
-                         "pcm3168a Playback", "DAI5 Playback";
+                         "pcm3168a Playback", "DAI5 Playback",
+                         "DAI6 Capture", "pcm3168a Capture",
+                         "DAI7 Capture", "pcm3168a Capture",
+                         "DAI8 Capture", "pcm3168a Capture";
 
                dais = <&snd_kf1 /* (C) CPU2 */
                        &snd_kf2 /* (D) CPU3 */
                        &snd_kf3 /* (E) CPU4 */
                        &snd_kf4 /* (F) CPU5 */
-                       &snd_kf5 /* (G) GPU6 */
+                       &snd_kf5 /* (G) CPU6 */
+                       &snd_kf6 /* (H) CPU7 */
+                       &snd_kf7 /* (I) CPU8 */
                >;
        };
 };
@@ -50,7 +59,9 @@
        ports {
                #address-cells = <1>;
                #size-cells = <0>;
+
                mclk-fs = <512>;
+               prefix = "pcm3168a";
 
                /*
                 * (Y) PCM3168A-p
@@ -59,7 +70,6 @@
                        #address-cells = <1>;
                        #size-cells = <0>;
                        reg = <0>;
-                       prefix = "pcm3168a";
                        convert-channels = <8>; /* to 8ch TDM */
 
                        /* (C) CPU2 -> (Y) PCM3168A-p */
                 * (Z) PCM3168A-c
                 */
                port@1 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
                        reg = <1>;
+
+                       convert-channels = <6>; /* to 6ch TDM */
+
                        /* (G) CPU6 <- PCM3168A-c */
-                       pcm3168a_endpoint_c: endpoint {
-                               remote-endpoint = <&rsnd_for_pcm3168a_capture>;
+                       pcm3168a_endpoint_c1: endpoint@0 {
+                               reg = <0>;
+                               remote-endpoint = <&rsnd_for_pcm3168a_capture1>;
+                               clocks = <&clksndsel>;
+                       };
+                       /* (H) CPU7 <- PCM3168A-c */
+                       pcm3168a_endpoint_c2: endpoint@1 {
+                               reg = <1>;
+                               remote-endpoint = <&rsnd_for_pcm3168a_capture2>;
+                               clocks = <&clksndsel>;
+                       };
+                       /* (I) CPU8 <- PCM3168A-c */
+                       pcm3168a_endpoint_c3: endpoint@2 {
+                               reg = <2>;
+                               remote-endpoint = <&rsnd_for_pcm3168a_capture3>;
                                clocks = <&clksndsel>;
                        };
                };
                 */
                snd_kf5: port@6 {
                        reg = <6>;
-                       rsnd_for_pcm3168a_capture: endpoint {
-                               remote-endpoint = <&pcm3168a_endpoint_c>;
+                       rsnd_for_pcm3168a_capture1: endpoint {
+                               remote-endpoint = <&pcm3168a_endpoint_c1>;
+                               bitclock-master;
+                               frame-master;
+                               capture = <&ssiu40 &ssi4>;
+                       };
+               };
+               /*
+                * (H) CPU7
+                */
+               snd_kf6: port@7 {
+                       reg = <7>;
+                       rsnd_for_pcm3168a_capture2: endpoint {
+                               remote-endpoint = <&pcm3168a_endpoint_c2>;
+                               bitclock-master;
+                               frame-master;
+                               capture = <&ssiu41 &ssi4>;
+                       };
+               };
+               /*
+                * (I) CPU8
+                */
+               snd_kf7: port@8 {
+                       reg = <8>;
+                       rsnd_for_pcm3168a_capture3: endpoint {
+                               remote-endpoint = <&pcm3168a_endpoint_c3>;
                                bitclock-master;
                                frame-master;
-                               dai-tdm-slot-num = <6>;
-                               capture  = <&ssi4>;
+                               capture = <&ssiu42 &ssi4>;
                        };
                };
        };
index 4cf632bc46215fdadd3674d47d965d960ad8282c..67a0057a3383da29bf56772ec003818a0362768e 100644 (file)
@@ -15,7 +15,9 @@
  *     (D) CPU2 (2ch)  --/                        (TDM-1 : 2,3ch)
  *     (E) CPU4 (2ch)  --/                        (TDM-2 : 4,5ch)
  *     (F) CPU5 (2ch)  --/                        (TDM-3 : 6,7ch)
- *     (G) CPU6 (6ch) <----  (6ch) (Z) PCM3168A-c
+ *     (G) CPU6 (2ch) <----  (6ch) (Z) PCM3168A-c (TDM-a: 0,1ch)
+ *     (H) CPU7 (2ch) <--/                        (TDM-b: 2,3ch)
+ *     (I) CPU8 (2ch) <--/                        (TDM-c: 4,5ch)
  *
  *     (A) aplay   -D plughw:0,0 xxx.wav (MIX-0)
  *     (B) aplay   -D plughw:0,1 xxx.wav (MIX-1)
@@ -25,7 +27,9 @@
  *     (F) aplay   -D plughw:1,3 xxx.wav (TDM-3)
  *
  *     (A) arecord -D plughw:0,0 xxx.wav
- *     (G) arecord -D plughw:1,4 xxx.wav
+ *     (G) arecord -D plughw:1,4 xxx.wav (TDM-a)
+ *     (H) arecord -D plughw:1,5 xxx.wav (TDM-b)
+ *     (I) arecord -D plughw:1,6 xxx.wav (TDM-c)
  */
 / {
        sound_card_kf: expand-sound {
                          "pcm3168a Playback", "DAI3 Playback",
                          "pcm3168a Playback", "DAI4 Playback",
                          "pcm3168a Playback", "DAI5 Playback",
-                         "DAI6 Capture",      "pcm3168a Capture";
+                         "DAI6 Capture",      "pcm3168a Capture",
+                         "DAI7 Capture",      "pcm3168a Capture",
+                         "DAI8 Capture",      "pcm3168a Capture";
 
                links = <&fe_c          /* (C) CPU2       */
                         &fe_d          /* (D) CPU3       */
                         &fe_e          /* (E) CPU4       */
                         &fe_f          /* (F) CPU5       */
-                        &rsnd_g        /* (G) CPU6       */
+                        &fe_g          /* (G) CPU6       */
+                        &fe_h          /* (H) CPU7       */
+                        &fe_i          /* (I) CPU8       */
                         &be_y          /* (Y) PCM3168A-p */
+                        &be_z          /* (Z) PCM3168A-c */
                >;
 
-               dpcm {
+               dpcm: dpcm {
                        #address-cells = <1>;
                        #size-cells = <0>;
+                       non-supplier;
 
                        ports@0 {
                                #address-cells = <1>;
                                 * (D) CPU3
                                 * (E) CPU4
                                 * (F) CPU5
+                                * (G) CPU6
+                                * (H) CPU7
+                                * (I) CPU8
                                 */
                        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>; }; };
+
+                       fe_g:   port@6 { reg = <6>; fe_g_ep: endpoint { remote-endpoint = <&rsnd_g_ep>; }; };
+                       fe_h:   port@7 { reg = <7>; fe_h_ep: endpoint { remote-endpoint = <&rsnd_h_ep>; }; };
+                       fe_i:   port@8 { reg = <8>; fe_i_ep: endpoint { remote-endpoint = <&rsnd_i_ep>; }; };
                        };
 
                        ports@1 {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
                                reg = <1>;
                                /*
                                 * BE
                                 *
                                 * (Y) PCM3168A-p
+                                * (Z) PCM3168A-c
                                 */
-                       be_y:   port { be_y_ep: endpoint { remote-endpoint = <&pcm3168a_y_ep>; }; };
+                       be_y:   port@0 { reg = <0>; be_y_ep: endpoint { remote-endpoint = <&pcm3168a_y_ep>; }; };
+                       be_z:   port@1 { reg = <1>; be_z_ep: endpoint { remote-endpoint = <&pcm3168a_z_ep>; }; };
                        };
                };
        };
                 */
                port@1 {
                        reg = <1>;
+                       convert-channels = <6>; /* to 6ch TDM */
                        pcm3168a_z_ep: endpoint {
-                               remote-endpoint = <&rsnd_g_ep>;
+                               remote-endpoint = <&be_z_ep>;
                                clocks = <&clksndsel>;
                        };
                };
                /*
                 * (G) CPU6
                 */
-               rsnd_g: port@6 {
+               port@6 {
                        reg = <6>;
                        rsnd_g_ep: endpoint {
-                               remote-endpoint = <&pcm3168a_z_ep>;
+                               remote-endpoint = <&fe_g_ep>;
+                               bitclock-master;
+                               frame-master;
+                               capture = <&ssiu40 &ssi4>;
+                       };
+               };
+               /*
+                * (H) CPU7
+                */
+               port@7 {
+                       reg = <7>;
+                       rsnd_h_ep: endpoint {
+                               remote-endpoint = <&fe_h_ep>;
+                               bitclock-master;
+                               frame-master;
+                               capture = <&ssiu41 &ssi4>;
+                       };
+               };
+               /*
+                * (I) CPU8
+                */
+               port@8 {
+                       reg = <8>;
+                       rsnd_i_ep: endpoint {
+                               remote-endpoint = <&fe_i_ep>;
                                bitclock-master;
                                frame-master;
-                               capture = <&ssi4>;
+                               capture = <&ssiu42 &ssi4>;
                        };
                };
        };
index f01d91aaadf3b92f73cf5f9a8c3e7d7b952b1f95..fd75801c329e81cd6f4fc7728268b0857406d360 100644 (file)
@@ -15,7 +15,9 @@
  *     (D) CPU2 (2ch)  --/                        (TDM-1 : 2,3ch)
  *     (E) CPU4 (2ch)  --/                        (TDM-2 : 4,5ch)
  *     (F) CPU5 (2ch)  --/                        (TDM-3 : 6,7ch)
- *     (G) CPU6 (6ch) <----  (6ch) (Z) PCM3168A-c
+ *     (G) CPU6 (2ch) <----  (6ch) (Z) PCM3168A-c (TDM-a: 0,1ch)
+ *     (H) CPU7 (2ch) <--/                        (TDM-b: 2,3ch)
+ *     (I) CPU8 (2ch) <--/                        (TDM-c: 4,5ch)
  *
  *     (A) aplay   -D plughw:0,0 xxx.wav (MIX-0)
  *     (B) aplay   -D plughw:0,1 xxx.wav (MIX-1)
@@ -25,7 +27,9 @@
  *     (F) aplay   -D plughw:1,3 xxx.wav (TDM-3)
  *
  *     (A) arecord -D plughw:0,0 xxx.wav
- *     (G) arecord -D plughw:1,4 xxx.wav
+ *     (G) arecord -D plughw:1,4 xxx.wav (TDM-a)
+ *     (H) arecord -D plughw:1,5 xxx.wav (TDM-b)
+ *     (I) arecord -D plughw:1,6 xxx.wav (TDM-c)
  */
 
 / {
                simple-audio-card,routing = "pcm3168a Playback", "DAI2 Playback",
                                            "pcm3168a Playback", "DAI3 Playback",
                                            "pcm3168a Playback", "DAI4 Playback",
-                                           "pcm3168a Playback", "DAI5 Playback";
+                                           "pcm3168a Playback", "DAI5 Playback",
+                                           "DAI6 Capture",      "pcm3168a Capture",
+                                           "DAI7 Capture",      "pcm3168a Capture",
+                                           "DAI8 Capture",      "pcm3168a Capture";
 
                simple-audio-card,dai-link@0 {
                        #address-cells = <1>;
                };
 
                simple-audio-card,dai-link@1 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
                        reg = <1>;
+                       convert-channels = <6>; /* to 6ch TDM */
+
                        /*
                         * (G) CPU6
                         */
-                       cpu {
+                       cpu@0 {
+                               reg = <0>;
                                bitclock-master;
                                frame-master;
                                sound-dai = <&rcar_sound 6>;
                        };
+                       /*
+                        * (H) CPU7
+                        */
+                       cpu@1 {
+                               reg = <1>;
+                               bitclock-master;
+                               frame-master;
+                               sound-dai = <&rcar_sound 7>;
+                       };
+                       /*
+                        * (I) CPU8
+                        */
+                       cpu@2 {
+                               reg = <2>;
+                               bitclock-master;
+                               frame-master;
+                               sound-dai = <&rcar_sound 8>;
+                       };
+
                        /*
                         * (Z) PCM3168A-c
                         */
                 * (G) CPU6
                 */
                dai6 {
-                       capture = <&ssi4>;
+                       capture = <&ssiu40 &ssi4>;
+               };
+               /*
+                * (H) CPU7
+                */
+               dai7 {
+                       capture = <&ssiu41 &ssi4>;
+               };
+               /*
+                * (I) CPU8
+                */
+               dai8 {
+                       capture = <&ssiu42 &ssi4>;
                };
        };
 };