Am Mittwoch, 12. Oktober 2011, 16:33:13 schrieb Alan Stern:
I admit to not being very familiar with the way usbhid handles
autosuspend. However in general, if a suspend fails because the driver
is busy, then when the driver stops being busy it should initiate the
next round of autosuspend. In this case, when the key release has been
fully processed, the driver should call usb_put_interface_async() or
something similar, which would restart the timer.
I see. I can do this although it is not very elegant, because
the pm counters at this point ought to be 0 already.
Arguably a driver is the wrong layer to do this.
Regards
Oliver