summaryrefslogtreecommitdiff
path: root/drivers/usb/cdns3
diff options
context:
space:
mode:
authorPeter Chen <peter.chen@nxp.com>2020-02-14 15:14:13 +0800
committerPeter Chen <peter.chen@nxp.com>2020-02-28 11:15:58 +0800
commitb201be894582f00db6081332fd14a0db258765aa (patch)
tree56b4cce5376902bc19bf59bd2a1ffb2c72687561 /drivers/usb/cdns3
parentff01b0f10d5f5ada52140561b21387092dadf446 (diff)
MLK-23349-3 usb: cdns3: gadget: link trb should point to next request
It has marked the dequeue trb as link trb, but its next segment pointer is still itself, it causes the transfer can't go on. Fix it by set its pointer as the trb address for the next request. Reviewed-by: Jun Li <jun.li@nxp.com> Fixes: f616c3bda47e ("usb: cdns3: Fix dequeue implementation") Signed-off-by: Peter Chen <peter.chen@nxp.com>
Diffstat (limited to 'drivers/usb/cdns3')
-rw-r--r--drivers/usb/cdns3/gadget.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/usb/cdns3/gadget.c b/drivers/usb/cdns3/gadget.c
index 47ba0422caf1..450281eebe06 100644
--- a/drivers/usb/cdns3/gadget.c
+++ b/drivers/usb/cdns3/gadget.c
@@ -1878,7 +1878,7 @@ found:
/* Update ring only if removed request is on pending_req_list list */
if (req_on_hw_ring) {
link_trb->buffer = TRB_BUFFER(priv_ep->trb_pool_dma +
- (priv_req->start_trb * TRB_SIZE));
+ ((priv_req->end_trb + 1) * TRB_SIZE));
link_trb->control = (link_trb->control & TRB_CYCLE) |
TRB_TYPE(TRB_LINK) | TRB_CHAIN;