[U-Boot] [PATCH] mmc:fix: Set mmc width according to MMC host capabilities

Lukasz Majewski l.majewski at samsung.com
Mon Mar 26 15:22:15 CEST 2012


Hi Andy,

> 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 49c3349..51c0106 100644
> --- a/drivers/mmc/mmc.c
> +++ b/drivers/mmc/mmc.c
> @@ -1103,7 +1103,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 30c2375..ff2f28e 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)

Do you have any opinions/comments about this patch?
It has already spent some time on the mainling list and nobody
complaint :-)

-- 
Best regards,

Lukasz Majewski

Samsung Poland R&D Center
Platform Group


More information about the U-Boot mailing list