aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/hid
diff options
context:
space:
mode:
authorAlan Stern <stern@rowland.harvard.edu>2010-04-02 13:21:58 -0400
committerJiri Kosina <jkosina@suse.cz>2010-04-02 19:36:03 -0400
commit3d61510f4ecacfe47c75c0eb51c0659dfa77fb1b (patch)
treea5f3ba578df7e19e619074457b72e0578dbcc6ba /drivers/hid
parent20a3ce7e490c5015d051f78414f6dd146eec283f (diff)
HID: usbhid: enable remote wakeup for keyboards
This patch (as1365) enables remote wakeup by default for USB keyboard devices. Keyboards in general are supposed to be wakeup devices, but the correct place to enable it depends on the device's bus; no single approach will work for all keyboard devices. In particular, this covers only USB keyboards (and then only those supporting the boot protocol). Signed-off-by: Alan Stern <stern@rowland.harvard.edu> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
Diffstat (limited to 'drivers/hid')
-rw-r--r--drivers/hid/usbhid/hid-core.c7
-rw-r--r--drivers/hid/usbhid/usbkbd.c1
2 files changed, 6 insertions, 2 deletions
diff --git a/drivers/hid/usbhid/hid-core.c b/drivers/hid/usbhid/hid-core.c
index 56d06cd8075b..9cd61a52e9e3 100644
--- a/drivers/hid/usbhid/hid-core.c
+++ b/drivers/hid/usbhid/hid-core.c
@@ -1026,12 +1026,15 @@ static int usbhid_start(struct hid_device *hid)
1026 /* Some keyboards don't work until their LEDs have been set. 1026 /* Some keyboards don't work until their LEDs have been set.
1027 * Since BIOSes do set the LEDs, it must be safe for any device 1027 * Since BIOSes do set the LEDs, it must be safe for any device
1028 * that supports the keyboard boot protocol. 1028 * that supports the keyboard boot protocol.
1029 * In addition, enable remote wakeup by default for all keyboard
1030 * devices supporting the boot protocol.
1029 */ 1031 */
1030 if (interface->desc.bInterfaceSubClass == USB_INTERFACE_SUBCLASS_BOOT && 1032 if (interface->desc.bInterfaceSubClass == USB_INTERFACE_SUBCLASS_BOOT &&
1031 interface->desc.bInterfaceProtocol == 1033 interface->desc.bInterfaceProtocol ==
1032 USB_INTERFACE_PROTOCOL_KEYBOARD) 1034 USB_INTERFACE_PROTOCOL_KEYBOARD) {
1033 usbhid_set_leds(hid); 1035 usbhid_set_leds(hid);
1034 1036 device_set_wakeup_enable(&dev->dev, 1);
1037 }
1035 return 0; 1038 return 0;
1036 1039
1037fail: 1040fail:
diff --git a/drivers/hid/usbhid/usbkbd.c b/drivers/hid/usbhid/usbkbd.c
index f843443ba5c3..b2fd0b00de92 100644
--- a/drivers/hid/usbhid/usbkbd.c
+++ b/drivers/hid/usbhid/usbkbd.c
@@ -313,6 +313,7 @@ static int usb_kbd_probe(struct usb_interface *iface,
313 goto fail2; 313 goto fail2;
314 314
315 usb_set_intfdata(iface, kbd); 315 usb_set_intfdata(iface, kbd);
316 device_set_wakeup_enable(&dev->dev, 1);
316 return 0; 317 return 0;
317 318
318fail2: 319fail2: