We will need an up-to-date frame_number from XferInProgress too when
future patches improve our handling of Isoc endpoints.

Signed-off-by: Felipe Balbi <felipe.ba...@linux.intel.com>
---
 drivers/usb/dwc3/gadget.c | 19 +++++++++++++------
 1 file changed, 13 insertions(+), 6 deletions(-)

diff --git a/drivers/usb/dwc3/gadget.c b/drivers/usb/dwc3/gadget.c
index 00a429db158b..e982cdec8a5d 100644
--- a/drivers/usb/dwc3/gadget.c
+++ b/drivers/usb/dwc3/gadget.c
@@ -2381,6 +2381,16 @@ static int 
dwc3_gadget_ep_cleanup_completed_requests(struct dwc3_ep *dep,
        return 1;
 }
 
+static void dwc3_gadget_endpoint_frame_from_event(struct dwc3_ep *dep,
+               const struct dwc3_event_depevt *event)
+{
+       u32 cur_uf, mask;
+
+       mask = ~(dep->interval - 1);
+       cur_uf = event->parameters & mask;
+       dep->frame_number = cur_uf;
+}
+
 static void dwc3_gadget_endpoint_transfer_in_progress(struct dwc3_ep *dep,
                const struct dwc3_event_depevt *event)
 {
@@ -2388,6 +2398,8 @@ static void 
dwc3_gadget_endpoint_transfer_in_progress(struct dwc3_ep *dep,
        unsigned                status = 0;
        int                     clean_busy;
 
+       dwc3_gadget_endpoint_frame_from_event(dep, event);
+
        if (event->status & DEPEVT_STATUS_BUSERR)
                status = -ECONNRESET;
 
@@ -2426,12 +2438,7 @@ static void 
dwc3_gadget_endpoint_transfer_in_progress(struct dwc3_ep *dep,
 static void dwc3_gadget_endpoint_transfer_not_ready(struct dwc3_ep *dep,
                const struct dwc3_event_depevt *event)
 {
-       u32 cur_uf, mask;
-
-       mask = ~(dep->interval - 1);
-       cur_uf = event->parameters & mask;
-       dep->frame_number = cur_uf;
-
+       dwc3_gadget_endpoint_frame_from_event(dep, event);
        __dwc3_gadget_start_isoc(dep);
 }
 
-- 
2.16.1

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to