diff options
author | Arindam Nath <arindam.nath@amd.com> | 2011-05-05 02:49:02 -0400 |
---|---|---|
committer | Chris Ball <cjb@laptop.org> | 2011-05-24 23:53:45 -0400 |
commit | 5371c927bcd06a5c9dd6785bab2d452b87d9abc6 (patch) | |
tree | 71add97be08e93fcb5ac2bfcc44fc66d8f2b92df /include/linux/mmc/card.h | |
parent | 49c468fcf878d2c86e31920cf54aa90c88418a66 (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 'include/linux/mmc/card.h')
-rw-r--r-- | include/linux/mmc/card.h | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/include/linux/mmc/card.h b/include/linux/mmc/card.h index 4ef6ded6347d..47b5ad3960b7 100644 --- a/include/linux/mmc/card.h +++ b/include/linux/mmc/card.h | |||
@@ -105,6 +105,15 @@ struct sd_switch_caps { | |||
105 | #define SD_DRIVER_TYPE_C 0x04 | 105 | #define SD_DRIVER_TYPE_C 0x04 |
106 | #define SD_DRIVER_TYPE_D 0x08 | 106 | #define SD_DRIVER_TYPE_D 0x08 |
107 | unsigned int sd3_curr_limit; | 107 | unsigned int sd3_curr_limit; |
108 | #define SD_SET_CURRENT_LIMIT_200 0 | ||
109 | #define SD_SET_CURRENT_LIMIT_400 1 | ||
110 | #define SD_SET_CURRENT_LIMIT_600 2 | ||
111 | #define SD_SET_CURRENT_LIMIT_800 3 | ||
112 | |||
113 | #define SD_MAX_CURRENT_200 (1 << SD_SET_CURRENT_LIMIT_200) | ||
114 | #define SD_MAX_CURRENT_400 (1 << SD_SET_CURRENT_LIMIT_400) | ||
115 | #define SD_MAX_CURRENT_600 (1 << SD_SET_CURRENT_LIMIT_600) | ||
116 | #define SD_MAX_CURRENT_800 (1 << SD_SET_CURRENT_LIMIT_800) | ||
108 | }; | 117 | }; |
109 | 118 | ||
110 | struct sdio_cccr { | 119 | struct sdio_cccr { |