Commit cc14eec0 authored by Yinbo Zhu's avatar Yinbo Zhu Committed by Ulf Hansson

mmc: core: Add ->hs400_prepare_ddr() callback

Some eMMC controllers need specific settings for HS400 mode before the
speed mode can be switched to DDR mode, during the HS400 initialization
sequence. For that reason, let's introduce a new host callback,
->hs400_prepare_ddr() and invoked it just before switching to DDR mode.
Signed-off-by: default avatarYinbo Zhu <yinbo.zhu@nxp.com>
Signed-off-by: default avatarUlf Hansson <ulf.hansson@linaro.org>
parent 52b5f5cf
...@@ -1181,6 +1181,9 @@ static int mmc_select_hs400(struct mmc_card *card) ...@@ -1181,6 +1181,9 @@ static int mmc_select_hs400(struct mmc_card *card)
if (err) if (err)
goto out_err; goto out_err;
if (host->ops->hs400_prepare_ddr)
host->ops->hs400_prepare_ddr(host);
/* Switch card to DDR */ /* Switch card to DDR */
err = mmc_switch(card, EXT_CSD_CMD_SET_NORMAL, err = mmc_switch(card, EXT_CSD_CMD_SET_NORMAL,
EXT_CSD_BUS_WIDTH, EXT_CSD_BUS_WIDTH,
......
...@@ -147,6 +147,9 @@ struct mmc_host_ops { ...@@ -147,6 +147,9 @@ struct mmc_host_ops {
/* Prepare HS400 target operating frequency depending host driver */ /* Prepare HS400 target operating frequency depending host driver */
int (*prepare_hs400_tuning)(struct mmc_host *host, struct mmc_ios *ios); int (*prepare_hs400_tuning)(struct mmc_host *host, struct mmc_ios *ios);
/* Prepare switch to DDR during the HS400 init sequence */
int (*hs400_prepare_ddr)(struct mmc_host *host);
/* Prepare for switching from HS400 to HS200 */ /* Prepare for switching from HS400 to HS200 */
void (*hs400_downgrade)(struct mmc_host *host); void (*hs400_downgrade)(struct mmc_host *host);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment