Messages in this thread | | | Subject | Re: [PATCH] MMC Core: Drop initialization frequency floor to 50kHz | From | Ben Nizette <> | Date | Thu, 02 Jul 2009 21:10:50 +1000 |
| |
On Thu, 2009-07-02 at 09:18 +0200, Pierre Ossman wrote:
> > 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?
Before this patch my controller used ~135kHz, I was just basing the floor off that. If the spec says 400 and this is just to work around broken cards then sure, 300kHz sounds a good plan.
> > 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.
'scope confirmed that when 400kHz is requested my controller is giving the card ~397kHz.
> > > 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.
For sure, it's just that if the floor is 50kHz then pretty much /every/ controller is a 'fast' controller and the warning's redundant. If you just drop the 400k to 300k, I agree the warning's a good thing to have.
Cheers, --Ben.
> > Rgds
| |