[U-Boot] [PATCH 2/6] mmc: break out get_op_cond code to its own function

Stefano Babic sbabic at denx.de
Wed Jun 27 07:59:27 UTC 2018


Hi Baruch,

On 11/06/2018 14:26, Baruch Siach wrote:
> From: Jon Nettleton <jon at solid-run.com>
> 
> This code is useful for testing the existance of devices that
> do not have card detect capabilities.  This breaks out the core
> functionality and leaves the actual init logic and error reporting
> in mmc_start_init().
> 
> Signed-off-by: Jon Nettleton <jon at solid-run.com>
> Signed-off-by: Baruch Siach <baruch at tkos.co.il>
> ---
>  drivers/mmc/mmc.c | 61 +++++++++++++++++++++++++++--------------------
>  include/mmc.h     | 10 ++++++++
>  2 files changed, 45 insertions(+), 26 deletions(-)
> 
> diff --git a/drivers/mmc/mmc.c b/drivers/mmc/mmc.c
> index f7827f527aa5..ad429f49c992 100644
> --- a/drivers/mmc/mmc.c
> +++ b/drivers/mmc/mmc.c
> @@ -2491,36 +2491,11 @@ static int mmc_power_cycle(struct mmc *mmc)
>  	return mmc_power_on(mmc);
>  }
>  
> -int mmc_start_init(struct mmc *mmc)
> +int mmc_get_op_cond(struct mmc *mmc)
>  {
> -	bool no_card;
>  	bool uhs_en = supports_uhs(mmc->cfg->host_caps);
>  	int err;
>  
> -	/*
> -	 * all hosts are capable of 1 bit bus-width and able to use the legacy
> -	 * timings.
> -	 */
> -	mmc->host_caps = mmc->cfg->host_caps | MMC_CAP(SD_LEGACY) |
> -			 MMC_CAP(MMC_LEGACY) | MMC_MODE_1BIT;
> -
> -#if !defined(CONFIG_MMC_BROKEN_CD)
> -	/* we pretend there's no card when init is NULL */
> -	no_card = mmc_getcd(mmc) == 0;
> -#else
> -	no_card = 0;
> -#endif
> -#if !CONFIG_IS_ENABLED(DM_MMC)
> -	no_card = no_card || (mmc->cfg->ops->init == NULL);
> -#endif
> -	if (no_card) {
> -		mmc->has_init = 0;
> -#if !defined(CONFIG_SPL_BUILD) || defined(CONFIG_SPL_LIBCOMMON_SUPPORT)
> -		pr_err("MMC: no card present\n");
> -#endif
> -		return -ENOMEDIUM;
> -	}
> -
>  	if (mmc->has_init)
>  		return 0;
>  
> @@ -2597,6 +2572,40 @@ retry:
>  		}
>  	}
>  
> +	return err;
> +}
> +
> +int mmc_start_init(struct mmc *mmc)
> +{
> +	bool no_card;
> +	int err = 0;
> +
> +	/*
> +	 * all hosts are capable of 1 bit bus-width and able to use the legacy
> +	 * timings.
> +	 */
> +	mmc->host_caps = mmc->cfg->host_caps | MMC_CAP(SD_LEGACY) |
> +			 MMC_CAP(MMC_LEGACY) | MMC_MODE_1BIT;
> +
> +#if !defined(CONFIG_MMC_BROKEN_CD)
> +	/* we pretend there's no card when init is NULL */
> +	no_card = mmc_getcd(mmc) == 0;
> +#else
> +	no_card = 0;
> +#endif
> +#if !CONFIG_IS_ENABLED(DM_MMC)
> +	no_card = no_card || (mmc->cfg->ops->init == NULL);
> +#endif
> +	if (no_card) {
> +		mmc->has_init = 0;
> +#if !defined(CONFIG_SPL_BUILD) || defined(CONFIG_SPL_LIBCOMMON_SUPPORT)
> +		pr_err("MMC: no card present\n");
> +#endif
> +		return -ENOMEDIUM;
> +	}
> +
> +	err = mmc_get_op_cond(mmc);
> +
>  	if (!err)
>  		mmc->init_in_progress = 1;
>  
> diff --git a/include/mmc.h b/include/mmc.h
> index 1729292d27bd..df4255b828a7 100644
> --- a/include/mmc.h
> +++ b/include/mmc.h
> @@ -752,6 +752,16 @@ int mmc_rpmb_write(struct mmc *mmc, void *addr, unsigned short blk,
>  int mmc_set_bkops_enable(struct mmc *mmc);
>  #endif
>  
> +/**
> + * Start device initialization and return immediately; it does not block on
> + * polling OCR (operation condition register) status. Useful for checking
> + * the presence of SD/eMMC when no card detect logic is available.
> + *
> + * @param mmc	Pointer to a MMC device struct
> + * @return 0 on success, <0 on error.
> + */
> +int mmc_get_op_cond(struct mmc *mmc);
> +
>  /**
>   * Start device initialization and return immediately; it does not block on
>   * polling OCR (operation condition register) status.  Then you should call
> 

Reviewed-by: Stefano Babic <sbabic at denx.de>

Anyway, this is related to MMC subsystem. I added Jaehoon in CC for his
review / ACK. I will hold on the series (related to i.MX) until then.

Best regards,
Stefano Babic

-- 
=====================================================================
DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: +49-8142-66989-53 Fax: +49-8142-66989-80 Email: sbabic at denx.de
=====================================================================


More information about the U-Boot mailing list