Merge "Revert "usb: dwc3: gadget: always enable IOC on bulk/interrupt transfers""
This commit is contained in:
commit
4e2a8a0fa1
1 changed files with 18 additions and 4 deletions
|
@ -539,7 +539,7 @@ static int dwc3_gadget_set_ep_config(struct dwc3 *dwc, struct dwc3_ep *dep,
|
|||
dep->stream_capable = true;
|
||||
}
|
||||
|
||||
if (!usb_endpoint_xfer_control(desc))
|
||||
if (usb_endpoint_xfer_isoc(desc))
|
||||
params.param1 |= DWC3_DEPCFG_XFER_IN_PROGRESS_EN;
|
||||
|
||||
/*
|
||||
|
@ -891,11 +891,19 @@ static void dwc3_prepare_one_trb(struct dwc3_ep *dep,
|
|||
trb->ctrl = DWC3_TRBCTL_ISOCHRONOUS_FIRST;
|
||||
else
|
||||
trb->ctrl = DWC3_TRBCTL_ISOCHRONOUS;
|
||||
|
||||
if (!req->request.no_interrupt && !chain)
|
||||
trb->ctrl |= DWC3_TRB_CTRL_IOC;
|
||||
break;
|
||||
|
||||
case USB_ENDPOINT_XFER_BULK:
|
||||
case USB_ENDPOINT_XFER_INT:
|
||||
trb->ctrl = DWC3_TRBCTL_NORMAL;
|
||||
if (req->request.num_mapped_sgs > 0) {
|
||||
if (!last && !chain &&
|
||||
!req->request.no_interrupt)
|
||||
trb->ctrl |= DWC3_TRB_CTRL_IOC;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
/*
|
||||
|
@ -905,9 +913,6 @@ static void dwc3_prepare_one_trb(struct dwc3_ep *dep,
|
|||
BUG();
|
||||
}
|
||||
|
||||
if (!req->request.no_interrupt && !chain)
|
||||
trb->ctrl |= DWC3_TRB_CTRL_IOC;
|
||||
|
||||
if (usb_endpoint_xfer_isoc(dep->endpoint.desc)) {
|
||||
trb->ctrl |= DWC3_TRB_CTRL_ISP_IMI;
|
||||
trb->ctrl |= DWC3_TRB_CTRL_CSP;
|
||||
|
@ -2477,6 +2482,9 @@ static int dwc3_cleanup_done_reqs(struct dwc3 *dwc, struct dwc3_ep *dep,
|
|||
return 1;
|
||||
}
|
||||
|
||||
if ((event->status & DEPEVT_STATUS_IOC) &&
|
||||
(trb->ctrl & DWC3_TRB_CTRL_IOC))
|
||||
return 0;
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
@ -2564,6 +2572,12 @@ static void dwc3_endpoint_interrupt(struct dwc3 *dwc,
|
|||
break;
|
||||
case DWC3_DEPEVT_XFERINPROGRESS:
|
||||
dep->dbg_ep_events.xferinprogress++;
|
||||
if (!usb_endpoint_xfer_isoc(dep->endpoint.desc)) {
|
||||
dev_dbg(dwc->dev, "%s is not an Isochronous endpoint\n",
|
||||
dep->name);
|
||||
return;
|
||||
}
|
||||
|
||||
dwc3_endpoint_transfer_complete(dwc, dep, event);
|
||||
break;
|
||||
case DWC3_DEPEVT_XFERNOTREADY:
|
||||
|
|
Loading…
Add table
Reference in a new issue