Просмотр исходного кода

usb: dwc3: giveback all queued request when ep disabled or reset received

In case of ep_disable and reset interrupt is received and, still there
was at least one request queued for dma transfer, then endpoint is
stopped first. Once endpoint is stopped, callback for all queued
request must be called.

Signed-off-by: Pratyush Anand <pratyush.anand@st.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
Pratyush Anand 13 лет назад
Родитель
Сommit
1591633ed6
1 измененных файлов с 5 добавлено и 2 удалено
  1. 5 2
      drivers/usb/dwc3/gadget.c

+ 5 - 2
drivers/usb/dwc3/gadget.c

@@ -579,8 +579,11 @@ static void dwc3_remove_requests(struct dwc3 *dwc, struct dwc3_ep *dep)
 		 */
 		udelay(100);
 
-		req = next_request(&dep->req_queued);
-		dwc3_gadget_giveback(dep, req, -ESHUTDOWN);
+		while (!list_empty(&dep->req_queued)) {
+			req = next_request(&dep->req_queued);
+
+			dwc3_gadget_giveback(dep, req, -ESHUTDOWN);
+		}
 	}
 
 	while (!list_empty(&dep->request_list)) {