* [PATCH 01/10] dt-bindings: arm: fsl: Add BSH SMM-M2B board
2026-11-04 7:35 [PATCH 00/10] Update BSH SystemMaster device trees and add SMM-M2B support Haoning Cheng
@ 2026-11-04 7:35 ` Haoning Cheng
2026-11-04 7:35 ` [PATCH 02/10] dts: imx: Use minimum NAND ECC strength on BSH boards Haoning Cheng
` (8 subsequent siblings)
9 siblings, 0 replies; 15+ messages in thread
From: Haoning Cheng @ 2026-11-04 7:35 UTC (permalink / raw)
To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Shawn Guo,
Frank Li, Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam
Cc: devicetree, linux-kernel, imx, linux-arm-kernel, Haoning Cheng
Add the BSH SMM-M2B SystemMaster to the list of supported
i.MX6ULZ-based boards.
The SMM-M2B is a variant of the BSH SMM-M2 SystemMaster
equipped with an AIC Wi-Fi and Bluetooth chip.
Signed-off-by: Haoning Cheng <Haoning.CHENG@cn.bosch.com>
---
Documentation/devicetree/bindings/arm/fsl.yaml | 1 +
1 file changed, 1 insertion(+)
diff --git a/Documentation/devicetree/bindings/arm/fsl.yaml b/Documentation/devicetree/bindings/arm/fsl.yaml
index f044e9aa04fa..9c86900dec4c 100644
--- a/Documentation/devicetree/bindings/arm/fsl.yaml
+++ b/Documentation/devicetree/bindings/arm/fsl.yaml
@@ -867,6 +867,7 @@ properties:
items:
- enum:
- bsh,imx6ulz-bsh-smm-m2 # i.MX6 ULZ BSH SystemMaster
+ - bsh,imx6ulz-bsh-smm-m2b # i.MX6 ULZ BSH SystemMaster
- fsl,imx6ulz-14x14-evk # i.MX6 ULZ 14x14 EVK Board
- const: fsl,imx6ull # This seems odd. Should be last?
- const: fsl,imx6ulz
--
2.43.0
^ permalink raw reply related [flat|nested] 15+ messages in thread* [PATCH 02/10] dts: imx: Use minimum NAND ECC strength on BSH boards
2026-11-04 7:35 [PATCH 00/10] Update BSH SystemMaster device trees and add SMM-M2B support Haoning Cheng
2026-11-04 7:35 ` [PATCH 01/10] dt-bindings: arm: fsl: Add BSH SMM-M2B board Haoning Cheng
@ 2026-11-04 7:35 ` Haoning Cheng
2026-11-04 7:49 ` sashiko-bot
2026-11-04 7:35 ` [PATCH 03/10] ARM: dts: imx6ulz: Enable RNGB on BSH SMM-M2 Haoning Cheng
` (7 subsequent siblings)
9 siblings, 1 reply; 15+ messages in thread
From: Haoning Cheng @ 2026-11-04 7:35 UTC (permalink / raw)
To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Shawn Guo,
Frank Li, Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam
Cc: devicetree, linux-kernel, imx, linux-arm-kernel, Haoning Cheng,
Michael Trimarchi
From: Michael Trimarchi <michael@amarulasolutions.com>
Configure the GPMI NAND controllers on the BSH SMM-M2 and SMM-S2
to use the minimum ECC strength required by the NAND flash.
Signed-off-by: Michael Trimarchi <michael@amarulasolutions.com>
Signed-off-by: Haoning Cheng <Haoning.CHENG@cn.bosch.com>
---
arch/arm/boot/dts/nxp/imx/imx6ulz-bsh-smm-m2.dts | 1 +
arch/arm64/boot/dts/freescale/imx8mn-bsh-smm-s2.dts | 1 +
2 files changed, 2 insertions(+)
diff --git a/arch/arm/boot/dts/nxp/imx/imx6ulz-bsh-smm-m2.dts b/arch/arm/boot/dts/nxp/imx/imx6ulz-bsh-smm-m2.dts
index 2d9f495660c9..aac211a9f9eb 100644
--- a/arch/arm/boot/dts/nxp/imx/imx6ulz-bsh-smm-m2.dts
+++ b/arch/arm/boot/dts/nxp/imx/imx6ulz-bsh-smm-m2.dts
@@ -26,6 +26,7 @@ &gpmi {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_gpmi_nand>;
nand-on-flash-bbt;
+ fsl,use-minimum-ecc;
status = "okay";
};
diff --git a/arch/arm64/boot/dts/freescale/imx8mn-bsh-smm-s2.dts b/arch/arm64/boot/dts/freescale/imx8mn-bsh-smm-s2.dts
index 11a1ba5bfdb7..df11f81ac50c 100644
--- a/arch/arm64/boot/dts/freescale/imx8mn-bsh-smm-s2.dts
+++ b/arch/arm64/boot/dts/freescale/imx8mn-bsh-smm-s2.dts
@@ -21,6 +21,7 @@ memory@40000000 {
&gpmi {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_gpmi_nand>;
+ fsl,use-minimum-ecc;
status = "okay";
};
--
2.43.0
^ permalink raw reply related [flat|nested] 15+ messages in thread* Re: [PATCH 02/10] dts: imx: Use minimum NAND ECC strength on BSH boards
2026-11-04 7:35 ` [PATCH 02/10] dts: imx: Use minimum NAND ECC strength on BSH boards Haoning Cheng
@ 2026-11-04 7:49 ` sashiko-bot
0 siblings, 0 replies; 15+ messages in thread
From: sashiko-bot @ 2026-11-04 7:49 UTC (permalink / raw)
To: Haoning Cheng; +Cc: devicetree, imx, robh, conor+dt, Frank.Li
Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [Medium] ARM: dts: imx: unjustified incompatible NAND ECC layout change on BSH boards
--
commit 8322a44ab1436f5d874adef6cee6881bf71a02c7
Author: Michael Trimarchi <michael@amarulasolutions.com>
dts: imx: Use minimum NAND ECC strength on BSH boards
This commit enables the fsl,use-minimum-ecc property on the GPMI NAND
controllers for the BSH SMM-M2 and SMM-S2 boards.
> diff --git a/arch/arm/boot/dts/nxp/imx/imx6ulz-bsh-smm-m2.dts b/arch/arm/boot/dts/nxp/imx/imx6ulz-bsh-smm-m2.dts
> index 2d9f495660c9a..aac211a9f9ebd 100644
> --- a/arch/arm/boot/dts/nxp/imx/imx6ulz-bsh-smm-m2.dts
> +++ b/arch/arm/boot/dts/nxp/imx/imx6ulz-bsh-smm-m2.dts
> @@ -26,6 +26,7 @@ &gpmi {
> pinctrl-names = "default";
> pinctrl-0 = <&pinctrl_gpmi_nand>;
> nand-on-flash-bbt;
> + fsl,use-minimum-ecc;
> status = "okay";
> };
>
> diff --git a/arch/arm64/boot/dts/freescale/imx8mn-bsh-smm-s2.dts b/arch/arm64/boot/dts/freescale/imx8mn-bsh-smm-s2.dts
> index 11a1ba5bfdb7e..df11f81ac50c1 100644
> --- a/arch/arm64/boot/dts/freescale/imx8mn-bsh-smm-s2.dts
> +++ b/arch/arm64/boot/dts/freescale/imx8mn-bsh-smm-s2.dts
> @@ -21,6 +21,7 @@ memory@40000000 {
> &gpmi {
> pinctrl-names = "default";
> pinctrl-0 = <&pinctrl_gpmi_nand>;
> + fsl,use-minimum-ecc;
[Severity: Medium]
Does adding fsl,use-minimum-ecc to these existing board device trees cause an
incompatible on-flash ECC layout regression for already-provisioned devices?
In drivers/mtd/nand/raw/gpmi-nand/gpmi-nand.c, gpmi_nand_probe() calls
common_nfc_set_geometry() to configure the BCH layout:
use_minimun_ecc = of_property_read_bool(this->dev->of_node,
"fsl,use-minimum-ecc");
/* use legacy bch geometry settings by default*/
if ((!use_minimun_ecc && mtd->oobsize < 1024) ||
!(requirements->strength > 0 && requirements->step_size > 0)) {
dev_dbg(this->dev, "use legacy bch geometry\n");
err = legacy_set_geometry(this);
if (!err)
return 0;
}
Without fsl,use-minimum-ecc (when mtd->oobsize < 1024),
common_nfc_set_geometry() calls legacy_set_geometry(), which maximizes
geo->ecc_strength across the OOB area via get_ecc_strength(). With
fsl,use-minimum-ecc enabled, it instead calls set_geometry_by_ecc_info()
using the NAND chip's minimum required ECC strength and step size, changing
geo->ecc_strength, geo->page_size, geo->block_mark_byte_offset, and
geo->block_mark_bit_offset.
As a result, any NAND partitions written using the previous device tree will
fail to read with -EBADMSG ECC errors. Could the commit message explain why
this change is needed (for example, to match the ECC layout expected by the
bootloader or ROM) and why breaking compatibility with existing on-flash
layouts on these boards is acceptable?
--
Sashiko AI review · https://sashiko.dev/#/patchset/20261104-add-bsh-smm-m2-v1-0-369f0a77e021@cn.bosch.com?part=2
^ permalink raw reply [flat|nested] 15+ messages in thread
* [PATCH 03/10] ARM: dts: imx6ulz: Enable RNGB on BSH SMM-M2
2026-11-04 7:35 [PATCH 00/10] Update BSH SystemMaster device trees and add SMM-M2B support Haoning Cheng
2026-11-04 7:35 ` [PATCH 01/10] dt-bindings: arm: fsl: Add BSH SMM-M2B board Haoning Cheng
2026-11-04 7:35 ` [PATCH 02/10] dts: imx: Use minimum NAND ECC strength on BSH boards Haoning Cheng
@ 2026-11-04 7:35 ` Haoning Cheng
2026-11-04 7:45 ` sashiko-bot
2026-11-04 7:35 ` [PATCH 04/10] ARM: dts: imx6ulz: Adjust BSH SMM-M2 Wi-Fi and Bluetooth pin settings Haoning Cheng
` (6 subsequent siblings)
9 siblings, 1 reply; 15+ messages in thread
From: Haoning Cheng @ 2026-11-04 7:35 UTC (permalink / raw)
To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Shawn Guo,
Frank Li, Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam
Cc: devicetree, linux-kernel, imx, linux-arm-kernel, Haoning Cheng,
Leonhard Hesse
From: Leonhard Hesse <leonhard.hesse@bshg.com>
Hardware random number generator is now used for cryptography.
Signed-off-by: Leonhard Hesse <leonhard.hesse@bshg.com>
Signed-off-by: Haoning Cheng <Haoning.CHENG@cn.bosch.com>
---
arch/arm/boot/dts/nxp/imx/imx6ulz-bsh-smm-m2.dts | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/arch/arm/boot/dts/nxp/imx/imx6ulz-bsh-smm-m2.dts b/arch/arm/boot/dts/nxp/imx/imx6ulz-bsh-smm-m2.dts
index aac211a9f9eb..39b7ee585860 100644
--- a/arch/arm/boot/dts/nxp/imx/imx6ulz-bsh-smm-m2.dts
+++ b/arch/arm/boot/dts/nxp/imx/imx6ulz-bsh-smm-m2.dts
@@ -30,6 +30,10 @@ &gpmi {
status = "okay";
};
+&rngb {
+ status = "okay";
+};
+
&snvs_poweroff {
status = "okay";
};
--
2.43.0
^ permalink raw reply related [flat|nested] 15+ messages in thread* Re: [PATCH 03/10] ARM: dts: imx6ulz: Enable RNGB on BSH SMM-M2
2026-11-04 7:35 ` [PATCH 03/10] ARM: dts: imx6ulz: Enable RNGB on BSH SMM-M2 Haoning Cheng
@ 2026-11-04 7:45 ` sashiko-bot
0 siblings, 0 replies; 15+ messages in thread
From: sashiko-bot @ 2026-11-04 7:45 UTC (permalink / raw)
To: Haoning Cheng; +Cc: devicetree, imx, robh, conor+dt, Frank.Li
Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [Low] ARM: dts: imx6ulz: redundant status override on already-enabled rngb node
--
commit b4e06771ac0019a530bbaccfe9a26a1cf41ddf74
Author: Leonhard Hesse <leonhard.hesse@bshg.com>
ARM: dts: imx6ulz: Enable RNGB on BSH SMM-M2
This commit adds a status override to enable the rngb node in the BSH SMM-M2
device tree.
> diff --git a/arch/arm/boot/dts/nxp/imx/imx6ulz-bsh-smm-m2.dts b/arch/arm/boot/dts/nxp/imx/imx6ulz-bsh-smm-m2.dts
> index aac211a9f9ebd..39b7ee585860f 100644
> --- a/arch/arm/boot/dts/nxp/imx/imx6ulz-bsh-smm-m2.dts
> +++ b/arch/arm/boot/dts/nxp/imx/imx6ulz-bsh-smm-m2.dts
> @@ -30,6 +30,10 @@ &gpmi {
> status = "okay";
> };
>
> +&rngb {
> + status = "okay";
> +};
[Severity: Low]
Is this status override for &rngb in
arch/arm/boot/dts/nxp/imx/imx6ulz-bsh-smm-m2.dts needed?
arch/arm/boot/dts/nxp/imx/imx6ulz-bsh-smm-m2.dts includes imx6ulz.dtsi,
which in turn includes arch/arm/boot/dts/nxp/imx/imx6ull.dtsi where the
rngb node is defined without a status property:
rngb: rng@2284000 {
compatible = "fsl,imx6ull-rngb", "fsl,imx25-rngb";
reg = <0x02284000 0x4000>;
interrupts = <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&clks IMX6UL_CLK_DUMMY>;
};
Because neither imx6ull.dtsi nor imx6ulz.dtsi sets status = "disabled" on
rngb, __of_device_is_available() in drivers/of/base.c already treats the
node as enabled by default, making this change a functional no-op.
--
Sashiko AI review · https://sashiko.dev/#/patchset/20261104-add-bsh-smm-m2-v1-0-369f0a77e021@cn.bosch.com?part=3
^ permalink raw reply [flat|nested] 15+ messages in thread
* [PATCH 04/10] ARM: dts: imx6ulz: Adjust BSH SMM-M2 Wi-Fi and Bluetooth pin settings
2026-11-04 7:35 [PATCH 00/10] Update BSH SystemMaster device trees and add SMM-M2B support Haoning Cheng
` (2 preceding siblings ...)
2026-11-04 7:35 ` [PATCH 03/10] ARM: dts: imx6ulz: Enable RNGB on BSH SMM-M2 Haoning Cheng
@ 2026-11-04 7:35 ` Haoning Cheng
2026-11-04 7:35 ` [PATCH 05/10] ARM: dts: imx6ulz: Fix BSH SMM-M2 WLAN host wake configuration Haoning Cheng
` (5 subsequent siblings)
9 siblings, 0 replies; 15+ messages in thread
From: Haoning Cheng @ 2026-11-04 7:35 UTC (permalink / raw)
To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Shawn Guo,
Frank Li, Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam
Cc: devicetree, linux-kernel, imx, linux-arm-kernel, Haoning Cheng,
Leonhard Hesse
From: Leonhard Hesse <leonhard.hesse@bshg.com>
Adjustment of wifi and bluetooth REG_ON pin settings.
Tests have shown that minor changes in drive strength, slew rate
and speed resulted in the best performance.
Signed-off-by: Leonhard Hesse <leonhard.hesse@bshg.com>
Signed-off-by: Haoning Cheng <Haoning.CHENG@cn.bosch.com>
---
arch/arm/boot/dts/nxp/imx/imx6ulz-bsh-smm-m2.dts | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/arch/arm/boot/dts/nxp/imx/imx6ulz-bsh-smm-m2.dts b/arch/arm/boot/dts/nxp/imx/imx6ulz-bsh-smm-m2.dts
index 39b7ee585860..792d23a39390 100644
--- a/arch/arm/boot/dts/nxp/imx/imx6ulz-bsh-smm-m2.dts
+++ b/arch/arm/boot/dts/nxp/imx/imx6ulz-bsh-smm-m2.dts
@@ -129,7 +129,7 @@ MX6UL_PAD_UART3_TX_DATA__UART3_DCE_TX 0x1b0b1
MX6UL_PAD_UART3_RX_DATA__UART3_DCE_RX 0x1b099
MX6UL_PAD_UART3_RTS_B__UART3_DCE_RTS 0x1b0b1
MX6UL_PAD_UART3_CTS_B__UART3_DCE_CTS 0x1b099
- MX6UL_PAD_GPIO1_IO01__GPIO1_IO01 0x79 /* BT_REG_ON */
+ MX6UL_PAD_GPIO1_IO01__GPIO1_IO01 0x100b1 /* BT_REG_ON */
MX6UL_PAD_SD1_CLK__GPIO2_IO17 0x100b1 /* BT_DEV_WAKE out */
MX6UL_PAD_ENET2_TX_EN__GPIO2_IO13 0x1b0b0 /* BT_HOST_WAKE in */
>;
@@ -150,7 +150,7 @@ MX6UL_PAD_CSI_DATA00__USDHC2_DATA0 0x17059
MX6UL_PAD_CSI_DATA01__USDHC2_DATA1 0x17059
MX6UL_PAD_CSI_DATA02__USDHC2_DATA2 0x17059
MX6UL_PAD_CSI_DATA03__USDHC2_DATA3 0x17059
- MX6UL_PAD_SD1_DATA3__GPIO2_IO21 0x79 /* WL_REG_ON */
+ MX6UL_PAD_SD1_DATA3__GPIO2_IO21 0x3029 /* WL_REG_ON */
MX6UL_PAD_UART2_CTS_B__GPIO1_IO22 0x100b1 /* WL_DEV_WAKE - WiFi_GPIO_4 - WiFi FW UART */
MX6UL_PAD_UART1_CTS_B__GPIO1_IO18 0x1b0b1 /* WL_HOST_WAKE - WIFI_GPIO_0 - OOB IRQ */
MX6UL_PAD_ENET1_RX_EN__OSC32K_32K_OUT 0x4001b031 /* OSC 32Khz wifi clk in */
--
2.43.0
^ permalink raw reply related [flat|nested] 15+ messages in thread* [PATCH 05/10] ARM: dts: imx6ulz: Fix BSH SMM-M2 WLAN host wake configuration
2026-11-04 7:35 [PATCH 00/10] Update BSH SystemMaster device trees and add SMM-M2B support Haoning Cheng
` (3 preceding siblings ...)
2026-11-04 7:35 ` [PATCH 04/10] ARM: dts: imx6ulz: Adjust BSH SMM-M2 Wi-Fi and Bluetooth pin settings Haoning Cheng
@ 2026-11-04 7:35 ` Haoning Cheng
2026-11-04 7:35 ` [PATCH 06/10] ARM: dts: imx6ulz: Factor out BSH SMM-M2 common device tree Haoning Cheng
` (4 subsequent siblings)
9 siblings, 0 replies; 15+ messages in thread
From: Haoning Cheng @ 2026-11-04 7:35 UTC (permalink / raw)
To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Shawn Guo,
Frank Li, Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam
Cc: devicetree, linux-kernel, imx, linux-arm-kernel, Haoning Cheng,
Roman Smrž
From: Roman Smrž <roman@amarulasolutions.com>
The pin is active when high, so pull-up configuration can trigger
unwanted interrupts during module loading or unloading. Change the
configuration to pull-down to avoid crashes there.
Disable cap-sdio-irq as it is not used by the driver.
Signed-off-by: Roman Smrž <roman@amarulasolutions.com>
Signed-off-by: Haoning Cheng <Haoning.CHENG@cn.bosch.com>
---
arch/arm/boot/dts/nxp/imx/imx6ulz-bsh-smm-m2.dts | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/arch/arm/boot/dts/nxp/imx/imx6ulz-bsh-smm-m2.dts b/arch/arm/boot/dts/nxp/imx/imx6ulz-bsh-smm-m2.dts
index 792d23a39390..362a26a2a1b1 100644
--- a/arch/arm/boot/dts/nxp/imx/imx6ulz-bsh-smm-m2.dts
+++ b/arch/arm/boot/dts/nxp/imx/imx6ulz-bsh-smm-m2.dts
@@ -85,7 +85,6 @@ &usdhc2 {
non-removable;
cap-power-off-card;
keep-power-in-suspend;
- cap-sdio-irq;
mmc-pwrseq = <&usdhc2_pwrseq>;
status = "okay";
@@ -152,7 +151,7 @@ MX6UL_PAD_CSI_DATA02__USDHC2_DATA2 0x17059
MX6UL_PAD_CSI_DATA03__USDHC2_DATA3 0x17059
MX6UL_PAD_SD1_DATA3__GPIO2_IO21 0x3029 /* WL_REG_ON */
MX6UL_PAD_UART2_CTS_B__GPIO1_IO22 0x100b1 /* WL_DEV_WAKE - WiFi_GPIO_4 - WiFi FW UART */
- MX6UL_PAD_UART1_CTS_B__GPIO1_IO18 0x1b0b1 /* WL_HOST_WAKE - WIFI_GPIO_0 - OOB IRQ */
+ MX6UL_PAD_UART1_CTS_B__GPIO1_IO18 0x130b1 /* WL_HOST_WAKE - WIFI_GPIO_0 - OOB IRQ */
MX6UL_PAD_ENET1_RX_EN__OSC32K_32K_OUT 0x4001b031 /* OSC 32Khz wifi clk in */
>;
};
--
2.43.0
^ permalink raw reply related [flat|nested] 15+ messages in thread* [PATCH 06/10] ARM: dts: imx6ulz: Factor out BSH SMM-M2 common device tree
2026-11-04 7:35 [PATCH 00/10] Update BSH SystemMaster device trees and add SMM-M2B support Haoning Cheng
` (4 preceding siblings ...)
2026-11-04 7:35 ` [PATCH 05/10] ARM: dts: imx6ulz: Fix BSH SMM-M2 WLAN host wake configuration Haoning Cheng
@ 2026-11-04 7:35 ` Haoning Cheng
2026-11-04 7:35 ` [PATCH 07/10] ARM: dts: imx6ulz: Add BSH SMM-M2B board support Haoning Cheng
` (3 subsequent siblings)
9 siblings, 0 replies; 15+ messages in thread
From: Haoning Cheng @ 2026-11-04 7:35 UTC (permalink / raw)
To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Shawn Guo,
Frank Li, Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam
Cc: devicetree, linux-kernel, imx, linux-arm-kernel, Haoning Cheng,
Qiu Guochang
From: Qiu Guochang <guochang.qiu@cn.bosch.com>
Move the hardware definitions shared by the BSH SMM-M2 and SMM-M2B
variants into a common device tree include file.
Update the existing SMM-M2 device tree to include the common file
while keeping board-specific configurations separate.
Signed-off-by: Qiu Guochang <guochang.qiu@cn.bosch.com>
Signed-off-by: Haoning Cheng <Haoning.CHENG@cn.bosch.com>
---
.../dts/nxp/imx/imx6ulz-bsh-smm-m2-common.dtsi | 89 ++++++++++++++++++
arch/arm/boot/dts/nxp/imx/imx6ulz-bsh-smm-m2.dts | 102 +++------------------
2 files changed, 104 insertions(+), 87 deletions(-)
diff --git a/arch/arm/boot/dts/nxp/imx/imx6ulz-bsh-smm-m2-common.dtsi b/arch/arm/boot/dts/nxp/imx/imx6ulz-bsh-smm-m2-common.dtsi
new file mode 100644
index 000000000000..5c9109da6806
--- /dev/null
+++ b/arch/arm/boot/dts/nxp/imx/imx6ulz-bsh-smm-m2-common.dtsi
@@ -0,0 +1,89 @@
+// SPDX-License-Identifier: (GPL-2.0 OR MIT)
+/*
+ * Copyright (C) 2021 BSH Hausgeraete GmbH
+ */
+
+#include <dt-bindings/input/input.h>
+#include "imx6ulz.dtsi"
+
+/ {
+ chosen {
+ stdout-path = &uart4;
+ };
+
+ usdhc2_pwrseq: usdhc2-pwrseq {
+ compatible = "mmc-pwrseq-simple";
+ reset-gpios = <&gpio2 21 GPIO_ACTIVE_LOW>;
+ };
+};
+
+&gpmi {
+ pinctrl-names = "default";
+ pinctrl-0 = <&pinctrl_gpmi_nand>;
+ nand-on-flash-bbt;
+ fsl,use-minimum-ecc;
+ status = "okay";
+};
+
+&rngb {
+ status = "okay";
+};
+
+&snvs_poweroff {
+ status = "okay";
+};
+
+&uart2 {
+ status = "okay";
+};
+
+&uart4 {
+ pinctrl-names = "default";
+ pinctrl-0 = <&pinctrl_uart4>;
+ status = "okay";
+};
+
+&usbotg1 {
+ dr_mode = "peripheral";
+ srp-disable;
+ hnp-disable;
+ adp-disable;
+ status = "okay";
+};
+
+&usbphy1 {
+ fsl,tx-d-cal = <106>;
+};
+
+&wdog1 {
+ status = "okay";
+};
+
+&iomuxc {
+ pinctrl_gpmi_nand: gpminandgrp {
+ fsl,pins = <
+ MX6UL_PAD_NAND_CLE__RAWNAND_CLE 0xb0b1
+ MX6UL_PAD_NAND_ALE__RAWNAND_ALE 0xb0b1
+ MX6UL_PAD_NAND_WP_B__RAWNAND_WP_B 0xb0b1
+ MX6UL_PAD_NAND_READY_B__RAWNAND_READY_B 0xb000
+ MX6UL_PAD_NAND_CE0_B__RAWNAND_CE0_B 0xb0b1
+ MX6UL_PAD_NAND_RE_B__RAWNAND_RE_B 0xb0b1
+ MX6UL_PAD_NAND_WE_B__RAWNAND_WE_B 0xb0b1
+ MX6UL_PAD_NAND_DATA00__RAWNAND_DATA00 0xb0b1
+ MX6UL_PAD_NAND_DATA01__RAWNAND_DATA01 0xb0b1
+ MX6UL_PAD_NAND_DATA02__RAWNAND_DATA02 0xb0b1
+ MX6UL_PAD_NAND_DATA03__RAWNAND_DATA03 0xb0b1
+ MX6UL_PAD_NAND_DATA04__RAWNAND_DATA04 0xb0b1
+ MX6UL_PAD_NAND_DATA05__RAWNAND_DATA05 0xb0b1
+ MX6UL_PAD_NAND_DATA06__RAWNAND_DATA06 0xb0b1
+ MX6UL_PAD_NAND_DATA07__RAWNAND_DATA07 0xb0b1
+ >;
+ };
+
+ pinctrl_uart4: uart4grp {
+ fsl,pins = <
+ MX6UL_PAD_UART4_TX_DATA__UART4_DCE_TX 0x1b0b1
+ MX6UL_PAD_UART4_RX_DATA__UART4_DCE_RX 0x1b0b1
+ >;
+ };
+};
diff --git a/arch/arm/boot/dts/nxp/imx/imx6ulz-bsh-smm-m2.dts b/arch/arm/boot/dts/nxp/imx/imx6ulz-bsh-smm-m2.dts
index 362a26a2a1b1..033fb973f4ea 100644
--- a/arch/arm/boot/dts/nxp/imx/imx6ulz-bsh-smm-m2.dts
+++ b/arch/arm/boot/dts/nxp/imx/imx6ulz-bsh-smm-m2.dts
@@ -5,41 +5,11 @@
/dts-v1/;
-#include <dt-bindings/input/input.h>
-#include "imx6ulz.dtsi"
+#include "imx6ulz-bsh-smm-m2-common.dtsi"
/ {
model = "BSH SMM M2";
compatible = "bsh,imx6ulz-bsh-smm-m2", "fsl,imx6ull", "fsl,imx6ulz";
-
- chosen {
- stdout-path = &uart4;
- };
-
- usdhc2_pwrseq: usdhc2-pwrseq {
- compatible = "mmc-pwrseq-simple";
- reset-gpios = <&gpio2 21 GPIO_ACTIVE_LOW>;
- };
-};
-
-&gpmi {
- pinctrl-names = "default";
- pinctrl-0 = <&pinctrl_gpmi_nand>;
- nand-on-flash-bbt;
- fsl,use-minimum-ecc;
- status = "okay";
-};
-
-&rngb {
- status = "okay";
-};
-
-&snvs_poweroff {
- status = "okay";
-};
-
-&uart2 {
- status = "okay";
};
&uart3 {
@@ -57,24 +27,6 @@ bluetooth {
};
};
-&uart4 {
- pinctrl-names = "default";
- pinctrl-0 = <&pinctrl_uart4>;
- status = "okay";
-};
-
-&usbotg1 {
- dr_mode = "peripheral";
- srp-disable;
- hnp-disable;
- adp-disable;
- status = "okay";
-};
-
-&usbphy1 {
- fsl,tx-d-cal = <106>;
-};
-
&usdhc2 {
#address-cells = <1>;
#size-cells = <0>;
@@ -97,47 +49,19 @@ brcmf: wifi@1 {
};
};
-&wdog1 {
- status = "okay";
-};
-
&iomuxc {
- pinctrl_gpmi_nand: gpminandgrp {
- fsl,pins = <
- MX6UL_PAD_NAND_CLE__RAWNAND_CLE 0xb0b1
- MX6UL_PAD_NAND_ALE__RAWNAND_ALE 0xb0b1
- MX6UL_PAD_NAND_WP_B__RAWNAND_WP_B 0xb0b1
- MX6UL_PAD_NAND_READY_B__RAWNAND_READY_B 0xb000
- MX6UL_PAD_NAND_CE0_B__RAWNAND_CE0_B 0xb0b1
- MX6UL_PAD_NAND_RE_B__RAWNAND_RE_B 0xb0b1
- MX6UL_PAD_NAND_WE_B__RAWNAND_WE_B 0xb0b1
- MX6UL_PAD_NAND_DATA00__RAWNAND_DATA00 0xb0b1
- MX6UL_PAD_NAND_DATA01__RAWNAND_DATA01 0xb0b1
- MX6UL_PAD_NAND_DATA02__RAWNAND_DATA02 0xb0b1
- MX6UL_PAD_NAND_DATA03__RAWNAND_DATA03 0xb0b1
- MX6UL_PAD_NAND_DATA04__RAWNAND_DATA04 0xb0b1
- MX6UL_PAD_NAND_DATA05__RAWNAND_DATA05 0xb0b1
- MX6UL_PAD_NAND_DATA06__RAWNAND_DATA06 0xb0b1
- MX6UL_PAD_NAND_DATA07__RAWNAND_DATA07 0xb0b1
- >;
- };
-
pinctrl_uart3: uart3grp {
fsl,pins = <
MX6UL_PAD_UART3_TX_DATA__UART3_DCE_TX 0x1b0b1
MX6UL_PAD_UART3_RX_DATA__UART3_DCE_RX 0x1b099
MX6UL_PAD_UART3_RTS_B__UART3_DCE_RTS 0x1b0b1
MX6UL_PAD_UART3_CTS_B__UART3_DCE_CTS 0x1b099
- MX6UL_PAD_GPIO1_IO01__GPIO1_IO01 0x100b1 /* BT_REG_ON */
- MX6UL_PAD_SD1_CLK__GPIO2_IO17 0x100b1 /* BT_DEV_WAKE out */
- MX6UL_PAD_ENET2_TX_EN__GPIO2_IO13 0x1b0b0 /* BT_HOST_WAKE in */
- >;
- };
-
- pinctrl_uart4: uart4grp {
- fsl,pins = <
- MX6UL_PAD_UART4_TX_DATA__UART4_DCE_TX 0x1b0b1
- MX6UL_PAD_UART4_RX_DATA__UART4_DCE_RX 0x1b0b1
+ /* BT_REG_ON */
+ MX6UL_PAD_GPIO1_IO01__GPIO1_IO01 0x100b1
+ /* BT_DEV_WAKE out */
+ MX6UL_PAD_SD1_CLK__GPIO2_IO17 0x100b1
+ /* BT_HOST_WAKE in */
+ MX6UL_PAD_ENET2_TX_EN__GPIO2_IO13 0x1b0b0
>;
};
@@ -149,10 +73,14 @@ MX6UL_PAD_CSI_DATA00__USDHC2_DATA0 0x17059
MX6UL_PAD_CSI_DATA01__USDHC2_DATA1 0x17059
MX6UL_PAD_CSI_DATA02__USDHC2_DATA2 0x17059
MX6UL_PAD_CSI_DATA03__USDHC2_DATA3 0x17059
- MX6UL_PAD_SD1_DATA3__GPIO2_IO21 0x3029 /* WL_REG_ON */
- MX6UL_PAD_UART2_CTS_B__GPIO1_IO22 0x100b1 /* WL_DEV_WAKE - WiFi_GPIO_4 - WiFi FW UART */
- MX6UL_PAD_UART1_CTS_B__GPIO1_IO18 0x130b1 /* WL_HOST_WAKE - WIFI_GPIO_0 - OOB IRQ */
- MX6UL_PAD_ENET1_RX_EN__OSC32K_32K_OUT 0x4001b031 /* OSC 32Khz wifi clk in */
+ /* WL_REG_ON */
+ MX6UL_PAD_SD1_DATA3__GPIO2_IO21 0x3029
+ /* WL_DEV_WAKE - WiFi_GPIO_4 - WiFi FW UART */
+ MX6UL_PAD_UART2_CTS_B__GPIO1_IO22 0x100b1
+ /* WL_HOST_WAKE - WIFI_GPIO_0 - OOB IRQ */
+ MX6UL_PAD_UART1_CTS_B__GPIO1_IO18 0x130b1
+ /* OSC 32Khz wifi clk in */
+ MX6UL_PAD_ENET1_RX_EN__OSC32K_32K_OUT 0x4001b031
>;
};
};
--
2.43.0
^ permalink raw reply related [flat|nested] 15+ messages in thread* [PATCH 07/10] ARM: dts: imx6ulz: Add BSH SMM-M2B board support
2026-11-04 7:35 [PATCH 00/10] Update BSH SystemMaster device trees and add SMM-M2B support Haoning Cheng
` (5 preceding siblings ...)
2026-11-04 7:35 ` [PATCH 06/10] ARM: dts: imx6ulz: Factor out BSH SMM-M2 common device tree Haoning Cheng
@ 2026-11-04 7:35 ` Haoning Cheng
2026-11-04 7:44 ` sashiko-bot
2026-11-04 7:35 ` [PATCH 08/10] ARM: dts: imx6ulz: Configure UART2 pins on BSH SMM-M2 variants Haoning Cheng
` (2 subsequent siblings)
9 siblings, 1 reply; 15+ messages in thread
From: Haoning Cheng @ 2026-11-04 7:35 UTC (permalink / raw)
To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Shawn Guo,
Frank Li, Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam
Cc: devicetree, linux-kernel, imx, linux-arm-kernel, Haoning Cheng,
Qiu Guochang
From: Qiu Guochang <guochang.qiu@cn.bosch.com>
Add basic device tree support for the BSH SMM-M2B SystemMaster,
a hardware variant of the BSH SMM-M2.
Reuse the common SMM-M2 hardware definitions and provide the
board-specific model and compatible strings.
Signed-off-by: Qiu Guochang <guochang.qiu@cn.bosch.com>
Signed-off-by: Haoning Cheng <Haoning.CHENG@cn.bosch.com>
---
arch/arm/boot/dts/nxp/imx/Makefile | 3 ++-
arch/arm/boot/dts/nxp/imx/imx6ulz-bsh-smm-m2b.dts | 13 +++++++++++++
2 files changed, 15 insertions(+), 1 deletion(-)
diff --git a/arch/arm/boot/dts/nxp/imx/Makefile b/arch/arm/boot/dts/nxp/imx/Makefile
index b5fad2ba764c..de9a317132ed 100644
--- a/arch/arm/boot/dts/nxp/imx/Makefile
+++ b/arch/arm/boot/dts/nxp/imx/Makefile
@@ -420,7 +420,8 @@ dtb-$(CONFIG_SOC_IMX6UL) += \
imx6ull-var-som-concerto.dtb \
imx6ull-var-som-concerto-full.dtb \
imx6ulz-14x14-evk.dtb \
- imx6ulz-bsh-smm-m2.dtb
+ imx6ulz-bsh-smm-m2.dtb \
+ imx6ulz-bsh-smm-m2b.dtb
imx7d-colibri-emmc-aster-panel-cap-touch-7inch-parallel-dtbs := \
imx7d-colibri-emmc-aster.dtb \
diff --git a/arch/arm/boot/dts/nxp/imx/imx6ulz-bsh-smm-m2b.dts b/arch/arm/boot/dts/nxp/imx/imx6ulz-bsh-smm-m2b.dts
new file mode 100644
index 000000000000..9dc92da6ace9
--- /dev/null
+++ b/arch/arm/boot/dts/nxp/imx/imx6ulz-bsh-smm-m2b.dts
@@ -0,0 +1,13 @@
+// SPDX-License-Identifier: (GPL-2.0 OR MIT)
+/*
+ * Copyright (C) 2021 BSH Hausgeraete GmbH
+ */
+
+/dts-v1/;
+
+#include "imx6ulz-bsh-smm-m2-common.dtsi"
+
+/ {
+ model = "BSH SMM M2B";
+ compatible = "bsh,imx6ulz-bsh-smm-m2b", "fsl,imx6ull", "fsl,imx6ulz";
+};
--
2.43.0
^ permalink raw reply related [flat|nested] 15+ messages in thread* Re: [PATCH 07/10] ARM: dts: imx6ulz: Add BSH SMM-M2B board support
2026-11-04 7:35 ` [PATCH 07/10] ARM: dts: imx6ulz: Add BSH SMM-M2B board support Haoning Cheng
@ 2026-11-04 7:44 ` sashiko-bot
0 siblings, 0 replies; 15+ messages in thread
From: sashiko-bot @ 2026-11-04 7:44 UTC (permalink / raw)
To: Haoning Cheng; +Cc: devicetree, imx, robh, conor+dt, Frank.Li
Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [Medium] ARM: dts: imx6ulz: orphaned usdhc2_pwrseq claims GPIO2_IO21 on SMM-M2B
--
commit c962f6331220298bd138ac7db3207348f699e289
Author: Qiu Guochang <guochang.qiu@cn.bosch.com>
ARM: dts: imx6ulz: Add BSH SMM-M2B board support
This commit adds device tree support for the BSH SMM-M2B SystemMaster board by
including the common imx6ulz-bsh-smm-m2-common.dtsi definitions and setting
the board model and compatible strings.
> diff --git a/arch/arm/boot/dts/nxp/imx/imx6ulz-bsh-smm-m2b.dts b/arch/arm/boot/dts/nxp/imx/imx6ulz-bsh-smm-m2b.dts
> new file mode 100644
> index 0000000000000..9dc92da6ace97
> --- /dev/null
> +++ b/arch/arm/boot/dts/nxp/imx/imx6ulz-bsh-smm-m2b.dts
> @@ -0,0 +1,13 @@
> +// SPDX-License-Identifier: (GPL-2.0 OR MIT)
> +/*
> + * Copyright (C) 2021 BSH Hausgeraete GmbH
> + */
> +
> +/dts-v1/;
> +
> +#include "imx6ulz-bsh-smm-m2-common.dtsi"
> +
> +/ {
> + model = "BSH SMM M2B";
> + compatible = "bsh,imx6ulz-bsh-smm-m2b", "fsl,imx6ull", "fsl,imx6ulz";
> +};
[Severity: Medium]
Does including imx6ulz-bsh-smm-m2-common.dtsi leave an active usdhc2_pwrseq
platform device on the BSH SMM-M2B that claims and drives GPIO2_IO21 even
though usdhc2 and its pinmux are not present on this variant?
In arch/arm/boot/dts/nxp/imx/imx6ulz-bsh-smm-m2-common.dtsi, the root node
unconditionally defines:
usdhc2_pwrseq: usdhc2-pwrseq {
compatible = "mmc-pwrseq-simple";
reset-gpios = <&gpio2 21 GPIO_ACTIVE_LOW>;
};
However, the consumer &usdhc2 node and the pinctrl_wlan group that muxes
MX6UL_PAD_SD1_DATA3__GPIO2_IO21 only exist in
arch/arm/boot/dts/nxp/imx/imx6ulz-bsh-smm-m2.dts:
pinctrl_wlan: wlangrp {
fsl,pins = <
...
/* WL_REG_ON */
MX6UL_PAD_SD1_DATA3__GPIO2_IO21 0x3029
When booting with imx6ulz-bsh-smm-m2b.dtb, the platform bus still populates
/usdhc2-pwrseq and drivers/mmc/core/pwrseq_simple.c:mmc_pwrseq_simple_probe()
executes:
pwrseq->reset_gpios = devm_gpiod_get_array(dev, "reset",
GPIOD_OUT_HIGH);
This requests GPIO2_IO21 and drives it low as an active-low reset output
without its pad being muxed to GPIO2_IO21 and with no enabled usdhc2 consumer.
Should usdhc2_pwrseq be moved into imx6ulz-bsh-smm-m2.dts alongside &usdhc2
and pinctrl_wlan, or disabled/deleted in imx6ulz-bsh-smm-m2b.dts?
--
Sashiko AI review · https://sashiko.dev/#/patchset/20261104-add-bsh-smm-m2-v1-0-369f0a77e021@cn.bosch.com?part=7
^ permalink raw reply [flat|nested] 15+ messages in thread
* [PATCH 08/10] ARM: dts: imx6ulz: Configure UART2 pins on BSH SMM-M2 variants
2026-11-04 7:35 [PATCH 00/10] Update BSH SystemMaster device trees and add SMM-M2B support Haoning Cheng
` (6 preceding siblings ...)
2026-11-04 7:35 ` [PATCH 07/10] ARM: dts: imx6ulz: Add BSH SMM-M2B board support Haoning Cheng
@ 2026-11-04 7:35 ` Haoning Cheng
2026-11-04 7:35 ` [PATCH 09/10] dts: imx: Enable USB OTG mode on BSH SMM-M2 and SMM-S2 Haoning Cheng
2026-11-04 7:35 ` [PATCH 10/10] ARM: dts: imx6ulz: Add SPI display and touch overlay for BSH SMM-M2 Haoning Cheng
9 siblings, 0 replies; 15+ messages in thread
From: Haoning Cheng @ 2026-11-04 7:35 UTC (permalink / raw)
To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Shawn Guo,
Frank Li, Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam
Cc: devicetree, linux-kernel, imx, linux-arm-kernel, Haoning Cheng,
Akhil Narayanan
From: Akhil Narayanan <akhil.narayanan@in.bosch.com>
Configure the UART2 RX and TX pin multiplexing for the BSH SMM-M2
variants.
Signed-off-by: Akhil Narayanan <akhil.narayanan@in.bosch.com>
Signed-off-by: Haoning Cheng <Haoning.CHENG@cn.bosch.com>
---
arch/arm/boot/dts/nxp/imx/imx6ulz-bsh-smm-m2-common.dtsi | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/arch/arm/boot/dts/nxp/imx/imx6ulz-bsh-smm-m2-common.dtsi b/arch/arm/boot/dts/nxp/imx/imx6ulz-bsh-smm-m2-common.dtsi
index 5c9109da6806..93d662ec875f 100644
--- a/arch/arm/boot/dts/nxp/imx/imx6ulz-bsh-smm-m2-common.dtsi
+++ b/arch/arm/boot/dts/nxp/imx/imx6ulz-bsh-smm-m2-common.dtsi
@@ -34,6 +34,8 @@ &snvs_poweroff {
};
&uart2 {
+ pinctrl-names = "default";
+ pinctrl-0 = <&pinctrl_uart2>;
status = "okay";
};
@@ -86,4 +88,11 @@ MX6UL_PAD_UART4_TX_DATA__UART4_DCE_TX 0x1b0b1
MX6UL_PAD_UART4_RX_DATA__UART4_DCE_RX 0x1b0b1
>;
};
+
+ pinctrl_uart2: uart2grp {
+ fsl,pins = <
+ MX6UL_PAD_UART2_RX_DATA__UART2_DCE_RX 0x1b0b1
+ MX6UL_PAD_UART2_TX_DATA__UART2_DCE_TX 0x1b0b1
+ >;
+ };
};
--
2.43.0
^ permalink raw reply related [flat|nested] 15+ messages in thread* [PATCH 09/10] dts: imx: Enable USB OTG mode on BSH SMM-M2 and SMM-S2
2026-11-04 7:35 [PATCH 00/10] Update BSH SystemMaster device trees and add SMM-M2B support Haoning Cheng
` (7 preceding siblings ...)
2026-11-04 7:35 ` [PATCH 08/10] ARM: dts: imx6ulz: Configure UART2 pins on BSH SMM-M2 variants Haoning Cheng
@ 2026-11-04 7:35 ` Haoning Cheng
2026-11-04 7:35 ` [PATCH 10/10] ARM: dts: imx6ulz: Add SPI display and touch overlay for BSH SMM-M2 Haoning Cheng
9 siblings, 0 replies; 15+ messages in thread
From: Haoning Cheng @ 2026-11-04 7:35 UTC (permalink / raw)
To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Shawn Guo,
Frank Li, Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam
Cc: devicetree, linux-kernel, imx, linux-arm-kernel, Haoning Cheng,
Florian Ager
From: Florian Ager <florian.ager@bshg.com>
Configure USB OTG1 in OTG mode instead of peripheral-only mode
on the BSH SMM-M2 and SMM-S2 board variants.
Remove the SRP, HNP and ADP disable properties from the SMM-M2
configuration.
Signed-off-by: Florian Ager <florian.ager@bshg.com>
Signed-off-by: Haoning Cheng <Haoning.CHENG@cn.bosch.com>
---
arch/arm/boot/dts/nxp/imx/imx6ulz-bsh-smm-m2-common.dtsi | 5 +----
arch/arm64/boot/dts/freescale/imx8mn-bsh-smm-s2-common.dtsi | 2 +-
2 files changed, 2 insertions(+), 5 deletions(-)
diff --git a/arch/arm/boot/dts/nxp/imx/imx6ulz-bsh-smm-m2-common.dtsi b/arch/arm/boot/dts/nxp/imx/imx6ulz-bsh-smm-m2-common.dtsi
index 93d662ec875f..cc6b53268043 100644
--- a/arch/arm/boot/dts/nxp/imx/imx6ulz-bsh-smm-m2-common.dtsi
+++ b/arch/arm/boot/dts/nxp/imx/imx6ulz-bsh-smm-m2-common.dtsi
@@ -46,10 +46,7 @@ &uart4 {
};
&usbotg1 {
- dr_mode = "peripheral";
- srp-disable;
- hnp-disable;
- adp-disable;
+ dr_mode = "otg";
status = "okay";
};
diff --git a/arch/arm64/boot/dts/freescale/imx8mn-bsh-smm-s2-common.dtsi b/arch/arm64/boot/dts/freescale/imx8mn-bsh-smm-s2-common.dtsi
index d20393c2d901..7a121459f95c 100644
--- a/arch/arm64/boot/dts/freescale/imx8mn-bsh-smm-s2-common.dtsi
+++ b/arch/arm64/boot/dts/freescale/imx8mn-bsh-smm-s2-common.dtsi
@@ -248,7 +248,7 @@ &uart4 {
};
&usbotg1 {
- dr_mode = "peripheral";
+ dr_mode = "otg";
disable-over-current;
status = "okay";
};
--
2.43.0
^ permalink raw reply related [flat|nested] 15+ messages in thread* [PATCH 10/10] ARM: dts: imx6ulz: Add SPI display and touch overlay for BSH SMM-M2
2026-11-04 7:35 [PATCH 00/10] Update BSH SystemMaster device trees and add SMM-M2B support Haoning Cheng
` (8 preceding siblings ...)
2026-11-04 7:35 ` [PATCH 09/10] dts: imx: Enable USB OTG mode on BSH SMM-M2 and SMM-S2 Haoning Cheng
@ 2026-11-04 7:35 ` Haoning Cheng
2026-11-04 7:55 ` sashiko-bot
9 siblings, 1 reply; 15+ messages in thread
From: Haoning Cheng @ 2026-11-04 7:35 UTC (permalink / raw)
To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Shawn Guo,
Frank Li, Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam
Cc: devicetree, linux-kernel, imx, linux-arm-kernel, Haoning Cheng,
Simon Holesch, Leonhard Hesse
From: Simon Holesch <simon.holesch@bshg.com>
Add a device tree overlay to support an SPI-connected display
and touchscreen on the BSH SMM-M2 board.
Signed-off-by: Leonhard Hesse <leonhard.hesse@bshg.com>
Signed-off-by: Simon Holesch <simon.holesch@bshg.com>
Signed-off-by: Haoning Cheng <Haoning.CHENG@cn.bosch.com>
---
arch/arm/boot/dts/nxp/imx/Makefile | 4 +
.../imx/imx6ulz-bsh-smm-m2-ws13506-ads7846.dtso | 99 ++++++++++++++++++++++
2 files changed, 103 insertions(+)
diff --git a/arch/arm/boot/dts/nxp/imx/Makefile b/arch/arm/boot/dts/nxp/imx/Makefile
index de9a317132ed..9b27d2f0fa89 100644
--- a/arch/arm/boot/dts/nxp/imx/Makefile
+++ b/arch/arm/boot/dts/nxp/imx/Makefile
@@ -421,7 +421,11 @@ dtb-$(CONFIG_SOC_IMX6UL) += \
imx6ull-var-som-concerto-full.dtb \
imx6ulz-14x14-evk.dtb \
imx6ulz-bsh-smm-m2.dtb \
+ imx6ulz-bsh-smm-m2-ws13506-ads7846.dtb \
imx6ulz-bsh-smm-m2b.dtb
+imx6ulz-bsh-smm-m2-ws13506-ads7846-dtbs := \
+ imx6ulz-bsh-smm-m2.dtb \
+ imx6ulz-bsh-smm-m2-ws13506-ads7846.dtbo
imx7d-colibri-emmc-aster-panel-cap-touch-7inch-parallel-dtbs := \
imx7d-colibri-emmc-aster.dtb \
diff --git a/arch/arm/boot/dts/nxp/imx/imx6ulz-bsh-smm-m2-ws13506-ads7846.dtso b/arch/arm/boot/dts/nxp/imx/imx6ulz-bsh-smm-m2-ws13506-ads7846.dtso
new file mode 100644
index 000000000000..869443dd648e
--- /dev/null
+++ b/arch/arm/boot/dts/nxp/imx/imx6ulz-bsh-smm-m2-ws13506-ads7846.dtso
@@ -0,0 +1,99 @@
+// SPDX-License-Identifier: (GPL-2.0+)
+/*
+ * Copyright 2024 BSH Hausgeraete GmbH
+ */
+
+/dts-v1/;
+/plugin/;
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/interrupt-controller/arm-gic.h>
+#include "imx6ul-pinfunc.h"
+
+/ {
+ fragment@0 {
+ target-path = "/";
+ __overlay__ {
+ backlight: backlight {
+ compatible = "gpio-backlight";
+ gpios = <&gpio3 21 GPIO_ACTIVE_HIGH>;
+ };
+ };
+ };
+
+ fragment@1 {
+ target = <&ecspi1>;
+ __overlay__ {
+ pinctrl-names = "default";
+ pinctrl-0 = <&pinctrl_ecspi1>;
+ cs-gpios = <&gpio3 26 GPIO_ACTIVE_LOW>,
+ <&gpio2 15 GPIO_ACTIVE_LOW>;
+ status = "okay";
+
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ display@0 {
+ compatible = "waveshare,rpi-lcd-35", "ilitek,ili9486";
+ pinctrl-names = "default";
+ pinctrl-0 = <&pinctrl_lcd>;
+ reg = <0>;
+ spi-max-frequency = <32000000>;
+ dc-gpios = <&gpio1 31 GPIO_ACTIVE_HIGH>;
+ reset-gpios = <&gpio3 6 GPIO_ACTIVE_HIGH>;
+ backlight = <&backlight>;
+ rotation = <180>;
+ };
+
+ touchscreen@1 {
+ compatible = "ti,ads7846";
+ pinctrl-names = "default";
+ pinctrl-0 = <&pinctrl_touchscreen>;
+ reg = <1>;
+ interrupt-parent = <&gpio3>;
+ interrupts = <18 IRQ_TYPE_EDGE_FALLING>;
+ pendown-gpio = <&gpio3 18 GPIO_ACTIVE_HIGH>;
+ spi-max-frequency = <1000000>;
+
+ touchscreen-min-x = <184>;
+ touchscreen-size-x = <3869>;
+ touchscreen-min-y = <141>;
+ touchscreen-size-y = <3959>;
+ ti,x-plate-ohms = /bits/ 16 <150>;
+ touchscreen-max-pressure = <255>;
+ ti,settle-delay-usec = /bits/ 16 <150>;
+ ti,keep-vref-on;
+ wakeup-source;
+ };
+ };
+ };
+
+ fragment@2 {
+ target = <&iomuxc>;
+ __overlay__ {
+ pinctrl_ecspi1: ecspi1grp {
+ fsl,pins = <
+ MX6UL_PAD_LCD_DATA20__ECSPI1_SCLK 0x100b1
+ MX6UL_PAD_LCD_DATA22__ECSPI1_MOSI 0x100b1
+ MX6UL_PAD_LCD_DATA23__ECSPI1_MISO 0x100b1
+ MX6UL_PAD_LCD_DATA21__GPIO3_IO26 0x0b0b1 /* SPI CS.0 */
+ MX6UL_PAD_ENET2_RX_ER__GPIO2_IO15 0x0b0b1 /* SPI CS.1 */
+ >;
+ };
+
+ pinctrl_lcd: lcdgrp {
+ fsl,pins = <
+ MX6UL_PAD_LCD_DATA01__GPIO3_IO06 0x180b1 /* LCD_RST */
+ MX6UL_PAD_UART5_RX_DATA__GPIO1_IO31 0x180b1 /* LCD_DC */
+ MX6UL_PAD_LCD_DATA16__GPIO3_IO21 0x180b1 /* backlight */
+ >;
+ };
+
+ pinctrl_touchscreen: touchscreengrp {
+ fsl,pins = <
+ MX6UL_PAD_LCD_DATA13__GPIO3_IO18 0x1b0b0
+ >;
+ };
+ };
+ };
+};
--
2.43.0
^ permalink raw reply related [flat|nested] 15+ messages in thread* Re: [PATCH 10/10] ARM: dts: imx6ulz: Add SPI display and touch overlay for BSH SMM-M2
2026-11-04 7:35 ` [PATCH 10/10] ARM: dts: imx6ulz: Add SPI display and touch overlay for BSH SMM-M2 Haoning Cheng
@ 2026-11-04 7:55 ` sashiko-bot
0 siblings, 0 replies; 15+ messages in thread
From: sashiko-bot @ 2026-11-04 7:55 UTC (permalink / raw)
To: Haoning Cheng; +Cc: devicetree, imx, robh, conor+dt, Frank.Li
Thank you for your contribution! Sashiko AI review found 3 potential issue(s) to consider:
- [High] ARM: dts: imx6ulz: active-high pendown-gpio breaks ads7846 touch
- [Medium] ARM: dts: imx6ulz: backlight pad mux placed on display@0 instead of backlight
- [Low] ARM: dts: imx6ulz: open-coded fragment and __overlay__ nodes in overlay
--
commit bebf64c08aefd84526e08136a534cf0657beb477
Author: Simon Holesch <simon.holesch@bshg.com>
ARM: dts: imx6ulz: Add SPI display and touch overlay for BSH SMM-M2
This commit adds a Devicetree overlay for an SPI-connected ILI9486 display
and ADS7846 touchscreen on the BSH SMM-M2 board.
> diff --git a/arch/arm/boot/dts/nxp/imx/imx6ulz-bsh-smm-m2-ws13506-ads7846.dtso b/arch/arm/boot/dts/nxp/imx/imx6ulz-bsh-smm-m2-ws13506-ads7846.dtso
> new file mode 100644
> index 0000000000000..869443dd648e8
> --- /dev/null
> +++ b/arch/arm/boot/dts/nxp/imx/imx6ulz-bsh-smm-m2-ws13506-ads7846.dtso
> @@ -0,0 +1,99 @@
> +// SPDX-License-Identifier: (GPL-2.0+)
> +/*
> + * Copyright 2024 BSH Hausgeraete GmbH
> + */
> +
> +/dts-v1/;
> +/plugin/;
> +
> +#include <dt-bindings/gpio/gpio.h>
> +#include <dt-bindings/interrupt-controller/arm-gic.h>
> +#include "imx6ul-pinfunc.h"
> +
> +/ {
> + fragment@0 {
> + target-path = "/";
> + __overlay__ {
[Severity: Low]
This isn't a bug, but could this overlay use the standard DTC target
reference syntax (&{/}, &ecspi1, and &iomuxc) rather than open-coding
fragment@0, fragment@1, fragment@2 and __overlay__ nodes, matching
Documentation/devicetree/overlay-notes.rst and other .dtso files in
arch/arm/boot/dts/?
> + backlight: backlight {
> + compatible = "gpio-backlight";
> + gpios = <&gpio3 21 GPIO_ACTIVE_HIGH>;
> + };
> + };
> + };
> +
> + fragment@1 {
> + target = <&ecspi1>;
> + __overlay__ {
> + pinctrl-names = "default";
> + pinctrl-0 = <&pinctrl_ecspi1>;
> + cs-gpios = <&gpio3 26 GPIO_ACTIVE_LOW>,
> + <&gpio2 15 GPIO_ACTIVE_LOW>;
> + status = "okay";
> +
> + #address-cells = <1>;
> + #size-cells = <0>;
> +
> + display@0 {
> + compatible = "waveshare,rpi-lcd-35", "ilitek,ili9486";
> + pinctrl-names = "default";
> + pinctrl-0 = <&pinctrl_lcd>;
> + reg = <0>;
> + spi-max-frequency = <32000000>;
> + dc-gpios = <&gpio1 31 GPIO_ACTIVE_HIGH>;
> + reset-gpios = <&gpio3 6 GPIO_ACTIVE_HIGH>;
> + backlight = <&backlight>;
> + rotation = <180>;
> + };
> +
> + touchscreen@1 {
> + compatible = "ti,ads7846";
> + pinctrl-names = "default";
> + pinctrl-0 = <&pinctrl_touchscreen>;
> + reg = <1>;
> + interrupt-parent = <&gpio3>;
> + interrupts = <18 IRQ_TYPE_EDGE_FALLING>;
> + pendown-gpio = <&gpio3 18 GPIO_ACTIVE_HIGH>;
[Severity: High]
Should pendown-gpio in touchscreen@1 use GPIO_ACTIVE_LOW instead of
GPIO_ACTIVE_HIGH?
The ADS7846 PENIRQ line is active-low (pulled low when touched), which
matches the 100k pull-up in pinctrl_touchscreen (0x1b0b0) and
IRQ_TYPE_EDGE_FALLING.
In drivers/input/touchscreen/ads7846.c, ads7846_setup_pendown() requests
the descriptor via devm_gpiod_get(&spi->dev, "pendown", GPIOD_IN), and
get_pendown_state() calls gpiod_get_value(), which applies the Devicetree
polarity flag:
drivers/input/touchscreen/ads7846.c:get_pendown_state() {
if (ts->get_pendown_state)
return ts->get_pendown_state();
return gpiod_get_value(ts->gpio_pendown);
}
drivers/input/touchscreen/ads7846.c:ads7846_hard_irq() {
struct ads7846 *ts = handle;
return get_pendown_state(ts) ? IRQ_WAKE_THREAD : IRQ_HANDLED;
}
With GPIO_ACTIVE_HIGH, gpiod_get_value() returns 0 while GPIO3_IO18 is
physically asserted low on touch, causing ads7846_hard_irq() to return
IRQ_HANDLED without waking the threaded IRQ handler ads7846_irq().
[ ... ]
> + fragment@2 {
> + target = <&iomuxc>;
> + __overlay__ {
> + pinctrl_ecspi1: ecspi1grp {
> + fsl,pins = <
> + MX6UL_PAD_LCD_DATA20__ECSPI1_SCLK 0x100b1
> + MX6UL_PAD_LCD_DATA22__ECSPI1_MOSI 0x100b1
> + MX6UL_PAD_LCD_DATA23__ECSPI1_MISO 0x100b1
> + MX6UL_PAD_LCD_DATA21__GPIO3_IO26 0x0b0b1 /* SPI CS.0 */
> + MX6UL_PAD_ENET2_RX_ER__GPIO2_IO15 0x0b0b1 /* SPI CS.1 */
> + >;
> + };
> +
> + pinctrl_lcd: lcdgrp {
> + fsl,pins = <
> + MX6UL_PAD_LCD_DATA01__GPIO3_IO06 0x180b1 /* LCD_RST */
> + MX6UL_PAD_UART5_RX_DATA__GPIO1_IO31 0x180b1 /* LCD_DC */
> + MX6UL_PAD_LCD_DATA16__GPIO3_IO21 0x180b1 /* backlight */
> + >;
> + };
[Severity: Medium]
Should MX6UL_PAD_LCD_DATA16__GPIO3_IO21 be moved into its own pinctrl group
and referenced via pinctrl-0 on the backlight node rather than on display@0?
In drivers/gpu/drm/tiny/ili9486.c, ili9486_probe() calls
devm_of_find_backlight(dev) and defers with -EPROBE_DEFER until the
backlight device has finished probing. On i.MX6UL, imx_pmx_ops in
drivers/pinctrl/freescale/pinctrl-imx.c does not implement
.gpio_request_enable, so requesting GPIO3_IO21 in gpio_backlight_probe()
does not mux the pad or apply its pad configuration.
As a result, when gpio_backlight_probe() in
drivers/video/backlight/gpio_backlight.c runs before display@0 binds
pinctrl_lcd:
drivers/video/backlight/gpio_backlight.c:gpio_backlight_probe() {
...
if (!of_node || !of_node->phandle)
/* Not booted with device tree or no phandle link to the node */
bl->props.power = def_value ? BACKLIGHT_POWER_ON
: BACKLIGHT_POWER_OFF;
else if (gpiod_get_value_cansleep(gbl->gpiod) == 0)
bl->props.power = BACKLIGHT_POWER_OFF;
else
bl->props.power = BACKLIGHT_POWER_ON;
ret = gpiod_direction_output(gbl->gpiod, !bl->props.power);
...
}
gpiod_get_value_cansleep() and gpiod_direction_output() execute while
MX6UL_PAD_LCD_DATA16 is still unmuxed and unconfigured.
--
Sashiko AI review · https://sashiko.dev/#/patchset/20261104-add-bsh-smm-m2-v1-0-369f0a77e021@cn.bosch.com?part=10
^ permalink raw reply [flat|nested] 15+ messages in thread