On Mon, 3 Dec 2012, Oliver Neukum wrote: > Some touchscreens have buggy firmware which claims > remote wakeup to be enabled after a reset. They nevertheless > crash if the feature is cleared by the host. > Add a check for reset resume before checking for > an enabled remote wakeup feature. On compliant > devices the feature must be clear after a reset anyway. > > Signed-off-by: Oliver Neukum <oneukum@xxxxxxx> Acked-by: Alan Stern <stern@xxxxxxxxxxxxxxxxxxx> > --- > drivers/usb/core/hub.c | 8 +++++++- > 1 files changed, 7 insertions(+), 1 deletions(-) > > diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c > index 1af04bd..4ef2cf6 100644 > --- a/drivers/usb/core/hub.c > +++ b/drivers/usb/core/hub.c > @@ -2944,7 +2944,13 @@ static int finish_port_resume(struct usb_device *udev) > if (status) { > dev_dbg(&udev->dev, "gone after usb resume? status %d\n", > status); > - } else if (udev->actconfig) { > + /* > + * There are a few quirky devices which violate the standard > + * by claiming to have remote wakeup enabled after a reset, > + * which crash if the feature is cleared, hence check for > + * udev->reset_resume > + */ > + } else if (udev->actconfig && !udev->reset_resume) { > le16_to_cpus(&devstatus); > if (devstatus & (1 << USB_DEVICE_REMOTE_WAKEUP)) { > status = usb_control_msg(udev, -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html