On Sun, Mar 10, 2013 at 1:03 PM, Michael Trimarchi <michael@xxxxxxxxxxxxxxxxxxxx> wrote: > Hi > > just one comment. > > On 10/03/13 02:07, Grazvydas Ignotas wrote: >> On pandora, STS_USB interrupt doesn't arrive on USB host cable disconnect >> for some reason while VBUS is driven by twl itself, but STS_HW_CONDITIONS >> is updated correctly. It does work fine when PHY is powered down though. >> To work around that we have to poll. >> >> TI PSP kernels have similar workarounds, so (many?) more boards are likely >> affected. >> >> Signed-off-by: Grazvydas Ignotas <notasas@xxxxxxxxx> >> --- >> drivers/usb/otg/twl4030-usb.c | 37 +++++++++++++++++++++++++++++++++++++ >> 1 file changed, 37 insertions(+) >> >> diff --git a/drivers/usb/otg/twl4030-usb.c b/drivers/usb/otg/twl4030-usb.c >> index 90a19ff..2c1c27e 100644 >> --- a/drivers/usb/otg/twl4030-usb.c >> +++ b/drivers/usb/otg/twl4030-usb.c ... >> @@ -513,6 +525,28 @@ static irqreturn_t twl4030_usb_irq(int irq, void *_twl) >> return IRQ_HANDLED; >> } >> >> +static void twl4030_id_workaround_work(struct work_struct *work) >> +{ >> + struct twl4030_usb *twl = container_of(work, struct twl4030_usb, >> + id_workaround_work.work); >> + enum omap_musb_vbus_id_status status_prev = twl->linkstat; >> + enum omap_musb_vbus_id_status status; >> + >> + status = twl4030_usb_linkstat(twl); >> + if (status != status_prev) { >> + dev_dbg(twl->dev, "handle missing status change: %d->%d\n", >> + status_prev, status); >> + twl->linkstat = status_prev; >> + twl4030_usb_irq(0, twl); > > As I understand from the subject this happen in Pandora board and > many boards can be affected. > do you need any protection between the worker and the irq when > the irq arrive as expected? Hmm I guess i do, I'll add some locking in v2, which I'll send after collecting more feedback. > > Michael > -- Gražvydas -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html