• Oliver Neukum's avatar
    HID: autosuspend support for USB HID · 0361a28d
    Oliver Neukum authored
    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: default avatarOliver Neukum <oneukum@suse.de>
    Signed-off-by: default avatarJiri Kosina <jkosina@suse.cz>
    0361a28d
hid-core.c 37.8 KB