]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
arm64: dts: imx8qm-mek: support revd board's wm8962 codec
authorLaurentiu Mihalcea <laurentiu.mihalcea@nxp.com>
Tue, 17 Jun 2025 14:52:20 +0000 (10:52 -0400)
committerShawn Guo <shawnguo@kernel.org>
Fri, 11 Jul 2025 08:34:31 +0000 (16:34 +0800)
The i.MX8QM MEK RevD board is a reworked version of the i.MX8QM MEK
board, which includes some sensor and component changes. One of these
components is the WM8962 codec, which is meant to replace the WM8960
codec present on i.MX8QM MEK. To avoid having to introduce a devicetree
overlay or another DTS, the WM8962 can be supported by using a virtual
I2C MUX since both of the codecs share the same I2C address.

Signed-off-by: Laurentiu Mihalcea <laurentiu.mihalcea@nxp.com>
Signed-off-by: Shawn Guo <shawnguo@kernel.org>
arch/arm64/boot/dts/freescale/imx8qm-mek.dts

index 353f825a8ac5db1ac70d1560318c134d188ae7ef..e1023ca55929254b91fd8d3d6135a4ad3c6c3c32 100644 (file)
                default-brightness-level = <80>;
        };
 
+       i2c-mux {
+               compatible = "i2c-mux-gpio";
+               mux-gpios = <&lsio_gpio5 3 GPIO_ACTIVE_HIGH>; /* needs to be an unused GPIO */
+               i2c-parent = <&i2c1>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               i2c@0 {
+                       reg = <0>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       wm8960: audio-codec@1a {
+                               compatible = "wlf,wm8960";
+                               reg = <0x1a>;
+                               clocks = <&mclkout0_lpcg IMX_LPCG_CLK_0>;
+                               clock-names = "mclk";
+                               assigned-clocks = <&clk IMX_SC_R_AUDIO_PLL_0 IMX_SC_PM_CLK_PLL>,
+                                                 <&clk IMX_SC_R_AUDIO_PLL_0 IMX_SC_PM_CLK_SLV_BUS>,
+                                                 <&clk IMX_SC_R_AUDIO_PLL_0 IMX_SC_PM_CLK_MST_BUS>,
+                                                 <&mclkout0_lpcg IMX_LPCG_CLK_0>;
+                               assigned-clock-rates = <786432000>,
+                                                      <49152000>,
+                                                      <12288000>,
+                                                      <12288000>;
+                               wlf,shared-lrclk;
+                               wlf,hp-cfg = <2 2 3>;
+                               wlf,gpio-cfg = <1 3>;
+                               AVDD-supply = <&reg_audio_3v3>;
+                               DBVDD-supply = <&reg_audio_1v8>;
+                               DCVDD-supply = <&reg_audio_1v8>;
+                               SPKVDD1-supply = <&reg_audio_5v>;
+                               SPKVDD2-supply = <&reg_audio_5v>;
+                       };
+               };
+
+               i2c@1 {
+                       reg = <1>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       wm8962: wm8962@1a {
+                               compatible = "wlf,wm8962";
+                               reg = <0x1a>;
+                               clocks = <&mclkout0_lpcg IMX_LPCG_CLK_0>;
+                               assigned-clocks = <&clk IMX_SC_R_AUDIO_PLL_0 IMX_SC_PM_CLK_PLL>,
+                                                 <&clk IMX_SC_R_AUDIO_PLL_0 IMX_SC_PM_CLK_SLV_BUS>,
+                                                 <&clk IMX_SC_R_AUDIO_PLL_0 IMX_SC_PM_CLK_MST_BUS>,
+                                                 <&mclkout0_lpcg IMX_LPCG_CLK_0>;
+                               assigned-clock-rates = <786432000>,
+                                                      <49152000>,
+                                                      <12288000>,
+                                                      <12288000>;
+                               DCVDD-supply = <&reg_audio_1v8>;
+                               DBVDD-supply = <&reg_audio_1v8>;
+                               AVDD-supply = <&reg_audio_1v8>;
+                               CPVDD-supply = <&reg_audio_1v8>;
+                               MICVDD-supply = <&reg_audio_3v3>;
+                               PLLVDD-supply = <&reg_audio_1v8>;
+                               SPKVDD1-supply = <&reg_audio_5v>;
+                               SPKVDD2-supply = <&reg_audio_5v>;
+                       };
+               };
+
+       };
+
        mux-controller {
                compatible = "nxp,cbdtu02043", "gpio-sbu-mux";
                pinctrl-names = "default";
                                "Mic Jack", "MICB";
        };
 
+       sound-wm8962 {
+               compatible = "fsl,imx-audio-wm8962";
+               model = "wm8962-audio";
+               audio-cpu = <&sai1>;
+               audio-codec = <&wm8962>;
+               hp-det-gpios = <&lsio_gpio0 31 GPIO_ACTIVE_HIGH>;
+               audio-routing = "Headphone Jack", "HPOUTL",
+                               "Headphone Jack", "HPOUTR",
+                               "Ext Spk", "SPKOUTL",
+                               "Ext Spk", "SPKOUTR",
+                               "AMIC", "MICBIAS",
+                               "IN1R", "AMIC",
+                               "IN3R", "AMIC";
+       };
+
        imx8qm-cm4-0 {
                compatible = "fsl,imx8qm-cm4";
                clocks = <&clk_dummy>;
        scl-gpios = <&lsio_gpio0 14 GPIO_ACTIVE_HIGH>;
        sda-gpios = <&lsio_gpio0 15 GPIO_ACTIVE_HIGH>;
        status = "okay";
-
-       wm8960: audio-codec@1a {
-               compatible = "wlf,wm8960";
-               reg = <0x1a>;
-               clocks = <&mclkout0_lpcg IMX_LPCG_CLK_0>;
-               clock-names = "mclk";
-               assigned-clocks = <&clk IMX_SC_R_AUDIO_PLL_0 IMX_SC_PM_CLK_PLL>,
-                                 <&clk IMX_SC_R_AUDIO_PLL_0 IMX_SC_PM_CLK_SLV_BUS>,
-                                 <&clk IMX_SC_R_AUDIO_PLL_0 IMX_SC_PM_CLK_MST_BUS>,
-                                 <&mclkout0_lpcg IMX_LPCG_CLK_0>;
-               assigned-clock-rates = <786432000>, <49152000>, <12288000>, <12288000>;
-               wlf,shared-lrclk;
-               wlf,hp-cfg = <2 2 3>;
-               wlf,gpio-cfg = <1 3>;
-               AVDD-supply = <&reg_audio_3v3>;
-               DBVDD-supply = <&reg_audio_1v8>;
-               DCVDD-supply = <&reg_audio_1v8>;
-               SPKVDD1-supply = <&reg_audio_5v>;
-               SPKVDD2-supply = <&reg_audio_5v>;
-       };
 };
 
 &i2c1_lvds0 {