Skip to content

Commit

Permalink
[MMC] Clean up wbsd detection handling
Browse files Browse the repository at this point in the history
The wbsd driver's card detection routing is a bit of a mess. This
patch cleans up the routine and makes it a bit more comprihensible.

Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
  • Loading branch information
Pierre Ossman authored and Russell King committed Sep 12, 2005
1 parent e062c8a commit 210ce2a
Showing 1 changed file with 12 additions and 17 deletions.
29 changes: 12 additions & 17 deletions drivers/mmc/wbsd.c
Original file line number Diff line number Diff line change
Expand Up @@ -1136,6 +1136,7 @@ static void wbsd_tasklet_card(unsigned long param)
{
struct wbsd_host* host = (struct wbsd_host*)param;
u8 csr;
int delay = -1;

spin_lock(&host->lock);

Expand All @@ -1155,16 +1156,8 @@ 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.
*/
mmc_detect_change(host->mmc, msecs_to_jiffies(500));
delay = 500;
}
else
spin_unlock(&host->lock);
}
else if (host->flags & WBSD_FCARD_PRESENT)
{
Expand All @@ -1181,15 +1174,17 @@ static void wbsd_tasklet_card(unsigned long param)
tasklet_schedule(&host->finish_tasklet);
}

/*
* Unlock first since we might get a call back.
*/
spin_unlock(&host->lock);

mmc_detect_change(host->mmc, 0);
delay = 0;
}
else
spin_unlock(&host->lock);

/*
* Unlock first since we might get a call back.
*/

spin_unlock(&host->lock);

if (delay != -1)
mmc_detect_change(host->mmc, msecs_to_jiffies(delay));
}

static void wbsd_tasklet_fifo(unsigned long param)
Expand Down

0 comments on commit 210ce2a

Please sign in to comment.