JEIDA-24 is adopted in most use-cases, and also the default format in Linux BSP(6.x)
Actually, JEIDA-18 is also supported in Linux BSP by not mentioned explicitly.
JEIDA-18 can be supported in two configuration:
1. Keep JEIDA-24 setting to display controllers, skip 4th data-lane in hardware connection:
according JEIDA-24 output waveform, it has 4 data-lane enabled on LVDS bus:
since the data-bits on TxOUT3 are the LSBs of the pixels, to change from JEIDA-24(RGB888, 4 data-lane) to JEIDA-18(RGB666, 3 data-lane), it can be achieved by skipping the TxOUT3 output(4th data-lane) in hardware connection, to make the JEIDA-18 format as the picture below(JEIDA-18 LCD panels only require 3 data-lanes)
2. Change the display controller settings to JEIDA-18:
one reference by Variscite, one of the SoM vendor:
related setting quoted from the link above:
Supported "data-mapping" values are "jeida-18", "jeida-24" and "vesa-24".
Supported "fsl,data-mapping" values are "jeida", and "spwg".
Supported "fsl,data-width" values are <18>, and <24>.
"data-mapping"= "jeida-18", "jeida-24" and "vesa-24" are handled in DRM driver, as the link below:
if (!strcmp(mapping, "jeida-18"))
return MEDIA_BUS_FMT_RGB666_1X7X3_SPWG;
if (!strcmp(mapping, "jeida-24"))
return MEDIA_BUS_FMT_RGB888_1X7X4_JEIDA;
if (!strcmp(mapping, "vesa-24"))
return MEDIA_BUS_FMT_RGB888_1X7X4_SPWG;
Here the variable “MEDIA_BUS_FMT_RGB666_1X7X3_SPWG" is handled in ldb driver(MX8MP) as the link below:
switch (bridge_state->output_bus_cfg.format) {
case MEDIA_BUS_FMT_RGB666_1X7X3_SPWG:
lvds_format_24bpp = false;
lvds_format_jeida = true;
break;
case MEDIA_BUS_FMT_RGB888_1X7X4_JEIDA:
lvds_format_24bpp = true;
the bus_format would be "MEDIA_BUS_FMT_RGB666_1X18" in this configuration:
switch (ldb_ch->bus_format) {
case MEDIA_BUS_FMT_RGB666_1X7X3_SPWG:
imx_crtc_state->bus_format = MEDIA_BUS_FMT_RGB666_1X18;
break;
“MEDIA_BUS_FMT_RGB666_1X18” is not handled in LCDIF driver:
switch (bus_format) {
case MEDIA_BUS_FMT_RGB565_1X16:
disp_para |= DISP_PARA_LINE_PATTERN(LP_RGB565);
break;
case MEDIA_BUS_FMT_RGB888_1X24:
disp_para |= DISP_PARA_LINE_PATTERN(LP_RGB888_OR_YUV444);
break;
default:
dev_err(lcdifv3->dev, "unknown bus format: %#x\n", bus_format);
return;
hence there would be error message below in this configuration, which can be ignored:
imx-lcdifv3 32e80000.lcd-controller: unknown bus format: 0x1009