Commit 4850c225 authored by Mårten Lindahl's avatar Mårten Lindahl Committed by Ulf Hansson

mmc: usdhi6rol0: Implement card_busy function

When switching card voltage to UHS voltage the mmc framework tries to
check the card busy signal, meaning the card pulling DAT0 line low,
before the switch is made. Drivers that does not implement the card_busy
function will manage to do the switch anyway, but the framework will
print a warning about not being able to verify the voltage signal.

Implement card_busy function.
Signed-off-by: default avatarMårten Lindahl <marten.lindahl@axis.com>
Link: https://lore.kernel.org/r/20210816142314.1168-1-marten.lindahl@axis.comSigned-off-by: default avatarUlf Hansson <ulf.hansson@linaro.org>
parent f4ff24f8
......@@ -1186,6 +1186,15 @@ static int usdhi6_sig_volt_switch(struct mmc_host *mmc, struct mmc_ios *ios)
return ret;
}
static int usdhi6_card_busy(struct mmc_host *mmc)
{
struct usdhi6_host *host = mmc_priv(mmc);
u32 tmp = usdhi6_read(host, USDHI6_SD_INFO2);
/* Card is busy if it is pulling dat[0] low */
return !(tmp & USDHI6_SD_INFO2_SDDAT0);
}
static const struct mmc_host_ops usdhi6_ops = {
.request = usdhi6_request,
.set_ios = usdhi6_set_ios,
......@@ -1193,6 +1202,7 @@ static const struct mmc_host_ops usdhi6_ops = {
.get_ro = usdhi6_get_ro,
.enable_sdio_irq = usdhi6_enable_sdio_irq,
.start_signal_voltage_switch = usdhi6_sig_volt_switch,
.card_busy = usdhi6_card_busy,
};
/* State machine handlers */
......
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