]> git.baikalelectronics.ru Git - kernel.git/commit
HID: autosuspend support for USB HID
authorOliver Neukum <oliver@neukum.org>
Wed, 17 Dec 2008 14:38:03 +0000 (15:38 +0100)
committerJiri Kosina <jkosina@suse.cz>
Wed, 25 Mar 2009 16:57:57 +0000 (17:57 +0100)
commit9b58e93a776a46e53019f4048891cdff28e42028
tree2aa33c5325118e68ce8691a009c5fb30ffdea68c
parentec3a5723f9b4608647ac8b9dc290288347f35042
HID: autosuspend support for USB HID

This uses the USB busy mechanism for aggessive autosuspend of USB
HID devices. It autosuspends all opened devices supporting remote wakeup
after a timeout unless

- output is being done to the device
- a key is being held down (remote wakeup isn't triggered upon key release)
- LED(s) are lit
- hiddev is opened

As in the current driver closed devices will be autosuspended even if they
don't support remote wakeup.

The patch is quite large because output to devices is done in hard interrupt
context meaning a lot a queuing and locking had to be touched. The LED stuff
has been solved by means of a simple counter. Additions to the generic HID code
could be avoided. In addition it now covers hidraw. It contains an embryonic
version of an API to let the generic HID code tell the lower levels which
capabilities with respect to power management are needed.

Signed-off-by: Oliver Neukum <oneukum@suse.de>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
drivers/hid/hid-core.c
drivers/hid/hidraw.c
drivers/hid/usbhid/hid-core.c
drivers/hid/usbhid/hiddev.c
drivers/hid/usbhid/usbhid.h
include/linux/hid.h