Re: [PATCH v2] Input: xpad - restore LED state after device resume
From: Dmitry Torokhov
Date: Mon Feb 06 2017 - 20:03:53 EST
On Mon, Feb 06, 2017 at 04:58:38PM -0800, Cameron Gutman wrote:
> Set the LED_CORE_SUSPENDRESUME flag on our LED device so the
> LED state will be automatically restored by LED core on resume.
>
> Since Xbox One pads stop flashing only when reinitialized, we'll
> send them the initialization packet so they calm down too.
>
> Signed-off-by: Cameron Gutman <aicommander@xxxxxxxxx>
Applied, thank you.
> ---
> Sending this one alone, since the rest of the series was applied or
> needs non-trivial reworking.
>
> Thanks,
> Cameron
>
> ---
> drivers/input/joystick/xpad.c | 11 ++++++++++-
> 1 file changed, 10 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/input/joystick/xpad.c b/drivers/input/joystick/xpad.c
> index 13975aa..18697f1 100644
> --- a/drivers/input/joystick/xpad.c
> +++ b/drivers/input/joystick/xpad.c
> @@ -1240,6 +1240,7 @@ static int xpad_led_probe(struct usb_xpad *xpad)
> led_cdev = &led->led_cdev;
> led_cdev->name = led->name;
> led_cdev->brightness_set = xpad_led_set;
> + led_cdev->flags = LED_CORE_SUSPENDRESUME;
>
> error = led_classdev_register(&xpad->udev->dev, led_cdev);
> if (error)
> @@ -1716,8 +1717,16 @@ static int xpad_resume(struct usb_interface *intf)
> retval = xpad360w_start_input(xpad);
> } else {
> mutex_lock(&input->mutex);
> - if (input->users)
> + if (input->users) {
> retval = xpad_start_input(xpad);
> + } else if (xpad->xtype == XTYPE_XBOXONE) {
> + /*
> + * Even if there are no users, we'll send Xbox One pads
> + * the startup sequence so they don't sit there and
> + * blink until somebody opens the input device again.
> + */
> + retval = xpad_start_xbox_one(xpad);
> + }
> mutex_unlock(&input->mutex);
> }
>
> --
> 2.9.3
>
--
Dmitry