* (at your option) any later version.
  */
 
+#include <linux/delay.h>
+#include <linux/jiffies.h>
 #include <linux/list.h>
 #include <linux/module.h>
 #include <linux/netdevice.h>
 {
        int i;
        int ret;
+       unsigned long timeout;
 
        /* Set all ports to the disabled state. */
        for (i = 0; i < 6; i++) {
        }
 
        /* Wait for transmit queues to drain. */
-       msleep(2);
+       usleep_range(2000, 4000);
 
        /* Reset the switch. */
        REG_WRITE(REG_GLOBAL, 0x0a, 0xa130);
 
        /* Wait up to one second for reset to complete. */
-       for (i = 0; i < 1000; i++) {
+       timeout = jiffies + 1 * HZ;
+       while (time_before(jiffies, timeout)) {
                ret = REG_READ(REG_GLOBAL, 0x00);
                if ((ret & 0x8000) == 0x0000)
                        break;
 
-               msleep(1);
+               usleep_range(1000, 2000);
        }
-       if (i == 1000)
+       if (time_after(jiffies, timeout))
                return -ETIMEDOUT;
 
        return 0;
 
  * (at your option) any later version.
  */
 
+#include <linux/delay.h>
+#include <linux/jiffies.h>
 #include <linux/list.h>
 #include <linux/module.h>
 #include <linux/netdevice.h>
 {
        int i;
        int ret;
+       unsigned long timeout;
 
        /* Set all ports to the disabled state. */
        for (i = 0; i < 8; i++) {
        }
 
        /* Wait for transmit queues to drain. */
-       msleep(2);
+       usleep_range(2000, 4000);
 
        /* Reset the switch. */
        REG_WRITE(REG_GLOBAL, 0x04, 0xc400);
 
        /* Wait up to one second for reset to complete. */
-       for (i = 0; i < 1000; i++) {
+       timeout = jiffies + 1 * HZ;
+       while (time_before(jiffies, timeout)) {
                ret = REG_READ(REG_GLOBAL, 0x00);
                if ((ret & 0xc800) == 0xc800)
                        break;
 
-               msleep(1);
+               usleep_range(1000, 2000);
        }
-       if (i == 1000)
+       if (time_after(jiffies, timeout))
                return -ETIMEDOUT;
 
        return 0;
 
  * (at your option) any later version.
  */
 
+#include <linux/delay.h>
+#include <linux/jiffies.h>
 #include <linux/list.h>
 #include <linux/module.h>
 #include <linux/netdevice.h>
 {
        int i;
        int ret;
+       unsigned long timeout;
 
        /* Set all ports to the disabled state. */
        for (i = 0; i < 11; i++) {
        }
 
        /* Wait for transmit queues to drain. */
-       msleep(2);
+       usleep_range(2000, 4000);
 
        /* Reset the switch. */
        REG_WRITE(REG_GLOBAL, 0x04, 0xc400);
 
        /* Wait up to one second for reset to complete. */
-       for (i = 0; i < 1000; i++) {
+       timeout = jiffies + 1 * HZ;
+       while (time_before(jiffies, timeout)) {
                ret = REG_READ(REG_GLOBAL, 0x00);
                if ((ret & 0xc800) == 0xc800)
                        break;
 
-               msleep(1);
+               usleep_range(1000, 2000);
        }
-       if (i == 1000)
+       if (time_after(jiffies, timeout))
                return -ETIMEDOUT;
 
        return 0;
 
  * (at your option) any later version.
  */
 
+#include <linux/delay.h>
+#include <linux/jiffies.h>
 #include <linux/list.h>
 #include <linux/module.h>
 #include <linux/netdevice.h>
 static int mv88e6xxx_ppu_disable(struct dsa_switch *ds)
 {
        int ret;
-       int i;
+       unsigned long timeout;
 
        ret = REG_READ(REG_GLOBAL, 0x04);
        REG_WRITE(REG_GLOBAL, 0x04, ret & ~0x4000);
 
-       for (i = 0; i < 1000; i++) {
+       timeout = jiffies + 1 * HZ;
+       while (time_before(jiffies, timeout)) {
                ret = REG_READ(REG_GLOBAL, 0x00);
-               msleep(1);
+               usleep_range(1000, 2000);
                if ((ret & 0xc000) != 0xc000)
                        return 0;
        }
 static int mv88e6xxx_ppu_enable(struct dsa_switch *ds)
 {
        int ret;
-       int i;
+       unsigned long timeout;
 
        ret = REG_READ(REG_GLOBAL, 0x04);
        REG_WRITE(REG_GLOBAL, 0x04, ret | 0x4000);
 
-       for (i = 0; i < 1000; i++) {
+       timeout = jiffies + 1 * HZ;
+       while (time_before(jiffies, timeout)) {
                ret = REG_READ(REG_GLOBAL, 0x00);
-               msleep(1);
+               usleep_range(1000, 2000);
                if ((ret & 0xc000) == 0xc000)
                        return 0;
        }