[PATCH v9 2/3] arm64: dts: imx8mp-skov-revc: convert to overlays

From: Steffen Trumtrar

Date: Thu Oct 08 2026 - 05:29:57 EST


The i.MX8MP Skov RevC jutouch 10" and Tian 7" variants are pretty
similar, apart from the Display and touch controller.

Move the common bindings to imx8mp-skov-revc-touch.dts and convert both
variants to use overlays applied on this base version.

Add a compatible for revC-based Skov boards with a touch panel for the
common dts.

Signed-off-by: Steffen Trumtrar <s.trumtrar@xxxxxxxxxxxxxx>
---
Documentation/devicetree/bindings/arm/fsl.yaml | 1 +
arch/arm64/boot/dts/freescale/Makefile | 5 ++
.../imx8mp-skov-revc-jutouch-jt101tm023.dtso | 38 ++++++++++
.../dts/freescale/imx8mp-skov-revc-tian-g07017.dts | 81 ----------------------
.../freescale/imx8mp-skov-revc-tian-g07017.dtso | 40 +++++++++++
...h-jt101tm023.dts => imx8mp-skov-revc-touch.dts} | 26 +++----
6 files changed, 92 insertions(+), 99 deletions(-)

diff --git a/Documentation/devicetree/bindings/arm/fsl.yaml b/Documentation/devicetree/bindings/arm/fsl.yaml
index 656f2596e1d53..5599e45ffdcec 100644
--- a/Documentation/devicetree/bindings/arm/fsl.yaml
+++ b/Documentation/devicetree/bindings/arm/fsl.yaml
@@ -1155,6 +1155,7 @@ properties:
- skov,imx8mp-skov-revc-bd500 # SKOV i.MX8MP climate control with LED frontplate
- skov,imx8mp-skov-revc-jutouch-jt101tm023 # SKOV i.MX8MP climate control with 10" JuTouch panel
- skov,imx8mp-skov-revc-tian-g07017 # SKOV i.MX8MP climate control with 7" panel
+ - skov,imx8mp-skov-revc-touch # SKOV i.MX8MP climate control revision C with touch panel
- ultratronik,imx8mp-ultra-mach-sbc # Ultratronik SBC i.MX8MP based board
- ysoft,imx8mp-iota2-lumpy # Y Soft i.MX8MP IOTA2 Lumpy Board
- const: fsl,imx8mp
diff --git a/arch/arm64/boot/dts/freescale/Makefile b/arch/arm64/boot/dts/freescale/Makefile
index 49025ae465f22..d706290b8dd02 100644
--- a/arch/arm64/boot/dts/freescale/Makefile
+++ b/arch/arm64/boot/dts/freescale/Makefile
@@ -475,6 +475,11 @@ dtb-$(CONFIG_ARCH_MXC) += imx8mp-skov-revb-lt6.dtb
dtb-$(CONFIG_ARCH_MXC) += imx8mp-skov-revb-mi1010ait-1cp1.dtb
dtb-$(CONFIG_ARCH_MXC) += imx8mp-skov-revc-bd500.dtb
dtb-$(CONFIG_ARCH_MXC) += imx8mp-skov-revc-hdmi.dtb
+
+imx8mp-skov-revc-jutouch-jt101tm023-dtbs += imx8mp-skov-revc-touch.dtb \
+ imx8mp-skov-revc-jutouch-jt101tm023.dtbo
+imx8mp-skov-revc-tian-g07017-dtbs += imx8mp-skov-revc-touch.dtb \
+ imx8mp-skov-revc-tian-g07017.dtbo
dtb-$(CONFIG_ARCH_MXC) += imx8mp-skov-revc-jutouch-jt101tm023.dtb
dtb-$(CONFIG_ARCH_MXC) += imx8mp-skov-revc-tian-g07017.dtb
dtb-$(CONFIG_ARCH_MXC) += imx8mp-toradex-smarc-dev.dtb
diff --git a/arch/arm64/boot/dts/freescale/imx8mp-skov-revc-jutouch-jt101tm023.dtso b/arch/arm64/boot/dts/freescale/imx8mp-skov-revc-jutouch-jt101tm023.dtso
new file mode 100644
index 0000000000000..33ddd08a7adb5
--- /dev/null
+++ b/arch/arm64/boot/dts/freescale/imx8mp-skov-revc-jutouch-jt101tm023.dtso
@@ -0,0 +1,38 @@
+// SPDX-License-Identifier: (GPL-2.0 OR MIT)
+
+/dts-v1/;
+/plugin/;
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/interrupt-controller/irq.h>
+
+&{/} {
+ model = "SKOV IMX8MP CPU revC - JuTouch JT101TM023";
+ compatible = "skov,imx8mp-skov-revc-jutouch-jt101tm023", "fsl,imx8mp";
+};
+
+&{/panel} {
+ compatible = "jutouch,jt101tm023";
+};
+
+&i2c2 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ touchscreen@2a {
+ compatible = "eeti,exc81w32", "eeti,exc80h84";
+ reg = <0x2a>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&pinctrl_touchscreen>;
+ interrupts-extended = <&gpio4 28 IRQ_TYPE_LEVEL_LOW>;
+ reset-gpios = <&gpio4 29 GPIO_ACTIVE_LOW>;
+ touchscreen-size-x = <1280>;
+ touchscreen-size-y = <800>;
+ vdd-supply = <&reg_vdd_3v3>;
+ };
+};
+
+&lvds_bridge {
+ /* IMX8MP_VIDEO_PLL1 = IMX8MP_CLK_MEDIA_DISP2_PIX * 7 */
+ assigned-clock-rates = <0>, <506800000>;
+};
diff --git a/arch/arm64/boot/dts/freescale/imx8mp-skov-revc-tian-g07017.dts b/arch/arm64/boot/dts/freescale/imx8mp-skov-revc-tian-g07017.dts
deleted file mode 100644
index 9a562c011f2c2..0000000000000
--- a/arch/arm64/boot/dts/freescale/imx8mp-skov-revc-tian-g07017.dts
+++ /dev/null
@@ -1,81 +0,0 @@
-// SPDX-License-Identifier: (GPL-2.0 OR MIT)
-
-/dts-v1/;
-
-#include "imx8mp-skov-reva.dtsi"
-
-/ {
- model = "SKOV IMX8MP CPU revC - TIAN G07017";
- compatible = "skov,imx8mp-skov-revc-tian-g07017", "fsl,imx8mp";
-
- panel {
- compatible = "topland,tian-g07017-01";
- backlight = <&backlight>;
- power-supply = <&reg_tft_vcom>;
-
- port {
- in_lvds0: endpoint {
- remote-endpoint = <&ldb_lvds_ch0>;
- };
- };
- };
-};
-
-&backlight {
- status = "okay";
-};
-
-&i2c2 {
- clock-frequency = <100000>;
- status = "okay";
-
- touchscreen@38 {
- compatible = "edt,edt-ft5506";
- reg = <0x38>;
- pinctrl-names = "default";
- pinctrl-0 = <&pinctrl_touchscreen>;
- interrupts-extended = <&gpio4 28 IRQ_TYPE_EDGE_FALLING>;
- reset-gpios = <&gpio4 29 GPIO_ACTIVE_LOW>;
- touchscreen-size-x = <1024>;
- touchscreen-size-y = <600>;
- vcc-supply = <&reg_vdd_3v3>;
- iovcc-supply = <&reg_vdd_3v3>;
- wakeup-source;
- };
-};
-
-&lcdif2 {
- status = "okay";
-};
-
-&lvds_bridge {
- assigned-clocks = <&clk IMX8MP_CLK_MEDIA_LDB>,
- <&clk IMX8MP_VIDEO_PLL1>;
- assigned-clock-parents = <&clk IMX8MP_VIDEO_PLL1_OUT>;
- /* IMX8MP_VIDEO_PLL1 = IMX8MP_CLK_MEDIA_DISP2_PIX * 2 * 7 */
- assigned-clock-rates = <0>, <358400000>;
- status = "okay";
-
- ports {
- port@1 {
- ldb_lvds_ch0: endpoint {
- remote-endpoint = <&in_lvds0>;
- };
- };
- };
-};
-
-&pwm4 {
- status = "okay";
-};
-
-&pwm1 {
- status = "okay";
-};
-
-&reg_tft_vcom {
- regulator-min-microvolt = <3160000>;
- regulator-max-microvolt = <3160000>;
- voltage-table = <3160000 73>;
- status = "okay";
-};
diff --git a/arch/arm64/boot/dts/freescale/imx8mp-skov-revc-tian-g07017.dtso b/arch/arm64/boot/dts/freescale/imx8mp-skov-revc-tian-g07017.dtso
new file mode 100644
index 0000000000000..b9781a418e4d5
--- /dev/null
+++ b/arch/arm64/boot/dts/freescale/imx8mp-skov-revc-tian-g07017.dtso
@@ -0,0 +1,40 @@
+// SPDX-License-Identifier: (GPL-2.0 OR MIT)
+
+/dts-v1/;
+/plugin/;
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/interrupt-controller/irq.h>
+
+&{/} {
+ model = "SKOV IMX8MP CPU revC - TIAN G07017";
+ compatible = "skov,imx8mp-skov-revc-tian-g07017", "fsl,imx8mp";
+};
+
+&{/panel} {
+ compatible = "topland,tian-g07017-01";
+};
+
+&i2c2 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ touchscreen@38 {
+ compatible = "edt,edt-ft5506";
+ reg = <0x38>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&pinctrl_touchscreen>;
+ interrupts-extended = <&gpio4 28 IRQ_TYPE_EDGE_FALLING>;
+ reset-gpios = <&gpio4 29 GPIO_ACTIVE_LOW>;
+ touchscreen-size-x = <1024>;
+ touchscreen-size-y = <600>;
+ vcc-supply = <&reg_vdd_3v3>;
+ iovcc-supply = <&reg_vdd_3v3>;
+ wakeup-source;
+ };
+};
+
+&lvds_bridge {
+ /* IMX8MP_VIDEO_PLL1 = IMX8MP_CLK_MEDIA_DISP2_PIX * 2 * 7 */
+ assigned-clock-rates = <0>, <358400000>;
+};
diff --git a/arch/arm64/boot/dts/freescale/imx8mp-skov-revc-jutouch-jt101tm023.dts b/arch/arm64/boot/dts/freescale/imx8mp-skov-revc-touch.dts
similarity index 56%
rename from arch/arm64/boot/dts/freescale/imx8mp-skov-revc-jutouch-jt101tm023.dts
rename to arch/arm64/boot/dts/freescale/imx8mp-skov-revc-touch.dts
index 3e320d6dea3a2..c830f3ca8cb45 100644
--- a/arch/arm64/boot/dts/freescale/imx8mp-skov-revc-jutouch-jt101tm023.dts
+++ b/arch/arm64/boot/dts/freescale/imx8mp-skov-revc-touch.dts
@@ -5,11 +5,10 @@
#include "imx8mp-skov-reva.dtsi"

