Am OK with that. Need similar change in XhcPeiInitializeDeviceSlot and XhcPeiInitializeDeviceSlot64 for PEI.
-Baranee > -----Original Message----- > From: edk2-devel [mailto:edk2-devel-boun...@lists.01.org] On Behalf Of Tian, > Feng > Sent: Tuesday, November 15, 2016 7:45 PM > To: Anbazhagan, Baraneedharan <anbazha...@hp.com>; edk2- > de...@lists.01.org > Cc: Tian, Feng <feng.t...@intel.com> > Subject: Re: [edk2] USB hub port reset > > I would prefer to keep the logic in UsbHubResetPort() unchanged to avoid bring > other device identification impacts. > > Thanks > Feng > > -----Original Message----- > From: edk2-devel [mailto:edk2-devel-boun...@lists.01.org] On Behalf Of > Anbazhagan, Baraneedharan > Sent: Wednesday, November 16, 2016 7:56 AM > To: Tian, Feng <feng.t...@intel.com>; edk2-devel@lists.01.org > Subject: Re: [edk2] USB hub port reset > > Feng, > Below change solves the problem with a device behind the hub. Do we still > need the > 10ms delay in UsbHubResetPort function for manual port reset in case of XHCI? > > Thanks, > Baranee > > -----Original Message----- > From: Tian, Feng [mailto:feng.t...@intel.com] > Sent: Monday, November 14, 2016 10:28 PM > To: Anbazhagan, Baraneedharan <anbazha...@hp.com>; edk2- > de...@lists.01.org > Cc: Tian, Feng <feng.t...@intel.com> > Subject: RE: USB hub port reset > > Baranee > > Supposing are using latest usb code in EdkII trunk. > > We send ADDRESS DEVICE CMD in XhcInitializeDeviceSlot(), which will cause XHC > issue a USB SET_ADDRESS request to the USB Device. > > There are two possible paths: > 1. Reset_Change bit gets set after connection without manually port reset. > UsbHubGetPortStatus()->XhcPollPortStatusChange()->(if RESET_C bit is set)- > >XhcInitializeDeviceSlot() 2. Reset_Change bit gets set after manually Reset > >Port > operation. > UsbHubResetPort()->UsbHubSetPortFeature()->Stall(20)-> > UsbHubGetPortStatus()->(invoke above code in XHCI)->(if RESET_C bit is set)- > >Stall(10) > > According to your info, it looks like we need add 10ms delay to > XhcInitializeDeviceSlot() like below: > > diff --git a/MdeModulePkg/Bus/Pci/XhciDxe/XhciSched.c > b/MdeModulePkg/Bus/Pci/XhciDxe/XhciSched.c > index e37f674..bb68f34 100644 > --- a/MdeModulePkg/Bus/Pci/XhciDxe/XhciSched.c > +++ b/MdeModulePkg/Bus/Pci/XhciDxe/XhciSched.c > @@ -2115,6 +2115,7 @@ XhcInitializeDeviceSlot ( > // 8) Issue an Address Device Command for the Device Slot, where the > command > points to the Input > // Context data structure described above. > // > + gBS->Stall (10 * 1000); > ZeroMem (&CmdTrbAddr, sizeof (CmdTrbAddr)); > PhyAddr = UsbHcGetPciAddrForHostAddr (Xhc->MemPool, Xhc- > >UsbDevContext[SlotId].InputContext, sizeof (INPUT_CONTEXT)); > CmdTrbAddr.PtrLo = XHC_LOW_32BIT (PhyAddr); > @@ -2321,6 +2322,7 @@ XhcInitializeDeviceSlot64 ( > // 8) Issue an Address Device Command for the Device Slot, where the > command > points to the Input > // Context data structure described above. > // > + gBS->Stall (10 * 1000); > ZeroMem (&CmdTrbAddr, sizeof (CmdTrbAddr)); > PhyAddr = UsbHcGetPciAddrForHostAddr (Xhc->MemPool, Xhc- > >UsbDevContext[SlotId].InputContext, sizeof (INPUT_CONTEXT_64)); > CmdTrbAddr.PtrLo = XHC_LOW_32BIT (PhyAddr); > > Could you please have a try to see if it solves your problem? > > Thanks > Feng > > -----Original Message----- > From: Anbazhagan, Baraneedharan [mailto:anbazha...@hp.com] > Sent: Monday, November 14, 2016 9:46 PM > To: Tian, Feng <feng.t...@intel.com>; edk2-devel@lists.01.org > Subject: RE: USB hub port reset > > In case of XHCI, TRB_TYPE_ADDRESS_DEV/SetAddress occurs within > XhcPollPortStatusChange. Seem we don't have 10ms/TRSTRCY for the devices > behind hub connected to XHCI or am missing something here? > > In EDK2, 10ms(TRSTRCY) delay occurs before clear port status and in case of > Linux > TRSTRCY delay is after clearing port status. > > Thanks > Baranee > > > > -----Original Message----- > > From: edk2-devel [mailto:edk2-devel-boun...@lists.01.org] On Behalf Of > > Tian, Feng > > Sent: Sunday, November 13, 2016 10:38 PM > > To: Anbazhagan, Baraneedharan <anbazha...@hp.com>; edk2- > > de...@lists.01.org > > Cc: Tian, Feng <feng.t...@intel.com> > > Subject: Re: [edk2] USB hub port reset > > > > I don't catch what you mean. We have had 10ms delay for port reset. > > Which line of UsbHub.c do you think there is problem? > > > > Quote from USB2.0 spec: > > "Hubs must be able to accept all hub requests and devices must be able > > to accept a > > SetAddress() request (refer to Section 11.24.2 and Section 9.4 > > respectively) after the reset recovery time 10 ms (TRSTRCY) after the reset > > is > removed." > > > > Thanks > > Feng > > > > -----Original Message----- > > From: Anbazhagan, Baraneedharan [mailto:anbazha...@hp.com] > > Sent: Monday, November 14, 2016 11:33 AM > > To: Tian, Feng <feng.t...@intel.com>; edk2-devel@lists.01.org > > Subject: RE: USB hub port reset > > > > I didn't mean to have extra delays. Am asking whether EDKII have to be > > updated for 10ms reset recovery time regardless of port status to align > > with spec? > > > > > > >From: Tian, Feng [mailto:feng.t...@intel.com] > > >Sent: Sunday, November 13, 2016 7:46 PM > > >To: Anbazhagan, Baraneedharan <anbazha...@hp.com>; > > >edk2-devel@lists.01.org > > >Cc: Tian, Feng <feng.t...@intel.com> > > >Subject: RE: USB hub port reset > > > > > >Hi, Baranee > > > > > >Linux wait 10 + 40 ms (TRSTRCY = 10 ms, plus extra 40 ms). Do you > > >mean EDKII > > should be same with linux to wait more time? > > > > > >Thanks > > >Feng > > > > > >From: Anbazhagan, Baraneedharan [mailto:anbazha...@hp.com] > > >Sent: Sunday, November 13, 2016 11:53 AM > > >To: mailto:edk2-devel@lists.01.org; Tian, Feng > > ><mailto:feng.t...@intel.com> > > >Subject: USB hub port reset > > > > > >EDK2 have reset recovery time of 10ms for hub port based on port > > >status reset bit > > but USB spec doesn't mention that port status can be used for t6/reset > > recovery time. Could you please clarify? > > > > > >USB vendor mentions EDK2 doesn't have reset recovery time on hub port > > >reset and also highlighting EDK2 hub port reset differs from > > >https://github.com/torvalds/linux/blob/master/drivers/usb/core/hub.c# > > >L2 > > >789 > > > > > >-Baranee > > _______________________________________________ > > edk2-devel mailing list > > edk2-devel@lists.01.org > > https://lists.01.org/mailman/listinfo/edk2-devel > _______________________________________________ > edk2-devel mailing list > edk2-devel@lists.01.org > https://lists.01.org/mailman/listinfo/edk2-devel > _______________________________________________ > edk2-devel mailing list > edk2-devel@lists.01.org > https://lists.01.org/mailman/listinfo/edk2-devel _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel