From 621367ef474da0e2ec390abbb2251ba192e2312c Mon Sep 17 00:00:00 2001 From: Grazvydas Ignotas Date: Sat, 4 Jul 2015 23:51:00 +0300 Subject: [PATCH] usb: musb: clear MUSB_INTR_SOF MUSB_INTR_SOF is always masked, but still shows up in status register and causes musb_stage0_irq() to be called needlessly, then work to be scheduled at the end of musb_stage0_irq(), and that doubles context switch count. --- drivers/usb/musb/musb_core.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/usb/musb/musb_core.c b/drivers/usb/musb/musb_core.c index 7245b89b020a..650a18bc2650 100644 --- a/drivers/usb/musb/musb_core.c +++ b/drivers/usb/musb/musb_core.c @@ -1522,6 +1522,8 @@ static irqreturn_t generic_interrupt(int irq, void *__hci) spin_lock_irqsave(&musb->lock, flags); musb->int_usb = musb_readb(musb->mregs, MUSB_INTRUSB); + /* SOF is not enabled, but status is still often set */ + musb->int_usb &= ~MUSB_INTR_SOF; musb->int_tx = musb_readw(musb->mregs, MUSB_INTRTX); musb->int_rx = musb_readw(musb->mregs, MUSB_INTRRX); -- 2.47.2