mmc: core: Export a function mmc_sw_reset() to allow soft reset of cards
authorUlf Hansson <ulf.hansson@linaro.org>
Thu, 5 Apr 2018 11:42:00 +0000 (13:42 +0200)
committerUlf Hansson <ulf.hansson@linaro.org>
Tue, 8 May 2018 07:33:42 +0000 (09:33 +0200)
commit1433269c4d2461be1f36db5dbb453976b38996ff
treee9f58931e1bdc1fd357e8ce7061003264ff4b666
parent3a3db6030b64ceb4b4e41a6811168c5d90a9f7f8
mmc: core: Export a function mmc_sw_reset() to allow soft reset of cards

It's rather common that a firmware is loaded into an SDIO func device
memory, by the corresponding SDIO func driver during ->probe() time.

However, to actually start running the new firmware, sometimes a soft reset
(no power cycle) and a re-initialization of the card is needed. This is for
example the case with the Espressif ESP8089 WiFi chips, when connected to
an SDIO interface.

To cope with this scenario, let's add a new exported function,
mmc_sw_reset(), which may be called when a soft reset and re-initialization
of the card are needed.

The mmc_sw_reset() is implemented on top of a new bus ops callback, similar
to how the mmc_hw_reset() has been implemented.

Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
Tested-by: Quentin Schulz <quentin.schulz@bootlin.com>
Reviewed-by: Shawn Lin <shawn.lin@rock-chips.com>
drivers/mmc/core/core.c
drivers/mmc/core/core.h
include/linux/mmc/core.h