Loading drivers/usb/dwc3/gadget.c +8 −2 Original line number Original line Diff line number Diff line Loading @@ -753,12 +753,13 @@ static int __dwc3_gadget_ep_enable(struct dwc3_ep *dep, unsigned int action) reg |= DWC3_DALEPENA_EP(dep->number); reg |= DWC3_DALEPENA_EP(dep->number); dwc3_writel(dwc->regs, DWC3_DALEPENA, reg); dwc3_writel(dwc->regs, DWC3_DALEPENA, reg); dep->trb_dequeue = 0; dep->trb_enqueue = 0; if (usb_endpoint_xfer_control(desc)) if (usb_endpoint_xfer_control(desc)) goto out; goto out; /* Initialize the TRB ring */ /* Initialize the TRB ring */ dep->trb_dequeue = 0; dep->trb_enqueue = 0; memset(dep->trb_pool, 0, memset(dep->trb_pool, 0, sizeof(struct dwc3_trb) * DWC3_TRB_NUM); sizeof(struct dwc3_trb) * DWC3_TRB_NUM); Loading Loading @@ -2516,6 +2517,7 @@ static int __dwc3_gadget_start(struct dwc3 *dwc) /* begin to receive SETUP packets */ /* begin to receive SETUP packets */ dwc->ep0state = EP0_SETUP_PHASE; dwc->ep0state = EP0_SETUP_PHASE; dwc->ep0_bounced = false; dwc->link_state = DWC3_LINK_STATE_SS_DIS; dwc->link_state = DWC3_LINK_STATE_SS_DIS; dwc3_ep0_out_start(dwc); dwc3_ep0_out_start(dwc); Loading Loading @@ -3377,6 +3379,10 @@ static void dwc3_gadget_reset_interrupt(struct dwc3 *dwc) dwc3_ep0_end_control_data(dwc, dwc->eps[dir]); dwc3_ep0_end_control_data(dwc, dwc->eps[dir]); else else dwc3_ep0_end_control_data(dwc, dwc->eps[!dir]); 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); dwc3_ep0_stall_and_restart(dwc); } } Loading Loading
drivers/usb/dwc3/gadget.c +8 −2 Original line number Original line Diff line number Diff line Loading @@ -753,12 +753,13 @@ static int __dwc3_gadget_ep_enable(struct dwc3_ep *dep, unsigned int action) reg |= DWC3_DALEPENA_EP(dep->number); reg |= DWC3_DALEPENA_EP(dep->number); dwc3_writel(dwc->regs, DWC3_DALEPENA, reg); dwc3_writel(dwc->regs, DWC3_DALEPENA, reg); dep->trb_dequeue = 0; dep->trb_enqueue = 0; if (usb_endpoint_xfer_control(desc)) if (usb_endpoint_xfer_control(desc)) goto out; goto out; /* Initialize the TRB ring */ /* Initialize the TRB ring */ dep->trb_dequeue = 0; dep->trb_enqueue = 0; memset(dep->trb_pool, 0, memset(dep->trb_pool, 0, sizeof(struct dwc3_trb) * DWC3_TRB_NUM); sizeof(struct dwc3_trb) * DWC3_TRB_NUM); Loading Loading @@ -2516,6 +2517,7 @@ static int __dwc3_gadget_start(struct dwc3 *dwc) /* begin to receive SETUP packets */ /* begin to receive SETUP packets */ dwc->ep0state = EP0_SETUP_PHASE; dwc->ep0state = EP0_SETUP_PHASE; dwc->ep0_bounced = false; dwc->link_state = DWC3_LINK_STATE_SS_DIS; dwc->link_state = DWC3_LINK_STATE_SS_DIS; dwc3_ep0_out_start(dwc); dwc3_ep0_out_start(dwc); Loading Loading @@ -3377,6 +3379,10 @@ static void dwc3_gadget_reset_interrupt(struct dwc3 *dwc) dwc3_ep0_end_control_data(dwc, dwc->eps[dir]); dwc3_ep0_end_control_data(dwc, dwc->eps[dir]); else else dwc3_ep0_end_control_data(dwc, dwc->eps[!dir]); 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); dwc3_ep0_stall_and_restart(dwc); } } Loading