Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

The aim of this section is to properly configure the LVDS settingscustom display: LVDS and eDP panels.

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 (DTBO) 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 to the environment. The direct consequence is enabling/disabling the hardware components of the system.

...

Boards Family

Peripherals

Device Tree Overlay

i.MX6

UART, LVDS, RGB, Audio, HDMI, Touch, GPIO, Pin header selection, etc.

Here you can find the pre-enabled device tree overlay

imx6qdl-seco_i.MX6XXX_uart4.dtbo ,imx6qdl-seco_i.MX6XXX_video_LVDS.dtbo,imx6qdl-seco_i.MX6XXX_ac97.dtbo,imx6qdl-seco_i.MX6XXX_video_HDMI.dtbo,imx6qdl-seco_i.MX6XXX_cpld_gpio_pwm.dtbo,imx6qdl-seco_i.MX6XXX_touch_st1232.dtbo,imx6sx-seco_i.MX6XXX_conn_j9.dtbo,imx6sx-seco_i.MX6XXX_RGB.dtbo

i.MX8

HDMI, Display Port, LVDS , Camera, hdmiin, lcdif, Modem, eDP, GPIO,CAN, RTC,PCIe, SPI, DCSS, WiFi/BT, etc.

Here you can find the pre-enabled device tree overlay

seco-i.MX8XXX-hdmi.dtbo,seco-i.MX8XXX-dp.dtbo,seco-i.MX8XXX-lvds-dual.dtbo,seco-i.MX8XXX-ov5640-csi0.dtbo,seco-i.MX8XXX-hdmiin.dtbo,seco-i.MX8XXX-lcdif-sn65dsi86.dtbo,seco-i.MX8XXX-modem.dtbo,seco-i.MX8XXX-port1-can.dtbo,seco-i.MX8XXX-port1-rs232.dtbo,seco-i.MX8XXX-wilink.dtbo

...

LVDS Customization Guide for i.MX6

The i.MX6-based boards use the fbdev interface for mode setting and output configuration.
There are two IPU units on the i.mx6q SoC, and only one IPU unit on the i.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.

...

Video output

IPU core

fb boot name

fb device

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

Kernel: Adding Custom LVDS support in Device tree file for i.MX6

Please follow the steps below to add the custom display timing data into the imx6qdl-seco_lvds_display.dtsi file.

...

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

Board

Type of product

Peripheral

Overlays

Q7-928

Qseven module

HDMI

LVDS

imx6qdl-seco_quadmo747_928_video_LVDS.dtbo
imx6qdl-seco_quadmo747_928_video_LVDSx2_CLONE.dtbo
imx6qdl-seco_quadmo747_928_video_LVDSx2_DUAL.dtbo
imx6qdl-seco_quadmo747_928_video_HDMI.dtbo
imx6qdl-seco_quadmo747_928_video_LVDS_HDMI.dtbo
imx6qdl-seco_quadmo747_928_video_HDMI_LVDS.dtbo

μQ7-962

μQseven module

HDMI

LVDS

imx6qdl-seco_uq7_962_video_LVDS.dtbo
imx6qdl-seco_uq7_962_video_LVDSx2_CLONE.dtbo
imx6qdl-seco_uq7_962_video_LVDSx2_DUAL.dtbo
imx6qdl-seco_uq7_962_video_HDMI.dtbo
imx6qdl-seco_uq7_962_video_LVDS_HDMI.dtbo
imx6qdl-seco_uq7_962_video_HDMI_LVDS.dtbo

μQ7-A75-J

μQseven module

HDMI

LVDS

imx6qdl-seco_uQ7_J_A75_video_LVDS.dtbo
imx6qdl-seco_uQ7_J_A75_video_LVDSx2_CLONE.dtbo
imx6qdl-seco_uQ7_J_A75_video_LVDSx2_DUAL.dtbo
imx6qdl-seco_uQ7_J_A75_video_HDMI.dtbo
imx6qdl-seco_uQ7_J_A75_video_LVDS_HDMI.dtbo
imx6qdl-seco_uQ7_J_A75_video_HDMI_LVDS.dtbo

SBC-A62-J

SBC

HDMI

LVDS

Sitronix touch(st1232)

Goodix Touch(gt928)

imx6qdl-seco_SBC_A62_touch_gt928.dtbo
imx6qdl-seco_SBC_A62_touch_st1232.dtbo
imx6qdl-seco_SBC_A62_video_LVDS.dtbo
imx6qdl-seco_SBC_A62_video_LVDSx2_CLONE.dtbo
imx6qdl-seco_SBC_A62_video_LVDSx2_DUAL.dtbo
imx6qdl-seco_SBC_A62_video_HDMI.dtbo
imx6qdl-seco_SBC_A62_video_LVDS_HDMI.dtbo
imx6qdl-seco_SBC_A62_video_HDMI_LVDS.dtbo

