The default value of enable_gpio in pwm-backlight driver?

Yingjoe Chen yingjoe.chen at mediatek.com
Sun Sep 13 20:24:23 PDT 2015


Hi Alexandre, Thierry,


On Thu, 2015-09-03 at 21:08 +0800, YH Huang wrote:
<...>
> From	Alexandre Courbot <>
> Subject	[PATCH 2/2] pwm-backlight: switch to gpiod interface
> Date	Thu, 27 Feb 2014 14:53:34 +0900
> 
> Switch to the new gpiod interface, which allows to handle GPIO
> properties such as active low transparently and removes a whole bunch of
> code.
> 
> There are still a couple of users of this driver that rely on passing
> the enable GPIO number through platform data, so a fallback mechanism
> using a GPIO number is still available to avoid breaking them. It will
> be removed once current users have switched to the GPIO lookup tables
> provided by the gpiod interface.
> 
> --- a/drivers/video/backlight/pwm_bl.c
> +++ b/drivers/video/backlight/pwm_bl.c
> 
> @@ -265,26 +245,39 @@ static int pwm_backlight_probe(struct
> platform_device *pdev)
>  	pb->dev = &pdev->dev;
>  	pb->enabled = false;
>  
> -	if (gpio_is_valid(pb->enable_gpio)) {
> -		unsigned long flags;
> -
> -		if (pb->enable_gpio_flags & PWM_BACKLIGHT_GPIO_ACTIVE_LOW)
> -			flags = GPIOF_OUT_INIT_HIGH;
> -		else
> -			flags = GPIOF_OUT_INIT_LOW;

In commit 257462dbf3ed ("pwm-backlight: switch to gpiod interface").
It seems to me the original code is trying to make it default disable...

> +	pb->enable_gpio = devm_gpiod_get(&pdev->dev, "enable");
> +	if (IS_ERR(pb->enable_gpio)) {
> +		ret = PTR_ERR(pb->enable_gpio);
> +		if (ret == -ENOENT) {
> +			pb->enable_gpio = NULL;
> +			ret = 0;
> +		} else {
> +			goto err_alloc;
> +		}
> +	}
>  
> -		ret = gpio_request_one(pb->enable_gpio, flags, "enable");
> +	/*
> +	 * Compatibility fallback for drivers still using the integer GPIO
> +	 * platform data. Must go away soon.
> +	 */
> +	if (pb->enable_gpio == NULL && gpio_is_valid(data->enable_gpio)) {
> +		ret = devm_gpio_request_one(&pdev->dev, data->enable_gpio,
> +					    GPIOF_OUT_INIT_HIGH, "enable");
>  		if (ret < 0) {
>  			dev_err(&pdev->dev, "failed to request GPIO#%d: %d\n",
> -				pb->enable_gpio, ret);
> +				data->enable_gpio, ret);
>  			goto err_alloc;
>  		}
> +		pb->enable_gpio = gpio_to_desc(data->enable_gpio);
>  	}
>  
> +	if (pb->enable_gpio)
> +		gpiod_direction_output(pb->enable_gpio, 1);

But the new code here set it to enable. Is this on purpose, or am I miss
read anything?

Joe.C





More information about the Linux-mediatek mailing list