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 settings.

...

Board

Type of product

Peripheral

Overlays

Q7-928

Q7 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

μQ7 μ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

μQ7 μ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

...

The MIPI DSI support on i.MX8-based boards is enabled via the device trees located in the Kernel source 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.

SECO boards with i.MX8 SoC support the following MIPI-DSI interfaces:

...

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 (RIFORMULARE). Both panel-simple or the and panel-lvds driver , both options are outlined belowcan be used, as described below. NON CAPISCO SE QUI DOVREBBE ESSERCI UN SECONDO PUNTO ELENCO, MI SEMBRA CHE LE OPZIONI DA SPIEGARE SIANO 2.

  • Panel Simple

Set the compatible property 'compatible' to an existing or newly added panel from the panel-simple driver.

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

To obtain For more information about onpanel-simple.txt, you can please refer to the documentation presents available into the kernelKernel:

Code Block
linux-seco/Documentation/devicetree/bindings/display/panel/simple-panel.txt

...

Configure the custom display timing for

...

AUO Panel model p215

The kernel Kernel writes Timing in panel-simple.c and directly matches with short strings.

There are the following statements in the drivers/gpu/drm/panel/panel-simple.c file (NON HO CAPITO)

Code Block
static const struct display_timing auo_p215hca_high_timing = {
        .pixelclock = { 139000000, 160000000, 165000000 },
        .hactive = { 1920, 1920, 1920 },
        .hfront_porch = { 1, 85, 90 },
        .hsync_len = { 1, 10, 45 },
        .hback_porch = { 1, 85, 150 },
        .vactive = { 1080, 1080, 1080 },
        .vfront_porch = { 3, 20, 50 },
        .vsync_len = { 6, 10,60  },
        .vback_porch = { 11, 20, 37 },
        .flags = DISPLAY_FLAGS_HSYNC_LOW |
                   DISPLAY_FLAGS_VSYNC_LOW |
                   DISPLAY_FLAGS_DE_LOW |
                   DISPLAY_FLAGS_PIXDATA_NEGEDGE,
};

static const struct panel_desc auo_p215hca_high = {
        .timings = &auo_p215hca_high_timing,
        .num_timings = 1,
        .bpc = 8,
        .size = {
                .width = 68,
                .height = 121,
        },
        .delay = {
                /*
                 * The panel spec recommends one second delay
                 * to the below items.  However, it's a bit too
                 * long in pratical.  Based on tests, it turns
                 * out 100 milliseconds is fine.
                 */
                .prepare = 100,
                .enable = 100,
                .unprepare = 100,
                .disable = 100,
        },
        .bus_format = MEDIA_BUS_FMT_RGB888_1X24,//MEDIA_BUS_FMT_RGB888_1X7X4_SPWG,
};

static const struct of_device_id platform_of_match[] = {
	{
    }, {
                .compatible = "auo,p215hca-high",
                .data = &auo_p215hca_high,
       }, {
		/* sentinel */
	}
};
MODULE_DEVICE_TABLE(of, platform_of_match);

...

After the timing parameter need to call the device tree file with compatible device on the panel.. (NON HO CAPITO)

Please refer the respective SECO boards device tree (.dts)file. For eg PER FARE COSA? QUELLO CHE è SCRITTO SOPRA?

E.g.: seco-imx8mm-c72.dts

Code Block
panel_lvds: lvds_panel {
		compatible = "auo,p215hca-high";
		#address-cells = <1>;
		#size-cells = <0>;
	};

After completing the panel configuration customer needs , you need to configure the bridge with the following file:

Code Block
linux-seco/arch/arm64/boot/dts/seco/overlays/seco-imx8mm-c72-lcdif-sn65dsi84-overlay.dts

...

