Re: [PATCH] usb: dwc3: Fix timeout issue during controller enter/exit from halt state

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Sat, Feb 01, 2025, Krishna Kurapati wrote:
> 
> 
> On 2/1/2025 5:45 AM, Thinh Nguyen wrote:
> > On Fri, Jan 31, 2025, Selvarasu Ganesan wrote:
> > > There is a frequent timeout during controller enter/exit from halt state
> > > after toggling the run_stop bit by SW. This timeout occurs when
> > > performing frequent role switches between host and device, causing
> > > device enumeration issues due to the timeout. This issue was not present
> > > when USB2 suspend PHY was disabled by passing the SNPS quirks
> > > (snps,dis_u2_susphy_quirk and snps,dis_enblslpm_quirk) from the DTS.
> > > However, there is a requirement to enable USB2 suspend PHY by setting of
> > > GUSB2PHYCFG.ENBLSLPM and GUSB2PHYCFG.SUSPHY bits when controller starts
> > > in gadget or host mode results in the timeout issue.
> > > 
> > > This commit addresses this timeout issue by ensuring that the bits
> > > GUSB2PHYCFG.ENBLSLPM and GUSB2PHYCFG.SUSPHY are cleared before starting
> > > the dwc3_gadget_run_stop sequence and restoring them after the
> > > dwc3_gadget_run_stop sequence is completed.
> > > 
> > > Fixes: 72246da40f37 ("usb: Introduce DesignWare USB3 DRD Driver")
> > > Cc: stable@xxxxxxxxxxxxxxx
> > > Signed-off-by: Selvarasu Ganesan <selvarasu.g@xxxxxxxxxxx>
> > > ---
> > >   drivers/usb/dwc3/gadget.c | 21 +++++++++++++++++++++
> > >   1 file changed, 21 insertions(+)
> > > 
> > > diff --git a/drivers/usb/dwc3/gadget.c b/drivers/usb/dwc3/gadget.c
> > > index d27af65eb08a..4a158f703d64 100644
> > > --- a/drivers/usb/dwc3/gadget.c
> > > +++ b/drivers/usb/dwc3/gadget.c
> > > @@ -2629,10 +2629,25 @@ static int dwc3_gadget_run_stop(struct dwc3 *dwc, int is_on)
> > >   {
> > >   	u32			reg;
> > >   	u32			timeout = 2000;
> > > +	u32			saved_config = 0;
> > >   	if (pm_runtime_suspended(dwc->dev))
> > >   		return 0;
> > 
> > Can you add some comments here that this was added through experiment
> > since it is not documented in the programming guide. It would be great
> > to also note which platform you used to test this with.
> > 
> 
> I did see this issue during pullup_exit() in SM6375 and SM8150 targets. The
> exact code logic worked out for me downstream.
> 

Noted. This is good info.

Thanks,
Thinh




[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux