[IMX93] MIPI DSI VIDEO Mode and PLL Clock Setup for Multiple Resolutions

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

[IMX93] MIPI DSI VIDEO Mode and PLL Clock Setup for Multiple Resolutions

999 Views
AlanWen
Contributor III

I'm trying to port the mipi dsi interface and bridge the signal to HDMI output.

There are several resoultions are required, such as 1080P, 720P and 800x600. So I setup the lcdif VIDEO_PLL timing for supporting these resolution.

 

&lcdif {
	status = "okay";
	assigned-clock-rates = <1039500000>, <148444444>, <400000000>, <133333333>;
};

 

 

And I got the resolutions what I wanted showing in the modetest.

AlanWen_0-1729758731454.png

But I could only display 1280x720, 1024x768 on screen, and 1080P, 800x600 didn't show anything on screen while testing.

I test the resolution of displaying: modetest -s 35:<resolution>

The dsi node in kernel device tree is as below:

 

&dsi {
	status = "okay";
	#address-cells = <1>;
	#size-cells = <0>;
	dsi-lanes = <4>;
	/*
	* 0: burst mode
	* 1: non-burst mode with sync event
	* 2: non-burst mode with sync pulse
	*/
	video-mode = <2>;
	ports {
		port@1 {
			reg = <1>;
			dsi_to_lt9611: endpoint {
				remote-endpoint = <&lt9611_to_dsi>;
			};
		};
	};
};

 

 

The Video mode and dsi lane number are set in the LT9611UXC driver.

 

dsi->lanes = 4;
dsi->format = MIPI_DSI_FMT_RGB888;
dsi->mode_flags = MIPI_DSI_MODE_VIDEO | MIPI_DSI_MODE_VIDEO_SYNC_PULSE |
	MIPI_DSI_MODE_VIDEO_HSE;

 

 

Ths BSP I'm using is imx-6.6.3 with a DSI to HDMI bridge named LT9611UXC.

Please help me figure this problem out, thanks in advance.

 

Tags (5)
0 Kudos
Reply
3 Replies

969 Views
Zhiming_Liu
NXP TechSupport
NXP TechSupport

Hi @AlanWen 

1. Please check return value of lt9611uxc_bridge_mode_valid.

2. Get the serial output from lt9611uxc chip, the serial log is very helpful.

Best Regards
Zhiming

0 Kudos
Reply

960 Views
AlanWen
Contributor III

I print out the valid mode from LT9611UXC driver as below

static struct lt9611uxc_mode *lt9611uxc_find_mode(const struct drm_display_mode *mode)
{
	int i;

	for (i = 0; i < ARRAY_SIZE(lt9611uxc_modes); i++) {
		if (lt9611uxc_modes[i].hdisplay == mode->hdisplay &&
		    lt9611uxc_modes[i].vdisplay == mode->vdisplay &&
		    lt9611uxc_modes[i].vrefresh == drm_mode_vrefresh(mode)) {
			printk("Got Mode LT9611UXC H: %d, V: %d, FPS: %d\n", mode->hdisplay, mode->vdisplay, lt9611uxc_modes[i].vrefresh);
			return &lt9611uxc_modes[i];
		}
	}

	return NULL;
}

 

And it shows lots of modes in dmesg, but there are only few modes can be use in the modetest.

AlanWen_0-1729842382842.png

 

AlanWen_1-1729842403168.png

 

0 Kudos
Reply

923 Views
Zhiming_Liu
NXP TechSupport
NXP TechSupport

Hi @AlanWen 

The mode supported by LT9611UXC is limited by it's firmware not i.MX93. You can refer below commit message. You may need contact Lontium to check logs from firmware.

https://patchwork.kernel.org/project/dri-devel/patch/20200828154906.1662611-3-dmitry.baryshkov@linar...

The lt9611uxc firmware supports only a fixed set of modes. Thus 
lt9611uxc driver has to check if the mode is supported by the fw.
Unsupported modes would result in HDMI display not receiving valid signal.



Best Regards
Zhiming

0 Kudos
Reply