return;
 
        dev = (struct rsi_91x_sdiodev *)adapter->rsi_dev;
+       sdio_claim_host(pfunction);
+       sdio_release_irq(pfunction);
+       sdio_release_host(pfunction);
+       mdelay(10);
 
-       dev->write_fail = 2;
        rsi_mac80211_detach(adapter);
+       mdelay(10);
 
-       sdio_claim_host(pfunction);
-       sdio_release_irq(pfunction);
-       sdio_disable_func(pfunction);
-       rsi_91x_deinit(adapter);
+       /* Reset Chip */
        rsi_reset_chip(adapter);
+
+       /* Resetting to take care of the case, where-in driver is re-loaded */
+       sdio_claim_host(pfunction);
        rsi_reset_card(pfunction);
+       sdio_disable_func(pfunction);
        sdio_release_host(pfunction);
+       dev->write_fail = 2;
+       rsi_91x_deinit(adapter);
+       rsi_dbg(ERR_ZONE, "##### RSI SDIO device disconnected #####\n");
+
 }
 
 #ifdef CONFIG_PM