From 33b1e8f43d69bf00e5411f4d4a2a177883995322 Mon Sep 17 00:00:00 2001 From: Subhash Jadavani Date: Tue, 6 Mar 2012 17:59:12 +0530 Subject: [PATCH] --- yaml --- r: 297343 b: refs/heads/master c: 52d0974e36761fd1daf1eb02cfb2444a7b200087 h: refs/heads/master i: 297341: 01c209f41116ac2a3f016c263920cf0f8af86a9b 297339: 488982b053ad28103ea1fda09fb674ed3cc3dd4b 297335: 8a34c35098262fea5108810f6e7c8feaf7b6450e 297327: 804be50e83f9bf196c43c0800e771cee6986fe6e 297311: 55be6e17ff7f9c83573c534faa614383cc5cc2b5 297279: d094aef699ec8e3b2ca087d3b431c798f4a781fe 297215: b46e23fb6edfec3de0e4bc1c8aaa835c7c80aad4 v: v3 --- [refs] | 2 +- trunk/drivers/mmc/core/mmc.c | 38 ++++++++++++++++++++---------------- 2 files changed, 22 insertions(+), 18 deletions(-) diff --git a/[refs] b/[refs] index e684a941e6c9..da9d7d7e04f0 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 37f6190d54f4d90b886784fadbb9cf82d5c8b1ef +refs/heads/master: 52d0974e36761fd1daf1eb02cfb2444a7b200087 diff --git a/trunk/drivers/mmc/core/mmc.c b/trunk/drivers/mmc/core/mmc.c index 6defddd795f6..d7d8a93c3503 100644 --- a/trunk/drivers/mmc/core/mmc.c +++ b/trunk/drivers/mmc/core/mmc.c @@ -1046,22 +1046,6 @@ static int mmc_init_card(struct mmc_host *host, u32 ocr, } } - /* - * Enable HPI feature (if supported) - */ - if (card->ext_csd.hpi) { - err = mmc_switch(card, EXT_CSD_CMD_SET_NORMAL, - EXT_CSD_HPI_MGMT, 1, 0); - if (err && err != -EBADMSG) - goto free_card; - if (err) { - pr_warning("%s: Enabling HPI failed\n", - mmc_hostname(card->host)); - err = 0; - } else - card->ext_csd.hpi_en = 1; - } - /* * Compute bus speed. */ @@ -1111,9 +1095,12 @@ static int mmc_init_card(struct mmc_host *host, u32 ocr, * 4. execute tuning for HS200 */ if ((host->caps2 & MMC_CAP2_HS200) && - card->host->ops->execute_tuning) + card->host->ops->execute_tuning) { + mmc_host_clk_hold(card->host); err = card->host->ops->execute_tuning(card->host, MMC_SEND_TUNING_BLOCK_HS200); + mmc_host_clk_release(card->host); + } if (err) { pr_warning("%s: tuning execution failed\n", mmc_hostname(card->host)); @@ -1232,6 +1219,23 @@ static int mmc_init_card(struct mmc_host *host, u32 ocr, } } + /* + * Enable HPI feature (if supported) + */ + if (card->ext_csd.hpi) { + err = mmc_switch(card, EXT_CSD_CMD_SET_NORMAL, + EXT_CSD_HPI_MGMT, 1, + card->ext_csd.generic_cmd6_time); + if (err && err != -EBADMSG) + goto free_card; + if (err) { + pr_warning("%s: Enabling HPI failed\n", + mmc_hostname(card->host)); + err = 0; + } else + card->ext_csd.hpi_en = 1; + } + /* * If cache size is higher than 0, this indicates * the existence of cache and it can be turned on.