|
@@ -1211,6 +1211,7 @@ static int xpad_led_probe(struct usb_xpad *xpad)
|
|
led_cdev = &led->led_cdev;
|
|
led_cdev = &led->led_cdev;
|
|
led_cdev->name = led->name;
|
|
led_cdev->name = led->name;
|
|
led_cdev->brightness_set = xpad_led_set;
|
|
led_cdev->brightness_set = xpad_led_set;
|
|
|
|
+ led_cdev->flags = LED_CORE_SUSPENDRESUME;
|
|
|
|
|
|
error = led_classdev_register(&xpad->udev->dev, led_cdev);
|
|
error = led_classdev_register(&xpad->udev->dev, led_cdev);
|
|
if (error)
|
|
if (error)
|
|
@@ -1687,8 +1688,16 @@ static int xpad_resume(struct usb_interface *intf)
|
|
retval = xpad360w_start_input(xpad);
|
|
retval = xpad360w_start_input(xpad);
|
|
} else {
|
|
} else {
|
|
mutex_lock(&input->mutex);
|
|
mutex_lock(&input->mutex);
|
|
- if (input->users)
|
|
|
|
|
|
+ if (input->users) {
|
|
retval = xpad_start_input(xpad);
|
|
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);
|
|
mutex_unlock(&input->mutex);
|
|
}
|
|
}
|
|
|
|
|