summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFrancesco Dolcini <francesco.dolcini@toradex.com>2025-03-04 17:17:53 +0100
committerFrancesco Dolcini <francesco.dolcini@toradex.com>2025-03-05 13:52:49 +0100
commitfcaa3af610fe265d5f9af99e87bfd0262ae40771 (patch)
tree79c0f34570e8309f9b50edf1c2c8968e877974f4
parent984e59506f2b51dd227cf38859c3a2376e748174 (diff)
verdin-imx8m[mp]: Revise DSI/LVDS overlay
Revise DSI overlay not relying anymore on the panel-lvds, on the touch-controller or any such DT node being available in the base DT, those nodes are not supposed to be there and were partially removed with https://lore.kernel.org/all/20250214092634.12414-1-francesco@dolcini.it/. This change redefine all the required node in the overlay DT files, so it would work whatever is available in the SOM/carrier DT, to be safe it forces `status = "okay"` that might be needed if a previous node was defined as disabled in the base DT file. The display link nodes and the backlight are also renamed to have a unique name, ensuring that no node name or label clash happen when multiple overlay files are applied at the same time. lt17041 display dtsi was modified by some file including it, it is now split in 2 files trying to minimize confusion on the actual timings that are used. Related-to: ELB-6259 Signed-off-by: Francesco Dolcini <francesco.dolcini@toradex.com>
-rw-r--r--overlays/display-lt170410-dsi-lvds_overlay.dtsi29
-rw-r--r--overlays/display-lt170410_sn65dsi84_overlay.dtsi54
-rw-r--r--overlays/display-rvt101hvdwc00b_overlay.dtsi56
-rw-r--r--overlays/display-rvt70hslnwca0_overlay.dtsi60
-rw-r--r--overlays/verdin-imx8_mipi-dsi-to-sn65dsi84.dtsi56
-rw-r--r--overlays/verdin-imx8mm_backlight-dsi_overlay.dtsi25
-rw-r--r--overlays/verdin-imx8mm_dsi-to-lvds_panel-cap-touch-10inch-lvds_overlay.dts109
-rw-r--r--overlays/verdin-imx8mm_panel-cap-touch-10inch-dsi_overlay.dts23
-rw-r--r--overlays/verdin-imx8mm_panel-cap-touch-7inch-dsi_overlay.dts23
-rw-r--r--overlays/verdin-imx8mp_backlight-dsi_overlay.dtsi25
-rw-r--r--overlays/verdin-imx8mp_dsi-to-lvds_panel-cap-touch-10inch-lvds_overlay.dts96
-rw-r--r--overlays/verdin-imx8mp_panel-cap-touch-10inch-dsi_overlay.dts29
-rw-r--r--overlays/verdin-imx8mp_panel-cap-touch-7inch-dsi_overlay.dts29
13 files changed, 353 insertions, 261 deletions
diff --git a/overlays/display-lt170410-dsi-lvds_overlay.dtsi b/overlays/display-lt170410-dsi-lvds_overlay.dtsi
new file mode 100644
index 0000000..345fbdf
--- /dev/null
+++ b/overlays/display-lt170410-dsi-lvds_overlay.dtsi
@@ -0,0 +1,29 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+/*
+ * Copyright 2025 Toradex
+ */
+
+// LT170410 panel with a resolution of 1280x800 pixel.
+
+&{/} {
+ panel_lt170410: panel-lt170410 {
+ compatible = "panel-lvds";
+ data-mapping = "vesa-24";
+ height-mm = <136>;
+ width-mm = <217>;
+
+ panel-timing {
+ clock-frequency = <68900000 71100000 73400000>;
+ de-active = <1>;
+ hactive = <1280 1280 1280>;
+ hback-porch = <23 60 71>;
+ hfront-porch = <23 60 71>;
+ hsync-len = <15 40 47>;
+ pixelclk-active = <1>; /* positive edge */
+ vactive = <800 800 800>;
+ vback-porch = <5 7 10>;
+ vfront-porch = <5 7 10>;
+ vsync-len = <6 9 12>;
+ };
+ };
+};
diff --git a/overlays/display-lt170410_sn65dsi84_overlay.dtsi b/overlays/display-lt170410_sn65dsi84_overlay.dtsi
deleted file mode 100644
index 14c8f3b..0000000
--- a/overlays/display-lt170410_sn65dsi84_overlay.dtsi
+++ /dev/null
@@ -1,54 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
-/*
- * Copyright 2022 Toradex
- */
-
-// Verdin DSI to LVDS Adapter with connected LT170410 display (10 inch) with a
-// resolution of 1280x800 pixel. Adapter and display can be ordered at Toradex.
-
-&lvds_ti_sn65dsi84 {
- status = "okay";
-
- ports {
- #address-cells = <1>;
- #size-cells = <0>;
-
- port@2 {
- reg = <2>;
-
- lvds_out_panel: endpoint {
- remote-endpoint = <&panel_in_lvds>;
- };
- };
- };
-};
-
-&panel_lvds {
- compatible = "panel-lvds";
- backlight = <&backlight>;
- data-mapping = "vesa-24";
- height-mm = <136>;
- power-supply = <&reg_3p3v>;
- width-mm = <217>;
- status = "okay";
-
- panel-timing {
- clock-frequency = <68900000 71100000 73400000>;
- de-active = <1>;
- hactive = <1280 1280 1280>;
- hback-porch = <23 60 71>;
- hfront-porch = <23 60 71>;
- hsync-len = <15 40 47>;
- pixelclk-active = <1>; /* positive edge */
- vactive = <800 800 800>;
- vback-porch = <5 7 10>;
- vfront-porch = <5 7 10>;
- vsync-len = <6 9 12>;
- };
-
- port {
- panel_in_lvds: endpoint {
- remote-endpoint = <&lvds_out_panel>;
- };
- };
-};
diff --git a/overlays/display-rvt101hvdwc00b_overlay.dtsi b/overlays/display-rvt101hvdwc00b_overlay.dtsi
index e5bf1b5..a84df5e 100644
--- a/overlays/display-rvt101hvdwc00b_overlay.dtsi
+++ b/overlays/display-rvt101hvdwc00b_overlay.dtsi
@@ -5,38 +5,32 @@
// RVT101HVDWC00-B DSI display (10 inch) with a resolution of 1280x800 pixel.
-&panel_lvds {
- compatible = "panel-lvds";
- backlight = <&backlight>;
- data-mapping = "vesa-24";
- height-mm = <136>;
- width-mm = <217>;
- status = "okay";
+&{/} {
+ panel_rvt101hvdwc00: panel-rvt101hvdwc00 {
+ compatible = "panel-lvds";
+ data-mapping = "vesa-24";
+ height-mm = <136>;
+ width-mm = <217>;
- /*
- * These timings are hand-optimized and more stable then teorethical
- * In particular HBP+HS should be 88 (display datasheet)
- * Likely an higher value is needed due to dsi to lvds pipeline.
- */
- panel-timing {
- clock-frequency = <66300000 69300000 78900000>;
- de-active = <1>;
- hactive = <1280 1280 1280>;
- hback-porch = <64 64 64>;
- hfront-porch = <72 72 72>;
- hsync-active = <0>;
- hsync-len = <32 32 32>;
- pixelclk-active = <1>;
- vactive = <800 800 800>;
- vback-porch = <15 15 15>;
- vfront-porch = <15 15 15>;
- vsync-active = <0>;
- vsync-len = <8 8 8>;
- };
-
- port {
- panel_in_lvds_riv: endpoint {
- remote-endpoint = <&lvds_out_panel_riv>;
+ /*
+ * These timings are hand-optimized and more stable then teorethical
+ * In particular HBP+HS should be 88 (display datasheet)
+ * Likely an higher value is needed due to dsi to lvds pipeline.
+ */
+ panel-timing {
+ clock-frequency = <66300000 69300000 78900000>;
+ de-active = <1>;
+ hactive = <1280 1280 1280>;
+ hback-porch = <64 64 64>;
+ hfront-porch = <72 72 72>;
+ hsync-active = <0>;
+ hsync-len = <32 32 32>;
+ pixelclk-active = <1>;
+ vactive = <800 800 800>;
+ vback-porch = <15 15 15>;
+ vfront-porch = <15 15 15>;
+ vsync-active = <0>;
+ vsync-len = <8 8 8>;
};
};
};
diff --git a/overlays/display-rvt70hslnwca0_overlay.dtsi b/overlays/display-rvt70hslnwca0_overlay.dtsi
index 702b858..70703c2 100644
--- a/overlays/display-rvt70hslnwca0_overlay.dtsi
+++ b/overlays/display-rvt70hslnwca0_overlay.dtsi
@@ -5,40 +5,34 @@
// RVT70HSLNWCA0 DSI display (7 inch) with a resolution of 1024x600 pixel.
-&panel_lvds {
- compatible = "panel-lvds";
- backlight = <&backlight>;
- data-mapping = "vesa-24";
- height-mm = <86>;
- width-mm = <154>;
- status = "okay";
+&{/} {
+ panel_rvt70hslnwca0: panel-rvt70hslnwca0 {
+ compatible = "panel-lvds";
+ data-mapping = "vesa-24";
+ height-mm = <86>;
+ width-mm = <154>;
- /*
- * These timings are hand-optimized for improved stability compared to
- * theoretical values. Specifically, HBP is set to 100 and combined with
- * HS to total 160, matching the original HBP value in the datasheet. The
- * original horizontal timings caused issues with proper display functionality
- * on iMX8* platforms.
- */
- panel-timing {
- clock-frequency = <40800000 51200000 67200000>;
- de-active = <1>;
- hactive = <1024>;
- hback-porch = <100 100 100>;
- hfront-porch = <16 160 216>;
- hsync-active = <0>;
- hsync-len = <50 60 140>;
- pixelclk-active = <1>;
- vactive = <600>;
- vback-porch = <23 23 23>;
- vfront-porch = <1 12 126>;
- vsync-active = <0>;
- vsync-len = <1 10 20>;
- };
-
- port {
- panel_in_lvds_riv: endpoint {
- remote-endpoint = <&lvds_out_panel_riv>;
+ /*
+ * These timings are hand-optimized for improved stability compared to
+ * theoretical values. Specifically, HBP is set to 100 and combined with
+ * HS to total 160, matching the original HBP value in the datasheet. The
+ * original horizontal timings caused issues with proper display functionality
+ * on iMX8* platforms.
+ */
+ panel-timing {
+ clock-frequency = <40800000 51200000 67200000>;
+ de-active = <1>;
+ hactive = <1024>;
+ hback-porch = <100 100 100>;
+ hfront-porch = <16 160 216>;
+ hsync-active = <0>;
+ hsync-len = <50 60 140>;
+ pixelclk-active = <1>;
+ vactive = <600>;
+ vback-porch = <23 23 23>;
+ vfront-porch = <1 12 126>;
+ vsync-active = <0>;
+ vsync-len = <1 10 20>;
};
};
};
diff --git a/overlays/verdin-imx8_mipi-dsi-to-sn65dsi84.dtsi b/overlays/verdin-imx8_mipi-dsi-to-sn65dsi84.dtsi
deleted file mode 100644
index 889d175..0000000
--- a/overlays/verdin-imx8_mipi-dsi-to-sn65dsi84.dtsi
+++ /dev/null
@@ -1,56 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
-/*
- * Copyright 2022 Toradex
- */
-
-// Common Code to setup MIPI DSI to SN65DSI84
-
-#include <dt-bindings/gpio/gpio.h>
-
-&{/} {
- reg_dsi_lvds: regulator-dsi-lvds {
- compatible = "regulator-fixed";
- enable-active-high;
- regulator-boot-on;
- regulator-name = "DSI_1_PWR_EN";
- };
-};
-
-&lvds_ti_sn65dsi84 {
- compatible = "ti,sn65dsi84";
- vcc-supply = <&reg_dsi_lvds>;
- status = "okay";
-
- ports {
- #address-cells = <1>;
- #size-cells = <0>;
-
- port@0 {
- reg = <0>;
-
- dsi84_in: endpoint {
- data-lanes = <1 2 3 4>;
- remote-endpoint = <&mipi_dsi_bridge1_out>;
- };
- };
- };
-};
-
-&mipi_dsi {
- samsung,esc-clock-frequency = <16000000>;
- status = "okay";
-
- ports {
- #address-cells = <1>;
- #size-cells = <0>;
-
- port@1 {
- reg = <1>;
-
- mipi_dsi_bridge1_out: endpoint {
- attach-bridge;
- remote-endpoint = <&dsi84_in>;
- };
- };
- };
-};
diff --git a/overlays/verdin-imx8mm_backlight-dsi_overlay.dtsi b/overlays/verdin-imx8mm_backlight-dsi_overlay.dtsi
new file mode 100644
index 0000000..ea1ab26
--- /dev/null
+++ b/overlays/verdin-imx8mm_backlight-dsi_overlay.dtsi
@@ -0,0 +1,25 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+/*
+ * Copyright (C) 2025 Toradex
+ *
+ * Backlight on DSI connector
+ */
+
+&{/} {
+ backlight_verdin_dsi: backlight-verdin-dsi {
+ compatible = "pwm-backlight";
+ pinctrl-names = "default";
+ pinctrl-0 = <&pinctrl_i2s_2_d_out_dsi_1_bkl_en>;
+ brightness-levels = <0 45 63 88 119 158 203 255>;
+ default-brightness-level = <4>;
+ /* Verdin I2S_2_D_OUT (DSI_1_BKL_EN/DSI_1_BKL_EN_LVDS, SODIMM 46) */
+ enable-gpios = <&gpio3 24 GPIO_ACTIVE_HIGH>;
+ /* Verdin PWM_3_DSI */
+ pwms = <&pwm1 0 6666667 0>;
+ };
+};
+
+/* Verdin PWM_3_DSI */
+&pwm1 {
+ status = "okay";
+};
diff --git a/overlays/verdin-imx8mm_dsi-to-lvds_panel-cap-touch-10inch-lvds_overlay.dts b/overlays/verdin-imx8mm_dsi-to-lvds_panel-cap-touch-10inch-lvds_overlay.dts
index e9c1929..3ed39d0 100644
--- a/overlays/verdin-imx8mm_dsi-to-lvds_panel-cap-touch-10inch-lvds_overlay.dts
+++ b/overlays/verdin-imx8mm_dsi-to-lvds_panel-cap-touch-10inch-lvds_overlay.dts
@@ -13,38 +13,115 @@
compatible = "toradex,verdin-imx8mm";
};
-#include "verdin-imx8_mipi-dsi-to-sn65dsi84.dtsi"
-#include "display-lt170410_sn65dsi84_overlay.dtsi"
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/interrupt-controller/irq.h>
+#include <dt-bindings/pwm/pwm.h>
-&atmel_mxt_ts {
- vdd-supply = <&reg_dsi_lvds>;
- status = "okay";
-};
+#include "verdin-imx8mm_backlight-dsi_overlay.dtsi"
+#include "display-lt170410-dsi-lvds_overlay.dtsi"
-&backlight {
- status = "okay";
+&{/} {
+ reg_dsi_lvds: regulator-dsi-lvds {
+ compatible = "regulator-fixed";
+ enable-active-high;
+ /* Verdin CTRL_SLEEP_MOCI# (SODIMM 256) */
+ gpio = <&gpio5 1 GPIO_ACTIVE_HIGH>;
+ regulator-boot-on;
+ regulator-name = "DSI_1_PWR_EN";
+ };
};
-/* Verdin I2C_2_DSI */
-&i2c2 {
- status = "okay";
+&backlight_verdin_dsi {
+ pwms = <&pwm1 0 6666667 PWM_POLARITY_INVERTED>;
};
/* Verdin I2C_1 */
&i2c4 {
+ #address-cells = <1>;
+ #size-cells = <0>;
status = "okay";
+
+ bridge@2c {
+ compatible = "ti,sn65dsi84";
+ reg = <0x2c>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&pinctrl_gpio_10_dsi>;
+ /* Verdin GPIO_9_DSI (SN65DSI84 IRQ, SODIMM 17, unused) */
+ /* Verdin GPIO_10_DSI (SODIMM 21) */
+ enable-gpios = <&gpio3 3 GPIO_ACTIVE_HIGH>;
+ vcc-supply = <&reg_dsi_lvds>;
+ status = "okay";
+
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ port@0 {
+ reg = <0>;
+
+ dsi_lvds_bridge_in: endpoint {
+ data-lanes = <1 2 3 4>;
+ remote-endpoint = <&mipi_dsi_bridge1_out>;
+ };
+ };
+
+ port@2 {
+ reg = <2>;
+
+ dsi_lvds_bridge_out: endpoint {
+ remote-endpoint = <&panel_in_lt170410>;
+ };
+ };
+ };
+ };
+
+ touch@4a {
+ compatible = "atmel,maxtouch";
+ reg = <0x4a>;
+ /*
+ * Verdin GPIO_9_DSI
+ * (TOUCH_INT#, SODIMM 17, also routed to SN65DSI84 IRQ albeit currently unused)
+ */
+ interrupt-parent = <&gpio3>;
+ interrupts = <15 IRQ_TYPE_EDGE_FALLING>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&pinctrl_gpio_9_dsi>, <&pinctrl_i2s_2_bclk_touch_reset>;
+ /* Verdin I2S_2_BCLK (TOUCH_RESET#, SODIMM 42) */
+ reset-gpios = <&gpio3 23 GPIO_ACTIVE_LOW>;
+ vdd-supply = <&reg_dsi_lvds>;
+ status = "okay";
+ };
};
&lcdif {
status = "okay";
};
-/* Verdin PWM_3_DSI */
-&pwm1 {
+&mipi_dsi {
+ samsung,esc-clock-frequency = <16000000>;
status = "okay";
+
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ port@1 {
+ reg = <1>;
+
+ mipi_dsi_bridge1_out: endpoint {
+ attach-bridge;
+ remote-endpoint = <&dsi_lvds_bridge_in>;
+ };
+ };
+ };
};
-&reg_dsi_lvds {
- /* Verdin CTRL_SLEEP_MOCI# (SODIMM 256) */
- gpio = <&gpio5 1 GPIO_ACTIVE_HIGH>;
+&panel_lt170410 {
+ backlight = <&backlight_verdin_dsi>;
+
+ port {
+ panel_in_lt170410: endpoint {
+ remote-endpoint = <&dsi_lvds_bridge_out>;
+ };
+ };
};
diff --git a/overlays/verdin-imx8mm_panel-cap-touch-10inch-dsi_overlay.dts b/overlays/verdin-imx8mm_panel-cap-touch-10inch-dsi_overlay.dts
index fdc4bf1..9e2aab3 100644
--- a/overlays/verdin-imx8mm_panel-cap-touch-10inch-dsi_overlay.dts
+++ b/overlays/verdin-imx8mm_panel-cap-touch-10inch-dsi_overlay.dts
@@ -14,11 +14,18 @@
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/gpio/gpio.h>
+
#include "display-rvt101hvdwc00b_overlay.dtsi"
+#include "verdin-imx8mm_backlight-dsi_overlay.dtsi"
-&backlight {
- pwms = <&pwm1 0 6666667 0>;
- status = "okay";
+&panel_rvt101hvdwc00 {
+ backlight = <&backlight_verdin_dsi>;
+
+ port {
+ panel_in_rvt101hvdwc00: endpoint {
+ remote-endpoint = <&dsi_lvds_bridge_out>;
+ };
+ };
};
/* Verdin I2C_2_DSI */
@@ -35,6 +42,7 @@
enable-gpios = <&gpio3 3 GPIO_ACTIVE_HIGH>;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_gpio_10_dsi>;
+ status = "okay";
ports {
#address-cells = <1>;
@@ -43,7 +51,7 @@
port@0 {
reg = <0>;
- dsi_riv_in: endpoint {
+ dsi_lvds_bridge_in: endpoint {
data-lanes = <1 2 3 4>;
remote-endpoint = <&mipi_dsi_bridge1_out>;
};
@@ -52,8 +60,8 @@
port@2 {
reg = <2>;
- lvds_out_panel_riv: endpoint {
- remote-endpoint = <&panel_in_lvds_riv>;
+ dsi_lvds_bridge_out: endpoint {
+ remote-endpoint = <&panel_in_rvt101hvdwc00>;
};
};
};
@@ -69,6 +77,7 @@
pinctrl-0 = <&pinctrl_gpio_9_dsi>, <&pinctrl_i2s_2_bclk_touch_reset>;
/* Verdin I2S_2_BCLK (TOUCH_RESET#, SODIMM 42) */
reset-gpios = <&gpio3 23 GPIO_ACTIVE_LOW>;
+ status = "okay";
};
};
@@ -89,7 +98,7 @@
mipi_dsi_bridge1_out: endpoint {
attach-bridge;
- remote-endpoint = <&dsi_riv_in>;
+ remote-endpoint = <&dsi_lvds_bridge_in>;
};
};
};
diff --git a/overlays/verdin-imx8mm_panel-cap-touch-7inch-dsi_overlay.dts b/overlays/verdin-imx8mm_panel-cap-touch-7inch-dsi_overlay.dts
index 30131d6..9bc3666 100644
--- a/overlays/verdin-imx8mm_panel-cap-touch-7inch-dsi_overlay.dts
+++ b/overlays/verdin-imx8mm_panel-cap-touch-7inch-dsi_overlay.dts
@@ -14,11 +14,18 @@
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/gpio/gpio.h>
+
#include "display-rvt70hslnwca0_overlay.dtsi"
+#include "verdin-imx8mm_backlight-dsi_overlay.dtsi"
-&backlight {
- pwms = <&pwm1 0 6666667 0>;
- status = "okay";
+&panel_rvt70hslnwca0 {
+ backlight = <&backlight_verdin_dsi>;
+
+ port {
+ panel_in_rvt70hslnwca0: endpoint {
+ remote-endpoint = <&dsi_lvds_bridge_out>;
+ };
+ };
};
/* Verdin I2C_2_DSI */
@@ -35,6 +42,7 @@
enable-gpios = <&gpio3 3 GPIO_ACTIVE_HIGH>;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_gpio_10_dsi>;
+ status = "okay";
ports {
#address-cells = <1>;
@@ -43,7 +51,7 @@
port@0 {
reg = <0>;
- dsi_riv_in: endpoint {
+ dsi_lvds_bridge_in: endpoint {
data-lanes = <1 2 3 4>;
remote-endpoint = <&mipi_dsi_bridge1_out>;
};
@@ -52,8 +60,8 @@
port@2 {
reg = <2>;
- lvds_out_panel_riv: endpoint {
- remote-endpoint = <&panel_in_lvds_riv>;
+ dsi_lvds_bridge_out: endpoint {
+ remote-endpoint = <&panel_in_rvt70hslnwca0>;
};
};
};
@@ -69,6 +77,7 @@
pinctrl-0 = <&pinctrl_gpio_9_dsi>, <&pinctrl_i2s_2_bclk_touch_reset>;
/* Verdin I2S_2_BCLK (TOUCH_RESET#, SODIMM 42) */
reset-gpios = <&gpio3 23 GPIO_ACTIVE_LOW>;
+ status = "okay";
};
};
@@ -89,7 +98,7 @@
mipi_dsi_bridge1_out: endpoint {
attach-bridge;
- remote-endpoint = <&dsi_riv_in>;
+ remote-endpoint = <&dsi_lvds_bridge_in>;
};
};
};
diff --git a/overlays/verdin-imx8mp_backlight-dsi_overlay.dtsi b/overlays/verdin-imx8mp_backlight-dsi_overlay.dtsi
new file mode 100644
index 0000000..bb6d6d6
--- /dev/null
+++ b/overlays/verdin-imx8mp_backlight-dsi_overlay.dtsi
@@ -0,0 +1,25 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+/*
+ * Copyright (C) 2025 Toradex
+ *
+ * Backlight on DSI connector
+ */
+
+&{/} {
+ backlight_verdin_dsi: backlight-verdin-dsi {
+ compatible = "pwm-backlight";
+ pinctrl-names = "default";
+ pinctrl-0 = <&pinctrl_i2s_2_d_out_dsi_1_bkl_en>;
+ brightness-levels = <0 45 63 88 119 158 203 255>;
+ default-brightness-level = <4>;
+ /* Verdin I2S_2_D_OUT (DSI_1_BKL_EN/DSI_1_BKL_EN_LVDS, SODIMM 46) */
+ enable-gpios = <&gpio5 1 GPIO_ACTIVE_HIGH>;
+ /* Verdin PWM_3_DSI */
+ pwms = <&pwm3 0 6666667 0>;
+ };
+};
+
+/* Verdin PWM_3_DSI */
+&pwm3 {
+ status = "okay";
+};
diff --git a/overlays/verdin-imx8mp_dsi-to-lvds_panel-cap-touch-10inch-lvds_overlay.dts b/overlays/verdin-imx8mp_dsi-to-lvds_panel-cap-touch-10inch-lvds_overlay.dts
index 80703c5..c0bf87e 100644
--- a/overlays/verdin-imx8mp_dsi-to-lvds_panel-cap-touch-10inch-lvds_overlay.dts
+++ b/overlays/verdin-imx8mp_dsi-to-lvds_panel-cap-touch-10inch-lvds_overlay.dts
@@ -9,36 +9,30 @@
/dts-v1/;
/plugin/;
+/ {
+ compatible = "toradex,verdin-imx8mp";
+};
+
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/interrupt-controller/irq.h>
#include <dt-bindings/pwm/pwm.h>
-/ {
- compatible = "toradex,verdin-imx8mp";
-};
+#include "verdin-imx8mp_backlight-dsi_overlay.dtsi"
+#include "display-lt170410-dsi-lvds_overlay.dtsi"
&{/} {
- backlight {
- compatible = "pwm-backlight";
- pinctrl-names = "default";
- pinctrl-0 = <&pinctrl_i2s_2_d_out_dsi_1_bkl_en>;
- brightness-levels = <0 45 63 88 119 158 203 255>;
- default-brightness-level = <4>;
- /* Verdin I2S_2_D_OUT (DSI_1_BKL_EN/DSI_1_BKL_EN_LVDS, SODIMM 46) */
- enable-gpios = <&gpio5 1 GPIO_ACTIVE_HIGH>;
- power-supply = <&reg_3p3v>;
- /* Verdin PWM_3_DSI/PWM_3_DSI_LVDS (SODIMM 19) */
- pwms = <&pwm3 0 6666667 PWM_POLARITY_INVERTED>;
- status = "okay";
+ reg_dsi_lvds: regulator-dsi-lvds {
+ compatible = "regulator-fixed";
+ enable-active-high;
+ /* Verdin CTRL_SLEEP_MOCI# (SODIMM 256) */
+ gpio = <&gpio4 29 GPIO_ACTIVE_HIGH>;
+ regulator-boot-on;
+ regulator-name = "DSI_1_PWR_EN";
};
+};
- panel_lvds: panel-lvds {
- compatible = "panel-lvds";
- backlight = <&backlight>;
- data-mapping = "vesa-24";
- height-mm = <136>;
- width-mm = <217>;
- };
+&backlight_verdin_dsi {
+ pwms = <&pwm3 0 6666667 PWM_POLARITY_INVERTED>;
};
/* Verdin I2C_1 */
@@ -47,7 +41,7 @@
#size-cells = <0>;
status = "okay";
- lvds_ti_sn65dsi84: bridge@2c {
+ bridge@2c {
compatible = "ti,sn65dsi84";
reg = <0x2c>;
pinctrl-names = "default";
@@ -55,6 +49,30 @@
/* Verdin GPIO_9_DSI (SN65DSI84 IRQ, SODIMM 17, unused) */
/* Verdin GPIO_10_DSI (SODIMM 21) */
enable-gpios = <&gpio4 28 GPIO_ACTIVE_HIGH>;
+ vcc-supply = <&reg_dsi_lvds>;
+ status = "okay";
+
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ port@0 {
+ reg = <0>;
+
+ dsi_lvds_bridge_in: endpoint {
+ data-lanes = <1 2 3 4>;
+ remote-endpoint = <&mipi_dsi_bridge1_out>;
+ };
+ };
+
+ port@2 {
+ reg = <2>;
+
+ dsi_lvds_bridge_out: endpoint {
+ remote-endpoint = <&panel_in_lt170410>;
+ };
+ };
+ };
};
touch@4a {
@@ -80,16 +98,32 @@
status = "okay";
};
-/* Verdin PWM_3_DSI */
-&pwm3 {
+&mipi_dsi {
+ samsung,esc-clock-frequency = <16000000>;
status = "okay";
+
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ port@1 {
+ reg = <1>;
+
+ mipi_dsi_bridge1_out: endpoint {
+ attach-bridge;
+ remote-endpoint = <&dsi_lvds_bridge_in>;
+ };
+ };
+ };
};
-&reg_dsi_lvds {
- /* Verdin CTRL_SLEEP_MOCI# (SODIMM 256) */
- gpio = <&gpio4 29 GPIO_ACTIVE_HIGH>;
+&panel_lt170410 {
+ backlight = <&backlight_verdin_dsi>;
+
+ port {
+ panel_in_lt170410: endpoint {
+ remote-endpoint = <&dsi_lvds_bridge_out>;
+ };
+ };
};
-/* As the following make use of labels only just created above */
-#include "display-lt170410_sn65dsi84_overlay.dtsi"
-#include "verdin-imx8_mipi-dsi-to-sn65dsi84.dtsi"
diff --git a/overlays/verdin-imx8mp_panel-cap-touch-10inch-dsi_overlay.dts b/overlays/verdin-imx8mp_panel-cap-touch-10inch-dsi_overlay.dts
index fe0b115..91eedfe 100644
--- a/overlays/verdin-imx8mp_panel-cap-touch-10inch-dsi_overlay.dts
+++ b/overlays/verdin-imx8mp_panel-cap-touch-10inch-dsi_overlay.dts
@@ -15,14 +15,17 @@
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/gpio/gpio.h>
-&{/} {
- panel_lvds: panel-lvds {
- };
-};
+#include "display-rvt101hvdwc00b_overlay.dtsi"
+#include "verdin-imx8mm_backlight-dsi_overlay.dtsi"
-&backlight {
- pwms = <&pwm3 0 6666667 0>;
- status = "okay";
+&panel_rvt101hvdwc00 {
+ backlight = <&backlight_verdin_dsi>;
+
+ port {
+ panel_in_rvt101hvdwc00: endpoint {
+ remote-endpoint = <&dsi_lvds_bridge_out>;
+ };
+ };
};
/* Verdin I2C_2_DSI */
@@ -39,6 +42,7 @@
enable-gpios = <&gpio4 28 GPIO_ACTIVE_HIGH>;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_gpio_10_dsi>;
+ status = "okay";
ports {
#address-cells = <1>;
@@ -47,7 +51,7 @@
port@0 {
reg = <0>;
- dsi_riv_in: endpoint {
+ dsi_lvds_bridge_in: endpoint {
data-lanes = <1 2 3 4>;
remote-endpoint = <&mipi_dsi_bridge1_out>;
};
@@ -56,8 +60,8 @@
port@2 {
reg = <2>;
- lvds_out_panel_riv: endpoint {
- remote-endpoint = <&panel_in_lvds_riv>;
+ dsi_lvds_bridge_out: endpoint {
+ remote-endpoint = <&panel_in_rvt101hvdwc00>;
};
};
};
@@ -73,6 +77,7 @@
pinctrl-0 = <&pinctrl_gpio_9_dsi>, <&pinctrl_i2s_2_bclk_touch_reset>;
/* Verdin I2S_2_BCLK (TOUCH_RESET#, SODIMM 42) */
reset-gpios = <&gpio5 0 GPIO_ACTIVE_LOW>;
+ status = "okay";
};
};
@@ -94,10 +99,8 @@
mipi_dsi_bridge1_out: endpoint {
attach-bridge;
- remote-endpoint = <&dsi_riv_in>;
+ remote-endpoint = <&dsi_lvds_bridge_in>;
};
};
};
};
-
-#include "display-rvt101hvdwc00b_overlay.dtsi"
diff --git a/overlays/verdin-imx8mp_panel-cap-touch-7inch-dsi_overlay.dts b/overlays/verdin-imx8mp_panel-cap-touch-7inch-dsi_overlay.dts
index 4fd4969..b34d101 100644
--- a/overlays/verdin-imx8mp_panel-cap-touch-7inch-dsi_overlay.dts
+++ b/overlays/verdin-imx8mp_panel-cap-touch-7inch-dsi_overlay.dts
@@ -15,14 +15,17 @@
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/gpio/gpio.h>
-&{/} {
- panel_lvds: panel-lvds {
- };
-};
+#include "display-rvt70hslnwca0_overlay.dtsi"
+#include "verdin-imx8mp_backlight-dsi_overlay.dtsi"
-&backlight {
- pwms = <&pwm3 0 6666667 0>;
- status = "okay";
+&panel_rvt70hslnwca0 {
+ backlight = <&backlight_verdin_dsi>;
+
+ port {
+ panel_in_rvt70hslnwca0: endpoint {
+ remote-endpoint = <&dsi_lvds_bridge_out>;
+ };
+ };
};
/* Verdin I2C_2_DSI */
@@ -39,6 +42,7 @@
enable-gpios = <&gpio4 28 GPIO_ACTIVE_HIGH>;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_gpio_10_dsi>;
+ status = "okay";
ports {
#address-cells = <1>;
@@ -47,7 +51,7 @@
port@0 {
reg = <0>;
- dsi_riv_in: endpoint {
+ dsi_lvds_bridge_in: endpoint {
data-lanes = <1 2 3 4>;
remote-endpoint = <&mipi_dsi_bridge1_out>;
};
@@ -56,8 +60,8 @@
port@2 {
reg = <2>;
- lvds_out_panel_riv: endpoint {
- remote-endpoint = <&panel_in_lvds_riv>;
+ dsi_lvds_bridge_out: endpoint {
+ remote-endpoint = <&panel_in_rvt70hslnwca0>;
};
};
};
@@ -73,6 +77,7 @@
pinctrl-0 = <&pinctrl_gpio_9_dsi>, <&pinctrl_i2s_2_bclk_touch_reset>;
/* Verdin I2S_2_BCLK (TOUCH_RESET#, SODIMM 42) */
reset-gpios = <&gpio5 0 GPIO_ACTIVE_LOW>;
+ status = "okay";
};
};
@@ -94,10 +99,8 @@
mipi_dsi_bridge1_out: endpoint {
attach-bridge;
- remote-endpoint = <&dsi_riv_in>;
+ remote-endpoint = <&dsi_lvds_bridge_in>;
};
};
};
};
-
-#include "display-rvt70hslnwca0_overlay.dtsi"