[EXT] [PATCH] mmc: xenon_sdhci: Add missing common host capabilities

Kostya Porotchkin kostap at marvell.com
Thu Sep 10 20:19:52 CEST 2020



> -----Original Message-----
> From: Andre Heider <a.heider at gmail.com>
> Sent: Thursday, September 10, 2020 20:54
> To: Stefan Roese <sr at denx.de>; Kostya Porotchkin <kostap at marvell.com>
> Cc: Pali Rohár <pali at kernel.org>; Gérald Kerma <gandalf at gk2.net>; u-
> boot at lists.denx.de
> Subject: [EXT] [PATCH] mmc: xenon_sdhci: Add missing common host
> capabilities
> 
> External Email
> 
> ----------------------------------------------------------------------
> Use mmc_of_parse() to set the common host properties. That includes "bus-
> width", so parsing it can be removed from the driver.
> 
> But more importantly, "non-removable" is now respected, which fixes the
> usage of eMMC.
> 
> Signed-off-by: Andre Heider <a.heider at gmail.com>
Reviewed-by: Konstantin Porotchkin <kostap at marvell.com>

> ---
> 
> Tested myself on v5 without emmc, `mmc info` is unchanged for my sd card
> 
> Tested by Gérald on v7 emmc, which started working with this patch:
> => mmc info
> Device: sdhci at d8000
> Manufacturer ID: 45
> OEM: 100
> Name: SEM04
> Bus Speed: 52000000
> Mode: MMC High Speed (52MHz)
> Rd Block Len: 512
> MMC version 4.5
> High Capacity: Yes
> Capacity: 3.7 GiB
> Bus Width: 8-bit
> Erase Group Size: 256 KiB
> HC WP Group Size: 8 MiB
> User Capacity: 3.7 GiB WRREL
> Boot Capacity: 2 MiB
> RPMB Capacity: 2 MiB
> Boot area 0 is not write protected
> Boot area 1 is not write protected
> 
>  drivers/mmc/xenon_sdhci.c | 18 ++++--------------
>  1 file changed, 4 insertions(+), 14 deletions(-)
> 
> diff --git a/drivers/mmc/xenon_sdhci.c b/drivers/mmc/xenon_sdhci.c index
> 7f9a579c83..6ce9d00d0a 100644
> --- a/drivers/mmc/xenon_sdhci.c
> +++ b/drivers/mmc/xenon_sdhci.c
> @@ -485,20 +485,10 @@ static int xenon_sdhci_probe(struct udevice *dev)
>  		armada_3700_soc_pad_voltage_set(host);
> 
>  	host->host_caps = MMC_MODE_HS | MMC_MODE_HS_52MHz |
> MMC_MODE_DDR_52MHz;
> -	switch (fdtdec_get_int(gd->fdt_blob, dev_of_offset(dev), "bus-
> width",
> -		1)) {
> -	case 8:
> -		host->host_caps |= MMC_MODE_8BIT;
> -		break;
> -	case 4:
> -		host->host_caps |= MMC_MODE_4BIT;
> -		break;
> -	case 1:
> -		break;
> -	default:
> -		printf("Invalid \"bus-width\" value\n");
> -		return -EINVAL;
> -	}
> +
> +	ret = mmc_of_parse(dev, &plat->cfg);
> +	if (ret)
> +		return ret;
> 
>  	host->ops = &xenon_sdhci_ops;
> 
> --
> 2.28.0



More information about the U-Boot mailing list