UPSTREAM: usb: dwc3: gadget: Account for max size in TRB space
[firefly-linux-kernel-4.4.55.git] / drivers / usb / dwc3 / gadget.c
index a93b42973b9792eba3fdb24ca27bfa2bd87715f8..09f61997b657bba1bdc95a9261ea68d4fb8fbc6c 100644 (file)
@@ -845,6 +845,7 @@ static void dwc3_prepare_one_trb(struct dwc3_ep *dep,
 static u32 dwc3_calc_trbs_left(struct dwc3_ep *dep)
 {
        struct dwc3_trb         *tmp;
+       u8                      trbs_left;
 
        /*
         * If enqueue & dequeue are equal than it is either full or empty.
@@ -864,7 +865,10 @@ static u32 dwc3_calc_trbs_left(struct dwc3_ep *dep)
                return DWC3_TRB_NUM - 1;
        }
 
-       return dep->trb_dequeue - dep->trb_enqueue;
+       trbs_left = dep->trb_dequeue - dep->trb_enqueue;
+       trbs_left %= DWC3_TRB_NUM;
+
+       return trbs_left;
 }
 
 static void dwc3_prepare_one_trb_sg(struct dwc3_ep *dep,