[PATCH] usb: gadget: fsl: check vbus presence on probe

From: Paul Fertser
Date: Thu Apr 24 2014 - 05:58:59 EST


If VBUS is already present during the driver initialisation, the
corresponding IRQ never fires, so there is no way the gadget can get
enumerated.

This patch is real-life tested on an i.MX25 board with VBUS constantly
hooked up.

Signed-off-by: Paul Fertser <fercerpav@xxxxxxxxx>
---
drivers/usb/gadget/fsl_udc_core.c | 5 +++++
1 file changed, 5 insertions(+)

diff --git a/drivers/usb/gadget/fsl_udc_core.c b/drivers/usb/gadget/fsl_udc_core.c
index a2f26cd..b4b1516 100644
--- a/drivers/usb/gadget/fsl_udc_core.c
+++ b/drivers/usb/gadget/fsl_udc_core.c
@@ -2501,6 +2501,11 @@ static int __init fsl_udc_probe(struct platform_device *pdev)
if (ret)
goto err_del_udc;

+ /* Now let it settle a bit and sense VBUS */
+ msleep_interruptible(1);
+ if (fsl_readl(&dr_regs->otgsc) & OTGSC_STS_B_SESSION_VALID)
+ udc_controller->vbus_active = 1;
+
create_proc_file();
return 0;

--
1.7.10

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/