[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20090702091808.6108d0a9@mjolnir.ossman.eu>
Date: Thu, 2 Jul 2009 09:18:08 +0200
From: Pierre Ossman <pierre@...man.eu>
To: Ben Nizette <bn@...sdigital.com>
Cc: s.hauer@...gutronix.de,
linux-kernel <linux-kernel@...r.kernel.org>,
kernel <kernel@...32linux.org>, Ben Nizette <bn@...sdigital.com>
Subject: Re: [PATCH] MMC Core: Drop initialization frequency floor to 50kHz
On Thu, 02 Jul 2009 09:49:56 +1000
Ben Nizette <bn@...sdigital.com> wrote:
> Patch
>
> commit 8dfd0374be84793360db7fff2e635d2cd3bbcb21
> Author: Sascha Hauer <s.hauer@...gutronix.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@...sdigital.com>
> ---
50 kHz seems very low. I'd be more comfortable if we deviate from
specified behaviour as little as possible, say 300 kHz. Has anyone
checked what USB readers use?
And have you confirmed that the card is actually getting 350 kHz when
it fails? Perhaps there is a bug that is causing it to actually run at
a higher frequency.
> 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);
>
I like getting that warning for too fast controllers. It makes it
easier to spot possible problems.
Rgds
--
-- Pierre Ossman
WARNING: This correspondence is being monitored by the
Swedish government. Make sure your server uses encryption
for SMTP traffic and consider using PGP for end-to-end
encryption.
Download attachment "signature.asc" of type "application/pgp-signature" (199 bytes)
Powered by blists - more mailing lists