usb: dwc3: gadget: update dep->frame_number from XferInprogress too
authorFelipe Balbi <felipe.balbi@linux.intel.com>
Tue, 27 Mar 2018 08:26:53 +0000 (11:26 +0300)
committerFelipe Balbi <felipe.balbi@linux.intel.com>
Mon, 21 May 2018 07:00:51 +0000 (10:00 +0300)
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.balbi@linux.intel.com>
drivers/usb/dwc3/gadget.c

index f078054..6a2d412 100644 (file)
@@ -2417,6 +2417,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)
 {
@@ -2424,6 +2434,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;
 
@@ -2462,12 +2474,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);
 }