>> >> 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 https://lkml.org/lkml/2015/1/13/562 Kind regards Uffe -- To unsubscribe from this list: send the line "unsubscribe linux-mmc" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html