diff --git a/drivers/mmc/mmc.c b/drivers/mmc/mmc.c
index 3daa74882265ef356453b0ba086f4bc3c2f519c7..43ea0bba763e4168fbef8f80a40cfa23e76f3e70 100644
--- a/drivers/mmc/mmc.c
+++ b/drivers/mmc/mmc.c
@@ -422,6 +422,9 @@ static int mmc_complete_op_cond(struct mmc *mmc)
 
 	mmc->op_cond_pending = 0;
 	if (!(mmc->ocr & OCR_BUSY)) {
+		/* Some cards seem to need this */
+		mmc_go_idle(mmc);
+
 		start = get_timer(0);
 		while (1) {
 			err = mmc_send_op_cond_iter(mmc, 1);