1922948_en-US

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

1922948_en-US

1922948_en-US

panel-lvds driver does not work anymore after upgrade to kernel 6.6

Hi,

I upgrade my Linux kernel from 5.15.52 to 6.6. After upgrading my panel only shows a small stripe. I made no changes at the device tree. When I use the panel-simple driver instead of panel-lvds I got a working display. Does someone know about changes in the driver.

I use a iMX8MP and my panel is connected to LVDS1 interface.

dmesg shows a message but I can't identify the failure

dmesg | grep lvds
[ 0.077630] platform panel-lvds1: Fixed dependency cycle(s) with /ldb-display-controller/lvds-channel@1
[ 2.511277] imx8mp-ldb ldb-display-controller: Failed to create device link (0x180) with phy-lvds
[ 2.552129] imx8mp-ldb ldb-display-controller: Failed to create device link (0x180) with panel-lvds1

Thanks


i.MX 8M | i.MX 8M Mini | i.MX 8M NanoLinuxYocto ProjectRe: panel-lvds driver does not work anymore after upgrade to kernel 6.6I have also been struggling with the same issue for over a week now, and adding this property ('de-active = <1>;') to the panel-timing definition in my device tree finally resolved the issue. My display works now, thanks for this! If I could give you more than 1 Kudo I would Re: panel-lvds driver does not work anymore after upgrade to kernel 6.6

@MicMoba 


This is an old thread, but I faced the same problem.


In my case, I had to pass the de-active = <1>; property to fix it.



Re: panel-lvds driver does not work anymore after upgrade to kernel 6.6

Failure occurs early during boot. This might indicate clocks problem. Check e. g. clock-names in node ldb read by drivers. What are you using? drm display-subsystem or frame buffers (mxc) ?

Re: panel-lvds driver does not work anymore after upgrade to kernel 6.6

Here are my settings. Maybe you find a mistake


/ {
    backlight1: backlight1 {
        compatible = "pwm-backlight";
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_lvds1>;
        default-brightness-level = <6>;
        pwms = <&pwm3 0 50000 0>;
        power-supply = <&reg_lvds1_reg_en>;
        enable-gpios = <&gpio2 20 GPIO_ACTIVE_LOW>;
        brightness-levels= <0 4 8 16 32 64 128 255>;
        status = "okay";
    };

    panel_lvds: panel-lvds1 {
        compatible  = "panel-lvds";
        backlight   = <&backlight1>;
        
        width-mm = <218>;
        height-mm = <137>;

        data-mapping = "vesa-24";
        status = "okay";
        
        panel-timing {
            clock-frequency = <71000000>;
            hactive = <1280>;
            hfront-porch = <30>;
            hsync-len = <48>;
            hback-porch = <80>;
            vactive = <800>;
            vfront-porch = <3>;
            vsync-len = <6>;
            vback-porch = <14>;
        };
        
        port {
            panel1_in: endpoint {
                remote-endpoint = <&lvds1_out>;
            };
        };
    };
};
&lcdif2 {
  status = "okay";
};
/* LVDS1 */
&ldb {
    status = "okay";

    lvds-channel@1 {
        #address-cells = <1>;
	#size-cells = <0>;        
        status = "okay";
        primary;
        port@1 {
            reg = <1>;
            lvds1_out: endpoint {
                remote-endpoint = <&panel1_in>;
            };
        };
    };
};

&ldb_phy {
    status = "okay";
};

Re: panel-lvds driver does not work anymore after upgrade to kernel 6.6

yes I checkd the dtb. I convert the dtb back to dts. The new one as the old one. I can't see any differences.

I use a DataModul 10,1“ TFT – WXGA – LVDS panel (TX26D207VM0AAA)

Re: panel-lvds driver does not work anymore after upgrade to kernel 6.6

Hello,

Have you checked the dtb? are they changed? which lvds device are you working on?

Regards

