Introduction
Aim The aim of this section is to properly configure the LVDS settings.
The LVDS Display Bridge (LDB) is used to connect the IPU (Image Processing Unit) to the External LVDS Display Interface. Its purpose is to support the flow of synchronous RGB data from the IPU to external display devices through the LVDS interface.
Table of Contents |
---|
...
Device Tree Overlay
The Device Tree Overlays (DTO) provide a way to modify the overall device tree without re-compiling the complete device tree.
Overlays are fragments of a complete device tree that can be included or removed according with to the environment. Direct The direct consequence is enabling/disabling the hardware components in of the system.
The design process of designing a Device Tree Overlay includes three macro steps:
writing a Device Tree Overlay (.dts) file;
generating a *.dtbo file, output of *.dts file build;
enabling the overlay through *.dtbo file.
For further information about overlay device tree on the Device Tree Overlay customization, you can please refer to the documentation available at following Kernel path:
Code Block |
---|
linux-seco/Documentation/devicetree/overlay-notes.txt |
Some devices are used in the overlays and those devices are pre-enabled by default in the source.
Below is the reference table for the pre-enabled device tree overlay Device Tree Overlay.
Boards family | Peripherals | Device tree overlayTree Overlay |
---|---|---|
i.MX6 | UART, LVDS, RGB, Audio, HDMI, Touch, GPIO, Pin header selection…selection, etc. |
|
i.MX8 | HDMI, Display Port, LVDS , Camera, hdmiin, lcdif, Modem, eDP, GPIO,CAN, RTC,PCIe, SPI, DCSS, WiFi/BT …, etc. |
|
...
LVDS Customization Guide for i.MX6
The i.MX6-based modules boards use the fbdev interface for mode setting and output configuration.
Two There are two IPU units are on the imx6q SOC while i.mx6q SoC, and only one IPU unit on the imx6dl SOCi.mx6dl SoC. Each IPU unit has two display interfaces. The Vivante X driver can only make use of the first framebuffer /dev/fb0, while the others can be used through the fbdev framebuffer interface.
The assignment of the possible display outputs to the framebuffers (scan-out engines) and their timing configuration can be done both through Kernel command line and within the device tree. The command line settings take precedence over the device tree.
The first and third video output has an additional overlay framebuffer configured.
Video output | IPU core | fb boot name | fb device | overlay Overlay fb device |
---|---|---|---|---|
First | IPU1 | mxcfb0 | /dev/fb0 | /dev/fb1 |
Second | IPU1 | mxcfb1 | /dev/fb2 | |
Third | IPU2 | mxcfb2 | /dev/fb3 | /dev/fb4 |
Fourth | IPU2 | mxcfb3 | /dev/fb5 |
Adding Custom LVDS support in Device tree file for i.MX6
...
Verify the signal timing specifications of the LCD in the datasheet and then calculate following parameters:
hback-porch
...
hfront-porch
...
vback-porch
...
vfront-porch
...
hsync-len
...
vsync-len
by using this the open source reference available at the following path https://www.epanorama.net/faq/vga2rgb/calc.html .
LDB Structure format:
To obtain the information about theldb structure ldb, you can refer to the documentation presents available into the kernelKernel:
Code Block |
---|
linux-seco/Documentation/devicetree/bindings/display/imx/ldb.txt linux-seco/Documentation/devicetree/bindings/fb/fsl_ipuv3_fb.txt |
Code Block |
---|
timing9: $name { clock-frequency = <$Clock-frequency>; hactive = <$Hactive>; vactive = <$Vactive>; hback-porch = <$Hback>; hfront-porch = <$Hfront>; vback-porch = <$Vback>; vfront-porch = <$Vfront>; hsync-len = <$Hsync>; vsync-len = <$Vsync>; }; |
Here Below is the sample timing data for SVGA TFT LCD(800x600) 10.4 inches (BA104S01-100):
Code Block |
---|
name = LBD-SVGA-BA Clock-frequency = 39600000 Hactive = 800 Vactive = 600 Hback = 45 Hfront = 45 Vback = 25 Vfront = 25 Hsync = 10 Vsync = 10 |
Then getting into After that, get into the device tree path (arch/arm/boot/dts/imx6qdl-seco_lvds_display.dtsi
),.
Please find below the ldb structure to be add added in the imx6qdl-seco_lvds_display.dtsi
file.
Code Block |
---|
cd linux-seco/arch/arm/boot/dts vi imx6qdl-seco_lvds_display.dtsi |
Add Now add the newly created new LDB lbd structure into the LVDS device tree file and save the file.
Now you You can now check the device tree overlay Device Tree Overlay file whether the LVDS (ldbLDB) is enabled or not. Below is the example to enable the ldb node.
Code Block |
---|
fragment@3 { target = <&ldb>; __overlay__ { status = "okay"; }; }; |
Once you are done the setup is done, you can compile the source.
...
Info |
---|
From BSP9.0 onwards, the LVDS is enabled by |
...
the Device Tree Overlay file, using seco_config tool to load the the device tree overlay in |
...
U- |
...
Boot level. |
Device tree display overlay for i.MX6
BoardModule | Type of product | Peripheral | Overlays | |
---|---|---|---|---|
Q7-928 | Q7 module | HDMI, LVDS |
| |
μQ7-962 | μQ7 module | HDMI, LVDS |
| |
μQ7-A75-J | μQ7 module | HDMI, LVDS |
| |
SBC-A62-J | SBC | HDMI, LVDS, Sitronix touch(st1232), Goodix Touch(gt928) |
| |
SBC-B08 | SBC & SYS | LVDS | ,RGB |
|
SYS-B07-7 | System | |||
SBC-C23 | SBC | LVDS |
|
Info |
---|
From BSP9.0 onwards, our images comes with available pre-built |
...
overlays binaries as (.dtbo). |
In Linux BSP 9.0, you can list these the available files available on the boot partition,.
For eg: A62example, with the SBC-A62-J:
Code Block |
---|
ls -l boot/ total 8532 -rw-r--r-- 1 secospa secospa 69897 Sep 16 13:17 imx6dl-seco_SBC_A62.dtb -rw-r--r-- 1 secospa secospa 72 Sep 16 13:17 imx6qdl-seco_SBC_A62_conn_j8.dtbo -rw-r--r-- 1 secospa secospa 307 Sep 16 13:17 imx6qdl-seco_SBC_A62_touch_gt928.dtbo -rw-r--r-- 1 secospa secospa 311 Sep 16 13:17 imx6qdl-seco_SBC_A62_touch_st1232.dtbo -rw-r--r-- 1 secospa secospa 942 Sep 16 13:17 imx6qdl-seco_SBC_A62_video_HDMI.dtbo -rw-r--r-- 1 secospa secospa 1556 Sep 16 13:17 imx6qdl-seco_SBC_A62_video_HDMI_LVDS.dtbo -rw-r--r-- 1 secospa secospa 812 Sep 16 13:17 imx6qdl-seco_SBC_A62_video_LVDS.dtbo -rw-r--r-- 1 secospa secospa 1556 Sep 16 13:17 imx6qdl-seco_SBC_A62_video_LVDS_HDMI.dtbo -rw-r--r-- 1 secospa secospa 955 Sep 16 13:17 imx6qdl-seco_SBC_A62_video_LVDSx2_CLONE.dtbo -rw-r--r-- 1 secospa secospa 1088 Sep 16 13:17 imx6qdl-seco_SBC_A62_video_LVDSx2_DUAL.dtbo -rw-r--r-- 1 secospa secospa 71563 Sep 16 13:17 imx6q-seco_SBC_A62.dtb |
Once it is done, you can boot the board using seco_config
tool to configure the Device tree overlay, Tree Overlay.
Below are the commands to for the setup,:
Code Block |
---|
MX6QDLS SBC-A62 U-Boot > seco_config __________________________________________________ Chose Video Setting. __________________________________________________ 1) no display 2) LVDS 3) HDMI 4) LVDS - LVDS (clone) 5) LVDS - LVDS (dual) 6) LVDS - HDMI 7) HDMI - LVDS > 2 __________________________________________________ Chose LVDS resolution for LVDS1. __________________________________________________ 1) WVGA [800x480] 2) SVGA [800x600] 3) XGA [1024x768] 4) WXGA [1368x768] 5) WXGAP60 [1280x800] 6) SXGA [1280x1024] 7) HD1080 [1920x1080] > 1 __________________________________________________ Chose FDT overlay option for touch screen controller. __________________________________________________ 1) not use 2) st1232 3) gt928 > 2 __________________________________________________ Chose FDT overlay option for J8 Expansion Connector configurator. __________________________________________________ 1) defalut 2) custom > 1 Saving Environment to MMC... Writing to MMC(1)... OK X6QDLS SBC-A62 U-Boot > saveenv Saving Environment to MMC... Writing to MMC(1)... OK MX6QDLS SBC-A62 U-Boot > printenv fdt_file fdt_file=imx6q-seco_SBC_A62.dtb MX6QDLS SBC-A62 U-Boot > printenv fdt_overlay_video_list fdt_overlay_video_list=imx6qdl-seco_SBC_A62_video_LVDS.dtbo MX6QDLS SBC-A62 U-Boot > printenv fdt_overlay_per_list fdt_overlay_per_list=imx6qdl-seco_SBC_A62_touch_st1232.dtbo MX6QDLS SBC-A62 U-Boot > boot SECO i.MX Distro with XWayload backend 4.19-warrior secoboards ttymxc1 secoboards login: root password: ast login: Thu Sep 16 06:50:45 UTC 2021 on tty7 root@secoboards:~# |
Tip |
---|
Successfully Board The board has now successfully been loaded with LVDS and Touch (st1232) dtbo file. |
...
LVDS Customization Guide for i.MX8
The MIPI DSI support on i.MX8-based boards is enabled through via the device trees located in the kernel Kernel source in at arch/arm64/boot/dts/seco. MIPI-DSI on i.MX8 with IPU is supported with Synopsys hardware while i.MX8 uses the Mixel and the Advantec panels.
The SECO boards with i.MX8 SoC supports support the following MIPI-DSI interface,interfaces:
Texas Instruments SN65DSI84 MIPI® MIPI® DSI bridge to FlatLink™ LVDS single-channel DSI to dual-link LVDS bridge;
Texas Instruments SN65DSI86 Dual-channel MIPI® MIPI® DSI to embedded DisplayPort™ (eDP ) bridge.
DCSS vs LCDIF
i.MX8M boards comes come with 2 display controllers, DCSS and LCDIF:
DCCS can be connected to HDMI, DP or MIPI-DSI and supports resolutions up to 4K .resolution;
LCDIF can be connected only to MIPI-DSI and supports resolutions up to 1080p. resolution.
All the drivers on the boards enabled by the i.MX8, i.MX8M Mini, i.MX8M Nano, i.MX8X and i.MX8M Plus family modules families of processors are integrated into the Linux kernel's DRM/KMS subsystem.
The Display Interface should be added in the Linux Device Tree overlay and the panel must be enabled in Device tree.
The process of designing a Device Tree Overlay includes the three following macro steps:
writing a Device Tree Overlay (.dts) file;
generating a *.dtbo file, output of *.dts file build;
enabling the overlay through *.dtbo file.
To obtain the information about the overlay device tree, you can refer to the documentation presents available into the kernel:
Code Block |
---|
linux-seco/Documentation/devicetree/overlay-notes.txt |
Using the documentation above document you can customize the device tree overlay Device Tree Overlay, as well as enable and disable functionalityfunctionalities.
Embedded displays often do not have a dedicated DDC (e.g., parallel RGB, LVDS, or similar display links), and therefore the system needs to be told exactly what exact display resolution and timings timing have to be supplied.
Embedded displays without DDC channel (parallel RGB/LVDS) use a fixed mode provided by the driver, this can be either:
display modes from a display driver (used for kernel mode settings (KMS) e.g. from
panel-simple.c
, e.g., i.MX8 DRM driver);display modes from a specific devicetree overlay (support available just only from BSP 9 ononwards);
KMS interface (Kernel Mode Setting, part of the Direct Rendering Manager (DRM) interface, kernel argument, through Xorg/RandR using modesetting driver).
Adding Custom LVDS support in panel-simple.c for i.MX8*
The connected panel is represented in the device tree in its own node. That node references the used LDB/LVDS channel through its node 'port'.One can either use the panel-simple or the panel-lvds driver, both options are outlined below.
...