Re: [PATCH] asus-wmi: restore kbd led level after resume

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

 



Am 21.09.2015 um 19:12 schrieb Darren Hart:
> On Sat, Sep 19, 2015 at 07:45:31AM +0200, Oleksij Rempel wrote:
>> Hi,
>>
>> Am 19.09.2015 um 00:31 schrieb Darren Hart:
>>> On Mon, Sep 14, 2015 at 11:16:30AM +0200, Oleksij Rempel wrote:
>>>> Afters suspend/resume cycle with closed lid the kbd backlight level
>>>> is lost. This patch will will restore this value to last known level.
>>>>
>>>> Signed-off-by: Oleksij Rempel <linux@xxxxxxxxxxxxxxxx>
>>>
>>> Hi Oleksij,
>>>
>>> Please always run scripts/get_maintainer.pl -f path/to/files/changed
>>>
>>> And include *all* the maintainers and lists on Cc. This will ensure a faster
>>> response.
>>>
>>>> ---
>>>>  drivers/platform/x86/asus-wmi.c | 19 +++++++++++++++++--
>>>>  1 file changed, 17 insertions(+), 2 deletions(-)
>>>>
>>>> diff --git a/drivers/platform/x86/asus-wmi.c b/drivers/platform/x86/asus-wmi.c
>>>> index efbc3f0..1f7d80f 100644
>>>> --- a/drivers/platform/x86/asus-wmi.c
>>>> +++ b/drivers/platform/x86/asus-wmi.c
>>>> @@ -582,7 +582,7 @@ static void asus_wmi_led_exit(struct asus_wmi *asus)
>>>>  
>>>>  static int asus_wmi_led_init(struct asus_wmi *asus)
>>>>  {
>>>> -	int rv = 0;
>>>> +	int rv = 0, led_val;
>>>>  
>>>>  	asus->led_workqueue = create_singlethread_workqueue("led_workqueue");
>>>>  	if (!asus->led_workqueue)
>>>> @@ -602,9 +602,11 @@ static int asus_wmi_led_init(struct asus_wmi *asus)
>>>>  			goto error;
>>>>  	}
>>>>  
>>>> -	if (kbd_led_read(asus, NULL, NULL) >= 0) {
>>>> +	led_val = kbd_led_read(asus, NULL, NULL);
>>>> +	if (led_val >= 0) {
>>>>  		INIT_WORK(&asus->kbd_led_work, kbd_led_update);
>>>>  
>>>> +		asus->kbd_led_wk = led_val;
>>>>  		asus->kbd_led.name = "asus::kbd_backlight";
>>>>  		asus->kbd_led.brightness_set = kbd_led_set;
>>>>  		asus->kbd_led.brightness_get = kbd_led_get;
>>>> @@ -2160,6 +2162,16 @@ static int asus_hotk_thaw(struct device *device)
>>>>  	return 0;
>>>>  }
>>>>  
>>>> +static int asus_hotk_resume(struct device *device)
>>>> +{
>>>> +	struct asus_wmi *asus = dev_get_drvdata(device);
>>>> +
>>>> +	if (!IS_ERR_OR_NULL(asus->kbd_led.dev))
>>>
>>> 	if (asus->kbd_led.dev)
>>>
>>> 	should be sufficient, I don't see the dev pointer being stored as an
>>> 	errno.
>>>
>>> 	Corentin?
>>
>> led_classdev_register
>>   led_classdev_next_name
>>     device_create_with_groups
>>       device_create_groups_vargs
>>         retval = -ENODEV;
>>         retval = -ENOMEM;
>>         return ERR_PTR(retval);
>>   if (IS_ERR(led_cdev->dev))
>>
>> this is how dev pointer is stored as errno.
> 
> Ah! Thank you for the correction. Noted.
> 

No problem :)
probably it can be optimised in separate patch.

-- 
Regards,
Oleksij

Attachment: signature.asc
Description: OpenPGP digital signature


[Index of Archives]     [Linux Kernel Development]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux