static int btmrvl_sdio_verify_fw_download(struct btmrvl_sdio_card *card,
                                                                int pollnum)
 {
-       int ret = -ETIMEDOUT;
        u16 firmwarestat;
-       unsigned int tries;
+       int tries, ret;
 
         /* Wait for firmware to become ready */
        for (tries = 0; tries < pollnum; tries++) {
                if (ret < 0)
                        continue;
 
-               if (firmwarestat == FIRMWARE_READY) {
-                       ret = 0;
-                       break;
-               } else {
-                       msleep(10);
-               }
+               if (firmwarestat == FIRMWARE_READY)
+                       return 0;
+
+               msleep(10);
        }
 
-       return ret;
+       return -ETIMEDOUT;
 }
 
 static int btmrvl_sdio_download_helper(struct btmrvl_sdio_card *card)
 
        sdio_release_host(card->func);
 
+       /*
+        * winner or not, with this test the FW synchronizes when the
+        * module can continue its initialization
+        */
        if (btmrvl_sdio_verify_fw_download(card, pollnum)) {
                BT_ERR("FW failed to be active in time!");
                return -ETIMEDOUT;
                goto unreg_dev;
        }
 
-       msleep(100);
-
        btmrvl_sdio_enable_host_int(card);
 
        priv = btmrvl_add_card(card);