usb: musb: gadget: clear gadget_driver when gadget is stopped
authorGrazvydas Ignotas <notasas@gmail.com>
Tue, 26 Feb 2013 01:05:24 +0000 (03:05 +0200)
committerGrazvydas Ignotas <notasas@gmail.com>
Tue, 12 Mar 2013 21:45:57 +0000 (23:45 +0200)
Some musb glue drivers use gadget_driver pointer to know if any gadget
drivers are loaded at some moment and base further decisions on it,
like to do runtime suspend/resume or not. Right now the pointer is
left alone on stop and OMAP musb glue later does wrong runtime_pm
decisions because of it.

Clear the gadget_driver pointer on remove, it's invalid after stop
anyway.

drivers/usb/musb/musb_gadget.c

index 9c8845a..f7e0248 100644 (file)
@@ -2054,6 +2054,7 @@ static int musb_gadget_stop(struct usb_gadget *g,
        dev_dbg(musb->controller, "unregistering driver %s\n", driver->function);
 
        musb->is_active = 0;
+       musb->gadget_driver = NULL;
        musb_platform_try_idle(musb, 0);
        spin_unlock_irqrestore(&musb->lock, flags);