diff options
author | Grazvydas Ignotas <notasas@gmail.com> | 2013-03-09 19:49:14 -0500 |
---|---|---|
committer | Felipe Balbi <balbi@ti.com> | 2013-03-22 02:41:28 -0400 |
commit | e21de10cd8b1338200d96038aa66fb966fcf6ed0 (patch) | |
tree | a254fc3d77f6bdb8924e1dcbdc4f500ee684101e /drivers/usb/musb/musb_gadget.c | |
parent | e5615112807c27dd256f0bd8fc8b1f6f5e1b90af (diff) |
usb: musb: gadget: clear gadget_driver when gadget is stopped
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.
Signed-off-by: Grazvydas Ignotas <notasas@gmail.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
Diffstat (limited to 'drivers/usb/musb/musb_gadget.c')
-rw-r--r-- | drivers/usb/musb/musb_gadget.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/usb/musb/musb_gadget.c b/drivers/usb/musb/musb_gadget.c index e8408883ab0d..ff6ba3adf5fe 100644 --- a/drivers/usb/musb/musb_gadget.c +++ b/drivers/usb/musb/musb_gadget.c | |||
@@ -1934,6 +1934,7 @@ static int musb_gadget_stop(struct usb_gadget *g, | |||
1934 | dev_dbg(musb->controller, "unregistering driver %s\n", driver->function); | 1934 | dev_dbg(musb->controller, "unregistering driver %s\n", driver->function); |
1935 | 1935 | ||
1936 | musb->is_active = 0; | 1936 | musb->is_active = 0; |
1937 | musb->gadget_driver = NULL; | ||
1937 | musb_platform_try_idle(musb, 0); | 1938 | musb_platform_try_idle(musb, 0); |
1938 | spin_unlock_irqrestore(&musb->lock, flags); | 1939 | spin_unlock_irqrestore(&musb->lock, flags); |
1939 | 1940 | ||