Skip to content

Commit

Permalink
usb: dwc3: gadget: don't enable interrupt when disabling endpoint
Browse files Browse the repository at this point in the history
Since we're disabling the endpoint anyway, we don't worry about
getting endpoint command completion interrupt.

Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
  • Loading branch information
Felipe Balbi committed Feb 13, 2019
1 parent e26bdb0 commit c5353b2
Showing 1 changed file with 9 additions and 7 deletions.
16 changes: 9 additions & 7 deletions drivers/usb/dwc3/gadget.c
Original file line number Diff line number Diff line change
Expand Up @@ -687,12 +687,13 @@ static int __dwc3_gadget_ep_enable(struct dwc3_ep *dep, unsigned int action)
return 0;
}

static void dwc3_stop_active_transfer(struct dwc3_ep *dep, bool force);
static void dwc3_stop_active_transfer(struct dwc3_ep *dep, bool force,
bool interrupt);
static void dwc3_remove_requests(struct dwc3 *dwc, struct dwc3_ep *dep)
{
struct dwc3_request *req;

dwc3_stop_active_transfer(dep, true);
dwc3_stop_active_transfer(dep, true, false);

/* - giveback all requests to gadget driver */
while (!list_empty(&dep->started_list)) {
Expand Down Expand Up @@ -1350,7 +1351,7 @@ static int dwc3_gadget_start_isoc_quirk(struct dwc3_ep *dep)
* to wait for the next XferNotReady to test the command again
*/
if (cmd_status == 0) {
dwc3_stop_active_transfer(dep, true);
dwc3_stop_active_transfer(dep, true, true);
return 0;
}
}
Expand Down Expand Up @@ -1543,7 +1544,7 @@ static int dwc3_gadget_ep_dequeue(struct usb_ep *ep,
}
if (r == req) {
/* wait until it is processed */
dwc3_stop_active_transfer(dep, true);
dwc3_stop_active_transfer(dep, true, true);

if (!r->trb)
goto out0;
Expand Down Expand Up @@ -2500,7 +2501,7 @@ static void dwc3_gadget_endpoint_transfer_in_progress(struct dwc3_ep *dep,
dwc3_gadget_ep_cleanup_completed_requests(dep, event, status);

if (stop) {
dwc3_stop_active_transfer(dep, true);
dwc3_stop_active_transfer(dep, true, true);
dep->flags = DWC3_EP_ENABLED;
}

Expand Down Expand Up @@ -2621,7 +2622,8 @@ static void dwc3_reset_gadget(struct dwc3 *dwc)
}
}

static void dwc3_stop_active_transfer(struct dwc3_ep *dep, bool force)
static void dwc3_stop_active_transfer(struct dwc3_ep *dep, bool force,
bool interrupt)
{
struct dwc3 *dwc = dep->dwc;
struct dwc3_gadget_ep_cmd_params params;
Expand Down Expand Up @@ -2664,7 +2666,7 @@ static void dwc3_stop_active_transfer(struct dwc3_ep *dep, bool force)

cmd = DWC3_DEPCMD_ENDTRANSFER;
cmd |= force ? DWC3_DEPCMD_HIPRI_FORCERM : 0;
cmd |= DWC3_DEPCMD_CMDIOC;
cmd |= interrupt ? DWC3_DEPCMD_CMDIOC : 0;
cmd |= DWC3_DEPCMD_PARAM(dep->resource_index);
memset(&params, 0, sizeof(params));
ret = dwc3_send_gadget_ep_cmd(dep, cmd, &params);
Expand Down

0 comments on commit c5353b2

Please sign in to comment.