Hello,
can someone explain how to properly set the display settings in the device tree?
I am modifying imx6ul-ccimx6ulsbcpro.dts
There are two node: panel and lcdif.
************************************************************
panel {
compatible = "auo,g101evn010";
power-supply = <&ldo4_ext>;
backlight = <&lcd_backlight>;
port {
panel_in: endpoint {
remote-endpoint = <&display_out>;
};
};
};
************************************************************
&lcdif {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_lcdif_dat0_17
&pinctrl_lcdif_clken
&pinctrl_lcdif_hvsync>;
lcd-supply = <&ldo4_ext>; /* BU90T82 LVDS bridge power */
status = "okay";
}
************************************************************
In the most examples I've come across to the lcdif nod it is added the display property and display-timing sub-node.
************************************************************
display = <&display0>;
status = "okay";
display0 : display {
bits-per-pixel = <32>;
bus-width = <24>;
display-timing {
clock-frequency = <138500000>;
hactive = <1280>;
vactive = <720>;
hfront-porch = <0>;
hsync-len = <176>;
hback-porch = <0>;
vfront-porch = <0>;
vsync-len = <25>;
vback-porch = <0>;
hsync-active = <0>;
vsync-active = <0>;
pixelclk-active = <0>;
};
};
************************************************************
Then it turns out this way has been deprecated and panel-timing should be used instead .
So I added
************************************************************
bits-per-pixel = <32>;
bus-width = <24>;
************************************************************
to the lcdif node
and panel-timing to the panel node
************************************************************
panel {
compatible = "innolux,g121x1-l03"; //"innolux,p120zdg-bf1"; //"boe,tv080wum-nl0"; //"auo,g101evn010";"arm,rtsm";"innolux,g121x1-l03";
power-supply = <&ldo4_ext>;
backlight = <&lcd_backlight>;
port {
panel_in: endpoint {
remote-endpoint = <&display_out>;
};
};
panel-timing {
clock-frequency = <33260000>;
hactive = <1024>;
vactive = <768>;
hfront-porch = <50>;
hback-porch = <0>;
hsync-len = <128>;
vback-porch = <25>;
vfront-porch = <10>;
vsync-len = <10>;
hsync-active = <0>;
vsync-active = <0>;
de-active = <1>;
pixelclk-active = <0>;
};
};
************************************************************
I could change the display resolution only by changing the driver the one that has desired resolution
But the rest settings are not changed.
fbset
shows zeros
*********************************************************
#
*********************************************************
Thank you if you find time to provide any clarifications.
Regards,
Artur
Thank you for your suggestion. I use the kernel version 5.10.27 and as I understand this approach is deprecated for that version. It turns out for the board type I use i.e imx6ul-ccimx6ulsbcpro the port node is required to be defined in the device tree in order to have an LCD display configured.Otherwise this is what I got form the kernel booting:
2.226270] [drm] Supports vblank timestamp caching Rev 2 (21.10.2013).
[ 2.233308] [drm] No driver support for vblank timestamp query.
[ 2.240161] OF: graph: no port node found in /soc/aips-bus@2100000/lcdif@21c8000
[ 2.247870] mxsfb 21c8000.lcdif: Failed to create outputs
[ 2.325365] brd: module loaded
I will check how to modify the LCD display setting from the device tree for the linux kernel the one you sent the example.
Hi @arturm
Please refer the kernel document for dts bindings.
https://elixir.bootlin.com/linux/v4.3/source/Documentation/devicetree/bindings/fb/mxsfb.txt