diff options
Diffstat (limited to 'target/linux/s3c24xx/patches-2.6.24/1247-fix-glamo-mci-ensure-more-than-74-clocks-after-power.patch')
-rw-r--r-- | target/linux/s3c24xx/patches-2.6.24/1247-fix-glamo-mci-ensure-more-than-74-clocks-after-power.patch | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/target/linux/s3c24xx/patches-2.6.24/1247-fix-glamo-mci-ensure-more-than-74-clocks-after-power.patch b/target/linux/s3c24xx/patches-2.6.24/1247-fix-glamo-mci-ensure-more-than-74-clocks-after-power.patch new file mode 100644 index 0000000000..defef570ba --- /dev/null +++ b/target/linux/s3c24xx/patches-2.6.24/1247-fix-glamo-mci-ensure-more-than-74-clocks-after-power.patch @@ -0,0 +1,52 @@ +From 8533927964761f4e2078ccd8607b90f5acc60b93 Mon Sep 17 00:00:00 2001 +From: Andy Green <andy@openmoko.com> +Date: Thu, 24 Jul 2008 00:04:54 +0100 +Subject: [PATCH] fix-glamo-mci-ensure-more-than-74-clocks-after-power.patch + +We are meant to run SD_CLK a little while after power-on for the SD +Card, but with the no idle clock changes we didn't take care about it. + +This makes us sleep a little bit before disabling clock if we just +powered up the SD Card. + +Signed-off-by: Andy Green <andy@openmoko.com> +--- + drivers/mfd/glamo/glamo-mci.c | 8 ++++++++ + 1 files changed, 8 insertions(+), 0 deletions(-) + +diff --git a/drivers/mfd/glamo/glamo-mci.c b/drivers/mfd/glamo/glamo-mci.c +index 264a6bc..c2351e2 100644 +--- a/drivers/mfd/glamo/glamo-mci.c ++++ b/drivers/mfd/glamo/glamo-mci.c +@@ -684,6 +684,7 @@ static void glamo_mci_set_ios(struct mmc_host *mmc, struct mmc_ios *ios) + struct glamo_mci_host *host = mmc_priv(mmc); + int n = 0; + int div; ++ int powering = 0; + + /* Set power */ + switch(ios->power_mode) { +@@ -699,6 +700,7 @@ static void glamo_mci_set_ios(struct mmc_host *mmc, struct mmc_ios *ios) + glamo_engine_enable(glamo_mci_def_pdata.pglamo, + GLAMO_ENGINE_MMC); + glamo_mci_reset(host); ++ powering = 1; + break; + + case MMC_POWER_OFF: +@@ -716,6 +718,12 @@ 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; + ++ /* after power-up, we are meant to give it >= 74 clocks so it can ++ * initialize itself. Doubt any modern cards need it but anyway... ++ */ ++ if (powering) ++ msleep(1); ++ + if (!sd_idleclk) + /* stop the clock to card, because we are idle until transfer */ + __glamo_mci_fix_card_div(host, -1); +-- +1.5.6.5 + |