Zephyr - DeviceTree elcdif driver results in blank screen

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

Zephyr - DeviceTree elcdif driver results in blank screen

Jump to solution
709 Views
alexbollmann
Contributor II

Hey,

i recently bought an development board (mimxrt1050_evk) to evaluate that processor for our new product. The included screen (rocktech 4,3 inch) is too small for our application. I have ordered a 7 inch display, but for testing purposes, I had the 5" version of the ordered one here. This is the datasheet of the board: https://4dsystems.com.au/mwdownloads/download/link/id/825/

I compared the datasheet of the display and the board and noticed that the pins of the lcd parallel port are a match. (Not the touch interface - that problem will be solved later).

So what I did is wrote a basic hello world application in zephyr using lvgl. I already compiled it for the simulator - all good and working.

Then I tried compiling it for the mimxrt1050_evk board. Also I had to set "CONFIG_DISPLAY=y" so that the screen will be available in the devicetree. It worked and I flashed the board. As the board has booted, the display was on but only showed mostly black and some multicolored lines. I expected that, because the resolution etc. did not match. So I edited zephyr/boards/arm/mimxrt1050_evk.dts from

&lcdif {
	status = "okay";
	width = <480>;
	height = <272>;
	hsync = <41>;
	hfp = <4>;
	hbp = <8>;
	vsync = <10>;
	vfp = <4>;
	vbp = <2>;
	polarity = <3>;
	pixel-format = "bgr-565";
	data-buswidth = "16-bit";
	pinctrl-0 = <&pinmux_lcdif>;
	pinctrl-names = "default";
	backlight-gpios = <&gpio2 31 GPIO_ACTIVE_HIGH>;
	port {
		lcd_panel_out: endpoint {
			remote-endpoint = <&lcd_panel_in>;
		};
	};
};

 

to

 

&lcdif {
	status = "okay";
	width = <800>;
	height = <480>;
	hsync = <4>;
	hfp = <8>;
	hbp = <8>;
	vsync = <4>;
	vfp = <8>;
	vbp = <8>;
	polarity = <13>;
	pixel-format = "rgb-888";
	data-buswidth = "24-bit";
	pinctrl-0 = <&pinmux_lcdif>;
	pinctrl-names = "default";
	backlight-gpios = <&gpio2 31 GPIO_ACTIVE_HIGH>;
	port {
		lcd_panel_out: endpoint {
			remote-endpoint = <&lcd_panel_in>;
		};
	};
};

 

But now, the display starts blank white and completely fades slowly to black - nothing else happening.

In fact, as soon as I touch the resolution this is happening. If I just set width to 490 (from 480) this is happening.If I use the default values, I think the elcdif driver is in fact working, but sending the wrong output to my display. As soon as I touch the config, the driver dies not seem to do any at all..

Also, there is no parameter for the CLK frequency - how would I set this? The Rocktech Display Frequency seems to differ from my display - I searched the devicetree files and drivers for hour, but i could not find out how this is done.

Any help is appreciated.

 

PS: The original Rocktech display seems to be EOL, too. They would not sell me the 7" version of the rocktech display...

 

0 Kudos
1 Solution
671 Views
alexbollmann
Contributor II

My bad, it wasn't anything nxp related. I just did nor have enough memory blocks for lvgl.

I set CONFIG_LV_Z_MEM_POOL_NUMBER_BLOCKS=12 and it worked.

View solution in original post

0 Kudos
2 Replies
672 Views
alexbollmann
Contributor II

My bad, it wasn't anything nxp related. I just did nor have enough memory blocks for lvgl.

I set CONFIG_LV_Z_MEM_POOL_NUMBER_BLOCKS=12 and it worked.

0 Kudos
678 Views
alexbollmann
Contributor II

Looks like its a memory problem. Original resolution = 400 x 272 = 108800 pixels. If I change he resolution to 329x329 (=108241 px), it also does NOT go blank (just weird color lines). So somehow I need to adjust the framebuffer size or memery size or something like that...

How does the elcdif driver get its memory and needed size?

I would be grateful for any advice...

0 Kudos