static int sbefifo_request_reset(struct sbefifo *sbefifo)
 {
        struct device *dev = &sbefifo->fsi_dev->dev;
-       u32 status, timeout;
+       unsigned long end_time;
+       u32 status;
        int rc;
 
        dev_dbg(dev, "Requesting FIFO reset\n");
        }
 
        /* Wait for it to complete */
-       for (timeout = 0; timeout < SBEFIFO_RESET_TIMEOUT; timeout++) {
+       end_time = jiffies + msecs_to_jiffies(SBEFIFO_RESET_TIMEOUT);
+       while (!time_after(jiffies, end_time)) {
                rc = sbefifo_regr(sbefifo, SBEFIFO_UP | SBEFIFO_STS, &status);
                if (rc) {
                        dev_err(dev, "Failed to read UP fifo status during reset"
                        return 0;
                }
 
-               msleep(1);
+               cond_resched();
        }
        dev_err(dev, "FIFO reset timed out\n");