usb: dwc3: make macros safe to expression arguments
authorRoger Quadros <rogerq@ti.com>
Thu, 6 Apr 2017 10:14:28 +0000 (13:14 +0300)
committerFelipe Balbi <felipe.balbi@linux.intel.com>
Tue, 11 Apr 2017 07:58:18 +0000 (10:58 +0300)
We must make sure that our macros are safe against expressions passed
as arguments. We have seen one problem where GTXFIFOSIZ(n) was failing
when passed the expression (epnum >> 1) as argument. The problem was
caused by operator precedence between >> and *.

To make sure macros are safe, we just wrap argument with () when using
it.

Signed-off-by: Roger Quadros <rogerq@ti.com>
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
drivers/usb/dwc3/core.h

index fd640f11c0fecc1e1f41a8dc2ab4c3bdee6fe179..2fa768637f491473eeedb7491fef97ca74c30efc 100644 (file)
 #define DWC3_VER_NUMBER                0xc1a0
 #define DWC3_VER_TYPE          0xc1a4
 
-#define DWC3_GUSB2PHYCFG(n)    (0xc200 + (n * 0x04))
-#define DWC3_GUSB2I2CCTL(n)    (0xc240 + (n * 0x04))
+#define DWC3_GUSB2PHYCFG(n)    (0xc200 + ((n) * 0x04))
+#define DWC3_GUSB2I2CCTL(n)    (0xc240 + ((n) * 0x04))
 
-#define DWC3_GUSB2PHYACC(n)    (0xc280 + (n * 0x04))
+#define DWC3_GUSB2PHYACC(n)    (0xc280 + ((n) * 0x04))
 
-#define DWC3_GUSB3PIPECTL(n)   (0xc2c0 + (n * 0x04))
+#define DWC3_GUSB3PIPECTL(n)   (0xc2c0 + ((n) * 0x04))
 
-#define DWC3_GTXFIFOSIZ(n)     (0xc300 + (n * 0x04))
-#define DWC3_GRXFIFOSIZ(n)     (0xc380 + (n * 0x04))
+#define DWC3_GTXFIFOSIZ(n)     (0xc300 + ((n) * 0x04))
+#define DWC3_GRXFIFOSIZ(n)     (0xc380 + ((n) * 0x04))
 
-#define DWC3_GEVNTADRLO(n)     (0xc400 + (n * 0x10))
-#define DWC3_GEVNTADRHI(n)     (0xc404 + (n * 0x10))
-#define DWC3_GEVNTSIZ(n)       (0xc408 + (n * 0x10))
-#define DWC3_GEVNTCOUNT(n)     (0xc40c + (n * 0x10))
+#define DWC3_GEVNTADRLO(n)     (0xc400 + ((n) * 0x10))
+#define DWC3_GEVNTADRHI(n)     (0xc404 + ((n) * 0x10))
+#define DWC3_GEVNTSIZ(n)       (0xc408 + ((n) * 0x10))
+#define DWC3_GEVNTCOUNT(n)     (0xc40c + ((n) * 0x10))
 
 #define DWC3_GHWPARAMS8                0xc600
 #define DWC3_GFLADJ            0xc630
 #define DWC3_DGCMD             0xc714
 #define DWC3_DALEPENA          0xc720
 
-#define DWC3_DEP_BASE(n)       (0xc800 + (n * 0x10))
+#define DWC3_DEP_BASE(n)       (0xc800 + ((n) * 0x10))
 #define DWC3_DEPCMDPAR2                0x00
 #define DWC3_DEPCMDPAR1                0x04
 #define DWC3_DEPCMDPAR0                0x08
 #define DWC3_DEPCMD            0x0c
 
-#define DWC3_DEV_IMOD(n)       (0xca00 + (n * 0x4))
+#define DWC3_DEV_IMOD(n)       (0xca00 + ((n) * 0x4))
 
 /* OTG Registers */
 #define DWC3_OCFG              0xcc00
 #define DWC3_DEPCMD_CMD(x)             ((x) & 0xf)
 
 /* The EP number goes 0..31 so ep0 is always out and ep1 is always in */
-#define DWC3_DALEPENA_EP(n)            (1 << n)
+#define DWC3_DALEPENA_EP(n)            (1 << (n))
 
 #define DWC3_DEPCMD_TYPE_CONTROL       0
 #define DWC3_DEPCMD_TYPE_ISOC          1