diff options
author | Yinbo Zhu <yinbo.zhu@nxp.com> | 2018-11-23 11:15:33 +0800 |
---|---|---|
committer | Ulf Hansson <ulf.hansson@linaro.org> | 2018-12-17 08:26:24 +0100 |
commit | cc14eec0889bb06abab3d6ea1e0e0676521542c8 (patch) | |
tree | 67554ff20919840d9e3f52c172144850d1f608ae | |
parent | 52b5f5cfa2f736f3e478b65490736b62412dc11c (diff) | |
download | linux-stable-cc14eec0889bb06abab3d6ea1e0e0676521542c8.tar.gz linux-stable-cc14eec0889bb06abab3d6ea1e0e0676521542c8.tar.bz2 linux-stable-cc14eec0889bb06abab3d6ea1e0e0676521542c8.zip |
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: Yinbo Zhu <yinbo.zhu@nxp.com>
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
-rw-r--r-- | drivers/mmc/core/mmc.c | 3 | ||||
-rw-r--r-- | include/linux/mmc/host.h | 3 |
2 files changed, 6 insertions, 0 deletions
diff --git a/drivers/mmc/core/mmc.c b/drivers/mmc/core/mmc.c index bc1bd2c25613..4ff08ea930a6 100644 --- a/drivers/mmc/core/mmc.c +++ b/drivers/mmc/core/mmc.c @@ -1181,6 +1181,9 @@ static int mmc_select_hs400(struct mmc_card *card) if (err) goto out_err; + if (host->ops->hs400_prepare_ddr) + host->ops->hs400_prepare_ddr(host); + /* Switch card to DDR */ err = mmc_switch(card, EXT_CSD_CMD_SET_NORMAL, EXT_CSD_BUS_WIDTH, diff --git a/include/linux/mmc/host.h b/include/linux/mmc/host.h index 2a5fe75dd082..2709c94d9d86 100644 --- a/include/linux/mmc/host.h +++ b/include/linux/mmc/host.h @@ -147,6 +147,9 @@ struct mmc_host_ops { /* Prepare HS400 target operating frequency depending host driver */ 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 */ void (*hs400_downgrade)(struct mmc_host *host); |