usb: dwc3: gadget: correct missed isoc when endpoint is busy
authorPratyush Anand <pratyush.anand@st.com>
Tue, 7 Aug 2012 11:24:18 +0000 (16:54 +0530)
committerFelipe Balbi <balbi@ti.com>
Tue, 7 Aug 2012 12:43:17 +0000 (15:43 +0300)
When MISSED_ISOC is set, BUSY is also set. Since, we are handling
MISSED_ISOC as a separate case in third scenario, therefore handle only
BUSY but not MISSED_ISOC in second scenario.

Signed-off-by: Pratyush Anand <pratyush.anand@st.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
drivers/usb/dwc3/gadget.c

index 920d997..fc05910 100644 (file)
@@ -1104,7 +1104,8 @@ static int __dwc3_gadget_ep_queue(struct dwc3_ep *dep, struct dwc3_request *req)
         *    core may not see the modified TRB(s).
         */
        if (usb_endpoint_xfer_isoc(dep->endpoint.desc) &&
-                       (dep->flags & DWC3_EP_BUSY)) {
+                       (dep->flags & DWC3_EP_BUSY) &&
+                       !(dep->flags & DWC3_EP_MISSED_ISOC)) {
                WARN_ON_ONCE(!dep->resource_index);
                ret = __dwc3_gadget_kick_transfer(dep, dep->resource_index,
                                false);