arm64: dts: imx8mp: Enable SAI audio on MX8MP DHCOM PDK2 and PDK3
authorMarek Vasut <marex@denx.de>
Sat, 27 May 2023 10:22:33 +0000 (12:22 +0200)
committerShawn Guo <shawnguo@kernel.org>
Sat, 27 May 2023 13:02:08 +0000 (21:02 +0800)
Add SAI I2S and audio bindings on MX8MP DHCOM PDK2 and PDK3.

The VDDA is supplied from on-carrier-board regulator, the VDDIO
is supplied from always-on on-SoM regulator. Except for different
I2C bus used to connect the codec, the implementation is virtually
identical on both carrier boards.

Align regulator-avdd name to regulator-3p3vdd on PDK3, since this
is the VDDA supply and it is the same on both carrier boards.

Signed-off-by: Marek Vasut <marex@denx.de>
Signed-off-by: Shawn Guo <shawnguo@kernel.org>
arch/arm64/boot/dts/freescale/imx8mp-dhcom-pdk2.dts
arch/arm64/boot/dts/freescale/imx8mp-dhcom-pdk3.dts
arch/arm64/boot/dts/freescale/imx8mp-dhcom-som.dtsi

index 92df6c1..e9fb5f7 100644 (file)
                stdout-path = &uart1;
        };
 
+       clk_ext_audio_codec: clock-codec {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <24000000>;
+       };
+
        gpio-keys {
                compatible = "gpio-keys";
 
                        pinctrl-names = "default";
                };
        };
+
+       reg_3p3vdd: regulator-3p3vdd {  /* 3.3VDD */
+               compatible = "regulator-fixed";
+               regulator-always-on;
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               regulator-name = "3P3VDD";
+       };
+
+       sound {
+               compatible = "simple-audio-card";
+               simple-audio-card,name = "SGTL5000-Card";
+               simple-audio-card,format = "i2s";
+               simple-audio-card,bitclock-master = <&codec_dai>;
+               simple-audio-card,frame-master = <&codec_dai>;
+               simple-audio-card,widgets = "Headphone", "Headphone Jack";
+               simple-audio-card,routing = "Headphone Jack", "HP_OUT";
+
+               cpu_dai: simple-audio-card,cpu {
+                       sound-dai = <&sai3>;
+               };
+
+               codec_dai: simple-audio-card,codec {
+                       sound-dai = <&sgtl5000>;
+               };
+       };
+};
+
+&i2c5 {
+       sgtl5000: codec@a {
+               compatible = "fsl,sgtl5000";
+               reg = <0x0a>;
+               #sound-dai-cells = <0>;
+               clocks = <&clk_ext_audio_codec>;
+               VDDA-supply = <&reg_3p3vdd>;
+               VDDIO-supply = <&reg_vdd_3p3v_awo>;
+       };
 };
 
 &fec { /* Second ethernet */
        status = "okay";
 };
 
+&sai3 {
+       #sound-dai-cells = <0>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_sai3>;
+       assigned-clocks = <&clk IMX8MP_CLK_SAI3>;
+       assigned-clock-parents = <&clk IMX8MP_AUDIO_PLL1_OUT>;
+       assigned-clock-rates = <12288000>;
+       fsl,sai-mclk-direction-output;
+       status = "okay";
+};
+
 &usb3_1 {
        fsl,over-current-active-low;
 };
index 24dc58b..31d85d5 100644 (file)
                stdout-path = &uart1;
        };
 
+       clk_ext_audio_codec: clock-codec {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <24000000>;
+       };
+
        clk_xtal25: clock-xtal25 {
                compatible = "fixed-clock";
                #clock-cells = <0>;
                };
        };
 
-       reg_avdd: regulator-avdd {      /* AUDIO_VDD */
+       reg_3p3vdd: regulator-3p3vdd {  /* 3.3VDD */
                compatible = "regulator-fixed";
                regulator-always-on;
                regulator-min-microvolt = <3300000>;
                regulator-max-microvolt = <3300000>;
-               regulator-name = "AUDIO_VDD";
+               regulator-name = "3P3VDD";
+       };
+
+       sound {
+               compatible = "simple-audio-card";
+               simple-audio-card,name = "SGTL5000-Card";
+               simple-audio-card,format = "i2s";
+               simple-audio-card,bitclock-master = <&codec_dai>;
+               simple-audio-card,frame-master = <&codec_dai>;
+               simple-audio-card,widgets = "Headphone", "Headphone Jack";
+               simple-audio-card,routing = "Headphone Jack", "HP_OUT";
+
+               cpu_dai: simple-audio-card,cpu {
+                       sound-dai = <&sai3>;
+               };
+
+               codec_dai: simple-audio-card,codec {
+                       sound-dai = <&sgtl5000>;
+               };
        };
 };
 
                        #size-cells = <0>;
                        reg = <0>;
 
+                       sgtl5000: codec@a {
+                               compatible = "fsl,sgtl5000";
+                               reg = <0x0a>;
+                               #sound-dai-cells = <0>;
+                               clocks = <&clk_ext_audio_codec>;
+                               VDDA-supply = <&reg_3p3vdd>;
+                               VDDIO-supply = <&reg_vdd_3p3v_awo>;
+                       };
+
                        typec@3d {
                                compatible = "nxp,ptn5150";
                                reg = <0x3d>;
        status = "okay";
 };
 
+&sai3 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_sai3>;
+       assigned-clocks = <&clk IMX8MP_CLK_SAI3>;
+       assigned-clock-parents = <&clk IMX8MP_AUDIO_PLL1_OUT>;
+       assigned-clock-rates = <12288000>;
+       fsl,sai-mclk-direction-output;
+       status = "okay";
+};
+
 &usb_dwc3_0 {
        usb-role-switch;
 
index 599c433..cb1953d 100644 (file)
                startup-delay-us = <100>;
                vin-supply = <&buck4>;
        };
+
+       reg_vdd_3p3v_awo: regulator-vdd-3p3v-awo {      /* VDD_3V3_AWO */
+               compatible = "regulator-fixed";
+               regulator-always-on;
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               regulator-name = "VDD_3P3V_AWO";
+       };
 };
 
 &A53_0 {
                >;
        };
 
+       pinctrl_sai3: dhcom-sai3-grp {
+               fsl,pins = <
+                       MX8MP_IOMUXC_SAI3_TXFS__AUDIOMIX_SAI3_TX_SYNC   0xd6
+                       MX8MP_IOMUXC_SAI3_TXC__AUDIOMIX_SAI3_TX_BCLK    0xd6
+                       MX8MP_IOMUXC_SAI3_RXD__AUDIOMIX_SAI3_RX_DATA00  0xd6
+                       MX8MP_IOMUXC_SAI3_TXD__AUDIOMIX_SAI3_TX_DATA00  0xd6
+               >;
+       };
+
        pinctrl_touch: dhcom-touch-grp {
                fsl,pins = <
                        /* #TOUCH_INT */