From: Grazvydas Ignotas Date: Sat, 4 Jul 2015 20:51:00 +0000 (+0300) Subject: usb: musb: clear MUSB_INTR_SOF X-Git-Tag: sz_173~11 X-Git-Url: https://git.openpandora.org/cgi-bin/gitweb.cgi?p=pandora-kernel.git;a=commitdiff_plain;h=621367ef474da0e2ec390abbb2251ba192e2312c 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. --- 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);