mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-26 06:33:19 -04:00
usb: ep0: complete the pending control request before soft-disconnect
We abort the control request enqueue during a device initiated disconnect as soon as the softconnect flag gets cleared. Whenever there is a race between a control request and soft disconnect, the pending control request is aborted before dwc3_gadget_pullup() function tries to complete it. As a result the subsequent soft reconnect fails resulting in usb connection loss. Avoid this by deciding the enqueue() operation based on pullups_connected flag which gets cleared after completing the pending request and putting the core in setup phase. Change-Id: Ie21ecead7ed73569a426cd8bac586a5576c72993 Signed-off-by: Elson Roy Serrao <eserrao@codeaurora.org>
This commit is contained in:
parent
43ee86678a
commit
4b4b6715b7
1 changed files with 1 additions and 1 deletions
|
|
@ -197,7 +197,7 @@ int dwc3_gadget_ep0_queue(struct usb_ep *ep, struct usb_request *request,
|
|||
int ret;
|
||||
|
||||
spin_lock_irqsave(&dwc->lock, flags);
|
||||
if (!dep->endpoint.desc || !dwc->softconnect ||
|
||||
if (!dep->endpoint.desc || !dwc->pullups_connected ||
|
||||
!dwc->vbus_active) {
|
||||
dev_err(dwc->dev, "%s: can't queue to disabled endpoint\n",
|
||||
dep->name);
|
||||
|
|
|
|||
Loading…
Reference in a new issue