[PATCH] usb: host: ehci: skip STS_HALT check for aspeed platform

Neal Liu neal_liu at aspeedtech.com
Tue Aug 31 19:34:32 PDT 2021


> -----Original Message-----
> From: Alan Stern <stern at rowland.harvard.edu>
> Sent: Thursday, August 26, 2021 11:28 PM
> To: Neal Liu <neal_liu at aspeedtech.com>
> Cc: Greg Kroah-Hartman <gregkh at linuxfoundation.org>; Tony Prisk
> <linux at prisktech.co.nz>; linux-usb at vger.kernel.org;
> linux-kernel at vger.kernel.org; linux-arm-kernel at lists.infradead.org; Tao Ren
> <rentao.bupt at gmail.com>; BMC-SW <BMC-SW at aspeedtech.com>
> Subject: Re: [PATCH] usb: host: ehci: skip STS_HALT check for aspeed platform
> 
> On Thu, Aug 26, 2021 at 03:15:25PM +0800, neal_liu wrote:
> > STS_HALT also depends on ASS/PSS status for apseed.
> > Skip this check on startup.
> >
> > Signed-off-by: neal_liu <neal_liu at aspeedtech.com>
> > ---
> >  drivers/usb/host/ehci-hcd.c      | 10 +++++++++-
> >  drivers/usb/host/ehci-platform.c |  6 ++++++
> >  drivers/usb/host/ehci.h          |  1 +
> >  3 files changed, 16 insertions(+), 1 deletion(-)
> >
> > diff --git a/drivers/usb/host/ehci-hcd.c b/drivers/usb/host/ehci-hcd.c
> > index 10b0365f3439..a539e11502ef 100644
> > --- a/drivers/usb/host/ehci-hcd.c
> > +++ b/drivers/usb/host/ehci-hcd.c
> > @@ -634,7 +634,15 @@ static int ehci_run (struct usb_hcd *hcd)
> >  	/* Wait until HC become operational */
> >  	ehci_readl(ehci, &ehci->regs->command);	/* unblock posted writes */
> >  	msleep(5);
> > -	rc = ehci_handshake(ehci, &ehci->regs->status, STS_HALT, 0, 100 * 1000);
> > +
> > +	/* For Aspeed, STS_HALT also depends on ASS/PSS status.
> > +	 * Skip this check on startup.
> > +	 */
> > +	if (ehci->is_aspeed)
> > +		rc = 0;
> > +	else
> > +		rc = ehci_handshake(ehci, &ehci->regs->status, STS_HALT,
> > +				    0, 100 * 1000);
> 
> You must not do this.  You are assuming the controller will always begin
> operating within 5 ms of the time it is told to start.  What happens if you are
> wrong?
> 
> There must be some way for the aspeed controller's host computer to tell
> when the controller has started running.  Find out what it is and use it.
> 
> Alan Stern

We can check the command RS bit to tell the controller has started running.
I'll sent next patch within this change.
Thanks

-Neal Liu



More information about the linux-arm-kernel mailing list