From ee3638b897b9b6926d567b0ee0d9e65636138442 Mon Sep 17 00:00:00 2001 From: Felipe Balbi Date: Tue, 27 Mar 2018 11:26:53 +0300 Subject: [PATCH] usb: dwc3: gadget: update dep->frame_number from XferInprogress too 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 --- 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 f078054f7178..6a2d41250602 100644 --- a/drivers/usb/dwc3/gadget.c +++ b/drivers/usb/dwc3/gadget.c @@ -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); }