mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-29 11:11:45 -04:00
USB: disable reset-resume when USB_QUIRK_RESET is set
The USB_QUIRK_RESET flag indicates that a USB device changes its identity in some way when it is reset. It may lose its firmware, its descriptors may change, or it may switch back to a default mode of operation. If a device does this, the kernel needs to avoid resetting it. Resets are likely to fail, or worse, succeed while changing the device's state in a way the system can't detect. This means we should disable the reset-resume mechanism whenever this quirk flag is present. An attempted reset-resume will fail, the device will be logically disconnected, and later on the hub driver will rediscover and re-enumerate the device. This will cause the appropriate udev events to be generated, so that userspace will have a chance to switch the device into its normal operating mode, if necessary. Signed-off-by: Alan Stern <[email protected]> CC: Oliver Neukum <[email protected]> Reviewed-by: Hans de Goede <[email protected]> Signed-off-by: Greg Kroah-Hartman <[email protected]>
This commit is contained in:
parent
6aec044cc2
commit
1d10255c1c
1 changed files with 12 additions and 2 deletions
|
|
@ -3105,9 +3105,19 @@ static int finish_port_resume(struct usb_device *udev)
|
|||
* operation is carried out here, after the port has been
|
||||
* resumed.
|
||||
*/
|
||||
if (udev->reset_resume)
|
||||
if (udev->reset_resume) {
|
||||
/*
|
||||
* If the device morphs or switches modes when it is reset,
|
||||
* we don't want to perform a reset-resume. We'll fail the
|
||||
* resume, which will cause a logical disconnect, and then
|
||||
* the device will be rediscovered.
|
||||
*/
|
||||
retry_reset_resume:
|
||||
status = usb_reset_and_verify_device(udev);
|
||||
if (udev->quirks & USB_QUIRK_RESET)
|
||||
status = -ENODEV;
|
||||
else
|
||||
status = usb_reset_and_verify_device(udev);
|
||||
}
|
||||
|
||||
/* 10.5.4.5 says be sure devices in the tree are still there.
|
||||
* For now let's assume the device didn't go crazy on resume,
|
||||
|
|
|
|||
Loading…
Reference in a new issue