Messages in this thread Patch in this message | | | Subject | [PATCH] MMC Core: Drop initialization frequency floor to 50kHz | From | Ben Nizette <> | Date | Thu, 02 Jul 2009 09:49:56 +1000 |
| |
Patch
commit 8dfd0374be84793360db7fff2e635d2cd3bbcb21 Author: Sascha Hauer <s.hauer@pengutronix.de> Date: Thu Apr 9 08:32:02 2009 +0200
MMC core: limit minimum initialization frequency to 400kHz
Was recently merged. This is too fast for at least one setup permutation - the one on my desk which through trial and error won't initialise at anything above ~350kHz (older Sandisk 256MB SD on atmel-mci).
To avoid a string of "just found card X which requires clock (current_clock - epsilon)" this patch drops the floor right down to 50kHz. This is about the slowest rate before which the discovery process takes a noticeable slowdown.
Signed-off-by: Ben Nizette <bn@niasdigital.com> --- diff --git a/drivers/mmc/core/core.c b/drivers/mmc/core/core.c index d84c880..6ee1931 100644 --- a/drivers/mmc/core/core.c +++ b/drivers/mmc/core/core.c @@ -708,12 +708,13 @@ static void mmc_power_up(struct mmc_host *host) */ mmc_delay(10); - if (host->f_min > 400000) { - pr_warning("%s: Minimum clock frequency too high for " - "identification mode\n", mmc_hostname(host)); - host->ios.clock = host->f_min; - } else - host->ios.clock = 400000; + /* + * Card discovery is typically done at the controller's minimum + * allowable frequency but for some controllers this is minimum + * is unreasonably slow. In that case we limit slow clock rate + * to 50KHz. + */ + host->ios.clock = max(host->f_min, 50000); host->ios.power_mode = MMC_POWER_ON; mmc_set_ios(host);
| |