瀏覽代碼

usb: gadget: core: fix bug when removing gadget drivers

usb_gadget_disconnect() is responsible of removing
data pullups. Before doing that we must, first, tell
gadget driver we're disconnecting (by calling disconnect
method on gadget driver structure), unbind the gadget
driver and stop the controller.

Signed-off-by: Felipe Balbi <balbi@ti.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Felipe Balbi 14 年之前
父節點
當前提交
6f39504de5
共有 1 個文件被更改,包括 2 次插入2 次删除
  1. 2 2
      drivers/usb/gadget/udc-core.c

+ 2 - 2
drivers/usb/gadget/udc-core.c

@@ -210,10 +210,10 @@ static void usb_gadget_remove_driver(struct usb_udc *udc)
 	kobject_uevent(&udc->dev.kobj, KOBJ_CHANGE);
 	kobject_uevent(&udc->dev.kobj, KOBJ_CHANGE);
 
 
 	if (udc_is_newstyle(udc)) {
 	if (udc_is_newstyle(udc)) {
-		usb_gadget_disconnect(udc->gadget);
+		udc->driver->disconnect(udc->gadget);
 		udc->driver->unbind(udc->gadget);
 		udc->driver->unbind(udc->gadget);
 		usb_gadget_udc_stop(udc->gadget, udc->driver);
 		usb_gadget_udc_stop(udc->gadget, udc->driver);
-
+		usb_gadget_disconnect(udc->gadget);
 	} else {
 	} else {
 		usb_gadget_stop(udc->gadget, udc->driver);
 		usb_gadget_stop(udc->gadget, udc->driver);
 	}
 	}