arm64: dts: renesas: r8a77995: draak: Add R-Car Sound support
authorKuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Mon, 19 Jul 2021 23:45:34 +0000 (08:45 +0900)
committerGeert Uytterhoeven <geert+renesas@glider.be>
Fri, 30 Jul 2021 13:07:24 +0000 (15:07 +0200)
This patch adds R-Car Sound support for D3 draak.

Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Link: https://lore.kernel.org/r/87czrdx3z5.wl-kuninori.morimoto.gx@renesas.com
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
arch/arm64/boot/dts/renesas/r8a77995-draak.dts

index f0f585a..1ac15aa 100644 (file)
                ethernet0 = &avb;
        };
 
+       audio_clkout: audio-clkout {
+               /*
+                * This is same as <&rcar_sound 0>
+                * but needed to avoid cs2000/rcar_sound probe dead-lock
+                */
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <12288000>;
+       };
+
        backlight: backlight {
                compatible = "pwm-backlight";
                pwms = <&pwm1 0 50000>;
                regulator-always-on;
        };
 
+       sound_card: sound {
+               compatible = "audio-graph-card";
+
+               dais = <&rsnd_port0     /* ak4613 */
+                       /* HDMI is not yet supported */
+               >;
+       };
+
        vga {
                compatible = "vga-connector";
 
                #clock-cells = <0>;
                clock-frequency = <74250000>;
        };
+
+       x19_clk: x19 {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <24576000>;
+       };
+};
+
+&audio_clk_b {
+       /*
+        * X11 is connected to VI4_FIELD/SCIF_CLK/AUDIO_CLKB,
+        * and R-Car Sound uses AUDIO_CLKB.
+        * Note is that schematic indicates VI4_FIELD conection only
+        * not AUDIO_CLKB at SoC page.
+        * And this VI4_FIELD/SCIF_CLK/AUDIO_CLKB is connected to SW60.
+        * SW60 should be 1-2.
+        */
+
+       clock-frequency = <22579200>;
 };
 
 &avb {
        pinctrl-names = "default";
        status = "okay";
 
+       ak4613: codec@10 {
+               compatible = "asahi-kasei,ak4613";
+               #sound-dai-cells = <0>;
+               reg = <0x10>;
+               clocks = <&rcar_sound 0>; /* audio_clkout */
+
+               asahi-kasei,in1-single-end;
+               asahi-kasei,in2-single-end;
+               asahi-kasei,out1-single-end;
+               asahi-kasei,out2-single-end;
+               asahi-kasei,out3-single-end;
+               asahi-kasei,out4-single-end;
+               asahi-kasei,out5-single-end;
+               asahi-kasei,out6-single-end;
+
+               port {
+                       ak4613_endpoint: endpoint {
+                               remote-endpoint = <&rsnd_for_ak4613>;
+                       };
+               };
+       };
+
        composite-in@20 {
                compatible = "adi,adv7180cp";
                reg = <0x20>;
                };
        };
 
+       cs2000: clk-multiplier@4f {
+               #clock-cells = <0>;
+               compatible = "cirrus,cs2000-cp";
+               reg = <0x4f>;
+               clocks = <&audio_clkout>, <&x19_clk>; /* audio_clkout_1, x19 */
+               clock-names = "clk_in", "ref_clk";
+
+               assigned-clocks = <&cs2000>;
+               assigned-clock-rates = <24576000>; /* 1/1 divide */
+       };
+
        eeprom@50 {
                compatible = "rohm,br24t01", "atmel,24c01";
                reg = <0x50>;
                power-source = <1800>;
        };
 
+       sound_pins: sound {
+               groups = "ssi34_ctrl", "ssi3_data", "ssi4_data_a";
+               function = "ssi";
+       };
+
+       sound_clk_pins: sound-clk {
+               groups = "audio_clk_a", "audio_clk_b",
+                        "audio_clkout", "audio_clkout1";
+               function = "audio_clk";
+       };
+
        usb0_pins: usb0 {
                groups = "usb0";
                function = "usb0";
        status = "okay";
 };
 
+&rcar_sound {
+       pinctrl-0 = <&sound_pins>, <&sound_clk_pins>;
+       pinctrl-names = "default";
+
+       /* Single DAI */
+       #sound-dai-cells = <0>;
+
+       /* audio_clkout0/1 */
+       #clock-cells = <1>;
+       clock-frequency = <12288000 11289600>;
+
+       status = "okay";
+
+       clocks = <&cpg CPG_MOD 1005>,
+                <&cpg CPG_MOD 1011>, <&cpg CPG_MOD 1012>,
+                <&cpg CPG_MOD 1025>, <&cpg CPG_MOD 1026>,
+                <&cpg CPG_MOD 1020>, <&cpg CPG_MOD 1021>,
+                <&cpg CPG_MOD 1020>, <&cpg CPG_MOD 1021>,
+                <&cpg CPG_MOD 1019>, <&cpg CPG_MOD 1018>,
+                <&cs2000>, <&audio_clk_b>,
+                <&cpg CPG_CORE R8A77995_CLK_ZA2>;
+
+       ports {
+               rsnd_port0: port {
+                       rsnd_for_ak4613: endpoint {
+                               remote-endpoint = <&ak4613_endpoint>;
+                               dai-format = "left_j";
+                               bitclock-master = <&rsnd_for_ak4613>;
+                               frame-master = <&rsnd_for_ak4613>;
+                               playback = <&ssi3>, <&src5>, <&dvc0>;
+                               capture  = <&ssi4>, <&src6>, <&dvc1>;
+                       };
+               };
+       };
+};
+
 &rwdt {
        timeout-sec = <60>;
        status = "okay";
        status = "okay";
 };
 
+&ssi4 {
+       shared-pin;
+};
+
 &usb2_phy0 {
        pinctrl-0 = <&usb0_pins>;
        pinctrl-names = "default";