From: John Youn <johnyoun@synopsys.com>
Date: Mon, 23 May 2016 18:32:45 +0000 (-0700)
Subject: UPSTREAM: usb: dwc3: gadget: Fix truncated cast issue
X-Git-Tag: firefly_0821_release~1799
X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=9557d798b3b41cb52f708eb57cd5246a2cd747a3;p=firefly-linux-kernel-4.4.55.git

UPSTREAM: usb: dwc3: gadget: Fix truncated cast issue

From sparse:
warning: cast truncates bits from constant value (100 becomes 0)

The DWC3_TRB_NUM constant is too big for u8. Do the calculation a
slightly different way that should still be optimized out for the case
where DWC3_TRB_NUM == 256.

Change-Id: If6f9d66a7545230b0d0f21ab05dacd0f572f10b6
Signed-off-by: John Youn <johnyoun@synopsys.com>
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
Signed-off-by: Wu Liang feng <wulf@rock-chips.com>
(cherry picked from commit 3de2685f0c395a56b909dbefd40fb287c9df31b2)
---

diff --git a/drivers/usb/dwc3/gadget.c b/drivers/usb/dwc3/gadget.c
index c8c07f667636..cbf90aeb03a1 100644
--- a/drivers/usb/dwc3/gadget.c
+++ b/drivers/usb/dwc3/gadget.c
@@ -882,7 +882,7 @@ static u32 dwc3_calc_trbs_left(struct dwc3_ep *dep)
 	}
 
 	trbs_left = dep->trb_dequeue - dep->trb_enqueue;
-	trbs_left %= DWC3_TRB_NUM;
+	trbs_left &= (DWC3_TRB_NUM - 1);
 
 	if (dep->trb_dequeue < dep->trb_enqueue)
 		trbs_left--;