[U-Boot] [RESEND 1/2] mmc:fix: Set mmc width according to MMC host capabilities

Lei Wen adrian.wenl at gmail.com
Thu Apr 19 16:27:16 CEST 2012


On Thu, Apr 19, 2012 at 8:39 PM, Lukasz Majewski <l.majewski at samsung.com> wrote:
> This patch sets the MMC width according to the MMC host capabilities.
> It turned out, that there are some targets (e.g. GONI), which are able
> to read data from SPI only at 4 bit mode.
> This patch restricts the width number according to the MMC host.
>
> Signed-off-by: Lukasz Majewski <l.majewski at samsung.com>
> Signed-off-by: Kyungmin Park <kyungmin.park at samsung.com>
> Cc: Andy Fleming <afleming at gmail.com>
> ---
>  drivers/mmc/mmc.c |    4 +++-
>  include/mmc.h     |    3 +++
>  2 files changed, 6 insertions(+), 1 deletions(-)
>
> diff --git a/drivers/mmc/mmc.c b/drivers/mmc/mmc.c
> index e70fa9f..618960e 100644
> --- a/drivers/mmc/mmc.c
> +++ b/drivers/mmc/mmc.c
> @@ -1199,7 +1199,9 @@ int mmc_startup(struct mmc *mmc)
>                else
>                        mmc_set_clock(mmc, 25000000);
>        } else {
> -               for (width = EXT_CSD_BUS_WIDTH_8; width >= 0; width--) {
> +               width = ((mmc->host_caps & MMC_MODE_MASK_WIDTH_BITS) >>
> +                        MMC_MODE_WIDTH_BITS_SHIFT);
> +               for (; width >= 0; width--) {
>                        /* Set the card to use 4 bit*/
>                        err = mmc_switch(mmc, EXT_CSD_CMD_SET_NORMAL,
>                                        EXT_CSD_BUS_WIDTH, width);
> diff --git a/include/mmc.h b/include/mmc.h
> index f52df70..ee16349 100644
> --- a/include/mmc.h
> +++ b/include/mmc.h
> @@ -47,6 +47,9 @@
>  #define MMC_MODE_SPI           0x400
>  #define MMC_MODE_HC            0x800
>
> +#define MMC_MODE_MASK_WIDTH_BITS (MMC_MODE_4BIT | MMC_MODE_8BIT)
> +#define MMC_MODE_WIDTH_BITS_SHIFT 8
> +
>  #define SD_DATA_4BIT   0x00040000
>
>  #define IS_SD(x) (x->version & SD_VERSION_SD)
> --
> 1.7.2.3
>
Acked-by: Lei Wen <leiwen at marvell.com>

Thanks,
Lei


More information about the U-Boot mailing list