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
Hello,
Unfortunately, you are using a BSP that is not provided by us. I suggest you use our official BSPs.
Best regards,
Diego.