From: Vitor Soares <[email protected]>

Add a device tree overlay enabling the LG LP156WF1 15.6" FHD (1920x1080)
dual-channel LVDS panel on the Verdin Development Board with Verdin AM62
Mezzanine expansion board. The panel connects via the AM62 OLDI0 and
OLDI1 in dual-channel mode on the Mezzanine LVDS interface (J10).

Assisted-by: Claude:claude-sonnet-4.6
Signed-off-by: Vitor Soares <[email protected]>
---
 arch/arm64/boot/dts/ti/Makefile               |   5 +
 ...verdin-dev-mezzanine-lvds-lg-lp156wf1.dtso | 129 ++++++++++++++++++
 2 files changed, 134 insertions(+)
 create mode 100644 
arch/arm64/boot/dts/ti/k3-am625-verdin-dev-mezzanine-lvds-lg-lp156wf1.dtso

diff --git a/arch/arm64/boot/dts/ti/Makefile b/arch/arm64/boot/dts/ti/Makefile
index 371f9a043fe5..e9951b5d2e0b 100644
--- a/arch/arm64/boot/dts/ti/Makefile
+++ b/arch/arm64/boot/dts/ti/Makefile
@@ -30,6 +30,7 @@ dtb-$(CONFIG_ARCH_K3) += k3-am625-phyboard-lyra-rdk.dtb
 dtb-$(CONFIG_ARCH_K3) += k3-am625-sk.dtb
 dtb-$(CONFIG_ARCH_K3) += k3-am625-tqma62xx-mba62xx.dtb
 dtb-$(CONFIG_ARCH_K3) += k3-am625-verdin-dev-mezzanine-can.dtbo
+dtb-$(CONFIG_ARCH_K3) += k3-am625-verdin-dev-mezzanine-lvds-lg-lp156wf1.dtbo
 dtb-$(CONFIG_ARCH_K3) += 
k3-am625-verdin-dev-mezzanine-panel-cap-touch-10inch-lvds.dtbo
 dtb-$(CONFIG_ARCH_K3) += k3-am625-verdin-dev-nau8822-btl.dtbo
 dtb-$(CONFIG_ARCH_K3) += k3-am625-verdin-dsi-to-hdmi.dtbo
@@ -232,6 +233,9 @@ 
k3-am625-verdin-wifi-dev-dsi-to-lvds-panel-cap-touch-10inch-dtbs := \
        k3-am625-verdin-dsi-to-lvds-panel-cap-touch-10inch.dtbo
 k3-am625-verdin-wifi-dev-mezzanine-can-dtbs := k3-am625-verdin-wifi-dev.dtb \
        k3-am625-verdin-dev-mezzanine-can.dtbo
+k3-am625-verdin-wifi-dev-mezzanine-lvds-lg-lp156wf1-dtbs := \
+       k3-am625-verdin-wifi-dev.dtb \
+       k3-am625-verdin-dev-mezzanine-lvds-lg-lp156wf1.dtbo
 k3-am625-verdin-wifi-dev-mezzanine-panel-cap-touch-10inch-lvds-dtbs := \
        k3-am625-verdin-wifi-dev.dtb \
        k3-am625-verdin-dev-mezzanine-panel-cap-touch-10inch-lvds.dtbo
@@ -352,6 +356,7 @@ dtb- += k3-am625-beagleplay-csi2-ov5640.dtb \
        k3-am625-sk-hdmi-audio.dtb \
        k3-am625-verdin-wifi-dev-dsi-to-lvds-panel-cap-touch-10inch.dtb \
        k3-am625-verdin-wifi-dev-mezzanine-can.dtb \
+       k3-am625-verdin-wifi-dev-mezzanine-lvds-lg-lp156wf1.dtb \
        k3-am625-verdin-wifi-dev-mezzanine-panel-cap-touch-10inch-lvds.dtb \
        k3-am625-verdin-wifi-dev-nau8822-btl.dtb \
        k3-am625-verdin-wifi-dev-ov5640-24mhz.dtb \
