summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarcel Ziswiler <marcel.ziswiler@toradex.com>2023-02-25 00:26:41 +0100
committerFrancesco Dolcini <francesco.dolcini@toradex.com>2023-04-11 13:32:14 +0200
commit2cd1acc84996005bf41d9261cd54b2c308b5d03e (patch)
treebb22191312f874d40ed83af7acc0da8684dad4e5
parent297338222460faaf0f17750afcf366890f066ba4 (diff)
verdin-am62: add native lvds overlays
Add overlays for native LVDS being MSP. Signed-off-by: Marcel Ziswiler <marcel.ziswiler@toradex.com>
-rw-r--r--overlays/Makefile2
-rw-r--r--overlays/verdin-am62_mezzanine_backlight.dtsi28
-rw-r--r--overlays/verdin-am62_mezzanine_panel-cap-touch-10inch-lvds_overlay.dts89
-rw-r--r--overlays/verdin-am62_mezzanine_panel-lvds-dual-channel-1080p_overlay.dts95
4 files changed, 214 insertions, 0 deletions
diff --git a/overlays/Makefile b/overlays/Makefile
index ee83118..7a843a3 100644
--- a/overlays/Makefile
+++ b/overlays/Makefile
@@ -50,6 +50,8 @@ dtb-y += colibri-imx7_panel-cap-touch-10inch-lvds_overlay.dtbo
dtb-y += colibri-imx7_panel-res-touch-7inch_overlay.dtbo
dtb-y += colibri-imx7_spidev_overlay.dtbo
dtb-y += colibri-imx7_vga-640x480_overlay.dtbo
+dtb-y += verdin-am62_mezzanine_panel-cap-touch-10inch-lvds_overlay.dtbo
+dtb-y += verdin-am62_mezzanine_panel-lvds-dual-channel-1080p_overlay.dtbo
dtb-y += verdin-am62_spidev_overlay.dtbo
dtb-y += verdin-imx8mm_nau8822-btl_overlay.dtbo
dtb-y += verdin-imx8mm_spidev_overlay.dtbo
diff --git a/overlays/verdin-am62_mezzanine_backlight.dtsi b/overlays/verdin-am62_mezzanine_backlight.dtsi
new file mode 100644
index 0000000..6bfbd34
--- /dev/null
+++ b/overlays/verdin-am62_mezzanine_backlight.dtsi
@@ -0,0 +1,28 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+/*
+ * Copyright 2023 Toradex
+ */
+
+// Verdin AM62 Mezzanine Backlight
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/pwm/pwm.h>
+
+&{/} {
+ compatible = "toradex,verdin-am62";
+
+ backlight_mezzanine: backlight-mezzanine {
+ compatible = "pwm-backlight";
+ brightness-levels = <0 45 63 88 119 158 203 255>;
+ default-brightness-level = <4>;
+ /* Verdin GPIO_4 (SODIMM 212) */
+ enable-gpios = <&mcu_gpio0 4 GPIO_ACTIVE_HIGH>;
+ /* Verdin PWM_2 (SODIMM 16) */
+ pwms = <&epwm0 1 6666667 PWM_POLARITY_INVERTED>;
+ };
+};
+
+/* Verdin PWM_1, PWM_2 */
+&epwm0 {
+ status = "okay";
+};
diff --git a/overlays/verdin-am62_mezzanine_panel-cap-touch-10inch-lvds_overlay.dts b/overlays/verdin-am62_mezzanine_panel-cap-touch-10inch-lvds_overlay.dts
new file mode 100644
index 0000000..8b1a674
--- /dev/null
+++ b/overlays/verdin-am62_mezzanine_panel-cap-touch-10inch-lvds_overlay.dts
@@ -0,0 +1,89 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+/*
+ * Copyright 2023 Toradex
+ */
+
+// Verdin AM62 Mezzanine single-channel LVDS
+
+/dts-v1/;
+/plugin/;
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/interrupt-controller/irq.h>
+#include <dt-bindings/pwm/pwm.h>
+
+#include "verdin-am62_mezzanine_backlight.dtsi"
+
+&{/} {
+ compatible = "toradex,verdin-am62";
+
+ panel-lvds-mez {
+ compatible = "panel-lvds";
+ backlight = <&backlight_mezzanine>;
+ 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-active = <0>;
+ 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-active = <0>;
+ vsync-len = <6 9 12>;
+ };
+
+ port {
+ panel_lvds_in: endpoint {
+ remote-endpoint = <&oldi_out0>;
+ };
+ };
+ };
+};
+
+&dss {
+ status = "okay";
+};
+
+&dss_ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ /* VP1: LVDS Output (OLDI TX 0) */
+ port@0 {
+ reg = <0>;
+
+ oldi_out0: endpoint {
+ remote-endpoint = <&panel_lvds_in>;
+ };
+ };
+};
+
+/* Verdin I2C_2_DSI */
+&main_i2c2 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ status = "okay";
+
+ touch-mezzanine@4a {
+ compatible = "atmel,maxtouch";
+ reg = <0x4a>;
+ /*
+ * Already muxed as GPIOs in k3-am625-verdin-dev.dtsi
+ * pinctrl-names = "default";
+ * pinctrl-0 = <&pinctrl_gpio_2 &pinctrl_gpio_3>;
+ */
+ /* Verdin GPIO_3 (SODIMM 210) */
+ interrupt-parent = <&mcu_gpio0>;
+ interrupts = <3 IRQ_TYPE_EDGE_FALLING>;
+ /* Verdin GPIO_2 (SODIMM 208) */
+ reset-gpios = <&mcu_gpio0 2 GPIO_ACTIVE_LOW>;
+ };
+};
diff --git a/overlays/verdin-am62_mezzanine_panel-lvds-dual-channel-1080p_overlay.dts b/overlays/verdin-am62_mezzanine_panel-lvds-dual-channel-1080p_overlay.dts
new file mode 100644
index 0000000..178b2c2
--- /dev/null
+++ b/overlays/verdin-am62_mezzanine_panel-lvds-dual-channel-1080p_overlay.dts
@@ -0,0 +1,95 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+/*
+ * Copyright 2023 Toradex
+ */
+
+// Verdin AM62 Mezzanine with LG LP156WF1 dual-channel LVDS Panel
+
+/dts-v1/;
+/plugin/;
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/pwm/pwm.h>
+
+#include "verdin-am62_mezzanine_backlight.dtsi"
+
+&{/} {
+ compatible = "toradex,verdin-am62";
+
+ panel-lvds-mez {
+ compatible = "panel-lvds";
+ #address-cells = <1>;
+ #size-cells = <0>;
+ backlight = <&backlight_mezzanine>;
+ 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>;
+ };
+
+ /*
+ * Note that the OLDI TX 0 transmits the odd set of pixels
+ * while the OLDI TX 1 transmits the even set. This is a
+ * fixed configuration in the IP integration and is not
+ * changeable. The properties, "dual-lvds-odd-pixels" and
+ * "dual-lvds-even-pixels" have been used to merely
+ * identify if a Dual Link configuration is required.
+ * Swapping them will not make any difference.
+ */
+ port@0 {
+ reg = <0>;
+ dual-lvds-odd-pixels;
+
+ panel_lvds_in0: endpoint {
+ remote-endpoint = <&oldi_out0>;
+ };
+ };
+
+ port@1 {
+ reg = <1>;
+ dual-lvds-even-pixels;
+
+ panel_lvds_in1: endpoint {
+ remote-endpoint = <&oldi_out1>;
+ };
+ };
+ };
+};
+
+&dss {
+ status = "okay";
+};
+
+&dss_ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ /* VP1: LVDS Output (OLDI TX 0) */
+ port@0 {
+ reg = <0>;
+
+ oldi_out0: endpoint {
+ remote-endpoint = <&panel_lvds_in0>;
+ };
+ };
+
+ /* VP1: LVDS Output (OLDI TX 1) */
+ port@2 {
+ reg = <2>;
+
+ oldi_out1: endpoint {
+ remote-endpoint = <&panel_lvds_in1>;
+ };
+ };
+};