start = jiffies;
        while (rdebi(av7110, DEBINOSWAP, COMMAND, 0, 2 )) {
-               msleep(1);
                if (time_after(jiffies, start + ARM_WAIT_FREE)) {
                        printk(KERN_ERR "dvb-ttpci: %s(): timeout waiting for COMMAND idle\n", __FUNCTION__);
                        return -ETIMEDOUT;
                }
+               msleep(1);
        }
 
        wdebi(av7110, DEBINOSWAP, COM_IF_LOCK, 0xffff, 2);
 #ifndef _NOHANDSHAKE
        start = jiffies;
        while (rdebi(av7110, DEBINOSWAP, HANDSHAKE_REG, 0, 2 )) {
-               msleep(1);
                if (time_after(jiffies, start + ARM_WAIT_SHAKE)) {
                        printk(KERN_ERR "dvb-ttpci: %s(): timeout waiting for HANDSHAKE_REG\n", __FUNCTION__);
                        return -ETIMEDOUT;
                }
+               msleep(1);
        }
 #endif
 
 #ifdef COM_DEBUG
        start = jiffies;
        while (rdebi(av7110, DEBINOSWAP, COMMAND, 0, 2 )) {
-               msleep(1);
                if (time_after(jiffies, start + ARM_WAIT_FREE)) {
                        printk(KERN_ERR "dvb-ttpci: %s(): timeout waiting for COMMAND %d to complete\n",
                               __FUNCTION__,
                               );
                        return -ETIMEDOUT;
                }
+               msleep(1);
        }
 
        stat = rdebi(av7110, DEBINOSWAP, MSGSTATE, 0, 2);
 
        start = jiffies;
        while (rdebi(av7110, DEBINOSWAP, COMMAND, 0, 2)) {
-#ifdef _NOHANDSHAKE
-               msleep(1);
-#endif
                if (time_after(jiffies, start + ARM_WAIT_FREE)) {
                        printk(KERN_ERR "%s: timeout waiting for COMMAND to complete\n", __FUNCTION__);
                        up(&av7110->dcomlock);
                        return -ETIMEDOUT;
                }
+#ifdef _NOHANDSHAKE
+               msleep(1);
+#endif
        }
 
 #ifndef _NOHANDSHAKE
        start = jiffies;
        while (rdebi(av7110, DEBINOSWAP, HANDSHAKE_REG, 0, 2 )) {
-               msleep(1);
                if (time_after(jiffies, start + ARM_WAIT_SHAKE)) {
                        printk(KERN_ERR "%s: timeout waiting for HANDSHAKE_REG\n", __FUNCTION__);
                        up(&av7110->dcomlock);
                        return -ETIMEDOUT;
                }
+               msleep(1);
        }
 #endif
 
                return -ERESTARTSYS;
        start = jiffies;
        while (rdebi(av7110, DEBINOSWAP, BUFF1_BASE, 0, 2)) {
-               msleep(1);
                if (time_after(jiffies, start + ARM_WAIT_OSD)) {
                        printk(KERN_ERR "dvb-ttpci: %s(): timeout waiting for BUFF1_BASE == 0\n",
                               __FUNCTION__);
                        up(&av7110->dcomlock);
                        return -ETIMEDOUT;
                }
+               msleep(1);
        }
        up(&av7110->dcomlock);
        return 0;
 
        start = jiffies;
        while (rdebi(av7110, DEBINOSWAP, BUFF1_BASE, 0, 2)) {
-               msleep(1);
                if (time_after(jiffies, start + ARM_WAIT_OSD)) {
                        printk(KERN_ERR "dvb-ttpci: %s: timeout waiting for BUFF1_BASE == 0\n",
                               __FUNCTION__);
                        up(&av7110->dcomlock);
                        return -ETIMEDOUT;
                }
+               msleep(1);
        }
 #ifndef _NOHANDSHAKE
        start = jiffies;
        while (rdebi(av7110, DEBINOSWAP, HANDSHAKE_REG, 0, 2)) {
-               msleep(1);
                if (time_after(jiffies, start + ARM_WAIT_SHAKE)) {
                        printk(KERN_ERR "dvb-ttpci: %s: timeout waiting for HANDSHAKE_REG\n",
                               __FUNCTION__);
                        up(&av7110->dcomlock);
                        return -ETIMEDOUT;
                }
+               msleep(1);
        }
 #endif
        for (i = 0; i < length / 2; i++)