diff options
author | Alan Stern <stern@rowland.harvard.edu> | 2010-04-02 13:21:58 -0400 |
---|---|---|
committer | Jiri Kosina <jkosina@suse.cz> | 2010-04-02 19:36:03 -0400 |
commit | 3d61510f4ecacfe47c75c0eb51c0659dfa77fb1b (patch) | |
tree | a5f3ba578df7e19e619074457b72e0578dbcc6ba /drivers/hid | |
parent | 20a3ce7e490c5015d051f78414f6dd146eec283f (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.c | 7 | ||||
-rw-r--r-- | drivers/hid/usbhid/usbkbd.c | 1 |
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 | ||
1037 | fail: | 1040 | fail: |
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 | ||
318 | fail2: | 319 | fail2: |