Commit 7405df4c authored by Ulf Hansson's avatar Ulf Hansson

mmc: core: Implement ->sw_reset bus ops for SDIO

Let's implement the ->sw_reset() bus ops to allow SDIO func drivers, in
particular, to make a SW reset without doing a full power cycle of the SDIO
card.
Signed-off-by: default avatarUlf Hansson <ulf.hansson@linaro.org>
Tested-by: default avatarQuentin Schulz <quentin.schulz@bootlin.com>
Reviewed-by: default avatarShawn Lin <shawn.lin@rock-chips.com>
parent 508c9864
...@@ -1056,6 +1056,18 @@ static int mmc_sdio_hw_reset(struct mmc_host *host) ...@@ -1056,6 +1056,18 @@ static int mmc_sdio_hw_reset(struct mmc_host *host)
return mmc_sdio_power_restore(host); return mmc_sdio_power_restore(host);
} }
static int mmc_sdio_sw_reset(struct mmc_host *host)
{
mmc_set_clock(host, host->f_init);
sdio_reset(host);
mmc_go_idle(host);
mmc_set_initial_state(host);
mmc_set_initial_signal_voltage(host);
return mmc_sdio_reinit_card(host, 0);
}
static const struct mmc_bus_ops mmc_sdio_ops = { static const struct mmc_bus_ops mmc_sdio_ops = {
.remove = mmc_sdio_remove, .remove = mmc_sdio_remove,
.detect = mmc_sdio_detect, .detect = mmc_sdio_detect,
...@@ -1067,6 +1079,7 @@ static const struct mmc_bus_ops mmc_sdio_ops = { ...@@ -1067,6 +1079,7 @@ static const struct mmc_bus_ops mmc_sdio_ops = {
.power_restore = mmc_sdio_power_restore, .power_restore = mmc_sdio_power_restore,
.alive = mmc_sdio_alive, .alive = mmc_sdio_alive,
.hw_reset = mmc_sdio_hw_reset, .hw_reset = mmc_sdio_hw_reset,
.sw_reset = mmc_sdio_sw_reset,
}; };
......
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