* [PATCH 0/2] arm64: dts: imx8qm(qxp)-mek: support the wm8962 codec
@ 2025-06-17 14:52 Laurentiu Mihalcea
2025-06-17 14:52 ` [PATCH 1/2] arm64: dts: imx8qxp-mek: support wcpu board's " Laurentiu Mihalcea
` (2 more replies)
0 siblings, 3 replies; 4+ messages in thread
From: Laurentiu Mihalcea @ 2025-06-17 14:52 UTC (permalink / raw)
To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Shawn Guo,
Sascha Hauer, Fabio Estevam
Cc: Pengutronix Kernel Team, devicetree, imx, linux-arm-kernel,
linux-kernel
From: Laurentiu Mihalcea <laurentiu.mihalcea@nxp.com>
This series adds DT support for the WM8962 codec found on the i.MX8QM MEK
RevD and i.MX8QXP WCPU MEK boards. The WM8962 codec comes as a replacement
for the WM8960 codec found on the i.MX8QM MEK and i.MX8QXP MEK boards.
Laurentiu Mihalcea (2):
arm64: dts: imx8qxp-mek: support wcpu board's wm8962 codec
arm64: dts: imx8qm-mek: support revd board's wm8962 codec
arch/arm64/boot/dts/freescale/imx8qm-mek.dts | 101 +++++++++++++----
arch/arm64/boot/dts/freescale/imx8qxp-mek.dts | 103 ++++++++++++++----
2 files changed, 161 insertions(+), 43 deletions(-)
--
2.34.1
^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH 1/2] arm64: dts: imx8qxp-mek: support wcpu board's wm8962 codec
2025-06-17 14:52 [PATCH 0/2] arm64: dts: imx8qm(qxp)-mek: support the wm8962 codec Laurentiu Mihalcea
@ 2025-06-17 14:52 ` Laurentiu Mihalcea
2025-06-17 14:52 ` [PATCH 2/2] arm64: dts: imx8qm-mek: support revd " Laurentiu Mihalcea
2025-07-05 6:40 ` [PATCH 0/2] arm64: dts: imx8qm(qxp)-mek: support the " Shawn Guo
2 siblings, 0 replies; 4+ messages in thread
From: Laurentiu Mihalcea @ 2025-06-17 14:52 UTC (permalink / raw)
To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Shawn Guo,
Sascha Hauer, Fabio Estevam
Cc: Pengutronix Kernel Team, devicetree, imx, linux-arm-kernel,
linux-kernel
From: Laurentiu Mihalcea <laurentiu.mihalcea@nxp.com>
The i.MX8QXP WCPU MEK board is a reworked version of the i.MX8QXP 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.MX8QXP 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>
---
arch/arm64/boot/dts/freescale/imx8qxp-mek.dts | 103 ++++++++++++++----
1 file changed, 80 insertions(+), 23 deletions(-)
diff --git a/arch/arm64/boot/dts/freescale/imx8qxp-mek.dts b/arch/arm64/boot/dts/freescale/imx8qxp-mek.dts
index c93d123670bd..38ebf06f2c40 100644
--- a/arch/arm64/boot/dts/freescale/imx8qxp-mek.dts
+++ b/arch/arm64/boot/dts/freescale/imx8qxp-mek.dts
@@ -64,6 +64,71 @@ usb3_data_ss: endpoint {
};
};
+ i2c-mux {
+ compatible = "i2c-mux-gpio";
+ mux-gpios = <&lsio_gpio5 0 GPIO_ACTIVE_HIGH>; /* needs to be an unused GPIO */
+ i2c-parent = <&cm40_i2c>;
+ #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 = <®_audio_3v3>;
+ DBVDD-supply = <®_audio_1v8>;
+ DCVDD-supply = <®_audio_1v8>;
+ SPKVDD1-supply = <®_audio_5v>;
+ SPKVDD2-supply = <®_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 = <®_audio_1v8>;
+ DBVDD-supply = <®_audio_1v8>;
+ AVDD-supply = <®_audio_1v8>;
+ CPVDD-supply = <®_audio_1v8>;
+ MICVDD-supply = <®_audio_3v3>;
+ PLLVDD-supply = <®_audio_1v8>;
+ SPKVDD1-supply = <®_audio_5v>;
+ SPKVDD2-supply = <®_audio_5v>;
+ };
+ };
+ };
+
reg_pcieb: regulator-pcie {
compatible = "regulator-fixed";
regulator-max-microvolt = <3300000>;
@@ -248,6 +313,21 @@ sound-wm8960 {
"LINPUT1", "Mic Jack",
"Mic Jack", "MICB";
};
+
+ sound-wm8962 {
+ compatible = "fsl,imx-audio-wm8962";
+ model = "wm8962-audio";
+ audio-cpu = <&sai1>;
+ audio-codec = <&wm8962>;
+ hp-det-gpios = <&lsio_gpio1 0 GPIO_ACTIVE_HIGH>;
+ audio-routing = "Headphone Jack", "HPOUTL",
+ "Headphone Jack", "HPOUTR",
+ "Ext Spk", "SPKOUTL",
+ "Ext Spk", "SPKOUTR",
+ "AMIC", "MICBIAS",
+ "IN3R", "AMIC",
+ "IN1R", "AMIC";
+ };
};
&amix {
@@ -427,29 +507,6 @@ &cm40_i2c {
sda-gpios = <&lsio_gpio1 9 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 = <®_audio_3v3>;
- DBVDD-supply = <®_audio_1v8>;
- DCVDD-supply = <®_audio_1v8>;
- SPKVDD1-supply = <®_audio_5v>;
- SPKVDD2-supply = <®_audio_5v>;
- };
-
pca6416: gpio@20 {
compatible = "ti,tca6416";
reg = <0x20>;
--
2.34.1
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCH 2/2] arm64: dts: imx8qm-mek: support revd board's wm8962 codec
2025-06-17 14:52 [PATCH 0/2] arm64: dts: imx8qm(qxp)-mek: support the wm8962 codec Laurentiu Mihalcea
2025-06-17 14:52 ` [PATCH 1/2] arm64: dts: imx8qxp-mek: support wcpu board's " Laurentiu Mihalcea
@ 2025-06-17 14:52 ` Laurentiu Mihalcea
2025-07-05 6:40 ` [PATCH 0/2] arm64: dts: imx8qm(qxp)-mek: support the " Shawn Guo
2 siblings, 0 replies; 4+ messages in thread
From: Laurentiu Mihalcea @ 2025-06-17 14:52 UTC (permalink / raw)
To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Shawn Guo,
Sascha Hauer, Fabio Estevam
Cc: Pengutronix Kernel Team, devicetree, imx, linux-arm-kernel,
linux-kernel
From: Laurentiu Mihalcea <laurentiu.mihalcea@nxp.com>
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>
---
arch/arm64/boot/dts/freescale/imx8qm-mek.dts | 101 +++++++++++++++----
1 file changed, 81 insertions(+), 20 deletions(-)
diff --git a/arch/arm64/boot/dts/freescale/imx8qm-mek.dts b/arch/arm64/boot/dts/freescale/imx8qm-mek.dts
index 353f825a8ac5..e1023ca55929 100644
--- a/arch/arm64/boot/dts/freescale/imx8qm-mek.dts
+++ b/arch/arm64/boot/dts/freescale/imx8qm-mek.dts
@@ -131,6 +131,72 @@ lvds_backlight1: backlight-lvds1 {
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 = <®_audio_3v3>;
+ DBVDD-supply = <®_audio_1v8>;
+ DCVDD-supply = <®_audio_1v8>;
+ SPKVDD1-supply = <®_audio_5v>;
+ SPKVDD2-supply = <®_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 = <®_audio_1v8>;
+ DBVDD-supply = <®_audio_1v8>;
+ AVDD-supply = <®_audio_1v8>;
+ CPVDD-supply = <®_audio_1v8>;
+ MICVDD-supply = <®_audio_3v3>;
+ PLLVDD-supply = <®_audio_1v8>;
+ SPKVDD1-supply = <®_audio_5v>;
+ SPKVDD2-supply = <®_audio_5v>;
+ };
+ };
+
+ };
+
mux-controller {
compatible = "nxp,cbdtu02043", "gpio-sbu-mux";
pinctrl-names = "default";
@@ -314,6 +380,21 @@ sound-wm8960 {
"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>;
@@ -511,26 +592,6 @@ &i2c1 {
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 = <®_audio_3v3>;
- DBVDD-supply = <®_audio_1v8>;
- DCVDD-supply = <®_audio_1v8>;
- SPKVDD1-supply = <®_audio_5v>;
- SPKVDD2-supply = <®_audio_5v>;
- };
};
&i2c1_lvds0 {
--
2.34.1
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH 0/2] arm64: dts: imx8qm(qxp)-mek: support the wm8962 codec
2025-06-17 14:52 [PATCH 0/2] arm64: dts: imx8qm(qxp)-mek: support the wm8962 codec Laurentiu Mihalcea
2025-06-17 14:52 ` [PATCH 1/2] arm64: dts: imx8qxp-mek: support wcpu board's " Laurentiu Mihalcea
2025-06-17 14:52 ` [PATCH 2/2] arm64: dts: imx8qm-mek: support revd " Laurentiu Mihalcea
@ 2025-07-05 6:40 ` Shawn Guo
2 siblings, 0 replies; 4+ messages in thread
From: Shawn Guo @ 2025-07-05 6:40 UTC (permalink / raw)
To: Laurentiu Mihalcea
Cc: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Shawn Guo,
Sascha Hauer, Fabio Estevam, Pengutronix Kernel Team, devicetree,
imx, linux-arm-kernel, linux-kernel
On Tue, Jun 17, 2025 at 10:52:18AM -0400, Laurentiu Mihalcea wrote:
> From: Laurentiu Mihalcea <laurentiu.mihalcea@nxp.com>
>
> This series adds DT support for the WM8962 codec found on the i.MX8QM MEK
> RevD and i.MX8QXP WCPU MEK boards. The WM8962 codec comes as a replacement
> for the WM8960 codec found on the i.MX8QM MEK and i.MX8QXP MEK boards.
>
> Laurentiu Mihalcea (2):
> arm64: dts: imx8qxp-mek: support wcpu board's wm8962 codec
> arm64: dts: imx8qm-mek: support revd board's wm8962 codec
Applied both, thanks!
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2025-07-05 6:40 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-06-17 14:52 [PATCH 0/2] arm64: dts: imx8qm(qxp)-mek: support the wm8962 codec Laurentiu Mihalcea
2025-06-17 14:52 ` [PATCH 1/2] arm64: dts: imx8qxp-mek: support wcpu board's " Laurentiu Mihalcea
2025-06-17 14:52 ` [PATCH 2/2] arm64: dts: imx8qm-mek: support revd " Laurentiu Mihalcea
2025-07-05 6:40 ` [PATCH 0/2] arm64: dts: imx8qm(qxp)-mek: support the " Shawn Guo
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).