mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-08 12:58:12 -04:00
Merge "usb: dwc3: Fix enumeration failure with reset during transfers"
This commit is contained in:
commit
41521da246
1 changed files with 8 additions and 2 deletions
|
|
@ -745,12 +745,13 @@ static int __dwc3_gadget_ep_enable(struct dwc3_ep *dep, unsigned int action)
|
|||
reg |= DWC3_DALEPENA_EP(dep->number);
|
||||
dwc3_writel(dwc->regs, DWC3_DALEPENA, reg);
|
||||
|
||||
dep->trb_dequeue = 0;
|
||||
dep->trb_enqueue = 0;
|
||||
|
||||
if (usb_endpoint_xfer_control(desc))
|
||||
goto out;
|
||||
|
||||
/* Initialize the TRB ring */
|
||||
dep->trb_dequeue = 0;
|
||||
dep->trb_enqueue = 0;
|
||||
memset(dep->trb_pool, 0,
|
||||
sizeof(struct dwc3_trb) * DWC3_TRB_NUM);
|
||||
|
||||
|
|
@ -2423,6 +2424,7 @@ static int __dwc3_gadget_start(struct dwc3 *dwc)
|
|||
|
||||
/* begin to receive SETUP packets */
|
||||
dwc->ep0state = EP0_SETUP_PHASE;
|
||||
dwc->ep0_bounced = false;
|
||||
dwc->link_state = DWC3_LINK_STATE_SS_DIS;
|
||||
dwc3_ep0_out_start(dwc);
|
||||
|
||||
|
|
@ -3287,6 +3289,10 @@ static void dwc3_gadget_reset_interrupt(struct dwc3 *dwc)
|
|||
dwc3_ep0_end_control_data(dwc, dwc->eps[dir]);
|
||||
else
|
||||
dwc3_ep0_end_control_data(dwc, dwc->eps[!dir]);
|
||||
|
||||
dwc->eps[0]->trb_enqueue = 0;
|
||||
dwc->eps[1]->trb_enqueue = 0;
|
||||
|
||||
dwc3_ep0_stall_and_restart(dwc);
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue