mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2025-01-22 05:44:31 +08:00
EHCI: always clear the STS_FLR status bit
This patch (as1544) fixes a problem affecting some EHCI controllers. They can generate interrupts whenever the STS_FLR status bit is turned on, even though that bit is masked out in the Interrupt Enable register. Since the driver doesn't use STS_FLR anyway, the patch changes the interrupt routine to clear that bit whenever it is set, rather than leaving it alone. Signed-off-by: Alan Stern <stern@rowland.harvard.edu> Reported-and-tested-by: Tomoya MORINAGA <tomoya.rohm@gmail.com> Cc: stable <stable@vger.kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
dc75ce9d92
commit
2fbe2bf1fd
@ -858,8 +858,13 @@ static irqreturn_t ehci_irq (struct usb_hcd *hcd)
|
||||
goto dead;
|
||||
}
|
||||
|
||||
/*
|
||||
* We don't use STS_FLR, but some controllers don't like it to
|
||||
* remain on, so mask it out along with the other status bits.
|
||||
*/
|
||||
masked_status = status & (INTR_MASK | STS_FLR);
|
||||
|
||||
/* Shared IRQ? */
|
||||
masked_status = status & INTR_MASK;
|
||||
if (!masked_status || unlikely(ehci->rh_state == EHCI_RH_HALTED)) {
|
||||
spin_unlock(&ehci->lock);
|
||||
return IRQ_NONE;
|
||||
|
Loading…
Reference in New Issue
Block a user