Bug #14371
openusb auto-wakeup should support USB 3.0 devices
0%
Description
The usb auto-wakeup feature allows a USB device to wake a system that has been suspended. Currently, on devices that advertise support of auto-wakeup, usb_handle_remote_wakeup
is called during device attach, which sets the USB_DEV_REMOTE_WAKEUP
feature (corresponding to DEVICE_REMOTE_WAKEUP
in the USB spec).
Per the USB 3.[12] spec sec 9.2.5.4, the DEVICE_REMOTE_WAKEUP
feature is ignored for enhanced super-speed devices. Instead, a flag is set when issuing the suspend request. We should update our USB stack to do this for USB 3.0 devices.
For comparison, FreeBSD doesn't enable the DEVICE_REMOTE_WAKEUP
feature until it's preparing to suspend the system. This allows it to handle both USB 2.0 and 3.0 devices (since it can instead just set the 'auto-wakeup' bits instead of enabling the DEVICE_REMOTE_WAKEUP
feature).
No data to display