From 2cd1acc84996005bf41d9261cd54b2c308b5d03e Mon Sep 17 00:00:00 2001 From: Marcel Ziswiler Date: Sat, 25 Feb 2023 00:26:41 +0100 Subject: verdin-am62: add native lvds overlays Add overlays for native LVDS being MSP. Signed-off-by: Marcel Ziswiler --- overlays/Makefile | 2 + overlays/verdin-am62_mezzanine_backlight.dtsi | 28 +++++++ ...zzanine_panel-cap-touch-10inch-lvds_overlay.dts | 89 ++++++++++++++++++++ ...anine_panel-lvds-dual-channel-1080p_overlay.dts | 95 ++++++++++++++++++++++ 4 files changed, 214 insertions(+) create mode 100644 overlays/verdin-am62_mezzanine_backlight.dtsi create mode 100644 overlays/verdin-am62_mezzanine_panel-cap-touch-10inch-lvds_overlay.dts create mode 100644 overlays/verdin-am62_mezzanine_panel-lvds-dual-channel-1080p_overlay.dts 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 +#include + +&{/} { + 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 +#include +#include + +#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 +#include + +#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>; + }; + }; +}; -- cgit v1.2.3