[PATCH 4.14 017/217] usb: dwc2: gadget: Fix issue in dwc2_gadget_start_isoc()

From: Greg Kroah-Hartman
Date: Thu Aug 23 2018 - 04:18:34 EST


4.14-stable review patch. If anyone has any objections, please let me know.

------------------

From: Minas Harutyunyan <Minas.Harutyunyan@xxxxxxxxxxxx>

[ Upstream commit 1ffba9058737af2ddeebc813faa8ea9b16bc892a ]

In case of requests queue is empty reset EP target_frame to
initial value.

This allow restarting ISOC traffic in case when function
driver queued requests with interruptions.

Tested-by: Zeng Tao <prime.zeng@xxxxxxxxxxxxx>
Signed-off-by: Minas Harutyunyan <hminas@xxxxxxxxxxxx>
Signed-off-by: Felipe Balbi <felipe.balbi@xxxxxxxxxxxxxxx>
Signed-off-by: Sasha Levin <alexander.levin@xxxxxxxxxxxxx>
Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx>
---
drivers/usb/dwc2/gadget.c | 1 +
1 file changed, 1 insertion(+)

--- a/drivers/usb/dwc2/gadget.c
+++ b/drivers/usb/dwc2/gadget.c
@@ -932,6 +932,7 @@ static void dwc2_gadget_start_isoc_ddma(
u32 ctrl;

if (list_empty(&hs_ep->queue)) {
+ hs_ep->target_frame = TARGET_FRAME_INITIAL;
dev_dbg(hsotg->dev, "%s: No requests in queue\n", __func__);
return;
}