/ {
- model = "SKOV IMX8MP CPU revC - JuTouch JT101TM023";
- compatible = "skov,imx8mp-skov-revc-jutouch-jt101tm023", "fsl,imx8mp";
+ model = "SKOV IMX8MP CPU revC";
+ compatible = "skov,imx8mp-skov-revc-touch", "fsl,imx8mp";

panel {
- compatible = "jutouch,jt101tm023";
backlight = <&backlight>;
power-supply = <&reg_tft_vcom>;

@@ -28,18 +27,6 @@ &backlight {
&i2c2 {
clock-frequency = <100000>;
status = "okay";
-
- touchscreen@2a {
- compatible = "eeti,exc81w32", "eeti,exc80h84";
- reg = <0x2a>;
- pinctrl-names = "default";
- pinctrl-0 = <&pinctrl_touchscreen>;
- interrupts-extended = <&gpio4 28 IRQ_TYPE_LEVEL_LOW>;
- reset-gpios = <&gpio4 29 GPIO_ACTIVE_LOW>;
- touchscreen-size-x = <1280>;
- touchscreen-size-y = <800>;
- vdd-supply = <&reg_vdd_3v3>;
- };
};

&lcdif2 {
@@ -48,14 +35,17 @@ &lcdif2 {

&lvds_bridge {
assigned-clocks = <&clk IMX8MP_CLK_MEDIA_LDB>,
- <&clk IMX8MP_VIDEO_PLL1>;
+ <&clk IMX8MP_VIDEO_PLL1>;
assigned-clock-parents = <&clk IMX8MP_VIDEO_PLL1_OUT>;
- /* IMX8MP_VIDEO_PLL1 = IMX8MP_CLK_MEDIA_DISP2_PIX * 7 */
- assigned-clock-rates = <0>, <506800000>;
status = "okay";

ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
port@1 {
+ reg = <1>;
+
ldb_lvds_ch0: endpoint {
remote-endpoint = <&in_lvds0>;
};

--
2.51.0