i.MX6DL devicetree problem with framebuffer after Kernel upgrade

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

i.MX6DL devicetree problem with framebuffer after Kernel upgrade

1,448 Views
stefanbirkholz
Contributor I

Hello,

while updating from a Kernel 4.1.44 to a Kernel 5.2.11 (the latter taken from GitHub - Freescale/linux-fslc: Linux kernel source tree  branch "5.2.x+fslc") - we want to use the "etnaviv" driver and the Kernel 5.2.11 is meant to be a stepping stone towards the 5.4.x LTS Kernel) - I cannot configure the framebuffer nor the display correctly in the devicetree.

With the 4.1.44 Kernel both framebuffer and display are configured correctly - the cmdline of the Kernel uses "video=mxcfb0:dev=lcd,CLAA-WVGA,if=RGB666" and the devicetree has the relevant nodes:

mxcfb0: fb@0 {
compatible = "fsl,mxc_sdc_fb";
disp_dev = "lcd";
interface_pix_fmt = "RGB666";
mode_str = "CLAA-WVGA";
default_bpp = <32>;
int_clk = <0>;
late_init = <0>;
status = "okay";
};

lcd: lcd@0 {
compatible = "fsl,lcd";
ipu_id = <0>;
disp_id = <1>;
default_ifmt = "RGB666";
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_ipu1_lcd>;
status = "okay";
};

ldb: ldb@020e0008 {
#address-cells = <1>;
#size-cells = <0>;
gpr = <&gpr>;
status = "okay";

lvds-channel@0 {
#address-cells = <1>;
#size-cells = <0>;
reg = <0>;
status = "okay";
};

lvds-channel@1 {
#address-cells = <1>;
#size-cells = <0>;
reg = <1>;
status = "okay";
};
};

(NB: I will omit the &pinctrl_ip1_lcd entries, since they are the same)

The 5.2.11 Kernel takes the parameter "video=mxc_elcdif_fb:1024x768@60,bpp=18" and the relevant devicetree nodes are:

drm: display-subsystem {
compatible = "fsl,imx-display-subsystem";
ports = <&ipu1_di0>, <&ipu1_di1>;
};

ipu1_di0: port@2 {
#address-cells = <1>;
#size-cells = <0>;
reg = <2>;

ipu1_di0_disp0: endpoint@0 {
reg = <0>;

remote-endpoint = <&lcd_display_in>;
};

ipu1_di0_hdmi: endpoint@1 {
reg = <1>;
remote-endpoint = <&hdmi_mux_0>;
};

ipu1_di0_mipi: endpoint@2 {
reg = <2>;
remote-endpoint = <&mipi_mux_0>;
};

ipu1_di0_lvds0: endpoint@3 {
reg = <3>;
remote-endpoint = <&lvds0_mux_0>;
};

ipu1_di0_lvds1: endpoint@4 {
reg = <4>;
remote-endpoint = <&lvds1_mux_0>;
};
};

lcd_display: disp0 {
compatible = "fsl,imx-parallel-display";
#address-cells = <1>;
#size-cells = <0>;
interface-pix-fmt = "rgb666";
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_ipu1_lcdif>;
status = "enabled";

port@0 {
reg = <0>;

lcd_display_in: endpoint {
remote-endpoint = <&ipu1_di0_disp0>;
};
};

port@1 {
reg = <1>;

lcd_display_out: endpoint {
remote-endpoint = <&lcd_panel_in>;
};
};
};

panel: panel {
compatible = "panel-lvds";
backlight = <&backlight>;
status = "okay";

data-mapping = "jeida-24";
width-mm = <300>;
height-mm = <200>;

port {
lcd_panel_in: endpoint {
remote-endpoint = <&lcd_display_out>;
};
};

panel-timing {
/* 1024x768 @60 Hz */
clock-frequency = <60000000>;
hactive = <1024>;
vactive = <768>;
hsync-len = <10>;
hfront-porch = <0>;
hback-porch = <0>;
vsync-len = <10>;
vfront-porch = <0>;
vback-porch = <0>;
};
};

While the first (4.1.44 Kernel + corresponding devicetree) configuration works perfectly fine, the second fails to create a /dev/fb0 device and has the following messages in the dmesg log:

Framebuffer /dev/fb0 not detected

[ 2.400629] imx-drm display-subsystem: no available port

Do you have an idea what might be wrong?

Kind regards,

 Stefan Birkholz

Labels (3)
0 Kudos
1 Reply

1,239 Views
diegoadrian
NXP Employee
NXP Employee

Hello,

Unfortunately, you are using a BSP that is not provided by us. I suggest you use our official BSPs.

Best regards,

Diego.

0 Kudos