On Tue, 13 May 2014, Dr. Werner Fink wrote:

> On Tue, May 13, 2014 at 06:10:46PM +0200, Dr. Werner Fink wrote:
> > On Tue, May 13, 2014 at 11:59:38AM -0400, Alan Stern wrote:
> > > 
> > > What about something like this instead?
> > > 
> > >   masked_status = status & (INTR_MASK | STS_FLR);
> > >  
> > >   /* Shared IRQ? */
> > >   if (!masked_status || unlikely(ehci->rh_state == EHCI_RH_HALTED)) {
> > > +         if (status & STS_RECL) {
> > > +                 ehci_writel(ehci, STS_RECL, &ehci->regs->status);
> > > +                 ehci_readl(ehci, &ehci->regs->status);
> > > +         }
> > >           spin_unlock_irqrestore(&ehci->lock, flags);
> > >           return IRQ_NONE;
> > >   }
> > > 
> > > That should do about the same thing as your change, except for
> > > returning IRQ_NONE rather than IRQ_HANDLED.
> > 
> > I'll forward this to my home to try it out.  It will take some time
> > as my wife is also working on this system.  Nevertheless I'm curious
> > about it.
> 
> The code is active now:

...

> it works.

Does it still work if you omit the ehci_readl() call?

If you want to submit a patch containing this fix, please add a quirk 
flag for it.  And a comment explaining why the ehci_writel() call is 
needed.

Alan Stern

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to