summaryrefslogtreecommitdiff
path: root/drivers/mmc
diff options
context:
space:
mode:
authorRussell King <rmk@dyn-67.arm.linux.org.uk>2005-09-10 14:58:21 +0400
committerRussell King <rmk+kernel@arm.linux.org.uk>2005-09-10 14:58:21 +0400
commitc4a72cbdb39fd559988b16d118f7e5782935ff11 (patch)
treeddb9f7d19895498c19043dcc61cd79b8300aa214 /drivers/mmc
parent87fc767b832ef5a681a0ff9d203c3289bc3be2bf (diff)
downloadlinux-c4a72cbdb39fd559988b16d118f7e5782935ff11.tar.xz
[MMC] Add mmc_detect_change() delay support for wbsd driver
Convert wbsd to use the new delay functionality in mmc_detect_change() rather than implementing its own timer. Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'drivers/mmc')
-rw-r--r--drivers/mmc/wbsd.c27
1 files changed, 5 insertions, 22 deletions
diff --git a/drivers/mmc/wbsd.c b/drivers/mmc/wbsd.c
index a62c86fef5cc..e11e55dc8924 100644
--- a/drivers/mmc/wbsd.c
+++ b/drivers/mmc/wbsd.c
@@ -1112,20 +1112,6 @@ static void wbsd_reset_ignore(unsigned long data)
}
/*
- * 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
*/
@@ -1169,14 +1155,16 @@ static void wbsd_tasklet_card(unsigned long param)
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)
{
@@ -1409,10 +1397,6 @@ static int __devinit wbsd_alloc_mmc(struct device* dev)
/*
* 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;
@@ -1454,7 +1438,6 @@ static void __devexit wbsd_free_mmc(struct device* dev)
BUG_ON(host == NULL);
del_timer_sync(&host->ignore_timer);
- del_timer_sync(&host->detect_timer);
mmc_free_host(mmc);