aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/usb/dwc3/gadget.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/usb/dwc3/gadget.c')
-rw-r--r--drivers/usb/dwc3/gadget.c16
1 files changed, 5 insertions, 11 deletions
diff --git a/drivers/usb/dwc3/gadget.c b/drivers/usb/dwc3/gadget.c
index 60b75c302aa4..fac11491850f 100644
--- a/drivers/usb/dwc3/gadget.c
+++ b/drivers/usb/dwc3/gadget.c
@@ -1656,7 +1656,7 @@ static void dwc3_endpoint_transfer_complete(struct dwc3 *dwc,
1656static void dwc3_gadget_start_isoc(struct dwc3 *dwc, 1656static void dwc3_gadget_start_isoc(struct dwc3 *dwc,
1657 struct dwc3_ep *dep, const struct dwc3_event_depevt *event) 1657 struct dwc3_ep *dep, const struct dwc3_event_depevt *event)
1658{ 1658{
1659 u32 uf; 1659 u32 uf, mask;
1660 1660
1661 if (list_empty(&dep->request_list)) { 1661 if (list_empty(&dep->request_list)) {
1662 dev_vdbg(dwc->dev, "ISOC ep %s run out for requests.\n", 1662 dev_vdbg(dwc->dev, "ISOC ep %s run out for requests.\n",
@@ -1664,16 +1664,10 @@ static void dwc3_gadget_start_isoc(struct dwc3 *dwc,
1664 return; 1664 return;
1665 } 1665 }
1666 1666
1667 if (event->parameters) { 1667 mask = ~(dep->interval - 1);
1668 u32 mask; 1668 uf = event->parameters & mask;
1669 1669 /* 4 micro frames in the future */
1670 mask = ~(dep->interval - 1); 1670 uf += dep->interval * 4;
1671 uf = event->parameters & mask;
1672 /* 4 micro frames in the future */
1673 uf += dep->interval * 4;
1674 } else {
1675 uf = 0;
1676 }
1677 1671
1678 __dwc3_gadget_kick_transfer(dep, uf, 1); 1672 __dwc3_gadget_kick_transfer(dep, uf, 1);
1679} 1673}