diff --git a/drivers/mmc/core/core.c b/drivers/mmc/core/core.c index 0be861b5649c..863df7a85220 100644 --- a/drivers/mmc/core/core.c +++ b/drivers/mmc/core/core.c @@ -727,8 +727,13 @@ int mmc_interrupt_hpi(struct mmc_card *card) if (!err && R1_CURRENT_STATE(status) == R1_STATE_TRAN) break; - if (time_after(jiffies, prg_wait)) - err = -ETIMEDOUT; + if (time_after(jiffies, prg_wait)) { + err = mmc_send_status(card, &status); + if (!err && R1_CURRENT_STATE(status) != R1_STATE_TRAN) + err = -ETIMEDOUT; + else + break; + } } while (!err); out: