On Thu, 31 Mar 2011, Andiry Xu wrote: > This patch clear PORT_POWER when suspend a USB3.0 device behind a USB3.0 > external hub, so the system can suspend and resume. > > Note USB3.0 device may not work after system resume and this is a temporary > workaround. The correct fix will be in future patches. > > Signed-off-by: Andiry Xu <andiry.xu@xxxxxxx> > --- > drivers/usb/core/hub.c | 12 +++++++++++- > 1 files changed, 11 insertions(+), 1 deletions(-) > > diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c > index 0968157..42160c9 100644 > --- a/drivers/usb/core/hub.c > +++ b/drivers/usb/core/hub.c > @@ -2283,7 +2283,17 @@ int usb_port_suspend(struct usb_device *udev, pm_message_t msg) > } > > /* see 7.1.7.6 */ > - status = set_port_feature(hub->hdev, port1, USB_PORT_FEAT_SUSPEND); > + /* Clear PORT_POWER if it's a USB3.0 device connected to USB 3.0 > + * external hub. > + * FIXME: this is a temporary workaround to make the system able > + * to suspend/resume. > + */ > + if ((hub->hdev->parent != NULL) && hub_is_superspeed(hub->hdev)) > + status = clear_port_feature(hub->hdev, port1, > + USB_PORT_FEAT_POWER); > + else > + status = set_port_feature(hub->hdev, port1, > + USB_PORT_FEAT_SUSPEND); > if (status) { > dev_dbg(hub->intfdev, "can't suspend port %d, status %d\n", > port1, status); Nice and simple. Thanks. Alan Stern -- 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