Re: [PATCH] leds: use QoS to control LED suspend behavior from userspace

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon 2018-01-29 19:49:47, 0v3rdr0n3@xxxxxxxxx wrote:
> From: Samuel Morris <samorris@xxxxxxxxxxx>
> 
> Signed-off-by: Samuel Morris <samorris@xxxxxxxxxxx>

But... we'll really need description what this is supposed to do.

Because at least some LEDs (keyboard LEDs on PC) can't be powered on
during suspend.

Does this work for your LEDs? Do we need a way for userspace to tell
if LED supports it or not?

> @@ -196,6 +197,11 @@ static int led_suspend(struct device *dev)
>  {
>  	struct led_classdev *led_cdev = dev_get_drvdata(dev);
>  
> +	if(dev_pm_qos_flags(dev, PM_QOS_FLAG_NO_POWER_OFF) ==
> +			PM_QOS_FLAGS_ALL) {
> +		return 0;
> +	}

"if (". No need for { } s.

> +
>  	if (led_cdev->flags & LED_CORE_SUSPENDRESUME)
>  		led_classdev_suspend(led_cdev);
>  
> @@ -206,6 +212,11 @@ static int led_resume(struct device *dev)
>  {
>  	struct led_classdev *led_cdev = dev_get_drvdata(dev);
>  
> +	if(dev_pm_qos_flags(dev, PM_QOS_FLAG_NO_POWER_OFF) ==
> +			PM_QOS_FLAGS_ALL) {
> +		return 0;
> +	}
> +
>  	if (led_cdev->flags & LED_CORE_SUSPENDRESUME)
>  		led_classdev_resume(led_cdev);
>  
> @@ -287,6 +298,18 @@ int led_classdev_register(struct device *parent, struct led_classdev *led_cdev)
>  	list_add_tail(&led_cdev->node, &leds_list);
>  	up_write(&leds_list_lock);
>  
> +	/* Attempt to let userspace take over the policy. */
> +	ret = dev_pm_qos_expose_flags(led_cdev->dev,
> +			PM_QOS_FLAG_NO_POWER_OFF);
> +	if (ret < 0) {
> +		dev_warn(led_cdev->dev, "failed to expose pm_qos_no_poweroff\n");
> +		return 0;
> +	}
> +
> +	ret = dev_pm_qos_update_flags(led_cdev->dev,
> +			PM_QOS_FLAG_NO_POWER_OFF,
> +			0);
> +
>  	if (!led_cdev->max_brightness)
>  		led_cdev->max_brightness = LED_FULL;
>  

Best regards,
									Pavel
-- 
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html

Attachment: signature.asc
Description: Digital signature


[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux