summaryrefslogtreecommitdiffstats
path: root/drivers/mmc/core/sd.c
diff options
context:
space:
mode:
authorFredrik Soderstedt <fredrik.soderstedt@stericsson.com>2013-04-17 13:50:53 +0200
committerChris Ball <cjb@laptop.org>2013-05-26 14:23:11 -0400
commit810e08ee425f8d7327e4b30069a9b2b3dccfc67d (patch)
tree0cc4264fa30f9fb5c31c420d34bc97b4e1b64e0b /drivers/mmc/core/sd.c
parent4a29b5591faf25555fdf2b717594d50f70c15066 (diff)
downloadop-kernel-dev-810e08ee425f8d7327e4b30069a9b2b3dccfc67d.zip
op-kernel-dev-810e08ee425f8d7327e4b30069a9b2b3dccfc67d.tar.gz
mmc: core: Only execute tuning for SDR50 and SDR104
Only execute tuning for sd and sdio devices that are using SDR50 or SDR104. Make sure clock is hold during tuning for sdio devices. Signed-off-by: Fredrik Soderstedt <fredrik.soderstedt@stericsson.com> Acked-by: Johan Rudholm <jrudholm@gmail.com> Acked-by: Ulf Hansson <ulf.hansson@linaro.org> Signed-off-by: Chris Ball <cjb@laptop.org>
Diffstat (limited to 'drivers/mmc/core/sd.c')
-rw-r--r--drivers/mmc/core/sd.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/drivers/mmc/core/sd.c b/drivers/mmc/core/sd.c
index 9e645e1..8373d22 100644
--- a/drivers/mmc/core/sd.c
+++ b/drivers/mmc/core/sd.c
@@ -646,8 +646,13 @@ static int mmc_sd_init_uhs_card(struct mmc_card *card)
if (err)
goto out;
- /* SPI mode doesn't define CMD19 */
- if (!mmc_host_is_spi(card->host) && card->host->ops->execute_tuning) {
+ /*
+ * SPI mode doesn't define CMD19 and tuning is only valid for SDR50 and
+ * SDR104 mode SD-cards. Note that tuning is mandatory for SDR104.
+ */
+ if (!mmc_host_is_spi(card->host) && card->host->ops->execute_tuning &&
+ (card->sd_bus_speed == UHS_SDR50_BUS_SPEED ||
+ card->sd_bus_speed == UHS_SDR104_BUS_SPEED)) {
mmc_host_clk_hold(card->host);
err = card->host->ops->execute_tuning(card->host,
MMC_SEND_TUNING_BLOCK);
OpenPOWER on IntegriCloud