There is a '&' vs '|' typo in the original code so the condition is never true and we don't queue the work. Signed-off-by: Dan Carpenter <dan.carpenter@xxxxxxxxxx> --- diff --git a/drivers/usb/chipidea/udc.c b/drivers/usb/chipidea/udc.c index 2f45bba..5294f81 100644 --- a/drivers/usb/chipidea/udc.c +++ b/drivers/usb/chipidea/udc.c @@ -1680,7 +1680,7 @@ static irqreturn_t udc_irq(struct ci13xxx *ci) intr = hw_read(ci, OP_OTGSC, ~0); hw_write(ci, OP_OTGSC, ~0, intr); - if (intr & (OTGSC_AVVIE & OTGSC_AVVIS)) + if (intr & (OTGSC_AVVIE | OTGSC_AVVIS)) queue_work(ci->wq, &ci->vbus_work); spin_unlock(&ci->lock); -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html