[U-Boot] [PATCH 2/2] mmc: Rename timeout parameters for clarification

Peng Fan peng.fan at nxp.com
Mon Aug 19 01:56:23 UTC 2019


> Subject: [PATCH 2/2] mmc: Rename timeout parameters for clarification
> 
> It's quite hard to figure out time units for various function that have timeout
> parameters. This leads to possible errors when one forgets to convert ms to
> us, for example. Let's rename those parameters correspondingly to
> 'timeout_us' and 'timeout_ms' to prevent such issues further.
> 
> While at it, add time units info as comments to struct mmc fields.
> 
> This commit doesn't change the behavior, only renames parameters names.
> Buildman should report no changes at all.
> 
> Signed-off-by: Sam Protsenko <semen.protsenko at linaro.org>
> ---
>  drivers/mmc/mmc-uclass.c   |  8 ++++----
>  drivers/mmc/mmc.c          | 24 ++++++++++++------------
>  drivers/mmc/mmc_write.c    |  8 ++++----
>  drivers/mmc/omap_hsmmc.c   |  6 +++---
>  drivers/mmc/renesas-sdhi.c |  7 ++++---
>  include/mmc.h              | 12 ++++++------
>  6 files changed, 33 insertions(+), 32 deletions(-)
> 
> diff --git a/drivers/mmc/mmc-uclass.c b/drivers/mmc/mmc-uclass.c index
> 551007905c..f740bae3c7 100644
> --- a/drivers/mmc/mmc-uclass.c
> +++ b/drivers/mmc/mmc-uclass.c
> @@ -47,18 +47,18 @@ int mmc_set_ios(struct mmc *mmc)
>  	return dm_mmc_set_ios(mmc->dev);
>  }
> 
> -int dm_mmc_wait_dat0(struct udevice *dev, int state, int timeout)
> +int dm_mmc_wait_dat0(struct udevice *dev, int state, int timeout_us)
>  {
>  	struct dm_mmc_ops *ops = mmc_get_ops(dev);
> 
>  	if (!ops->wait_dat0)
>  		return -ENOSYS;
> -	return ops->wait_dat0(dev, state, timeout);
> +	return ops->wait_dat0(dev, state, timeout_us);
>  }
> 
> -int mmc_wait_dat0(struct mmc *mmc, int state, int timeout)
> +int mmc_wait_dat0(struct mmc *mmc, int state, int timeout_us)
>  {
> -	return dm_mmc_wait_dat0(mmc->dev, state, timeout);
> +	return dm_mmc_wait_dat0(mmc->dev, state, timeout_us);
>  }
> 
>  int dm_mmc_get_wp(struct udevice *dev)
> diff --git a/drivers/mmc/mmc.c b/drivers/mmc/mmc.c index
> e247730ff2..c8f71cd0c1 100644
> --- a/drivers/mmc/mmc.c
> +++ b/drivers/mmc/mmc.c
> @@ -31,7 +31,7 @@ static int mmc_select_mode_and_width(struct mmc
> *mmc, uint card_caps);
> 
>  #if !CONFIG_IS_ENABLED(DM_MMC)
> 
> -static int mmc_wait_dat0(struct mmc *mmc, int state, int timeout)
> +static int mmc_wait_dat0(struct mmc *mmc, int state, int timeout_us)
>  {
>  	return -ENOSYS;
>  }
> @@ -230,12 +230,12 @@ int mmc_send_status(struct mmc *mmc, unsigned
> int *status)
>  	return -ECOMM;
>  }
> 
> -int mmc_poll_for_busy(struct mmc *mmc, int timeout)
> +int mmc_poll_for_busy(struct mmc *mmc, int timeout_ms)
>  {
>  	unsigned int status;
>  	int err;
> 
> -	err = mmc_wait_dat0(mmc, 1, timeout * 1000);
> +	err = mmc_wait_dat0(mmc, 1, timeout_ms * 1000);
>  	if (err != -ENOSYS)
>  		return err;
> 
> @@ -256,13 +256,13 @@ int mmc_poll_for_busy(struct mmc *mmc, int
> timeout)
>  			return -ECOMM;
>  		}
> 
> -		if (timeout-- <= 0)
> +		if (timeout_ms-- <= 0)
>  			break;
> 
>  		udelay(1000);
>  	}
> 
> -	if (timeout <= 0) {
> +	if (timeout_ms <= 0) {
>  #if !defined(CONFIG_SPL_BUILD) ||
> defined(CONFIG_SPL_LIBCOMMON_SUPPORT)
>  		pr_err("Timeout waiting card ready\n");  #endif @@ -750,17
> +750,17 @@ static int __mmc_switch(struct mmc *mmc, u8 set, u8 index, u8
> value,  {
>  	unsigned int status, start;
>  	struct mmc_cmd cmd;
> -	int timeout = DEFAULT_CMD6_TIMEOUT_MS;
> +	int timeout_ms = DEFAULT_CMD6_TIMEOUT_MS;
>  	bool is_part_switch = (set == EXT_CSD_CMD_SET_NORMAL) &&
>  			      (index == EXT_CSD_PART_CONF);
>  	int retries = 3;
>  	int ret;
> 
>  	if (mmc->gen_cmd6_time)
> -		timeout = mmc->gen_cmd6_time * 10;
> +		timeout_ms = mmc->gen_cmd6_time * 10;
> 
>  	if (is_part_switch  && mmc->part_switch_time)
> -		timeout = mmc->part_switch_time * 10;
> +		timeout_ms = mmc->part_switch_time * 10;
> 
>  	cmd.cmdidx = MMC_CMD_SWITCH;
>  	cmd.resp_type = MMC_RSP_R1b;
> @@ -778,7 +778,7 @@ static int __mmc_switch(struct mmc *mmc, u8 set,
> u8 index, u8 value,
>  	start = get_timer(0);
> 
>  	/* poll dat0 for rdy/buys status */
> -	ret = mmc_wait_dat0(mmc, 1, timeout * 1000);
> +	ret = mmc_wait_dat0(mmc, 1, timeout_ms * 1000);
>  	if (ret && ret != -ENOSYS)
>  		return ret;
> 
> @@ -788,11 +788,11 @@ static int __mmc_switch(struct mmc *mmc, u8 set,
> u8 index, u8 value,
>  	 * stated timeout to be sufficient.
>  	 */
>  	if (ret == -ENOSYS && !send_status)
> -		mdelay(timeout);
> +		mdelay(timeout_ms);
> 
>  	/* Finally wait until the card is ready or indicates a failure
>  	 * to switch. It doesn't hurt to use CMD13 here even if send_status
> -	 * is false, because by now (after 'timeout' ms) the bus should be
> +	 * is false, because by now (after 'timeout_ms' ms) the bus should be
>  	 * reliable.
>  	 */
>  	do {
> @@ -806,7 +806,7 @@ static int __mmc_switch(struct mmc *mmc, u8 set,
> u8 index, u8 value,
>  		if (!ret && (status & MMC_STATUS_RDY_FOR_DATA))
>  			return 0;
>  		udelay(100);
> -	} while (get_timer(start) < timeout);
> +	} while (get_timer(start) < timeout_ms);
> 
>  	return -ETIMEDOUT;
>  }
> diff --git a/drivers/mmc/mmc_write.c b/drivers/mmc/mmc_write.c index
> 02648b0f50..b52ff9f3bc 100644
> --- a/drivers/mmc/mmc_write.c
> +++ b/drivers/mmc/mmc_write.c
> @@ -79,7 +79,7 @@ ulong mmc_berase(struct blk_desc *block_dev, lbaint_t
> start, lbaint_t blkcnt)
>  	u32 start_rem, blkcnt_rem;
>  	struct mmc *mmc = find_mmc_device(dev_num);
>  	lbaint_t blk = 0, blk_r = 0;
> -	int timeout = 1000;
> +	int timeout_ms = 1000;
> 
>  	if (!mmc)
>  		return -1;
> @@ -119,7 +119,7 @@ ulong mmc_berase(struct blk_desc *block_dev,
> lbaint_t start, lbaint_t blkcnt)
>  		blk += blk_r;
> 
>  		/* Waiting for the ready status */
> -		if (mmc_poll_for_busy(mmc, timeout))
> +		if (mmc_poll_for_busy(mmc, timeout_ms))
>  			return 0;
>  	}
> 
> @@ -131,7 +131,7 @@ static ulong mmc_write_blocks(struct mmc *mmc,
> lbaint_t start,  {
>  	struct mmc_cmd cmd;
>  	struct mmc_data data;
> -	int timeout = 1000;
> +	int timeout_ms = 1000;
> 
>  	if ((start + blkcnt) > mmc_get_blk_desc(mmc)->lba) {
>  		printf("MMC: block number 0x" LBAF " exceeds max(0x" LBAF ")\n",
> @@ -177,7 +177,7 @@ static ulong mmc_write_blocks(struct mmc *mmc,
> lbaint_t start,
>  	}
> 
>  	/* Waiting for the ready status */
> -	if (mmc_poll_for_busy(mmc, timeout))
> +	if (mmc_poll_for_busy(mmc, timeout_ms))
>  		return 0;
> 
>  	return blkcnt;
> diff --git a/drivers/mmc/omap_hsmmc.c b/drivers/mmc/omap_hsmmc.c
> index 3ea7f4e173..bade129aea 100644
> --- a/drivers/mmc/omap_hsmmc.c
> +++ b/drivers/mmc/omap_hsmmc.c
> @@ -430,7 +430,7 @@ static void omap_hsmmc_conf_bus_power(struct
> mmc *mmc, uint signal_voltage)
>  	writel(ac12, &mmc_base->ac12);
>  }
> 
> -static int omap_hsmmc_wait_dat0(struct udevice *dev, int state, int timeout)
> +static int omap_hsmmc_wait_dat0(struct udevice *dev, int state, int
> +timeout_us)
>  {
>  	int ret = -ETIMEDOUT;
>  	u32 con;
> @@ -442,8 +442,8 @@ static int omap_hsmmc_wait_dat0(struct udevice
> *dev, int state, int timeout)
>  	con = readl(&mmc_base->con);
>  	writel(con | CON_CLKEXTFREE | CON_PADEN, &mmc_base->con);
> 
> -	timeout = DIV_ROUND_UP(timeout, 10); /* check every 10 us. */
> -	while (timeout--)	{
> +	timeout_us = DIV_ROUND_UP(timeout_us, 10); /* check every 10 us. */
> +	while (timeout_us--) {
>  		dat0_high = !!(readl(&mmc_base->pstate) & PSTATE_DLEV_DAT0);
>  		if (dat0_high == target_dat0_high) {
>  			ret = 0;
> diff --git a/drivers/mmc/renesas-sdhi.c b/drivers/mmc/renesas-sdhi.c index
> 7c53aa221e..0cb65b480d 100644
> --- a/drivers/mmc/renesas-sdhi.c
> +++ b/drivers/mmc/renesas-sdhi.c
> @@ -499,15 +499,16 @@ static int renesas_sdhi_set_ios(struct udevice
> *dev)  }
> 
>  #if CONFIG_IS_ENABLED(MMC_UHS_SUPPORT)
> -static int renesas_sdhi_wait_dat0(struct udevice *dev, int state, int timeout)
> +static int renesas_sdhi_wait_dat0(struct udevice *dev, int state,
> +				  int timeout_us)
>  {
>  	int ret = -ETIMEDOUT;
>  	bool dat0_high;
>  	bool target_dat0_high = !!state;
>  	struct tmio_sd_priv *priv = dev_get_priv(dev);
> 
> -	timeout = DIV_ROUND_UP(timeout, 10); /* check every 10 us. */
> -	while (timeout--) {
> +	timeout_us = DIV_ROUND_UP(timeout_us, 10); /* check every 10 us. */
> +	while (timeout_us--) {
>  		dat0_high = !!(tmio_sd_readl(priv, TMIO_SD_INFO2) &
> TMIO_SD_INFO2_DAT0);
>  		if (dat0_high == target_dat0_high) {
>  			ret = 0;
> diff --git a/include/mmc.h b/include/mmc.h index 46422f41a4..686ba00656
> 100644
> --- a/include/mmc.h
> +++ b/include/mmc.h
> @@ -457,10 +457,10 @@ struct dm_mmc_ops {
>  	 *
>  	 * @dev:	Device to check
>  	 * @state:	target state
> -	 * @timeout:	timeout in us
> +	 * @timeout_us:	timeout in us
>  	 * @return 0 if dat0 is in the target state, -ve on error
>  	 */
> -	int (*wait_dat0)(struct udevice *dev, int state, int timeout);
> +	int (*wait_dat0)(struct udevice *dev, int state, int timeout_us);
> 
>  #if CONFIG_IS_ENABLED(MMC_HS400_ES_SUPPORT)
>  	/* set_enhanced_strobe() - set HS400 enhanced strobe */ @@ -476,14
> +476,14 @@ int dm_mmc_set_ios(struct udevice *dev);  int
> dm_mmc_get_cd(struct udevice *dev);  int dm_mmc_get_wp(struct udevice
> *dev);  int dm_mmc_execute_tuning(struct udevice *dev, uint opcode); -int
> dm_mmc_wait_dat0(struct udevice *dev, int state, int timeout);
> +int dm_mmc_wait_dat0(struct udevice *dev, int state, int timeout_us);
> 
>  /* Transition functions for compatibility */  int mmc_set_ios(struct mmc
> *mmc);  int mmc_getcd(struct mmc *mmc);  int mmc_getwp(struct mmc
> *mmc);  int mmc_execute_tuning(struct mmc *mmc, uint opcode); -int
> mmc_wait_dat0(struct mmc *mmc, int state, int timeout);
> +int mmc_wait_dat0(struct mmc *mmc, int state, int timeout_us);
>  int mmc_set_enhanced_strobe(struct mmc *mmc);
> 
>  #else
> @@ -602,8 +602,8 @@ struct mmc {
>  	u8 part_attr;
>  	u8 wr_rel_set;
>  	u8 part_config;
> -	u8 gen_cmd6_time;
> -	u8 part_switch_time;
> +	u8 gen_cmd6_time;	/* units: 10 ms */
> +	u8 part_switch_time;	/* units: 10 ms */
>  	uint tran_speed;
>  	uint legacy_speed; /* speed for the legacy mode provided by the card */
>  	uint read_bl_len;

Reviewed-by: Peng Fan <peng.fan at nxp.com>

> --
> 2.20.1



More information about the U-Boot mailing list