[U-Boot] [PATCH] mmc: add host_caps checking avoid switch card improperly

Macpaul Lin macpaul at gmail.com
Mon Nov 28 06:51:57 CET 2011


Hi Andy,

2011/11/26 Andy Fleming <afleming at gmail.com>

> On Thu, Nov 17, 2011 at 3:31 AM, Macpaul Lin <macpaul at andestech.com>
> wrote:
> > Add a host capability checking to avoid the mmc stack
> > switch the card to HIGHSPEED mode when the card supports
> > HIGHSPEED while the host doesn't.
> > +       if (!((mmc->host_caps & MMC_MODE_HS_52MHz) ||
> > +               (mmc->host_caps & MMC_MODE_HS)))
> > +               return 0;
> > +
>

I wrote this is because I've thought that SD cards usually work at 50MHz
when they under
high speed mode (MMC_MODE_HS), and MMC cards usually work at 52MHz when
they are under high speed mode.
I'm not sure if one controller support HS_52MHz for MMC cards will
definitely
support SD cards under 50MHz.
If I'm wrong for the above please correct me.

Hence I wrote this to force them working under low speed to avoid problem
occur.

But I think you're correct, we should use "&&" logic here until there is
really a problem for
the unbelievable situation I mentioned above that happened. :-p


>  Isn't this the wrong logic? It seems like you don't want to switch
> unless both support high speed. But this logic says to switch if
> either one does.
>
> Shouldn't it be:
>
> if (!((mmc->host_caps & MMC_MODE_HS_52MHz) &&
>       (mmc->host_caps & MMC_MODE_HS)))
>    return 0;
>
> ?
>
>
I'll send patch v2 by using your logic later.
Thanks!


-- 
Best regards,
Macpaul Lin


More information about the U-Boot mailing list