diff --git 
a/arch/arm64/boot/dts/ti/k3-am625-verdin-dev-mezzanine-lvds-lg-lp156wf1.dtso 
b/arch/arm64/boot/dts/ti/k3-am625-verdin-dev-mezzanine-lvds-lg-lp156wf1.dtso
new file mode 100644
index 000000000000..a4d6cbe9ff3b
--- /dev/null
+++ b/arch/arm64/boot/dts/ti/k3-am625-verdin-dev-mezzanine-lvds-lg-lp156wf1.dtso
@@ -0,0 +1,129 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+/*
+ * Copyright (c) Toradex
+ *
+ * LG LP156WF1 dual-channel LVDS panel on Verdin AM62 Mezzanine
+ * LVDS interface (J10), used with the Verdin Development Board.
+ */
+
+/dts-v1/;
+/plugin/;
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/pwm/pwm.h>
+
+&{/} {
+       backlight_pwm2: backlight-pwm2 {
+               compatible = "pwm-backlight";
+               brightness-levels = <0 45 63 88 119 158 203 255>;
+               default-brightness-level = <4>;
+               /* Verdin GPIO_4 (SODIMM 212) - LVDS_BKL_EN */
+               enable-gpios = <&mcu_gpio0 4 GPIO_ACTIVE_HIGH>;
+               /* Verdin PWM_2 (SODIMM 16) - LVDS_PWM */
+               pwms = <&epwm0 1 6666667 PWM_POLARITY_INVERTED>;
+       };
+
+       panel-lvds-native {
+               compatible = "lg,lp156wf1", "panel-lvds";
+               backlight = <&backlight_pwm2>;
+               data-mapping = "jeida-24";
+               height-mm = <194>;
+               width-mm = <345>;
+
+               panel-timing {
+                       clock-frequency = <138500000>;
+                       hactive = <1920>;
+                       hback-porch = <40>;
+                       hfront-porch = <24>;
+                       hsync-len = <16>;
+                       pixelclk-active = <0>;
+                       vactive = <1080>;
+                       vback-porch = <23>;
+                       vfront-porch = <3>;
+                       vsync-len = <5>;
+               };
+
+               ports {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       port@0 {
+                               reg = <0>;
+                               dual-lvds-odd-pixels;
+
+                               panel_lvds_native_in0: endpoint {
+                                       remote-endpoint = <&oldi0_out>;
+                               };
+                       };
+
+                       port@1 {
+                               reg = <1>;
+                               dual-lvds-even-pixels;
+
+                               panel_lvds_native_in1: endpoint {
+                                       remote-endpoint = <&oldi1_out>;
+                               };
+                       };
+               };
+       };
+};
+
+&dss {
+       status = "okay";
+};
+
+&dss_ports {
+       #address-cells = <1>;
+       #size-cells = <0>;
+
+       /* DSS VP1: internal DPI output to OLDIx */
+       port@0 {
+               reg = <0>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               dss0_out0: endpoint@0 {
+                       reg = <0>;
+                       remote-endpoint = <&oldi0_in>;
+               };
+
+               dss0_out1: endpoint@1 {
+                       reg = <1>;
+                       remote-endpoint = <&oldi1_in>;
+               };
+       };
+};
+
+&oldi0 {
+       ti,companion-oldi = <&oldi1>;
+       status = "okay";
+};
+
+&oldi0_port0 {
+       oldi0_in: endpoint {
+               remote-endpoint = <&dss0_out0>;
+       };
+};
+
+&oldi0_port1 {
+       oldi0_out: endpoint {
+               remote-endpoint = <&panel_lvds_native_in0>;
+       };
+};
+
+&oldi1 {
+       ti,secondary-oldi;
+       status = "okay";
+};
+
+&oldi1_port0 {
+       oldi1_in: endpoint {
+               remote-endpoint = <&dss0_out1>;
+       };
+};
+
+&oldi1_port1 {
+       oldi1_out: endpoint {
+               remote-endpoint = <&panel_lvds_native_in1>;
+       };
+};
-- 
2.54.0

Reply via email to