On Fri, Sep 14, 2012 at 09:50:56AM +0300, Dan Carpenter wrote: > 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)) It's not what I meant. Should be if ((intr & OTGSC_AVVIE) && (intr & OTGSC_AVVIS)) I'm still testing it. Thanks Richard > 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