[PATCH 1/2] mmc: core: use card pointer as the first parameter of execute_tuning()

Ulf Hansson ulf.hansson at linaro.org
Mon Feb 2 00:16:06 PST 2015

>> about bus_ops->alive, I think it can't use in tuning state.
>> Because:
>> bus_ops->alive() --> mmc_sd_alive(host) /* sd card */ -->mmc_send_status(host->card, NULL);
>> But host->card == NULL in tuning state(mmc_sd_init_card->mmc_sd_init_uhs_card).
>> Only if sd is initialized successfully, we can get card pointer by host->card.
>> see: mmc_sd_init_card(drivers/mmc/core/sd.c), the end of this function: host->card = card
> And bus_ops->alive only check whether mmc is alive or not, the second parameter(*status) is NULL,
> We can not get the card status.
> But in tuning state, we need wait until card is idle, if the previous tuning is failed.

You are right that we can't use bus_ops->alive() in its current form.
Changing it to take "card" and "status" as parameter should fix this
for us. My point was more that we can't use mmc_send_status() since
that doesn't work for SDIO.

Anyway, it seems like we need to put this patchset on hold for a while.

You I merge the below patch instead so we at least have something
working for 3.20?

[PATCH] mmc: dw_mmc: rockchip: Add DW_MCI_QUIRK_RETRY_DELAY

Kind regards

More information about the Linux-rockchip mailing list