*/
 #define readx_poll_timeout(op, addr, val, cond, sleep_us, timeout_us)  \
 ({ \
-       ktime_t timeout = ktime_add_us(ktime_get(), timeout_us); \
-       might_sleep_if(sleep_us); \
+       u64 __timeout_us = (timeout_us); \
+       unsigned long __sleep_us = (sleep_us); \
+       ktime_t __timeout = ktime_add_us(ktime_get(), __timeout_us); \
+       might_sleep_if((__sleep_us) != 0); \
        for (;;) { \
                (val) = op(addr); \
                if (cond) \
                        break; \
-               if (timeout_us && ktime_compare(ktime_get(), timeout) > 0) { \
+               if (__timeout_us && \
+                   ktime_compare(ktime_get(), __timeout) > 0) { \
                        (val) = op(addr); \
                        break; \
                } \
-               if (sleep_us) \
-                       usleep_range((sleep_us >> 2) + 1, sleep_us); \
+               if (__sleep_us) \
+                       usleep_range((__sleep_us >> 2) + 1, __sleep_us); \
        } \
        (cond) ? 0 : -ETIMEDOUT; \
 })
  */
 #define readx_poll_timeout_atomic(op, addr, val, cond, delay_us, timeout_us) \
 ({ \
-       ktime_t timeout = ktime_add_us(ktime_get(), timeout_us); \
+       u64 __timeout_us = (timeout_us); \
+       unsigned long __delay_us = (delay_us); \
+       ktime_t __timeout = ktime_add_us(ktime_get(), __timeout_us); \
        for (;;) { \
                (val) = op(addr); \
                if (cond) \
                        break; \
-               if (timeout_us && ktime_compare(ktime_get(), timeout) > 0) { \
+               if (__timeout_us && \
+                   ktime_compare(ktime_get(), __timeout) > 0) { \
                        (val) = op(addr); \
                        break; \
                } \
-               if (delay_us) \
-                       udelay(delay_us);       \
+               if (__delay_us) \
+                       udelay(__delay_us);     \
        } \
        (cond) ? 0 : -ETIMEDOUT; \
 })