Commit 2c78c029 authored by Felipe Balbi's avatar Felipe Balbi

usb: dwc3: gadget: interrupt on ring full too

If the ring is full and we are processing a big
sglist, then let's interrupt so we can, later, add
more TRBs to the ring.
Signed-off-by: default avatarFelipe Balbi <felipe.balbi@linux.intel.com>
parent 0b3e4af3
...@@ -758,6 +758,8 @@ static void dwc3_gadget_ep_free_request(struct usb_ep *ep, ...@@ -758,6 +758,8 @@ static void dwc3_gadget_ep_free_request(struct usb_ep *ep,
kfree(req); kfree(req);
} }
static u32 dwc3_calc_trbs_left(struct dwc3_ep *dep);
/** /**
* dwc3_prepare_one_trb - setup one TRB from one request * dwc3_prepare_one_trb - setup one TRB from one request
* @dep: endpoint for which this request is prepared * @dep: endpoint for which this request is prepared
...@@ -818,7 +820,8 @@ static void dwc3_prepare_one_trb(struct dwc3_ep *dep, ...@@ -818,7 +820,8 @@ static void dwc3_prepare_one_trb(struct dwc3_ep *dep,
/* always enable Continue on Short Packet */ /* always enable Continue on Short Packet */
trb->ctrl |= DWC3_TRB_CTRL_CSP; trb->ctrl |= DWC3_TRB_CTRL_CSP;
if (!req->request.no_interrupt && !chain) if ((!req->request.no_interrupt && !chain) ||
(dwc3_calc_trbs_left(dep) == 0))
trb->ctrl |= DWC3_TRB_CTRL_IOC | DWC3_TRB_CTRL_ISP_IMI; trb->ctrl |= DWC3_TRB_CTRL_IOC | DWC3_TRB_CTRL_ISP_IMI;
if (chain) if (chain)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment