diff --git a/drivers/usb/gadget/udc/core.c b/drivers/usb/gadget/udc/core.c index d4ce9ca37f1d..d48877e73478 100644 --- a/drivers/usb/gadget/udc/core.c +++ b/drivers/usb/gadget/udc/core.c @@ -682,11 +682,9 @@ int usb_gadget_disconnect(struct usb_gadget *gadget) goto out; } - if (!gadget->uvc_enabled) { - ret = gadget->ops->pullup(gadget, 0); - if (!ret) - gadget->connected = 0; - } + ret = gadget->ops->pullup(gadget, 0); + if (!ret) + gadget->connected = 0; out: trace_usb_gadget_disconnect(gadget, ret); @@ -713,7 +711,7 @@ int usb_gadget_deactivate(struct usb_gadget *gadget) if (gadget->deactivated) goto out; - if (gadget->connected) { + if (gadget->connected && !gadget->uvc_enabled) { ret = usb_gadget_disconnect(gadget); if (ret) goto out;