aboutsummaryrefslogtreecommitdiff
path: root/drivers/mfd
diff options
context:
space:
mode:
authorAndy Green <andy@openmoko.com>2008-11-19 17:09:57 +0000
committerAndy Green <agreen@pads.home.warmcat.com>2008-11-19 17:09:57 +0000
commit0c242c8f3638cf066b711a72fd0f3d16b31b1330 (patch)
tree586b762547f62caef11ee1100613fdaeb4119fa1 /drivers/mfd
parent401b3513cfd1495fee115a21a5be0c7020d862c3 (diff)
fix-scard-stop-on-resume.patch
Reported-by: Ville-Pekka Vainio <vpivaini@cs.helsinki.fi> The reporter noticed SD Card clock is running again after resume. After looking at the code I saw I missed two tricks, this will force it off after resume and will do better generally depending on what the last SD Card packet was. Since bulk read packet is normally last action (which set the clock off even without this) the old patch worked for normal cases. But after resume, the last packet on the wire was not a bulk transfer and we didn't take care about the clock then. Signed-off-by: Andy Green <andy@openmoko.com>
Diffstat (limited to 'drivers/mfd')
-rw-r--r--drivers/mfd/glamo/glamo-mci.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/drivers/mfd/glamo/glamo-mci.c b/drivers/mfd/glamo/glamo-mci.c
index 67bb815c065..93f4074cf0a 100644
--- a/drivers/mfd/glamo/glamo-mci.c
+++ b/drivers/mfd/glamo/glamo-mci.c
@@ -619,12 +619,9 @@ done:
host->complete_what = COMPLETION_NONE;
host->mrq = NULL;
mmc_request_done(host->mmc, cmd->mrq);
- return;
-
bail:
/* stop the clock to card */
__glamo_mci_fix_card_div(host, -1);
- return;
}
static void glamo_mci_request(struct mmc_host *mmc, struct mmc_request *mrq)
@@ -690,6 +687,9 @@ static void glamo_mci_set_ios(struct mmc_host *mmc, struct mmc_ios *ios)
host->real_rate = __glamo_mci_set_card_clock(host, ios->clock, &div);
host->clk_div = div;
+ /* stop the clock to card, because we are idle until transfer */
+ __glamo_mci_fix_card_div(host, -1);
+
if ((ios->power_mode == MMC_POWER_ON) ||
(ios->power_mode == MMC_POWER_UP)) {
dev_info(&host->pdev->dev,