[PATCH 10/10] ARM: dts: imx6ulz: Add SPI display and touch overlay for BSH SMM-M2
From: Haoning Cheng
Date: Wed Nov 04 2026 - 02:43:02 EST
From: Simon Holesch <simon.holesch@xxxxxxxx>
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@xxxxxxxx>
Signed-off-by: Simon Holesch <simon.holesch@xxxxxxxx>
Signed-off-by: Haoning Cheng <Haoning.CHENG@xxxxxxxxxxxx>
---
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