[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