From 8f5ed00afeef24ad0ce6af4e8231ae0313e55247 Mon Sep 17 00:00:00 2001
From: Daniel Chen <daniel.ch_chen@htc.com>
Date: Wed, 9 Dec 2009 09:45:36 -0800
Subject: [PATCH 068/696] mmc: sdio: Add high speed support to sdio_reset_comm()

Signed-off-by: San Mehat <san@google.com>
---
 drivers/mmc/core/sdio.c |   23 ++++++++++++++++++++++-
 1 files changed, 22 insertions(+), 1 deletions(-)

diff --git a/drivers/mmc/core/sdio.c b/drivers/mmc/core/sdio.c
index 57c752b..b3b5ff4 100644
--- a/drivers/mmc/core/sdio.c
+++ b/drivers/mmc/core/sdio.c
@@ -929,7 +929,28 @@ int sdio_reset_comm(struct mmc_card *card)
 			goto err;
 	}
 
-	mmc_set_clock(host, card->cis.max_dtr);
+	/*
+	 * Switch to high-speed (if supported).
+	 */
+	err = sdio_enable_hs(card);
+	if (err)
+		goto err;
+
+	/*
+	 * Change to the card's maximum speed.
+	 */
+	if (mmc_card_highspeed(card)) {
+		/*
+		 * The SDIO specification doesn't mention how
+		 * the CIS transfer speed register relates to
+		 * high-speed, but it seems that 50 MHz is
+		 * mandatory.
+		 */
+		mmc_set_clock(host, 50000000);
+	} else {
+		mmc_set_clock(host, card->cis.max_dtr);
+	}
+
 	err = sdio_enable_wide(card);
 	if (err)
 		goto err;
-- 
1.7.1


