* [PATCH v2] mmc: lower init clock frequency to 300kHz
@ 2010-01-01 23:11 Ben Nizette
2010-01-06 7:01 ` Pavel Machek
0 siblings, 1 reply; 5+ messages in thread
From: Ben Nizette @ 2010-01-01 23:11 UTC (permalink / raw)
To: Pierre Ossman
Cc: Adrian Hunter, linux-mmc, linux-kernel, Matt Fleming,
Hein_Tibosch, Sascha Hauer
A good few months ago, commit
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
broke a few setups with cards which don't quite adhere to the MMC spec - 400kHz is just too fast for them. In my testing, all of the cards which fail at 400kHz are OK by about 350Khz but this patch drops the floor to 300 to be on the safe side.
Dropping the floor also means that the warning will trigger on some valid setups, albeit ones which won't run particularly crappy cards. This patch then slightly softens the language of said warning to make it clear it isn't always a problem.
V1 of this patch dropped the floor all the way to 50kHz on the basis that it was only for a few 100 bytes so that very low speed shouldn't matter. After some discussion [1] the consensus was that 50 was too slow after all so this patch is a bit more sensible.
Signed-off-by: Ben Nizette <bn@niasdigital.com>
[1] http://lkml.org/lkml/2009/7/1/529
---
diff --git a/drivers/mmc/core/core.c b/drivers/mmc/core/core.c
index 7dab2e5..49f0eae 100644
--- a/drivers/mmc/core/core.c
+++ b/drivers/mmc/core/core.c
@@ -891,12 +891,12 @@ 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 "
+ if (host->f_min > 300000) {
+ pr_warning("%s: Minimum clock frequency may be too high for "
"identification mode\n", mmc_hostname(host));
host->ios.clock = host->f_min;
} else
- host->ios.clock = 400000;
+ host->ios.clock = 300000;
host->ios.power_mode = MMC_POWER_ON;
mmc_set_ios(host);
^ permalink raw reply related [flat|nested] 5+ messages in thread* Re: [PATCH v2] mmc: lower init clock frequency to 300kHz
2010-01-01 23:11 [PATCH v2] mmc: lower init clock frequency to 300kHz Ben Nizette
@ 2010-01-06 7:01 ` Pavel Machek
2010-01-06 9:01 ` Hein_Tibosch
0 siblings, 1 reply; 5+ messages in thread
From: Pavel Machek @ 2010-01-06 7:01 UTC (permalink / raw)
To: Ben Nizette
Cc: Pierre Ossman, Adrian Hunter, linux-mmc, linux-kernel,
Matt Fleming, Hein_Tibosch, Sascha Hauer
On Sat 2010-01-02 10:11:10, Ben Nizette wrote:
>
> A good few months ago, commit
>
> 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
>
> broke a few setups with cards which don't quite adhere to the MMC spec - 400kHz is just too fast for them. In my testing, all of the cards which fail at 400kHz are OK by about 350Khz but this patch drops the floor to 300 to be on the safe side.
>
> Dropping the floor also means that the warning will trigger on some valid setups, albeit ones which won't run particularly crappy cards. This patch then slightly softens the language of said warning to make it clear it isn't always a problem.
>
> V1 of this patch dropped the floor all the way to 50kHz on the basis that it was only for a few 100 bytes so that very low speed shouldn't matter. After some discussion [1] the consensus was that 50 was too slow after all so this patch is a bit more sensible.
>
(please wrap).
> @@ -891,12 +891,12 @@ 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 "
> + if (host->f_min > 300000) {
> + pr_warning("%s: Minimum clock frequency may be too high for "
> "identification mode\n", mmc_hostname(host));
> host->ios.clock = host->f_min;
> } else
> - host->ios.clock = 400000;
> + host->ios.clock = 300000;
>
> host->ios.power_mode = MMC_POWER_ON;
> mmc_set_ios(host);
Machine with minimum clock of 1MHz is clearly broken, yet you issue
"soft" warning.
What about:
if (f_min > 400k)
print existing warning
else if (f_min > 300k)
print warning 'if your card does not work, its broken, but
your host is unhelpful'
clock = f_min
if (clock < 3o0)
clock = 300
?
Pavel
--
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
^ permalink raw reply [flat|nested] 5+ messages in thread* Re: [PATCH v2] mmc: lower init clock frequency to 300kHz
2010-01-06 7:01 ` Pavel Machek
@ 2010-01-06 9:01 ` Hein_Tibosch
0 siblings, 0 replies; 5+ messages in thread
From: Hein_Tibosch @ 2010-01-06 9:01 UTC (permalink / raw)
To: Pavel Machek
Cc: Ben Nizette, Pierre Ossman, Adrian Hunter, linux-mmc,
linux-kernel, Matt Fleming, Sascha Hauer
On 6-1-2010 15:01, Pavel Machek wrote:
> Machine with minimum clock of 1MHz is clearly broken, yet you issue
> "soft" warning.
>
> What about:
>
> if (f_min > 400k)
> print existing warning
> else if (f_min > 300k)
> print warning 'if your card does not work, its broken, but
> your host is unhelpful'
> clock = f_min
> if (clock < 3o0)
> clock = 300
>
> ?
>
Later in this thread I mentioned that initialization at 300 Khz is
too fast for some platforms/cards (avr32 AP7000/main-stream cards).
They will report CRC-errors so the above won't work.
I have looked at the time it will take to exchange the initial data (about
85 bytes), using different busses and frequencies:
Intface: 8-bits 4-bits SPI
Bus-freq:
400000 (Hz) 0.213 0.425 1.700 (ms)
300000 0.283 0.567 2.267
200000 0.425 0.850 3.400
100000 0.850 1.700 6.800
50000 1.700 3.400 13.600
100 850 1700 6800
These are netto times, without the msleep's for power-up and without
overhead.
Looking at this table, I would use a fixed bottom of 100 Khz:
if (f_min > 400k)
print existing warning
clock = max (100k, host->f_min);
Regards, Hein
^ permalink raw reply [flat|nested] 5+ messages in thread
[parent not found: <1246492196.2980.17.camel@linux-51e8.site>]
end of thread, other threads:[~2010-01-06 9:11 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-01-01 23:11 [PATCH v2] mmc: lower init clock frequency to 300kHz Ben Nizette
2010-01-06 7:01 ` Pavel Machek
2010-01-06 9:01 ` Hein_Tibosch
[not found] <1246492196.2980.17.camel@linux-51e8.site>
[not found] ` <20090702135849.21370282@hskinnemoen-d830>
[not found] ` <1246537056.2980.60.camel@linux-51e8.site>
[not found] ` <4B3E570C.2060602@yahoo.es>
[not found] ` <63809451-ED1D-487A-AE63-F72B23D136D8@niasdigital.com>
[not found] ` <4B3F019F.6010306@yahoo.es>
2010-01-02 9:07 ` Ben Nizette
2010-01-02 12:08 ` Pierre Ossman
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox