usb: dwc3: gadget: always enable IOC on bulk/interrupt transfers
by setting IOC always, we can recycle TRBs a lot sooner at the expense of some increased CPU load. The extra load seems to be quite minimal on OMAP5 devices (instead of 1 IRQ for one MSC transfer, we get CONFIG_USB_GADGET_STORAGE_NUM_BUFFERS). Signed-off-by: Felipe Balbi <balbi@ti.com>
This commit is contained in:
Родитель
0e06bcac79
Коммит
f3af36511e
|
@ -771,9 +771,6 @@ static void dwc3_prepare_one_trb(struct dwc3_ep *dep,
|
||||||
trb->ctrl = DWC3_TRBCTL_ISOCHRONOUS_FIRST;
|
trb->ctrl = DWC3_TRBCTL_ISOCHRONOUS_FIRST;
|
||||||
else
|
else
|
||||||
trb->ctrl = DWC3_TRBCTL_ISOCHRONOUS;
|
trb->ctrl = DWC3_TRBCTL_ISOCHRONOUS;
|
||||||
|
|
||||||
if (!req->request.no_interrupt && !chain)
|
|
||||||
trb->ctrl |= DWC3_TRB_CTRL_IOC;
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case USB_ENDPOINT_XFER_BULK:
|
case USB_ENDPOINT_XFER_BULK:
|
||||||
|
@ -788,6 +785,9 @@ static void dwc3_prepare_one_trb(struct dwc3_ep *dep,
|
||||||
BUG();
|
BUG();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!req->request.no_interrupt && !chain)
|
||||||
|
trb->ctrl |= DWC3_TRB_CTRL_IOC;
|
||||||
|
|
||||||
if (usb_endpoint_xfer_isoc(dep->endpoint.desc)) {
|
if (usb_endpoint_xfer_isoc(dep->endpoint.desc)) {
|
||||||
trb->ctrl |= DWC3_TRB_CTRL_ISP_IMI;
|
trb->ctrl |= DWC3_TRB_CTRL_ISP_IMI;
|
||||||
trb->ctrl |= DWC3_TRB_CTRL_CSP;
|
trb->ctrl |= DWC3_TRB_CTRL_CSP;
|
||||||
|
@ -1855,9 +1855,6 @@ static int dwc3_cleanup_done_reqs(struct dwc3 *dwc, struct dwc3_ep *dep,
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((event->status & DEPEVT_STATUS_IOC) &&
|
|
||||||
(trb->ctrl & DWC3_TRB_CTRL_IOC))
|
|
||||||
return 0;
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Загрузка…
Ссылка в новой задаче