]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
arm64: dts: imx943-evk: add sound-wm8962 support
authorShengjiu Wang <shengjiu.wang@nxp.com>
Wed, 28 May 2025 01:58:35 +0000 (09:58 +0800)
committerShawn Guo <shawnguo@kernel.org>
Mon, 30 Jun 2025 03:30:39 +0000 (11:30 +0800)
Add WM8962 codec connected to SAI1 interface.

Signed-off-by: Shengjiu Wang <shengjiu.wang@nxp.com>
Reviewed-by: Frank Li <Frank.Li@nxp.com>
Signed-off-by: Shawn Guo <shawnguo@kernel.org>
arch/arm64/boot/dts/freescale/imx943-evk.dts

index ff6e9ac5477ff0846f504968f1bd459a4f7bd0ff..da08aaa959043c902d44682017ac16a1a89e91ec 100644 (file)
                enable-active-high;
        };
 
+       reg_audio_pwr: regulator-wm8962-pwr {
+               compatible = "regulator-fixed";
+               regulator-max-microvolt = <3300000>;
+               regulator-min-microvolt = <3300000>;
+               regulator-name = "audio-pwr";
+               gpio = <&pcal6416_i2c3_u171 12 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+       };
+
        reserved-memory {
                ranges;
                #address-cells = <2>;
                };
        };
 
+       sound-wm8962 {
+               compatible = "fsl,imx-audio-wm8962";
+               audio-codec = <&wm8962>;
+               audio-cpu = <&sai1>;
+               audio-routing = "Headphone Jack", "HPOUTL",
+                       "Headphone Jack", "HPOUTR",
+                       "Ext Spk", "SPKOUTL",
+                       "Ext Spk", "SPKOUTR",
+                       "AMIC", "MICBIAS",
+                       "IN3R", "AMIC",
+                       "IN1R", "AMIC";
+               hp-det-gpio = <&pcal6416_i2c3_u48 14 GPIO_ACTIVE_HIGH>;
+               model = "wm8962-audio";
+       };
+
        memory@80000000 {
                reg = <0x0 0x80000000 0x0 0x80000000>;
                device_type = "memory";
                        reg = <4>;
                        #address-cells = <1>;
                        #size-cells = <0>;
+
+                       wm8962: codec@1a {
+                               compatible = "wlf,wm8962";
+                               reg = <0x1a>;
+                               clocks = <&scmi_clk IMX94_CLK_SAI1>;
+                               AVDD-supply = <&reg_audio_pwr>;
+                               CPVDD-supply = <&reg_audio_pwr>;
+                               DBVDD-supply = <&reg_audio_pwr>;
+                               DCVDD-supply = <&reg_audio_pwr>;
+                               gpio-cfg = <
+                                       0x0000 /* 0:Default */
+                                       0x0000 /* 1:Default */
+                                       0x0000 /* 2:FN_DMICCLK */
+                                       0x0000 /* 3:Default */
+                                       0x0000 /* 4:FN_DMICCDAT */
+                                       0x0000 /* 5:Default */
+                               >;
+                               MICVDD-supply = <&reg_audio_pwr>;
+                               PLLVDD-supply = <&reg_audio_pwr>;
+                               SPKVDD1-supply = <&reg_audio_pwr>;
+                               SPKVDD2-supply = <&reg_audio_pwr>;
+                       };
                };
 
                i2c@5 {
                                reg = <0x21>;
                                #gpio-cells = <2>;
                                gpio-controller;
+
+                               audio-pwren-hog {
+                                       gpios = <12 GPIO_ACTIVE_HIGH>;
+                                       gpio-hog;
+                                       output-high;
+                               };
                        };
                };
 
        status = "okay";
 };
 
+&sai1 {
+       assigned-clocks = <&scmi_clk IMX94_CLK_AUDIOPLL1_VCO>,
+                         <&scmi_clk IMX94_CLK_AUDIOPLL2_VCO>,
+                         <&scmi_clk IMX94_CLK_AUDIOPLL1>,
+                         <&scmi_clk IMX94_CLK_AUDIOPLL2>,
+                         <&scmi_clk IMX94_CLK_SAI1>;
+       assigned-clock-parents = <0>, <0>, <0>, <0>,
+                                <&scmi_clk IMX94_CLK_AUDIOPLL1>;
+       assigned-clock-rates = <3932160000>,
+                              <3612672000>, <393216000>,
+                              <361267200>, <12288000>;
+       pinctrl-0 = <&pinctrl_sai1>;
+       pinctrl-names = "default";
+       fsl,sai-mclk-direction-output;
+       status = "okay";
+};
+
 &scmi_iomuxc {
 
        pinctrl_ioexpander_int2: ioexpanderint2grp {
                >;
        };
 
+       pinctrl_sai1: sai1grp {
+               fsl,pins = <
+                       IMX94_PAD_SAI1_TXFS__SAI1_TX_SYNC       0x31e
+                       IMX94_PAD_SAI1_TXC__SAI1_TX_BCLK        0x31e
+                       IMX94_PAD_SAI1_TXD0__SAI1_TX_DATA0      0x31e
+                       IMX94_PAD_SAI1_RXD0__SAI1_RX_DATA0      0x31e
+                       IMX94_PAD_I2C2_SDA__SAI1_MCLK           0x31e
+               >;
+       };
+
        pinctrl_uart1: uart1grp {
                fsl,pins = <
                        IMX94_PAD_UART1_TXD__LPUART1_TX         0x31e