Code Block
target = <&adv_bridge>;
                __overlay__ {
                        #address-cells = <1>;
                        #size-cells = <0>;
                        lvds,datamap = "jeida";
                        lvds,dual-channel;
                        lvds,channel-swap;
                        lvds,preserve-dsi-timings;
                                                /*include/drm/drm_mipi_dsi.h*/
                        dsi,mode-flags = <0x805>; /*MIPI_DSI_MODE_VIDEO*/
                        clocks = <&si5351a 0>;
                        status = "okay";

To complete the panel configuration, it is necessary to correctly configure correctly the following parameters:

  • lvds,datamap: can be configured as “jeida“ jeida or “spwg“ spwg, other configurations are not supported.

  • lvds,dual-channel:if inserted, it enables bridge dual channel output. The DSI video signal is splitted in LVDS channel A and LVDS channel B, refer to sn65dsi84 datasheet for more informations.

  • lvds,preserve-dsi-timings:this parameter is usefull useful when the LVDS display timing are is synchronized with Data Enable, while it should be removed if the panel is not DE sync. The LVDS panel panels that are not synchronized with Data Enable must be configured without lvds, preserve-dsi-timing parameter and clocks = <&si5351a 0> should be commented out to ensure timing sync. QUI COSA VA IN CORSIVO/CODICE?

Note

All this The above configurations can be useless in some cases , so and prevent the panel can’t turn from turning on.
This is attributable 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 turn turns on.

SECO preconfigured Panels

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

Once the setup has been defined, kernelthe Kernel, including LVDS display resolution, can be built. After the compilationcompiling, please copy the file into the device and boot the board by setting up the custom device tree file with the support of seco_config file.

Device tree display overlay for i.MX8

BoardModule

Type of product

Peripheral

Overlays

SM-C12

SMARC module

MIPI-DSI to LVDS,

HDMI

seco-imx8mq-c12-lcdif-sn65dsi84.dtbo
seco-imx8mq-c12-dcss-sn65dsi84.dtbo
seco-imx8mq-c12-dual-display.dtbo
seco-imx8mq-c12-hdmi.dtbo
seco-imx8mq-c12-dcss-sn65dsi84-800x480.dtbo

SBC-C20

SBC

MIPI-DSI to LVDS,

HDMI

seco-imx8mq-c20-hdmi.dtbo
seco-imx8mq-c20-edp.dtbo
seco-imx8mq-c20-dcss-sn65dsi84.dtbo

Q7-C25Q7

Qseven module

MIPI-DSI to LVDS,

MIPI-DSI to eDP,

HDMI

seco-imx8mq-c25-hdmi.dtbo
seco-imx8mq-c25-dcss-sn65dsi84.dtbo
seco-imx8mq-c25-dcss-sn65dsi84-800x480.dtbo
seco-imx8mq-c25-dcss-sn65dsi86.dtbo
seco-imx8mq-c25-dp.dtbo

Q7-C26Q7

Qseven module

LVDS,

DP,

HDMI

seco-imx8qm-c26-hdmi.dtbo
seco-imx8qm-c26-dp.dtbo
seco-imx8qm-c26-lvds-single.dtbo
seco-imx8qm-c26-lvds-dual.dtbo
seco-imx8qm-c26-hdmi-lvds.dtbo
seco-imx8qm-c26-dp-lvds.dtbo
seco-imx8qm-c26-hdmiin.dtbo

SBC-C43

SBC

MIPI-DSI to eDP,

LVDS,

HDMI

seco-imx8qm-c43-hdmi.dtbo
seco-imx8qm-c43-hdmi-lvds.dtbo
seco-imx8qm-c43-dp-lvds.dtbo
seco-imx8qm-c43-sn65dsi86.dtbo
seco-imx8qm-c43-hdmi-sn65dsi86.dtbo
seco-imx8qm-c43-hdmi-lvds-sn65dsi86.dtbo
seco-imx8qm-c43-lvds-single.dtbo
seco-imx8qm-c43-lvds-dual.dtbo
seco-imx8qm-c43-hdmiin.dtbo

μQ7-C72μQ7

μQseven module

MIPI-DSI to LVDS,

MIPI-DSI to eDP

seco-imx8mm-c72-lcdif-sn65dsi84.dtbo
seco-imx8mm-c72-lcdif-sn65dsi86.dtbo

SBC-C61

SBC

MIPI-DSI to LVDS,

MIPI-DSI to eDP

seco-imx8mm-c61-lcdif-sn65dsi86.dtbo
seco-imx8mm-c61-lcdif-sn65dsi84.dtbo

SBC-C57

SBC

MIPI-DSI to eDP,

LVDS

seco-imx8qxp-c57-800x600-lvds.dtbo
seco-imx8qxp-c57-1280x800-lvds.dtbo
seco-imx8qxp-c57-1920x1080-dual-channel-lvds.dtbo
seco-imx8qxp-c57-1920x1200-dual-channel-lvds.dtbo
seco-imx8qxp-c57-sn65dsi86-edp.dtbo
seco-imx8qxp-c57-sn65dsi86-edp.dtbo

SM-D16

SMARC

module

MIPI-DSI to eDP,

LVDS,

HDMI

seco-imx8qxp-d16-sn65dsi86-edp.dtbo
seco-imx8qxp-d16-adv7535-hdmi.dtbo
seco-imx8qxp-d16-lvds0-single.dtbo
seco-imx8qxp-d16-lvds0-dual.dtbo
seco-imx8qxp-d16-hdmi-edp.dtbo

...

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: C72example, with the μQ7-C72:

Code Block
ls -l boot/
total 25604
-rw-r--r-- 1 secospa secospa 26073600 Sep 16 02:55 Image
-rw-r--r-- 1 secospa secospa     6000 Sep 16 02:55 imx8mm_m4_TCM_hello_world.bin
-rw-r--r-- 1 secospa secospa    16528 Sep 16 02:55 imx8mm_m4_TCM_rpmsg_lite_pingpong_rtos_linux_remote.bin
-rw-r--r-- 1 secospa secospa    16028 Sep 16 02:55 imx8mm_m4_TCM_rpmsg_lite_str_echo_rtos.bin
-rw-r--r-- 1 secospa secospa    40092 Sep 16 02:55 imx8mm_m4_TCM_sai_low_power_audio.bin
-rw-r--r-- 1 secospa secospa    53688 Sep 16 02:55 seco-imx8mm-c72.dtb
-rw-r--r-- 1 secospa secospa     2140 Sep 16 02:55 seco-imx8mm-c72-lcdif-sn65dsi84.dtbo
-rw-r--r-- 1 secospa secospa     1797 Sep 16 02:55 seco-imx8mm-c72-lcdif-sn65dsi86.dtbo

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
u-boot seco c72=> seco_config
__________________________________________________
Choose boot Device for Kernel.
__________________________________________________
1) eMMC onboard
2) uSD onboard
3) TFTP
4) USB
> 1
Choose the partition
> 1
Path of the Kernel (enter for default Image) >
__________________________________________________
Choose boot Device for FDT.
__________________________________________________
1) eMMC onboard
2) uSD onboard
3) TFTP
4) USB
> 1
Choose the partition
> 1
Path of the FDT (enter for default seco-imx8mq-c12.dtb) >
__________________________________________________
Choose boot Device for FileSystem.
__________________________________________________
1) eMMC onboard
2) uSD onboard
3) NFS
4) USB
> 1
Choose the partition
> 2
__________________________________________________
Choose Video Output Configuration.
__________________________________________________
1) no video - no dtbo
2) eDP LCDIF-1920x1080 - seco-imx8mm-c72-lcdif-sn65dsi86.dtbo
3) LVDS LCDIF-1920x1080 - seco-imx8mm-c72-lcdif-sn65dsi84.dtbo
> 2
__________________________________________________
Choose Board Options.
__________________________________________________
1) No addons
> 1
Saving Environment to MMC... Writing to MMC(0)... OK

By selecting the dtbo to perform, the board will boot up with your display configuration.

Tip

Successfully The board has now successfully been booted loaded with the selected display device tree.

...