Hello Richard, looking at the chipidea/udc.c in v3.7-rc2, I found some strange code. It was added in commit: 8c4fc03 USB: chipidea: add vbus detect for udc > diff --git a/drivers/usb/chipidea/udc.c b/drivers/usb/chipidea/udc.c > index d214448..2f45bba 100644 > --- a/drivers/usb/chipidea/udc.c > +++ b/drivers/usb/chipidea/udc.c [...] > @@ -1651,6 +1676,13 @@ static irqreturn_t udc_irq(struct ci13xxx *ci) > } else { > retval = IRQ_NONE; > } > + > + intr = hw_read(ci, OP_OTGSC, ~0); > + hw_write(ci, OP_OTGSC, ~0, intr); > + > + if (intr & (OTGSC_AVVIE & OTGSC_AVVIS)) > + queue_work(ci->wq, &ci->vbus_work); This if is a no-op, as OTG_ are defined as: #define OTGSC_AVVIS BIT(17) #define OTGSC_AVVIE BIT(25) Resulting in queue_work() never called from here. > + > spin_unlock(&ci->lock); > I'm not that deep into the OTG stuff to fix it properly. regards, Marc -- Pengutronix e.K. | Marc Kleine-Budde | Industrial Linux Solutions | Phone: +49-231-2826-924 | Vertretung West/Dortmund | Fax: +49-5121-206917-5555 | Amtsgericht Hildesheim, HRA 2686 | http://www.pengutronix.de |
Attachment:
signature.asc
Description: OpenPGP digital signature