diff mbox

[BUG] CMD52 sent as first command not CMD0

Message ID 173274DF-475D-44FB-8C34-25728D12ADBB@marvell.com (mailing list archive)
State New, archived
Headers show

Commit Message

Philip Rakity Feb. 6, 2011, 1:35 a.m. UTC
None
diff mbox

Patch

=====

CMD52 is a reset for SDIO cards.  CMD0 is not sufficient when
the card is being re-initialized.  Only send CMD52 if
a) doing a reinitialize
b) card is SDIO or SDIO_COMBO

Signed-off-by: Philip Rakity <prakity@marvell.com>
---
 drivers/mmc/core/core.c |    7 ++++++-
 1 files changed, 6 insertions(+), 1 deletions(-)

diff --git a/drivers/mmc/core/core.c b/drivers/mmc/core/core.c
index 30d4da4..f0ce6f6 100644
--- a/drivers/mmc/core/core.c
+++ b/drivers/mmc/core/core.c
@@ -1521,7 +1521,12 @@  static int mmc_rescan_try_freq(struct mmc_host *host, unsigned freq)
 		mmc_hostname(host), __func__, host->f_init);
 #endif
 	mmc_power_up(host);
-	sdio_reset(host);
+
+	/* reset sdio before CMD0 when card is being reinitialized */
+	if (host->card &&
+		(host->card->type == MMC_TYPE_SDIO ||
+		host->card->type == MMC_TYPE_SD_COMBO))
+			sdio_reset(host);
 	mmc_go_idle(host);
 	mmc_hwungate_clock(host);