usb: dwc2: Set actual frame number for completed ISOC transfer
authorMinas Harutyunyan <minas.harutyunyan@synopsys.com>
Tue, 12 Mar 2019 09:27:46 +0000 (13:27 +0400)
committerFelipe Balbi <felipe.balbi@linux.intel.com>
Fri, 3 May 2019 06:13:48 +0000 (09:13 +0300)
On ISOC transfer completion, in DDMA mode, set actual frame
number returning to function driver in usb_request.

Due to core limitation, returning frame number is 11-bit wide.

Signed-off-by: Minas Harutyunyan <hminas@synopsys.com>
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
drivers/usb/dwc2/gadget.c

index fafd9cc..a17e444 100644 (file)
@@ -2166,6 +2166,11 @@ static void dwc2_gadget_complete_isoc_request_ddma(struct dwc2_hsotg_ep *hs_ep)
                         */
                        if (!hs_ep->dir_in && ureq->length & 0x3)
                                ureq->actual += 4 - (ureq->length & 0x3);
+
+                       /* Set actual frame number for completed transfers */
+                       ureq->frame_number =
+                               (desc_sts & DEV_DMA_ISOC_FRNUM_MASK) >>
+                               DEV_DMA_ISOC_FRNUM_SHIFT;
                }
 
                dwc2_hsotg_complete_request(hsotg, hs_ep, hs_req, 0);