SBC-B08

SBC

LVDS

RGB

imx6sx-seco_SBC_B08_LVDS.dtbo
imx6sx-seco_SBC_B08_RGB.dtbo

SYS-B07-7

System

SBC-C23

SBC

LVDS

imx6sx-seco_SBC_C23_LVDS.dtbo

...

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

U-Boot: Adding Custom LVDS resolution into list

The resolition to use is passed from U-Boot to the kernel via bootargs. The "seco_config" command help the user to perform the selection of the video settings and resolution.
In order to add a new custom LVDS resolution follow this step:

...

Tip

The board has now successfully been loaded with LVDS and Touch (st1232) dtbo file.

Display Customization Guide for i.MX8

...

U-Boot: Adding Custom LVDS resolution for Splash Screen

Also the U-Boot uses the Display to display the Splash Screen. So, if the scope is to use also the custom resolution also at U-Boot level, this task have to be performed:

Editing the file board/seco/common/display.c

A new node into “struct display_info_t const displays[]” must to be added. Under the sub-structure

Code Block
}, {
                .bus    = -1,
                .addr   = -1,
                .pixfmt = IPU_PIX_FMT_RGB24,
                .detect = NULL,
                .enable = enable_lvds,
                .mode   = {
                        // Rif. Panel 1024x768 Panel UMSH-8596MD-15T
                        .name           = "LDB-1280P60",
                        .refresh        = 60,
                        .xres           = 1280,
                        .yres           = 800,
                        .pixclock       = 15128,
                        .left_margin    = 220,
                        .right_margin   = 40,
                        .upper_margin   = 21,
                        .lower_margin   = 7,
                        .hsync_len      = 60,
                        .vsync_len      = 10,
                        .sync           = 0,
                        .vmode          = FB_VMODE_NONINTERLACED
                }
        },

Insert the new custom resolution, starting from the one above and edit the sub-structure "mode", considering the following fields:

Field

Description

name

name of the resolution, to use at U-Boot level

refresh

refrash rate of the panel (pixecl clock / [ ( tot horiz. pixel) * (tot vert. pixel) ]

xres

horizontal active area

yres

vertical active area

pixclock

pixel clock in pico seconds

left_margin

horizontal back porch

right_margin

horizontal fromt porch

upper_margin

vertical back porch

lower_margin

vertical fromt porch

hsync_len

horizontal SYNC

vsync_len

vertical SYNC

To select the right display resolution at run time, set the "panel" variable according to the associated name into structure above:

Code Block
setenv panel "<resolution name>
saveen

...

Display Customization Guide for i.MX8

The MIPI DSI support on i.MX8-based boards is configured via the overlays device trees and Kernel sources.

SECO boards with i.MX8 SoC support the following MIPI-DSI interface to LVDS / eDP bridges:

  • Texas Instruments SN65DSI84 MIPI® DSI bridge to FlatLink™ LVDS single-channel DSI to dual-link LVDS bridge;

  • Texas Instruments SN65DSI86 Dual-channel MIPI® DSI to embedded DisplayPort™ (eDP ) bridge.

DCSS vs eLCDIF

i.MX8M boards come with 2 display controllers, DCSS and eLCDIF:

...

Code Block
seco-imx8mq-c25-dcss-sn65dsi86-overlay.dts
seco-imx8mm-c61-lcdif-sn65dsi86-overlay.dts
seco-imx8mm-c72-lcdif-sn65dsi86-overlay.dts

Adding Custom LVDS / eDP panel support in panel-simple.c for i.MX8

The configured panel is represented by the following nodes located in the board device tree, for example arch/arm64/boot/dts/seco/seco-imx8mm-c61.dts:

...

Code Block
linux-seco/drivers/gpu/drm/panel/panel-simple.c

Example: Configure the custom display timing for AUO Panel model p215hca

In the Seco BSP's the references panels are configured and tested with 10000 on/off cycle. Below the panel structure from drivers/gpu/drm/panel/panel-simple.c for LVDS 1920x1080 from Seco BSP9:

...

Note

The above configurations can be useless in some cases and prevent the panel from turning on.
This is due to the i.MX8 DSI video driver that recalculates the panel timing to adapt them to the i.MX8 DSI video output. In these cases, a fine tuning in the admitted panel timing is necessary: clocks, front and back porch until the LVDS panel turns on.

SECO preconfigured Panels

Below are some pre-built Device Tree Overlay files for i.MX8-based boards.

...