Re: panel-lvds driver does not work anymore after upgrade to kernel 6.6

Hi @SanthoshRajavel,

Since my product is proprietary, I cannot share the contents of our DTS. However, this snippet from the above DTS shows where I added the 'de-active = <1>' property which was the fix I needed:

/ {
    backlight1: backlight1 {
        compatible = "pwm-backlight";
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_lvds1>;
        default-brightness-level = <6>;
        pwms = <&pwm3 0 50000 0>;
        power-supply = <&reg_lvds1_reg_en>;
        enable-gpios = <&gpio2 20 GPIO_ACTIVE_LOW>;
        brightness-levels= <0 4 8 16 32 64 128 255>;
        status = "okay";
    };

    panel_lvds: panel-lvds1 {
        compatible  = "panel-lvds";
        backlight   = <&backlight1>;
        
        width-mm = <218>;
        height-mm = <137>;

        data-mapping = "vesa-24";
        status = "okay";
        
        panel-timing {
            clock-frequency = <71000000>;
            hactive = <1280>;
            hfront-porch = <30>;
            hsync-len = <48>;
            hback-porch = <80>;
            vactive = <800>;
            vfront-porch = <3>;
            vsync-len = <6>;
            vback-porch = <14>;
            de-active = <1>;
        };
        
        port {
            panel1_in: endpoint {
                remote-endpoint = <&lvds1_out>;
            };
        };
    };
};
&lcdif2 {
  status = "okay";
};
/* LVDS1 */
&ldb {
    status = "okay";

    lvds-channel@1 {
        #address-cells = <1>;
	#size-cells = <0>;        
        status = "okay";
        primary;
        port@1 {
            reg = <1>;
            lvds1_out: endpoint {
                remote-endpoint = <&panel1_in>;
            };
        };
    };
};

&ldb_phy {
    status = "okay";
};


Re: panel-lvds driver does not work anymore after upgrade to kernel 6.6

@SanthoshRajavel I would check if the 'fsl,data-mapping' and 'fsl,data-width' properties in 'lvds-channel@1' node is correct.  I have these defined in my own DTS to specific values expected by my panel, which differ from the defaults defined in the driver.

I would also verify the 'pinctrl-0' and 'pinctrl-names' property definitions - I see it in the backlight node definition which I think is not needed.  This property is defined in my 'panel' node instead.

These are only pointers - I am by no means an expert in device tree configs but these things popped out as areas of interest.

Re: panel-lvds driver does not work anymore after upgrade to kernel 6.6

Hi @brood 


I am experiencing the same issue as well. Could you please share the DTS file in the chat? It would be very helpful.

Re: panel-lvds driver does not work anymore after upgrade to kernel 6.6

@brood 

@brood  Thank you for sharing this. I already tried the same approach, but it did not work for me. I am also very new to this. Please find my code below—could you help me fix it?
 My Board : 8MPLUSLPD4-EVK 


 #include "imx8mp-evk.dts"
 
/ {
    backlight1: backlight1 {
        compatible = "pwm-backlight";
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_lvds1>;
        default-brightness-level = <6>;
        pwms = <&pwm3 0 50000 0>;
        power-supply = <&reg_lvds1_reg_en>;
        enable-gpios = <&gpio2 20 GPIO_ACTIVE_LOW>;
        brightness-levels= <0 4 8 16 32 64 128 255>;
        status = "okay";
    };
 
    panel_lvds: panel-lvds1 {
        compatible  = "panel-lvds";
        backlight   = <&backlight1>;
        
        width-mm = <218>;
        height-mm = <137>;
 
        data-mapping = "vesa-24";
        status = "okay";
        
        panel-timing {
            clock-frequency = <71000000>;
            hactive = <1280>;
            hfront-porch = <30>;
            hsync-len = <48>;
            hback-porch = <80>;
            vactive = <800>;
            vfront-porch = <3>;
            vsync-len = <6>;
            vback-porch = <14>;
            de-active = <1>;
        };
        
        port {
            panel1_in: endpoint {
                remote-endpoint = <&lvds1_out>;
            };
        };
    };
};
&lcdif2 {
  status = "okay";
};
/* LVDS1 */
&ldb {
    status = "okay";
 
    lvds-channel@1 {
        #address-cells = <1>;
#size-cells = <0>;        
        status = "okay";
        primary;
        port@1 {
            reg = <1>;
            lvds1_out: endpoint {
                remote-endpoint = <&panel1_in>;
            };
        };
    };
};
 
&ldb_phy {
    status = "okay";
};
Re: panel-lvds driver does not work anymore after upgrade to kernel 6.6

@brood 
Even after disabling HDMI and retrying the setup, the issue persists.

@MicMoba 
I have a separate backlight module and I am controlling the backlight through that. In my case, an integrated backlight is not required.

Re: panel-lvds driver does not work anymore after upgrade to kernel 6.6

Are you using a HDMI panel?  I see you have the HDMI node activated - that may be causing a conflict depending on your pinmux.

Re: panel-lvds driver does not work anymore after upgrade to kernel 6.6

Maybe it helps. At your stage I remember this patch brought me further:

diff --git a/drivers/video/backlight/pwm_bl.c b/drivers/video/backlight/pwm_bl.c
--- a/drivers/video/backlight/pwm_bl.c
+++ b/drivers/video/backlight/pwm_bl.c
@@ -462,7 +462,7 @@ static int pwm_backlight_initial_power_state(const struct pwm_bl_data *pb)
* assume that another driver will enable the backlight at the
* appropriate time. Therefore, if it is disabled, keep it so.
*/
- return active ? FB_BLANK_UNBLANK: FB_BLANK_POWERDOWN;
+ return FB_BLANK_UNBLANK;
}

static int pwm_backlight_probe(struct platform_device *pdev)



Re: panel-lvds driver does not work anymore after upgrade to kernel 6.6

@brood  I have updated the backlight configuration, and the code builds successfully. The LVDS interface is now visible in DRM, but there is no output on the display. I am currently stuck at this stage. I have attached my code and the display details below for your review and suggestions.

// SPDX-License-Identifier: GPL-2.0+
/*
 * Copyright 2020 NXP
 */
 
#include "imx8mp-evk.dts"
 
{
   
 
panel_lvds: panel-lvds1 {
        compatible  = "panel-lvds";
        backlight = <&lvds_backlight>;
        
        width-mm = <165>;
        height-mm = <104>;
 
        data-mapping = "vesa-24";
        status = "okay";
        
        panel-timing {
              clock-frequency = <29760000>;   /* 29.76 MHz */
 
              /* Horizontal */
              hactive = <800>;
              hfront-porch = <24>;
              hsync-len = <72>;
              hback-porch = <96>;
      
              /* Vertical */
              vactive = <480>;
              vfront-porch = <3>;
              vsync-len = <7>;
              vback-porch = <10>;
      
              /* Polarities */
              hsync-active = <0>;
              vsync-active = <0>;
              de-active = <1>;
              pixelclk-active = <0>;
        };
        
        port {
            panel1_in: endpoint {
                remote-endpoint = <&lvds1_out>;
            };
        };
    };
};
 
&hdmi {
    status = "okay";
};
 
&lcdif2 {
  status = "okay";
};
 
/* LVDS1 */
&ldb {
    status = "okay";
 
    lvds-channel@1 {
        #address-cells = <1>;
#size-cells = <0>;        
        status = "okay";
        primary;
        port@1 {
            reg = <1>;
            lvds1_out: endpoint {
                remote-endpoint = <&panel1_in>;
            };
        };
    };
};
 
&ldb_phy {
    status = "okay";
};


Display : Innolux G070Y2-L01

Tags (1)
No ratings
Version history
Last update:
‎02-26-2026 03:46 AM
Updated by: