Can anyone provide an example of a device tree file that supports a single native LVDS panel on either LVDS0 or LVDS1 connector? I am trying to use a single native LVDS panel on either LVDS0 or LVDS1 connector. When I try this DTB I lose the HDMI and the LVDS panel does not work.
Hello, I am trying to also intilize my LVDS display for my custom board also. I've used similar DT config like below, but I get:
root@imx8mp-lpddr4-evk:~# /usr/bin/weston --backend=drm-backend.so --shell=fullscreen-shell.so --no-clients-resize
Date: 2022-11-08 UTC
[14:04:39.947] weston 11.0.1
https://wayland.freedesktop.org
Bug reports to: https://gitlab.freedesktop.org/wayland/weston/issues/
Build: lf-6.1.1-1.0.0+
[14:04:39.947] Command line: /usr/bin/weston --backend=drm-backend.so --shell=fullscreen-shell.so --no-clients-resize
[14:04:39.947] OS: Linux, 6.1.1+gcc0d1d210bdd, #1 SMP PREEMPT Thu Mar 2 14:54:17 UTC 2023, aarch64
[14:04:39.947] Flight recorder: enabled
[14:04:39.947] Using config file '/etc/xdg/weston/weston.ini'
[14:04:39.947] Output repaint window is 16 ms maximum.
[14:04:39.948] Loading module '/usr/lib/libweston-11/drm-backend.so'
[14:04:39.953] initializing drm backend
[14:04:39.953] Trying logind launcher...
[14:04:39.953] logind: failed to get session seat
[14:04:39.953] logind: cannot setup systemd-logind helper error: (No data available), using legacy fallback
[14:04:39.953] fatal: your system should either provide the logind D-Bus API, or use seatd.
[14:04:39.953] fatal: failed to create compositor backend
Internal warning: debug scope 'drm-backend' has not been destroyed.
/ {
lvds0_panel {
compatible = "panel-lvds";
fsl,data-mapping="spwg";
width-mm=<216>;
height-mm=<135>;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_lvds>;
gpio = <&gpio1 10 GPIO_ACTIVE_HIGH
&gpio1 11 GPIO_ACTIVE_HIGH>;
panel-timing{
clock-frequency=<74250000>;
hactive=<1280>;
vactive=<800>;
hfront-porch=<53>;
hback-porch=<53>;
hsync-len=<54>;
vfront-porch=<8>;
vback-porch=<8>;
vsync-len=<7>;
de-active=<1>;
};
port {
panel_lvds_in: endpoint {
remote-endpoint = <&lvds_out>;
};
};
};
};
/delete-node/ &lvds_bridge;
/delete-node/ &pwm2;
/delete-node/ &lvds_backlight;
&ldb {
status = "okay";
lvds-channel@0 {
status="okay";
fsl,data-mapping = "spwg";
/delete-node/ port@1;
port@1 {
reg = <1>;
lvds_out: endpoint {
remote-endpoint = <&panel_lvds_in>;
};
};
};
};
&iomuxc{
pinctrl_lvds:lvdsgrp {
fsl,pins=<
MX8MP_IOMUXC_GPIO1_IO10__GPIO1_IO10 0x1c0
MX8MP_IOMUXC_GPIO1_IO11__GPIO1_IO11 0x1c0
>;
};
};
What am I missing? Thank you in advance!
Here is my solution for a generic native LVDS panel on LVDS1, it works great:
Hello,
In you bsp come with different dtb that you can use as example imx8mp-evk-jdi-wuxga-lvds-panel.dts. Also please take a look at:
Regards
I'm convinced you did not even look at my file. Also, the imx8mp-evk-jdi-wuxga-lvds-panel.dts would never work unless the panel was one of those. My file works for all generic native panels on LVDS0 connector. It does not work on LVDS1 and I want it to work on LVDS1 what do I change?
Hi ufnguru,
since I have some troubles on LVDS of iMX8MP board, I am navigating on several source of information, this thread included.
As suggestion, I recommend to you read the following documentation on kernel sources (repo is https://github.com/nxp-real-time-edge-sw/real-time-edge-linux, branch is linux_6.1.22):
[1] - $ROOT/Documentation/devicetree/bindings/display/imx/ldb.txt
[2] - $ROOT/Documentation/devicetree/bindings/display/bridge/fsl,ldb.yaml
They refers to two different kernel configuration options, hence two different source files, but with the same "compatible" property ""
In a short sentences dotted list list I understood the followings:
a- ldb component has 3 ports:
port@0 is the input port, linked with lcdif2 module
port@1 is an output port, linked with lvds0 phy and external module
port@2 is an other output port, linked with lvds1 phy and external module
b- ldb component has two channel
c- each ldb channel, imx8mp, has an output port linked to panlel/displayexternal-bridge
Hence, I suppose
- for LVDS0 output, the node "lvds-channel@0" shall have defined two subnodes: port@0 and port@1
- for LVDS1 output, the node "lvds-channel@1" shall have defined two subnodes: port@0 and port@2
I hope some NXP people can confirm (or not) my assertions.
Hoping to be useful.