LVDS JEIDA-18 support on i.MX8MP(kernel 6.x)

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

LVDS JEIDA-18 support on i.MX8MP(kernel 6.x)

LVDS JEIDA-18 support on i.MX8MP(kernel 6.x)

 

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:

jim_lin_0-1731483043606.png

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)

jim_lin_1-1731483324141.png

 

2. Change the display controller settings to JEIDA-18:

one reference by Variscite, one of the SoM vendor:

https://variwiki.com/index.php?title=DART-MX8M-PLUS_Display&release=mx8mp-yocto-mickledore-6.1.36_2....

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:

https://github.com/nxp-imx/linux-imx/blob/d23d64eea5111e1607efcce1d601834fceec92cb/drivers/gpu/drm/d...

	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:

https://github.com/nxp-imx/linux-imx/blob/d23d64eea5111e1607efcce1d601834fceec92cb/drivers/gpu/drm/b...

	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:

 https://github.com/nxp-imx/linux-imx/blob/d23d64eea5111e1607efcce1d601834fceec92cb/drivers/gpu/drm/i...

	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:

 https://github.com/nxp-imx/linux-imx/blob/d23d64eea5111e1607efcce1d601834fceec92cb/drivers/gpu/imx/l...

	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

 

No ratings
Version history
Last update:
‎11-13-2024 12:53 AM
Updated by: