cancel
Showing results for 
Search instead for 
Did you mean: 

PWM backlight not working.

Lmoio.1
Senior

Can you please check my device tree configuration?

Backlight as a GPIO is working correctly, but when i try to use it as pwm, the pin line is always fixed to low.

Inside my .dts:

This is my panel definition:

panel {
		compatible = "newkoro,display","simple-panel";
		//enable-gpios = <&gpioe 12 GPIO_ACTIVE_HIGH>;
        //reset-gpios = <&gpioe 11 GPIO_ACTIVE_HIGH>;
		backlight = <&backlight>;
		power-supply = <&vdd>;
   	 	status = "okay";	
		port@0{
			//reg = <0>;
			panel_in: endpoint {
				remote-endpoint = <&ltdc_ep0_out>;			
			};
	
		};	
	};

 

 

This is backlight as simple gpio (working)

//backlight: panel-backlight {
 
         //  compatible = "gpio-backlight";
 
           // gpios = <&gpioe 4 GPIO_ACTIVE_HIGH>;
 
            //default-off;
 
       //};

 

This is backlight as pwm (not working)

 

backlight: panel-backlight {
 
      compatible = "pwm-backlight";
 
      pwms = <&backlight_pwm 0 100000 0>;
 
      brightness-levels = <0 31 63 95 127 159 191 223 255>;
 
      default-brightness-level = <8>;
 
      status = "okay";
 
      //power-supply = <&reg_5v2>; /* 3V3_BACKLIGHT */
 
   };

 

and this is timer defs:

 

&timers15 {
 
   status = "okay";
 
 
   backlight_pwm: pwm {
 
      pinctrl-names = "default", "sleep";
 
      pinctrl-0 = <&pwm15_pins_a>;
 
      pinctrl-1 = <&pwm15_sleep_pins_a>;
 
      status = "okay";
 
      //#pwm-cells = <2>;
 
   };
 
};

 

inside pinctrl i have:

   pwm15_pins_a: pwm15-0 {
 
      pins {
 
         pinmux = <STM32_PINMUX('E', 4, AF4)>; /* TIM15_CH1N */
 
         bias-disable;
 
         drive-push-pull;
 
         slew-rate = <0>;
 
      };
 
   };
 
 
   pwm15_sleep_pins_a: pwm15-sleep-0 {
 
      pins {
 
         pinmux = <STM32_PINMUX('E', 4, ANALOG)>; /* TIM15_CH1N */
 
      };
 
   };

thank you

10 REPLIES 10

Hi @Lmoio.1 , I am also facing the same problem. When I add panel-backlight property to the panel node, there is no pwm and enable output, but when I comment out this property from the node, I can control enable and pwm. I am using STM32MP135 SoM from PHYTEC, can you check my dts file? BTW, this is the working dts.

// SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause) /* * Copyright (C) 2023 PHYTEC Messtechnik GmbH * Authors: Christophe Parant <c.parant@phytec.fr> */ /dts-v1/; #include "stm32mp1-phycore-custom-carrier.dtsi" / { model = "CUSTOM CARRIER"; compatible = "phytec,stm32mp135f-pbacd10", "phytec,stm32mp135f-pcl076-emmc", "phytec,stm32mp135f-pcl076", "st,stm32mp135"; memory@c0000000 { reg = <0xc0000000 0x20000000>; }; reserved-memory { #address-cells = <1>; #size-cells = <1>; ranges; optee_framebuffer@dd000000 { reg = <0xdd000000 0x1000000>; no-map; }; optee@de000000 { reg = <0xde000000 0x2000000>; no-map; }; }; panel_rgb: rgb-panel { compatible = "panel-dpi"; label = "dt304b-lcd"; reset-gpios = <&gpioi 0 GPIO_ACTIVE_HIGH>; //backlight = <&panel_backlight>; data-mapping = "bgr666"; status = "okay"; width-mm = <115>; height-mm = <80>; port { panel_in_rgb: endpoint { remote-endpoint = <&ltdc_ep0_out>; }; }; //SATOZ 4.3INCH PANEL TIMINGS panel-timing { clock-frequency = <9000000>; hactive = <480>; vactive = <272>; hfront-porch = <8>; hback-porch = <43>; hsync-len = <4>; vback-porch = <12>; vfront-porch = <8>; vsync-len = <4>; }; }; panel_backlight: panel-backlight { compatible = "pwm-backlight"; status = "okay"; pwms = <&pwm_8 2 50000 0>; enable-gpios = <&gpiob 1 GPIO_ACTIVE_HIGH>; power-supply = <&scmi_vdd>; brightness-levels = <0 4 8 16 32 64 128 255>; default-brightness-level = <6>; }; user-leds { compatible = "gpio-leds"; sys-green-led { gpios = <&gpiob 13 GPIO_ACTIVE_HIGH>; linux,default-trigger = "heartbeat"; }; sys-red-led { gpios = <&gpiob 5 GPIO_ACTIVE_HIGH>; linux,default-trigger = "gpio"; default-state = "on"; }; }; }; &ltdc { pinctrl-names = "default", "sleep"; pinctrl-0 = <&ltdc_pins_mx>; pinctrl-1 = <&ltdc_sleep_pins_mx>; status = "okay"; port { #address-cells = <1>; #size-cells = <0>; ltdc_ep0_out: endpoint@0 { reg = <0>; remote-endpoint = <&panel_in_rgb>; }; }; }; &timers8 { /delete-property/dmas; /delete-property/dma-names; status = "okay"; pwm_8: pwm { pinctrl-0 = <&tim8_pwm_pins_mx>; pinctrl-1 = <&tim8_pwm_sleep_pins_mx>; pinctrl-names = "default", "sleep"; status = "okay"; }; }; &i2c5 { /delete-node/i2c_rtc; /delete-node/tlv320; goodix: goodix_ts@14 { compatible = "goodix,gt911"; reg = <0x14>; interrupt-parent = <&gpiof>; interrupts = <5 IRQ_TYPE_EDGE_FALLING>; interrupt-controller; reset-gpios = <&gpiog 12 GPIO_ACTIVE_LOW>; touchscreen-size-x = <480>; touchscreen-size-y = <272>; status = "okay"; }; };
View more