aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/mmc/host/sdhci.c
diff options
context:
space:
mode:
authorArindam Nath <arindam.nath@amd.com>2011-05-05 02:49:02 -0400
committerChris Ball <cjb@laptop.org>2011-05-24 23:53:45 -0400
commit5371c927bcd06a5c9dd6785bab2d452b87d9abc6 (patch)
tree71add97be08e93fcb5ac2bfcc44fc66d8f2b92df /drivers/mmc/host/sdhci.c
parent49c468fcf878d2c86e31920cf54aa90c88418a66 (diff)
mmc: sd: set current limit for uhs cards
We decide on the current limit to be set for the card based on the Capability of Host Controller to provide current at 1.8V signalling, and the maximum current limit of the card as indicated by CMD6 mode 0. We then set the current limit for the card using CMD6 mode 1. As per the Physical Layer Spec v3.01, the current limit switch is only applicable for SDR50, SDR104, and DDR50 bus speed modes. For other UHS-I modes, we set the default current limit of 200mA. Tested by Zhangfei Gao with a Toshiba uhs card and general hs card, on mmp2 in SDMA mode. Signed-off-by: Arindam Nath <arindam.nath@amd.com> Reviewed-by: Philip Rakity <prakity@marvell.com> Tested-by: Philip Rakity <prakity@marvell.com> Acked-by: Zhangfei Gao <zhangfei.gao@marvell.com> Signed-off-by: Chris Ball <cjb@laptop.org>
Diffstat (limited to 'drivers/mmc/host/sdhci.c')
-rw-r--r--drivers/mmc/host/sdhci.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c
index 8994493dd94..2a15aad2eba 100644
--- a/drivers/mmc/host/sdhci.c
+++ b/drivers/mmc/host/sdhci.c
@@ -2216,6 +2216,16 @@ int sdhci_add_host(struct sdhci_host *host)
2216 2216
2217 if (max_current_180 > 150) 2217 if (max_current_180 > 150)
2218 mmc->caps |= MMC_CAP_SET_XPC_180; 2218 mmc->caps |= MMC_CAP_SET_XPC_180;
2219
2220 /* Maximum current capabilities of the host at 1.8V */
2221 if (max_current_180 >= 800)
2222 mmc->caps |= MMC_CAP_MAX_CURRENT_800;
2223 else if (max_current_180 >= 600)
2224 mmc->caps |= MMC_CAP_MAX_CURRENT_600;
2225 else if (max_current_180 >= 400)
2226 mmc->caps |= MMC_CAP_MAX_CURRENT_400;
2227 else
2228 mmc->caps |= MMC_CAP_MAX_CURRENT_200;
2219 } 2229 }
2220 2230
2221 mmc->ocr_avail = ocr_avail; 2231 mmc->ocr_avail = ocr_avail;