Hi, > -----Original Message----- > From: Alan Stern [mailto:st...@rowland.harvard.edu] > Sent: Monday, July 11, 2016 10:51 PM > To: Lipengcheng > Cc: gre...@linuxfoundation.org; baolu...@linux.intel.com; > chasemetzge...@gmail.com; mathias.ny...@linux.intel.com; > oneu...@suse.com; jun...@freescale.com; linux-...@vger.kernel.org; > linux-kernel@vger.kernel.org > 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...@hisilicon.com> > > 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
Thanks, Pengcheng Li