mmc: mmc: Read card's valid driver strength mask
authorAdrian Hunter <adrian.hunter@intel.com>
Fri, 6 Feb 2015 12:12:57 +0000 (14:12 +0200)
committerUlf Hansson <ulf.hansson@linaro.org>
Mon, 1 Jun 2015 07:07:13 +0000 (09:07 +0200)
In preparation for supporing drive strength selection
for eMMC, read the card's valid driver strengths.

Note that though the SD spec uses the term "drive strength",
the JEDEC eMMC spec uses the term "driver strength".

Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
drivers/mmc/core/mmc.c
include/linux/mmc/card.h
include/linux/mmc/mmc.h

index 03c94c2f23e1b6a7ad696ba3b160073e6d156fb4..9b808d1d6ca74160b28fb751d52da48d528586fe 100644 (file)
@@ -437,6 +437,7 @@ static int mmc_decode_ext_csd(struct mmc_card *card, u8 *ext_csd)
        card->ext_csd.raw_trim_mult =
                ext_csd[EXT_CSD_TRIM_MULT];
        card->ext_csd.raw_partition_support = ext_csd[EXT_CSD_PARTITION_SUPPORT];
+       card->ext_csd.raw_driver_strength = ext_csd[EXT_CSD_DRIVER_STRENGTH];
        if (card->ext_csd.rev >= 4) {
                if (ext_csd[EXT_CSD_PARTITION_SETTING_COMPLETED] &
                    EXT_CSD_PART_SETTING_COMPLETED)
index 2f073d5557934854107e87bfa7ec0d5b05e3810c..4d3776d25925a14d6140ce681911dd5c1a5bc133 100644 (file)
@@ -97,6 +97,7 @@ struct mmc_ext_csd {
        u8                      raw_erased_mem_count;   /* 181 */
        u8                      raw_ext_csd_structure;  /* 194 */
        u8                      raw_card_type;          /* 196 */
+       u8                      raw_driver_strength;    /* 197 */
        u8                      out_of_int_time;        /* 198 */
        u8                      raw_pwr_cl_52_195;      /* 200 */
        u8                      raw_pwr_cl_26_195;      /* 201 */
index 124f562118b8541384f05b3093f436a95be4cf00..4819cfbc3795626e5761d4ab9c7cee469b0d3fbd 100644 (file)
@@ -302,6 +302,7 @@ struct _mmc_csd {
 #define EXT_CSD_REV                    192     /* RO */
 #define EXT_CSD_STRUCTURE              194     /* RO */
 #define EXT_CSD_CARD_TYPE              196     /* RO */
+#define EXT_CSD_DRIVER_STRENGTH                197     /* RO */
 #define EXT_CSD_OUT_OF_INTERRUPT_TIME  198     /* RO */
 #define EXT_CSD_PART_SWITCH_TIME        199     /* RO */
 #define EXT_CSD_PWR_CL_52_195          200     /* RO */