[U-Boot] [PATCH 2/6] mmc: Avoid extra duplicate entry in mmc device structure

Pantelis Antoniou pantelis.antoniou at gmail.com
Tue May 5 11:02:45 CEST 2015


Hi Andrw,

> On Mar 19, 2015, at 14:44 , Andrew Gabbasov <andrew_gabbasov at mentor.com> wrote:
> 
> The 'op_cond_response' field in mmc structure contains the response
> from the last SEND_OP_COND MMC command while making iterational
> polling of the card. Later it is copied to 'ocr' field, designed
> to contain the OCR register value, which is actually the same
> response from the same command. So, these fields have actually
> the same data, just in different time periods. It's easier to use
> the same 'ocr' field in both cases at once, without temporary using
> of the 'op_cond_response' field.
> 
> Signed-off-by: Andrew Gabbasov <andrew_gabbasov at mentor.com>
> ---
> drivers/mmc/mmc.c | 13 +++++++------
> include/mmc.h     |  1 -
> 2 files changed, 7 insertions(+), 7 deletions(-)
> 
> diff --git a/drivers/mmc/mmc.c b/drivers/mmc/mmc.c
> index a13769e..fe00a19 100644
> --- a/drivers/mmc/mmc.c
> +++ b/drivers/mmc/mmc.c
> @@ -362,8 +362,8 @@ static int mmc_send_op_cond_iter(struct mmc *mmc, struct mmc_cmd *cmd,
> 	if (use_arg && !mmc_host_is_spi(mmc)) {
> 		cmd->cmdarg =
> 			(mmc->cfg->voltages &
> -			(mmc->op_cond_response & OCR_VOLTAGE_MASK)) |
> -			(mmc->op_cond_response & OCR_ACCESS_MODE);
> +			(mmc->ocr & OCR_VOLTAGE_MASK)) |
> +			(mmc->ocr & OCR_ACCESS_MODE);
> 
> 		if (mmc->cfg->host_caps & MMC_MODE_HC)
> 			cmd->cmdarg |= OCR_HCS;
> @@ -371,7 +371,7 @@ static int mmc_send_op_cond_iter(struct mmc *mmc, struct mmc_cmd *cmd,
> 	err = mmc_send_cmd(mmc, cmd, NULL);
> 	if (err)
> 		return err;
> -	mmc->op_cond_response = cmd->response[0];
> +	mmc->ocr = cmd->response[0];
> 	return 0;
> }
> 
> @@ -391,7 +391,7 @@ static int mmc_send_op_cond(struct mmc *mmc)
> 			return err;
> 
> 		/* exit if not busy (flag seems to be inverted) */
> -		if (mmc->op_cond_response & OCR_BUSY)
> +		if (mmc->ocr & OCR_BUSY)
> 			return 0;
> 	}
> 	return IN_PROGRESS;
> @@ -413,7 +413,7 @@ static int mmc_complete_op_cond(struct mmc *mmc)
> 		if (get_timer(start) > timeout)
> 			return UNUSABLE_ERR;
> 		udelay(100);
> -	} while (!(mmc->op_cond_response & OCR_BUSY));
> +	} while (!(mmc->ocr & OCR_BUSY));
> 
> 	if (mmc_host_is_spi(mmc)) { /* read OCR for spi */
> 		cmd.cmdidx = MMC_CMD_SPI_READ_OCR;
> @@ -424,10 +424,11 @@ static int mmc_complete_op_cond(struct mmc *mmc)
> 
> 		if (err)
> 			return err;
> +
> +		mmc->ocr = cmd.response[0];
> 	}
> 
> 	mmc->version = MMC_VERSION_UNKNOWN;
> -	mmc->ocr = cmd.response[0];
> 
> 	mmc->high_capacity = ((mmc->ocr & OCR_HCS) == OCR_HCS);
> 	mmc->rca = 1;
> diff --git a/include/mmc.h b/include/mmc.h
> index a251531..644e3fa 100644
> --- a/include/mmc.h
> +++ b/include/mmc.h
> @@ -356,7 +356,6 @@ struct mmc {
> 	char op_cond_pending;	/* 1 if we are waiting on an op_cond command */
> 	char init_in_progress;	/* 1 if we have done mmc_start_init() */
> 	char preinit;		/* start init as early as possible */
> -	uint op_cond_response;	/* the response byte from the last op_cond */
> 	int ddr_mode;
> };
> 
> -- 
> 2.1.0

Thanks, applied.

Regards

— Pantelis



More information about the U-Boot mailing list