spin_unlock_bh(&host->lock);
}
-/*
- * Helper function for card detection
- */
-static void wbsd_detect_card(unsigned long data)
-{
- struct wbsd_host *host = (struct wbsd_host*)data;
-
- BUG_ON(host == NULL);
-
- DBG("Executing card detection\n");
-
- mmc_detect_change(host->mmc, 0);
-}
-
/*
* Tasklets
*/
DBG("Card inserted\n");
host->flags |= WBSD_FCARD_PRESENT;
+ spin_unlock(&host->lock);
+
/*
* Delay card detection to allow electrical connections
* to stabilise.
*/
- mod_timer(&host->detect_timer, jiffies + HZ/2);
+ mmc_detect_change(host->mmc, msecs_to_jiffies(500));
}
-
- spin_unlock(&host->lock);
+ else
+ spin_unlock(&host->lock);
}
else if (host->flags & WBSD_FCARD_PRESENT)
{
/*
* Set up timers
*/
- init_timer(&host->detect_timer);
- host->detect_timer.data = (unsigned long)host;
- host->detect_timer.function = wbsd_detect_card;
-
init_timer(&host->ignore_timer);
host->ignore_timer.data = (unsigned long)host;
host->ignore_timer.function = wbsd_reset_ignore;
BUG_ON(host == NULL);
del_timer_sync(&host->ignore_timer);
- del_timer_sync(&host->detect_timer);
mmc_free_host(mmc);