RE: [PATCH] usb:solve resume usb device identification problem
Date: Mon Jul 11 2016 - 21:49:20 EST
> -----Original Message-----
> From: Alan Stern [mailto:stern@xxxxxxxxxxxxxxxxxxx]
> Sent: Monday, July 11, 2016 10:51 PM
> To: Lipengcheng
> Cc: gregkh@xxxxxxxxxxxxxxxxxxx; baolu.lu@xxxxxxxxxxxxxxx; chasemetzger15@xxxxxxxxx; mathias.nyman@xxxxxxxxxxxxxxx;
> oneukum@xxxxxxxx; jun.li@xxxxxxxxxxxxx; linux-usb@xxxxxxxxxxxxxxx; linux-kernel@xxxxxxxxxxxxxxx
> Subject: Re: [PATCH] usb:solve resume usb device identification problem
> On Mon, 11 Jul 2016, Pengcheng Li wrote:
> > A usb device in the connection state. Then host is suspend and resume.
> > But the usb device could not be at the right speed. We should be reset
> > the reset.
> > Signed-off-by: Pengcheng Li <lpc.li@xxxxxxxxxxxxx>
> Why wouldn't the USB device be at the right speed?
For example, some USB3 devices are resume, the device may be in USB 2.0 Device States. We should have USB 2.0 reset and
make the device into the right speed.
> You should _not_ reset the device if it is at the right speed.
> > @@ -3512,6 +3512,10 @@ int usb_port_resume(struct usb_device *udev, pm_message_t msg)
> > }
> > }
> > + retval = hub_port_reset(hub, port1, udev, HUB_ROOT_RESET_TIME, false);
> > + if (retval < 0)
> > + hub_port_disable(hub, port1, 0);
> > +
> Most of the time (for example, for non-USB3 devices) this would be wrong.
Yes, USB3 devices have this problem. So far, USB2 device can not find this problem.
I mainly refer to the reset process of usb enumeration process.
> Alan Stern