summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAl Cooper <alcooperx@gmail.com>2012-11-30 10:53:35 -0500
committerMandar Padmawar <mpadmawar@nvidia.com>2013-05-21 03:00:14 -0700
commit2e7015b092370733214a858e479c4c306341e6d2 (patch)
treebfeab65a112cee74fdc3f2fa373a29482884b0de
parentf98a57bd0396b68dd8756944b8bbb539fbce4e60 (diff)
mmc: Limit MMC speed to 52MHz if not HS200
If "caps2" host capabilities does not indicate support for MMC HS200, don't allow clock speeds >52MHz. Currently, for MMC, the clock speed is set to the lesser of the max speed the eMMC module supports (card->ext_csd.hs_max_dtr) or the max base clock of the host controller (host->f_max based on BASE_CLK_FREQ in the host CAPS register). This means that a host controller that doesn't support HS200 mode but has a base clock of 100MHz and an eMMC module that supports HS200 speeds will end up using a 100MHz clock. Change-Id: I2967fcc733b7178bdf54d6f75f65bdff253fc1cc Signed-off-by: Pavan Kunapuli <pkunapuli@nvidia.com> Signed-off-by: Al Cooper <alcooperx@gmail.com> Signed-off-by: Chris Ball <cjb@laptop.org> Reviewed-on: http://git-master/r/227758 (cherry picked from commit ed5cc4ef1e8bcdae292b6f234dbb7054cf5542cb) Reviewed-on: http://git-master/r/230047 Reviewed-by: Automatic_Commit_Validation_User GVS: Gerrit_Virtual_Submit Reviewed-by: Matt Wagner <mwagner@nvidia.com> Tested-by: Matt Wagner <mwagner@nvidia.com>
-rw-r--r--drivers/mmc/core/mmc.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/mmc/core/mmc.c b/drivers/mmc/core/mmc.c
index 88b45bbbc17e..fb2fbb66a761 100644
--- a/drivers/mmc/core/mmc.c
+++ b/drivers/mmc/core/mmc.c
@@ -1119,6 +1119,8 @@ static int mmc_init_card(struct mmc_host *host, u32 ocr,
if (mmc_card_highspeed(card) || mmc_card_hs200(card)) {
if (max_dtr > card->ext_csd.hs_max_dtr)
max_dtr = card->ext_csd.hs_max_dtr;
+ if (mmc_card_highspeed(card) && (max_dtr > 52000000))
+ max_dtr = 52000000;
} else if (max_dtr > card->csd.max_dtr) {
max_dtr = card->csd.max_dtr;
}