* [PATCH v1 0/6] arm64: dts: imx8mp-var-som: align DTS with hardware revision
@ 2025-12-10 15:19 Stefano Radaelli
2025-12-10 15:19 ` [PATCH v1 1/6] arm64: dts: imx8mp-var-som: Remove USDHC2 controller and related signals Stefano Radaelli
` (5 more replies)
0 siblings, 6 replies; 9+ messages in thread
From: Stefano Radaelli @ 2025-12-10 15:19 UTC (permalink / raw)
To: devicetree, linux-kernel
Cc: Stefano Radaelli, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Shawn Guo, Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
imx, linux-arm-kernel
This patchset updates the device tree support for the VAR-SOM-MX8MP
module by removing nodes for hardware that is not populated on the SOM
and by introducing support for several on-module peripherals.
The first three patches drop USDHC2, the PCA9534 GPIO expander and
UART2, all of which are only present on the Symphony carrier board or
other custom carrier designs, and thus should not appear in the SOM
device tree.
The remaining patches add support for WiFi+Bluetooth connectivity, the
WM8904 audio codec, and the ADS7846 touchscreen controller.
This series ensures that the SOM device tree only describes hardware
that is actually present on the module, while enabling key on-module
features used across multiple designs.
Stefano Radaelli (6):
arm64: dts: imx8mp-var-som: Remove USDHC2 controller and related
signals
arm64: dts: imx8mp-var-som: Remove PCA9534 GPIO expander
arm64: dts: imx8mp-var-som: Remove UART2 console
arm64: dts: imx8mp-var-som: Add WiFi and Bluetooth support
arm64: dts: imx8mp-var-som: Add support for WM8904 audio codec
arm64: dts: imx8mp-var-som: Add support for ADS7846 touchscreen
.../boot/dts/freescale/imx8mp-var-som.dtsi | 332 +++++++++++-------
1 file changed, 211 insertions(+), 121 deletions(-)
base-commit: cb015814f8b6eebcbb8e46e111d108892c5e6821
--
2.47.3
^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH v1 1/6] arm64: dts: imx8mp-var-som: Remove USDHC2 controller and related signals
2025-12-10 15:19 [PATCH v1 0/6] arm64: dts: imx8mp-var-som: align DTS with hardware revision Stefano Radaelli
@ 2025-12-10 15:19 ` Stefano Radaelli
2025-12-10 15:19 ` [PATCH v1 2/6] arm64: dts: imx8mp-var-som: Remove PCA9534 GPIO expander Stefano Radaelli
` (4 subsequent siblings)
5 siblings, 0 replies; 9+ messages in thread
From: Stefano Radaelli @ 2025-12-10 15:19 UTC (permalink / raw)
To: devicetree, linux-kernel
Cc: Stefano Radaelli, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Shawn Guo, Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
imx, linux-arm-kernel
The VAR-SOM-MX8MP does not include any microSD slot connected to USDHC2.
The USDHC2 interface is instead available only on the Symphony carrier
board, and customers may optionally route it on their custom carrier
boards.
Since USDHC2 is not populated on the SOM, drop the USDHC2 node together
with its regulators, pinctrl groups and GPIOs from the SOM device tree.
This avoids exposing non-existing hardware and prevents misleading DT
descriptions for boards that do not implement USDHC2.
Signed-off-by: Stefano Radaelli <stefano.r@variscite.com>
---
.../boot/dts/freescale/imx8mp-var-som.dtsi | 75 -------------------
1 file changed, 75 deletions(-)
diff --git a/arch/arm64/boot/dts/freescale/imx8mp-var-som.dtsi b/arch/arm64/boot/dts/freescale/imx8mp-var-som.dtsi
index 29f080904482..949d9878f395 100644
--- a/arch/arm64/boot/dts/freescale/imx8mp-var-som.dtsi
+++ b/arch/arm64/boot/dts/freescale/imx8mp-var-som.dtsi
@@ -35,27 +35,6 @@ memory@40000000 {
<0x1 0x00000000 0 0xc0000000>;
};
- reg_usdhc2_vmmc: regulator-usdhc2-vmmc {
- compatible = "regulator-fixed";
- regulator-name = "VSD_3V3";
- regulator-min-microvolt = <3300000>;
- regulator-max-microvolt = <3300000>;
- gpios = <&gpio4 22 GPIO_ACTIVE_HIGH>;
- enable-active-high;
- startup-delay-us = <100>;
- off-on-delay-us = <12000>;
- };
-
- reg_usdhc2_vqmmc: regulator-usdhc2-vqmmc {
- compatible = "regulator-gpio";
- regulator-name = "VSD_VSEL";
- regulator-min-microvolt = <1800000>;
- regulator-max-microvolt = <3300000>;
- gpios = <&gpio2 12 GPIO_ACTIVE_HIGH>;
- states = <3300000 0x0 1800000 0x1>;
- vin-supply = <&ldo5>;
- };
-
reg_phy_supply: regulator-phy-supply {
compatible = "regulator-fixed";
regulator-name = "phy-supply";
@@ -271,19 +250,6 @@ &uart2 {
status = "okay";
};
-/* SD-card */
-&usdhc2 {
- pinctrl-names = "default", "state_100mhz", "state_200mhz";
- pinctrl-0 = <&pinctrl_usdhc2>, <&pinctrl_usdhc2_gpio>;
- pinctrl-1 = <&pinctrl_usdhc2_100mhz>, <&pinctrl_usdhc2_gpio>;
- pinctrl-2 = <&pinctrl_usdhc2_200mhz>, <&pinctrl_usdhc2_gpio>;
- cd-gpios = <&gpio1 14 GPIO_ACTIVE_LOW>;
- vmmc-supply = <®_usdhc2_vmmc>;
- vqmmc-supply = <®_usdhc2_vqmmc>;
- bus-width = <4>;
- status = "okay";
-};
-
/* eMMC */
&usdhc3 {
pinctrl-names = "default", "state_100mhz", "state_200mhz";
@@ -358,47 +324,6 @@ MX8MP_IOMUXC_UART2_TXD__UART2_DCE_TX 0x40
>;
};
- pinctrl_usdhc2_gpio: usdhc2-gpiogrp {
- fsl,pins = <
- MX8MP_IOMUXC_GPIO1_IO14__GPIO1_IO14 0x1c4
- MX8MP_IOMUXC_SAI2_RXC__GPIO4_IO22 0x10
- MX8MP_IOMUXC_SD2_CD_B__GPIO2_IO12 0xc0
- >;
- };
-
- pinctrl_usdhc2: usdhc2grp {
- fsl,pins = <
- MX8MP_IOMUXC_SD2_CLK__USDHC2_CLK 0x190
- MX8MP_IOMUXC_SD2_CMD__USDHC2_CMD 0x1d0
- MX8MP_IOMUXC_SD2_DATA0__USDHC2_DATA0 0x1d0
- MX8MP_IOMUXC_SD2_DATA1__USDHC2_DATA1 0x1d0
- MX8MP_IOMUXC_SD2_DATA2__USDHC2_DATA2 0x1d0
- MX8MP_IOMUXC_SD2_DATA3__USDHC2_DATA3 0x1d0
- >;
- };
-
- pinctrl_usdhc2_100mhz: usdhc2-100mhzgrp {
- fsl,pins = <
- MX8MP_IOMUXC_SD2_CLK__USDHC2_CLK 0x194
- MX8MP_IOMUXC_SD2_CMD__USDHC2_CMD 0x1d4
- MX8MP_IOMUXC_SD2_DATA0__USDHC2_DATA0 0x1d4
- MX8MP_IOMUXC_SD2_DATA1__USDHC2_DATA1 0x1d4
- MX8MP_IOMUXC_SD2_DATA2__USDHC2_DATA2 0x1d4
- MX8MP_IOMUXC_SD2_DATA3__USDHC2_DATA3 0x1d4
- >;
- };
-
- pinctrl_usdhc2_200mhz: usdhc2-200mhzgrp {
- fsl,pins = <
- MX8MP_IOMUXC_SD2_CLK__USDHC2_CLK 0x196
- MX8MP_IOMUXC_SD2_CMD__USDHC2_CMD 0x1d6
- MX8MP_IOMUXC_SD2_DATA0__USDHC2_DATA0 0x1d6
- MX8MP_IOMUXC_SD2_DATA1__USDHC2_DATA1 0x1d6
- MX8MP_IOMUXC_SD2_DATA2__USDHC2_DATA2 0x1d6
- MX8MP_IOMUXC_SD2_DATA3__USDHC2_DATA3 0x1d6
- >;
- };
-
pinctrl_usdhc3: usdhc3grp {
fsl,pins = <
MX8MP_IOMUXC_NAND_WE_B__USDHC3_CLK 0x190
--
2.47.3
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH v1 2/6] arm64: dts: imx8mp-var-som: Remove PCA9534 GPIO expander
2025-12-10 15:19 [PATCH v1 0/6] arm64: dts: imx8mp-var-som: align DTS with hardware revision Stefano Radaelli
2025-12-10 15:19 ` [PATCH v1 1/6] arm64: dts: imx8mp-var-som: Remove USDHC2 controller and related signals Stefano Radaelli
@ 2025-12-10 15:19 ` Stefano Radaelli
2025-12-10 15:19 ` [PATCH v1 3/6] arm64: dts: imx8mp-var-som: Remove UART2 console Stefano Radaelli
` (3 subsequent siblings)
5 siblings, 0 replies; 9+ messages in thread
From: Stefano Radaelli @ 2025-12-10 15:19 UTC (permalink / raw)
To: devicetree, linux-kernel
Cc: Stefano Radaelli, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Shawn Guo, Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
imx, linux-arm-kernel
The VAR-SOM-MX8MP module does not include the PCA9534 GPIO expander nor
the LED connected to it. These components are present only on the
Symphony carrier board and may vary depending on the final carrier
design.
Since the PCA9534 is not part of the SOM hardware, its node and related
LED definition do not belong in the SOM dtsi and are removed.
Signed-off-by: Stefano Radaelli <stefano.r@variscite.com>
---
.../boot/dts/freescale/imx8mp-var-som.dtsi | 50 -------------------
1 file changed, 50 deletions(-)
diff --git a/arch/arm64/boot/dts/freescale/imx8mp-var-som.dtsi b/arch/arm64/boot/dts/freescale/imx8mp-var-som.dtsi
index 949d9878f395..158a78ec9656 100644
--- a/arch/arm64/boot/dts/freescale/imx8mp-var-som.dtsi
+++ b/arch/arm64/boot/dts/freescale/imx8mp-var-som.dtsi
@@ -19,16 +19,6 @@ chosen {
stdout-path = &uart2;
};
- gpio-leds {
- compatible = "gpio-leds";
-
- led-0 {
- function = LED_FUNCTION_POWER;
- gpios = <&pca9534 0 GPIO_ACTIVE_HIGH>;
- linux,default-trigger = "heartbeat";
- };
- };
-
memory@40000000 {
device_type = "memory";
reg = <0x0 0x40000000 0 0xc0000000>,
@@ -216,33 +206,6 @@ ldo5: LDO5 {
};
};
-&i2c3 {
- clock-frequency = <400000>;
- pinctrl-names = "default";
- pinctrl-0 = <&pinctrl_i2c3>;
- status = "okay";
-
- /* GPIO expander */
- pca9534: gpio@20 {
- compatible = "nxp,pca9534";
- reg = <0x20>;
- pinctrl-names = "default";
- pinctrl-0 = <&pinctrl_pca9534>;
- gpio-controller;
- #gpio-cells = <2>;
- interrupt-parent = <&gpio1>;
- interrupts = <15 IRQ_TYPE_EDGE_FALLING>;
- wakeup-source;
-
- usb3-sata-sel-hog {
- gpio-hog;
- gpios = <4 0>;
- output-low;
- line-name = "usb3_sata_sel";
- };
- };
-};
-
/* Console */
&uart2 {
pinctrl-names = "default";
@@ -298,19 +261,6 @@ MX8MP_IOMUXC_SD1_DATA5__I2C1_SDA 0x400001c2
>;
};
- pinctrl_i2c3: i2c3grp {
- fsl,pins = <
- MX8MP_IOMUXC_I2C3_SCL__I2C3_SCL 0x400001c2
- MX8MP_IOMUXC_I2C3_SDA__I2C3_SDA 0x400001c2
- >;
- };
-
- pinctrl_pca9534: pca9534grp {
- fsl,pins = <
- MX8MP_IOMUXC_GPIO1_IO15__GPIO1_IO15 0xc0
- >;
- };
-
pinctrl_pmic: pmicgrp {
fsl,pins = <
MX8MP_IOMUXC_SPDIF_RX__GPIO5_IO04 0x1c0
--
2.47.3
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH v1 3/6] arm64: dts: imx8mp-var-som: Remove UART2 console
2025-12-10 15:19 [PATCH v1 0/6] arm64: dts: imx8mp-var-som: align DTS with hardware revision Stefano Radaelli
2025-12-10 15:19 ` [PATCH v1 1/6] arm64: dts: imx8mp-var-som: Remove USDHC2 controller and related signals Stefano Radaelli
2025-12-10 15:19 ` [PATCH v1 2/6] arm64: dts: imx8mp-var-som: Remove PCA9534 GPIO expander Stefano Radaelli
@ 2025-12-10 15:19 ` Stefano Radaelli
2025-12-11 0:46 ` Fabio Estevam
2025-12-10 15:19 ` [PATCH v1 4/6] arm64: dts: imx8mp-var-som: Add WiFi and Bluetooth support Stefano Radaelli
` (2 subsequent siblings)
5 siblings, 1 reply; 9+ messages in thread
From: Stefano Radaelli @ 2025-12-10 15:19 UTC (permalink / raw)
To: devicetree, linux-kernel
Cc: Stefano Radaelli, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Shawn Guo, Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
imx, linux-arm-kernel
The VAR-SOM-MX8MP does not include an onboard console connector. The
debug UART is provided on the Symphony carrier board, and customers may
choose to expose any UART controller on their own carrier designs.
Since UART2 is not populated on the SOM, drop the UART2 node from the
SOM device tree.
Signed-off-by: Stefano Radaelli <stefano.r@variscite.com>
---
.../boot/dts/freescale/imx8mp-var-som.dtsi | 18 ------------------
1 file changed, 18 deletions(-)
diff --git a/arch/arm64/boot/dts/freescale/imx8mp-var-som.dtsi b/arch/arm64/boot/dts/freescale/imx8mp-var-som.dtsi
index 158a78ec9656..5bba91dcef17 100644
--- a/arch/arm64/boot/dts/freescale/imx8mp-var-som.dtsi
+++ b/arch/arm64/boot/dts/freescale/imx8mp-var-som.dtsi
@@ -15,10 +15,6 @@
/ {
model = "Variscite VAR-SOM-MX8M Plus module";
- chosen {
- stdout-path = &uart2;
- };
-
memory@40000000 {
device_type = "memory";
reg = <0x0 0x40000000 0 0xc0000000>,
@@ -206,13 +202,6 @@ ldo5: LDO5 {
};
};
-/* Console */
-&uart2 {
- pinctrl-names = "default";
- pinctrl-0 = <&pinctrl_uart2>;
- status = "okay";
-};
-
/* eMMC */
&usdhc3 {
pinctrl-names = "default", "state_100mhz", "state_200mhz";
@@ -267,13 +256,6 @@ MX8MP_IOMUXC_SPDIF_RX__GPIO5_IO04 0x1c0
>;
};
- pinctrl_uart2: uart2grp {
- fsl,pins = <
- MX8MP_IOMUXC_UART2_RXD__UART2_DCE_RX 0x40
- MX8MP_IOMUXC_UART2_TXD__UART2_DCE_TX 0x40
- >;
- };
-
pinctrl_usdhc3: usdhc3grp {
fsl,pins = <
MX8MP_IOMUXC_NAND_WE_B__USDHC3_CLK 0x190
--
2.47.3
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH v1 4/6] arm64: dts: imx8mp-var-som: Add WiFi and Bluetooth support
2025-12-10 15:19 [PATCH v1 0/6] arm64: dts: imx8mp-var-som: align DTS with hardware revision Stefano Radaelli
` (2 preceding siblings ...)
2025-12-10 15:19 ` [PATCH v1 3/6] arm64: dts: imx8mp-var-som: Remove UART2 console Stefano Radaelli
@ 2025-12-10 15:19 ` Stefano Radaelli
2025-12-10 15:19 ` [PATCH v1 5/6] arm64: dts: imx8mp-var-som: Add support for WM8904 audio codec Stefano Radaelli
2025-12-10 15:19 ` [PATCH v1 6/6] arm64: dts: imx8mp-var-som: Add support for ADS7846 touchscreen Stefano Radaelli
5 siblings, 0 replies; 9+ messages in thread
From: Stefano Radaelli @ 2025-12-10 15:19 UTC (permalink / raw)
To: devicetree, linux-kernel
Cc: Stefano Radaelli, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Shawn Guo, Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
imx, linux-arm-kernel
Add device tree nodes for the WiFi and Bluetooth module mounted on the
VAR-SOM-MX8MP. The module can be based on either the NXP IW612 or IW611
chipset, depending on the configuration chosen by the customer.
Regardless of the chipset used, WiFi communicates over SDIO and Bluetooth
over UART.
Signed-off-by: Stefano Radaelli <stefano.r@variscite.com>
---
.../boot/dts/freescale/imx8mp-var-som.dtsi | 93 +++++++++++++++++++
1 file changed, 93 insertions(+)
diff --git a/arch/arm64/boot/dts/freescale/imx8mp-var-som.dtsi b/arch/arm64/boot/dts/freescale/imx8mp-var-som.dtsi
index 5bba91dcef17..e7f5ec10cbac 100644
--- a/arch/arm64/boot/dts/freescale/imx8mp-var-som.dtsi
+++ b/arch/arm64/boot/dts/freescale/imx8mp-var-som.dtsi
@@ -21,6 +21,15 @@ memory@40000000 {
<0x1 0x00000000 0 0xc0000000>;
};
+ iw61x_pwrseq: wifi-pwrseq {
+ compatible = "mmc-pwrseq-simple";
+ post-power-on-delay-ms = <100>;
+ power-off-delay-us = <10000>;
+ reset-gpios = <&gpio2 8 GPIO_ACTIVE_LOW>, /* WIFI_RESET */
+ <&gpio2 19 GPIO_ACTIVE_LOW>; /* WIFI_PWR_EN */
+ status = "okay";
+ };
+
reg_phy_supply: regulator-phy-supply {
compatible = "regulator-fixed";
regulator-name = "phy-supply";
@@ -202,6 +211,33 @@ ldo5: LDO5 {
};
};
+/* BT */
+&uart3 {
+ pinctrl-names = "default";
+ pinctrl-0 = <&pinctrl_uart3>, <&pinctrl_bluetooth>;
+ assigned-clocks = <&clk IMX8MP_CLK_UART3>;
+ assigned-clock-parents = <&clk IMX8MP_SYS_PLL1_80M>;
+ uart-has-rtscts;
+ status = "okay";
+
+ bluetooth {
+ compatible = "nxp,88w8987-bt";
+ };
+};
+
+/* WIFI */
+&usdhc1 {
+ pinctrl-names = "default", "state_100mhz", "state_200mhz";
+ pinctrl-0 = <&pinctrl_usdhc1>, <&pinctrl_wifi>;
+ pinctrl-1 = <&pinctrl_usdhc1_100mhz>, <&pinctrl_wifi>;
+ pinctrl-2 = <&pinctrl_usdhc1_200mhz>, <&pinctrl_wifi>;
+ bus-width = <4>;
+ non-removable;
+ keep-power-in-suspend;
+ mmc-pwrseq = <&iw61x_pwrseq>;
+ status = "okay";
+};
+
/* eMMC */
&usdhc3 {
pinctrl-names = "default", "state_100mhz", "state_200mhz";
@@ -222,6 +258,14 @@ &wdog1 {
&iomuxc {
+ pinctrl_bluetooth: bluetoothgrp {
+ fsl,pins = <
+ MX8MP_IOMUXC_SD1_DATA7__GPIO2_IO09 0xc0
+ MX8MP_IOMUXC_GPIO1_IO04__GPIO1_IO04 0xc0
+ MX8MP_IOMUXC_SD1_RESET_B__GPIO2_IO10 0xc0
+ >;
+ };
+
pinctrl_eqos: eqosgrp {
fsl,pins = <
MX8MP_IOMUXC_ENET_MDC__ENET_QOS_MDC 0x2
@@ -256,6 +300,48 @@ MX8MP_IOMUXC_SPDIF_RX__GPIO5_IO04 0x1c0
>;
};
+ pinctrl_uart3: uart3grp {
+ fsl,pins = <
+ MX8MP_IOMUXC_ECSPI1_SCLK__UART3_DCE_RX 0x140
+ MX8MP_IOMUXC_ECSPI1_MOSI__UART3_DCE_TX 0x140
+ MX8MP_IOMUXC_ECSPI1_MISO__UART3_DCE_CTS 0x140
+ MX8MP_IOMUXC_ECSPI1_SS0__UART3_DCE_RTS 0x140
+ >;
+ };
+
+ pinctrl_usdhc1: usdhc1grp {
+ fsl,pins = <
+ MX8MP_IOMUXC_SD1_CLK__USDHC1_CLK 0x190
+ MX8MP_IOMUXC_SD1_CMD__USDHC1_CMD 0x1d0
+ MX8MP_IOMUXC_SD1_DATA0__USDHC1_DATA0 0x1d0
+ MX8MP_IOMUXC_SD1_DATA1__USDHC1_DATA1 0x1d0
+ MX8MP_IOMUXC_SD1_DATA2__USDHC1_DATA2 0x1d0
+ MX8MP_IOMUXC_SD1_DATA3__USDHC1_DATA3 0x1d0
+ >;
+ };
+
+ pinctrl_usdhc1_100mhz: usdhc1-100mhzgrp {
+ fsl,pins = <
+ MX8MP_IOMUXC_SD1_CLK__USDHC1_CLK 0x194
+ MX8MP_IOMUXC_SD1_CMD__USDHC1_CMD 0x1d4
+ MX8MP_IOMUXC_SD1_DATA0__USDHC1_DATA0 0x1d4
+ MX8MP_IOMUXC_SD1_DATA1__USDHC1_DATA1 0x1d4
+ MX8MP_IOMUXC_SD1_DATA2__USDHC1_DATA2 0x1d4
+ MX8MP_IOMUXC_SD1_DATA3__USDHC1_DATA3 0x1d4
+ >;
+ };
+
+ pinctrl_usdhc1_200mhz: usdhc1-200mhzgrp {
+ fsl,pins = <
+ MX8MP_IOMUXC_SD1_CLK__USDHC1_CLK 0x196
+ MX8MP_IOMUXC_SD1_CMD__USDHC1_CMD 0x1d6
+ MX8MP_IOMUXC_SD1_DATA0__USDHC1_DATA0 0x1d6
+ MX8MP_IOMUXC_SD1_DATA1__USDHC1_DATA1 0x1d6
+ MX8MP_IOMUXC_SD1_DATA2__USDHC1_DATA2 0x1d6
+ MX8MP_IOMUXC_SD1_DATA3__USDHC1_DATA3 0x1d6
+ >;
+ };
+
pinctrl_usdhc3: usdhc3grp {
fsl,pins = <
MX8MP_IOMUXC_NAND_WE_B__USDHC3_CLK 0x190
@@ -309,4 +395,11 @@ pinctrl_wdog: wdoggrp {
MX8MP_IOMUXC_GPIO1_IO02__WDOG1_WDOG_B 0xc6
>;
};
+
+ pinctrl_wifi: wifigrp {
+ fsl,pins = <
+ MX8MP_IOMUXC_SD1_DATA6__GPIO2_IO08 0xc0
+ MX8MP_IOMUXC_SD2_RESET_B__GPIO2_IO19 0xc0
+ >;
+ };
};
--
2.47.3
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH v1 5/6] arm64: dts: imx8mp-var-som: Add support for WM8904 audio codec
2025-12-10 15:19 [PATCH v1 0/6] arm64: dts: imx8mp-var-som: align DTS with hardware revision Stefano Radaelli
` (3 preceding siblings ...)
2025-12-10 15:19 ` [PATCH v1 4/6] arm64: dts: imx8mp-var-som: Add WiFi and Bluetooth support Stefano Radaelli
@ 2025-12-10 15:19 ` Stefano Radaelli
2025-12-10 15:19 ` [PATCH v1 6/6] arm64: dts: imx8mp-var-som: Add support for ADS7846 touchscreen Stefano Radaelli
5 siblings, 0 replies; 9+ messages in thread
From: Stefano Radaelli @ 2025-12-10 15:19 UTC (permalink / raw)
To: devicetree, linux-kernel
Cc: Stefano Radaelli, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Shawn Guo, Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
imx, linux-arm-kernel
The VAR-SOM-MX8MP can integrate the WM8904, a high-performance
ultra-low-power stereo codec optimized for portable audio applications.
This patch adds the WM8904 device to the appropriate I2C bus, enables
the SAI peripheral, and introduces the sound node to expose the
sound card to the system.
Signed-off-by: Stefano Radaelli <stefano.r@variscite.com>
---
.../boot/dts/freescale/imx8mp-var-som.dtsi | 94 +++++++++++++++++++
1 file changed, 94 insertions(+)
diff --git a/arch/arm64/boot/dts/freescale/imx8mp-var-som.dtsi b/arch/arm64/boot/dts/freescale/imx8mp-var-som.dtsi
index e7f5ec10cbac..169fc6a9c8cb 100644
--- a/arch/arm64/boot/dts/freescale/imx8mp-var-som.dtsi
+++ b/arch/arm64/boot/dts/freescale/imx8mp-var-som.dtsi
@@ -30,6 +30,14 @@ iw61x_pwrseq: wifi-pwrseq {
status = "okay";
};
+ reg_audio_supply: regulator-3p3v {
+ compatible = "regulator-fixed";
+ regulator-name = "wm8904-supply";
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3300000>;
+ regulator-always-on;
+ };
+
reg_phy_supply: regulator-phy-supply {
compatible = "regulator-fixed";
regulator-name = "phy-supply";
@@ -47,6 +55,34 @@ reg_phy_vddio: regulator-phy-vddio {
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
};
+
+ sound {
+ compatible = "simple-audio-card";
+ simple-audio-card,bitclock-master = <&codec_dai>;
+ simple-audio-card,format = "i2s";
+ simple-audio-card,frame-master = <&codec_dai>;
+ simple-audio-card,mclk-fs = <256>;
+ simple-audio-card,name = "wm8904-audio";
+ simple-audio-card,routing =
+ "Headphone Jack", "HPOUTL",
+ "Headphone Jack", "HPOUTR",
+ "IN2L", "Line In Jack",
+ "IN2R", "Line In Jack",
+ "IN1L", "Microphone Jack",
+ "IN1R", "Microphone Jack";
+ simple-audio-card,widgets =
+ "Microphone", "Microphone Jack",
+ "Headphone", "Headphone Jack",
+ "Line", "Line In Jack";
+
+ codec_dai: simple-audio-card,codec {
+ sound-dai = <&wm8904>;
+ };
+
+ simple-audio-card,cpu {
+ sound-dai = <&sai3>;
+ };
+ };
};
&A53_0 {
@@ -209,6 +245,52 @@ ldo5: LDO5 {
};
};
};
+
+ wm8904: audio-codec@1a {
+ compatible = "wlf,wm8904";
+ reg = <0x1a>;
+ #sound-dai-cells = <0>;
+ clocks = <&audio_blk_ctrl IMX8MP_CLK_AUDIOMIX_SAI3_MCLK1>;
+ clock-names = "mclk";
+ AVDD-supply = <®_audio_supply>;
+ CPVDD-supply = <®_audio_supply>;
+ DBVDD-supply = <®_audio_supply>;
+ DCVDD-supply = <®_audio_supply>;
+ MICVDD-supply = <®_audio_supply>;
+ wlf,drc-cfg-names = "default", "peaklimiter", "tradition",
+ "soft", "music";
+ /*
+ * Config registers per name, respectively:
+ * KNEE_IP = 0, KNEE_OP = 0, HI_COMP = 1, LO_COMP = 1
+ * KNEE_IP = -24, KNEE_OP = -6, HI_COMP = 1/4, LO_COMP = 1
+ * KNEE_IP = -42, KNEE_OP = -3, HI_COMP = 0, LO_COMP = 1
+ * KNEE_IP = -45, KNEE_OP = -9, HI_COMP = 1/8, LO_COMP = 1
+ * KNEE_IP = -30, KNEE_OP = -10.5, HI_COMP = 1/4, LO_COMP = 1
+ */
+ wlf,drc-cfg-regs = /bits/ 16 <0x01af 0x3248 0x0000 0x0000>,
+ /bits/ 16 <0x04af 0x324b 0x0010 0x0408>,
+ /bits/ 16 <0x04af 0x324b 0x0028 0x0704>,
+ /bits/ 16 <0x04af 0x324b 0x0018 0x078c>,
+ /bits/ 16 <0x04af 0x324b 0x0010 0x050e>;
+ /* GPIO1 = DMIC_CLK, don't touch others */
+ wlf,gpio-cfg = <0x0018>, <0xffff>, <0xffff>, <0xffff>;
+ };
+};
+
+&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 = <11536000>;
+ clocks = <&audio_blk_ctrl IMX8MP_CLK_AUDIOMIX_SAI3_IPG>,
+ <&clk IMX8MP_CLK_DUMMY>,
+ <&audio_blk_ctrl IMX8MP_CLK_AUDIOMIX_SAI3_MCLK1>,
+ <&clk IMX8MP_CLK_DUMMY>,
+ <&clk IMX8MP_CLK_DUMMY>;
+ clock-names = "bus", "mclk0", "mclk1", "mclk2", "mclk3";
+ fsl,sai-mclk-direction-output;
+ status = "okay";
};
/* BT */
@@ -300,6 +382,18 @@ MX8MP_IOMUXC_SPDIF_RX__GPIO5_IO04 0x1c0
>;
};
+ pinctrl_sai3: sai3grp {
+ 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
+ MX8MP_IOMUXC_SAI3_MCLK__AUDIOMIX_SAI3_MCLK 0xd6
+ MX8MP_IOMUXC_SAI3_RXFS__AUDIOMIX_SAI3_RX_SYNC 0xd6
+ MX8MP_IOMUXC_SAI3_RXC__AUDIOMIX_SAI3_RX_BCLK 0xd6
+ >;
+ };
+
pinctrl_uart3: uart3grp {
fsl,pins = <
MX8MP_IOMUXC_ECSPI1_SCLK__UART3_DCE_RX 0x140
--
2.47.3
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH v1 6/6] arm64: dts: imx8mp-var-som: Add support for ADS7846 touchscreen
2025-12-10 15:19 [PATCH v1 0/6] arm64: dts: imx8mp-var-som: align DTS with hardware revision Stefano Radaelli
` (4 preceding siblings ...)
2025-12-10 15:19 ` [PATCH v1 5/6] arm64: dts: imx8mp-var-som: Add support for WM8904 audio codec Stefano Radaelli
@ 2025-12-10 15:19 ` Stefano Radaelli
5 siblings, 0 replies; 9+ messages in thread
From: Stefano Radaelli @ 2025-12-10 15:19 UTC (permalink / raw)
To: devicetree, linux-kernel
Cc: Stefano Radaelli, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Shawn Guo, Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
imx, linux-arm-kernel
The VAR-SOM-MX8MP integrates an ADS7846 resistive touchscreen controller.
The controller is physically located on the SOM, and its signals are
routed to the SOM pins, allowing carrier boards to make use of it.
This patch adds the ADS7846 node and the appropriate SPI controller.
Signed-off-by: Stefano Radaelli <stefano.r@variscite.com>
---
.../boot/dts/freescale/imx8mp-var-som.dtsi | 46 +++++++++++++++++++
1 file changed, 46 insertions(+)
diff --git a/arch/arm64/boot/dts/freescale/imx8mp-var-som.dtsi b/arch/arm64/boot/dts/freescale/imx8mp-var-som.dtsi
index 169fc6a9c8cb..ebe615a84150 100644
--- a/arch/arm64/boot/dts/freescale/imx8mp-var-som.dtsi
+++ b/arch/arm64/boot/dts/freescale/imx8mp-var-som.dtsi
@@ -101,6 +101,37 @@ &A53_3 {
cpu-supply = <&buck2>;
};
+&ecspi1 {
+ pinctrl-names = "default";
+ pinctrl-0 = <&pinctrl_ecspi1>;
+ cs-gpios = <&gpio5 17 GPIO_ACTIVE_LOW>;
+ status = "okay";
+
+ /* Resistive touch controller */
+ ads7846: touchscreen@0 {
+ compatible = "ti,ads7846";
+ reg = <0>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&pinctrl_restouch>;
+ interrupt-parent = <&gpio1>;
+ interrupts = <12 IRQ_TYPE_EDGE_FALLING>;
+ spi-max-frequency = <1500000>;
+ pendown-gpio = <&gpio1 12 GPIO_ACTIVE_LOW>;
+ ti,x-min = /bits/ 16 <125>;
+ ti,x-max = /bits/ 16 <4008>;
+ ti,y-min = /bits/ 16 <282>;
+ ti,y-max = /bits/ 16 <3864>;
+ ti,x-plate-ohms = /bits/ 16 <180>;
+ ti,pressure-max = /bits/ 16 <255>;
+ ti,debounce-max = /bits/ 16 <10>;
+ ti,debounce-tol = /bits/ 16 <3>;
+ ti,debounce-rep = /bits/ 16 <1>;
+ ti,settle-delay-usec = /bits/ 16 <150>;
+ ti,keep-vref-on;
+ wakeup-source;
+ };
+};
+
&eqos {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_eqos>;
@@ -348,6 +379,15 @@ MX8MP_IOMUXC_SD1_RESET_B__GPIO2_IO10 0xc0
>;
};
+ pinctrl_ecspi1: ecspi1grp {
+ fsl,pins = <
+ MX8MP_IOMUXC_I2C1_SCL__ECSPI1_SCLK 0x12
+ MX8MP_IOMUXC_I2C1_SDA__ECSPI1_MOSI 0x12
+ MX8MP_IOMUXC_I2C2_SCL__ECSPI1_MISO 0x12
+ MX8MP_IOMUXC_I2C2_SDA__GPIO5_IO17 0x12
+ >;
+ };
+
pinctrl_eqos: eqosgrp {
fsl,pins = <
MX8MP_IOMUXC_ENET_MDC__ENET_QOS_MDC 0x2
@@ -382,6 +422,12 @@ MX8MP_IOMUXC_SPDIF_RX__GPIO5_IO04 0x1c0
>;
};
+ pinctrl_restouch: restouchgrp {
+ fsl,pins = <
+ MX8MP_IOMUXC_GPIO1_IO12__GPIO1_IO12 0xc0
+ >;
+ };
+
pinctrl_sai3: sai3grp {
fsl,pins = <
MX8MP_IOMUXC_SAI3_TXFS__AUDIOMIX_SAI3_TX_SYNC 0xd6
--
2.47.3
^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH v1 3/6] arm64: dts: imx8mp-var-som: Remove UART2 console
2025-12-10 15:19 ` [PATCH v1 3/6] arm64: dts: imx8mp-var-som: Remove UART2 console Stefano Radaelli
@ 2025-12-11 0:46 ` Fabio Estevam
[not found] ` <DB4PR08MB103414303516B7FAFF29DB571E9A1A@DB4PR08MB10341.eurprd08.prod.outlook.com>
0 siblings, 1 reply; 9+ messages in thread
From: Fabio Estevam @ 2025-12-11 0:46 UTC (permalink / raw)
To: Stefano Radaelli
Cc: devicetree, linux-kernel, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Shawn Guo, Sascha Hauer, Pengutronix Kernel Team,
imx, linux-arm-kernel
Hi Stefano,
On Wed, Dec 10, 2025 at 12:20 PM Stefano Radaelli
<stefano.r@variscite.com> wrote:
>
> The VAR-SOM-MX8MP does not include an onboard console connector. The
> debug UART is provided on the Symphony carrier board, and customers may
> choose to expose any UART controller on their own carrier designs.
>
> Since UART2 is not populated on the SOM, drop the UART2 node from the
> SOM device tree.
This change is OK, but you need a patch for
imx8mp-var-som-symphony.dts to describe UART2, right?
Otherwise, people using imx8mp-var-som-symphony.dts will lose the console.
The same applies to other patches of this series.
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v1 3/6] arm64: dts: imx8mp-var-som: Remove UART2 console
[not found] ` <DB4PR08MB103414303516B7FAFF29DB571E9A1A@DB4PR08MB10341.eurprd08.prod.outlook.com>
@ 2025-12-11 12:31 ` Fabio Estevam
0 siblings, 0 replies; 9+ messages in thread
From: Fabio Estevam @ 2025-12-11 12:31 UTC (permalink / raw)
To: Stefano Radaelli
Cc: devicetree@vger.kernel.org, linux-kernel@vger.kernel.org,
Rob Herring, Krzysztof Kozlowski, Conor Dooley, Shawn Guo,
Sascha Hauer, Pengutronix Kernel Team, imx@lists.linux.dev,
linux-arm-kernel@lists.infradead.org
On Thu, Dec 11, 2025 at 5:08 AM Stefano Radaelli
<stefano.r@variscite.com> wrote:
> you are absolutely right, the Symphony DTS needs to provide UART2 (and the
> other interfaces moved out of the SOM) so that users relying on
> imx8mp-var-som-symphony.dts do not lose functionality.
> For this series, my intention was strictly to clean up the SOM and ensure
> it only describes what is physically present on the module.
> As soon as our new V2 symphony carrier is ready, I will submit the corresponding
> patches for the Symphony DTS as well.
This means the series cannot be applied as-is; otherwise, it will
cause regressions.
The move of UART from SoM dtsi to Symphony dts should be part of the same patch.
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2025-12-11 12:31 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-12-10 15:19 [PATCH v1 0/6] arm64: dts: imx8mp-var-som: align DTS with hardware revision Stefano Radaelli
2025-12-10 15:19 ` [PATCH v1 1/6] arm64: dts: imx8mp-var-som: Remove USDHC2 controller and related signals Stefano Radaelli
2025-12-10 15:19 ` [PATCH v1 2/6] arm64: dts: imx8mp-var-som: Remove PCA9534 GPIO expander Stefano Radaelli
2025-12-10 15:19 ` [PATCH v1 3/6] arm64: dts: imx8mp-var-som: Remove UART2 console Stefano Radaelli
2025-12-11 0:46 ` Fabio Estevam
[not found] ` <DB4PR08MB103414303516B7FAFF29DB571E9A1A@DB4PR08MB10341.eurprd08.prod.outlook.com>
2025-12-11 12:31 ` Fabio Estevam
2025-12-10 15:19 ` [PATCH v1 4/6] arm64: dts: imx8mp-var-som: Add WiFi and Bluetooth support Stefano Radaelli
2025-12-10 15:19 ` [PATCH v1 5/6] arm64: dts: imx8mp-var-som: Add support for WM8904 audio codec Stefano Radaelli
2025-12-10 15:19 ` [PATCH v1 6/6] arm64: dts: imx8mp-var-som: Add support for ADS7846 touchscreen Stefano Radaelli
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox