cancel
Showing results for 
Search instead for 
Did you mean: 

panel-lvds-backlight: deferred probe pending

sanjaysb
Associate II

stm32mp251.dtsi

st,stm32-timers.yaml

pinctrl-stm32mp257.c

This is the current implementation of the `panel_lvds_backlight`, i'm trying to implement the pwn brightness control for this.

{
/* https://github.com/STMicroelectronics/linux/blob/f01241fb/arch/arm64/boot/dts/st/stm32mp257f-ev1.dts */
....
	panel_lvds_backlight: panel-lvds-backlight {
		compatible = "gpio-backlight";
		gpios = <&gpioi 5 GPIO_ACTIVE_HIGH>;
		default-on;
		default-brightness-level = <1>;
		status = "okay";
	};
....

}

 

/dts-v1/;
/plugin/;

#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/input/input.h>
#include <dt-bindings/pinctrl/stm32-pinfunc.h> /* This is required by fragment@3 for pinctrl */

/ {
    compatible = "st,stm32mp257f-ev1";

    /* Modify panel timing clock frequency */
    fragment@0 {
        target = <&panel_lvds>;
        __overlay__ {
            panel-timing {
                clock-frequency = <54000000>;
            };
        };
    };

    /* Replace GPIO backlight with PWM backlight */
    fragment@1 {
        target = <&panel_lvds_backlight>;
        __overlay__ {
            /* Delete old GPIO backlight properties */
            /delete-property/ gpios;
            /delete-property/ default-on;

            /* Change compatible and add PWM properties */
            compatible = "pwm-backlight";
            pwms = <&pwm5 1 1000000 0>;
            brightness-levels = <0 16 22 30 40 55 75 102 138 188 255>;
            default-brightness-level = <10>;
            status = "okay";
        };
    };

    /* Configure PWM5 CH2 pins (active state) */
    fragment@2 {
        target = <&pinctrl>;
        __overlay__ {
            pwm5_ch2_pins_a: pwm5-ch2-0 {
                pins {
                    pinmux = <STM32_PINMUX('I', 5, AF9)>; /* TIM5_CH2 - AF9 - pinctrl-stm32mp257.c */
                    bias-pull-down;
                    drive-push-pull;
                    slew-rate = <0>;
                };
            };

            pwm5_ch2_sleep_pins_a: pwm5-ch2-sleep-0 {
                pins {
                    pinmux = <STM32_PINMUX('I', 5, ANALOG)>; /* TIM5_CH2 */
                };
            };
        };
    };

    /* Enable timers5 and PWM5 */
    fragment@3 {
        target = <&timers5>;
        __overlay__ {
            status = "okay";

            pwm5: pwm {
                compatible = "st,stm32mp25-pwm";
                pinctrl-0 = <&pwm5_ch2_pins_a>;
                pinctrl-1 = <&pwm5_ch2_sleep_pins_a>;
                pinctrl-names = "default", "sleep";
                status = "okay";
            };
        };
    };
};

 

I implemented this dt overlay and i'm sure that this overlay is successfully applied during the boot but im getting deffered probing error in this dt overlay example.

 

root@stm32mp25-eval-e3-e4-2e:~# [   27.055167] weston[1619]: memfd_create() called without MFD_EXEC or MFD_NOEXEC_SEAL set
[   27.625314] platform 48060000.lvds: deferred probe pending
[   27.625369] platform panel-lvds-backlight: deferred probe pending
[   27.631789] platform panel-lvds: deferred probe pending
[   27.636838] platform 48010000.display-controller: deferred probe pending
[   27.643680] stm32mp_pm_domain power-domain-d1: sync_state() pending due to 48010000.display-controller
[   27.652958] stm32mp_pm_domain power-domain-d1: sync_state() pending due to 48060000.lvds
[   31.974569] vddio3: disabling
[   31.974653] vddio4: disabling
[   31.974910] vdda18adc: disabling
[   31.978162] vddcore: disabling
[   31.994557] v1v8: disabling


 

 

Can anyone help me debug and solve this issue. i'm pretty sure about what i'm doing here, i referred the pwm-back-light implemented in stm32mp257f-dk.dts. apart from using DT overlay i even tried applying patch with same implementation as above shared overlay, end up having same kernel log again.

 

Hoping for a quick reply, thanks in advance. 

 

0 REPLIES 0