OSDN Git Service

mmc: Replace "enhanced_area_en" attribute by "partition_setting_completed"
authorGrégory Soutadé <gsoutade@neotion.com>
Mon, 15 Sep 2014 15:47:09 +0000 (17:47 +0200)
committerUlf Hansson <ulf.hansson@linaro.org>
Thu, 18 Sep 2014 22:03:36 +0000 (00:03 +0200)
Replace ext_csd "enhanced_area_en" attribute by
 "partition_setting_completed". It was used whether or
 not enhanced user area is defined and without checks of
 EXT_CSD_PARTITION_SETTING_COMPLETED bit.

Signed-off-by: Grégory Soutadé <gsoutade@neotion.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 5b4b969..eb78fcd 100644 (file)
@@ -315,7 +315,6 @@ static void mmc_manage_enhanced_area(struct mmc_card *card, u8 *ext_csd)
                hc_wp_grp_sz =
                        ext_csd[EXT_CSD_HC_WP_GRP_SIZE];
 
-               card->ext_csd.enhanced_area_en = 1;
                /*
                 * calculate the enhanced data area offset, in bytes
                 */
@@ -356,13 +355,11 @@ static void mmc_manage_gp_partitions(struct mmc_card *card, u8 *ext_csd)
         */
        if (ext_csd[EXT_CSD_PARTITION_SUPPORT] &
            EXT_CSD_PART_SUPPORT_PART_EN) {
-               if (card->ext_csd.enhanced_area_en != 1) {
+               if (card->ext_csd.partition_setting_completed) {
                        hc_erase_grp_sz =
                                ext_csd[EXT_CSD_HC_ERASE_GRP_SIZE];
                        hc_wp_grp_sz =
                                ext_csd[EXT_CSD_HC_WP_GRP_SIZE];
-
-                       card->ext_csd.enhanced_area_en = 1;
                }
 
                for (idx = 0; idx < MMC_NUM_GP_PARTITION; idx++) {
@@ -489,6 +486,12 @@ static int mmc_read_ext_csd(struct mmc_card *card, u8 *ext_csd)
                ext_csd[EXT_CSD_TRIM_MULT];
        card->ext_csd.raw_partition_support = ext_csd[EXT_CSD_PARTITION_SUPPORT];
        if (card->ext_csd.rev >= 4) {
+               if (ext_csd[EXT_CSD_PARTITION_SETTING_COMPLETED] &
+                   EXT_CSD_PART_SETTING_COMPLETED)
+                       card->ext_csd.partition_setting_completed = 1;
+               else
+                       card->ext_csd.partition_setting_completed = 0;
+
                mmc_manage_enhanced_area(card, ext_csd);
 
                mmc_manage_gp_partitions(card, ext_csd);
@@ -1348,7 +1351,7 @@ static int mmc_init_card(struct mmc_host *host, u32 ocr,
         * If enhanced_area_en is TRUE, host needs to enable ERASE_GRP_DEF
         * bit.  This bit will be lost every time after a reset or power off.
         */
-       if (card->ext_csd.enhanced_area_en ||
+       if (card->ext_csd.partition_setting_completed ||
            (card->ext_csd.rev >= 3 && (host->caps2 & MMC_CAP2_HC_ERASE_SZ))) {
                err = mmc_switch(card, EXT_CSD_CMD_SET_NORMAL,
                                 EXT_CSD_ERASE_GROUP_DEF, 1,
index 0ea795f..b0692d2 100644 (file)
@@ -75,7 +75,7 @@ struct mmc_ext_csd {
        unsigned int            sec_trim_mult;  /* Secure trim multiplier  */
        unsigned int            sec_erase_mult; /* Secure erase multiplier */
        unsigned int            trim_timeout;           /* In milliseconds */
-       bool                    enhanced_area_en;       /* enable bit */
+       bool                    partition_setting_completed;    /* enable bit */
        unsigned long long      enhanced_area_offset;   /* Units: Byte */
        unsigned int            enhanced_area_size;     /* Units: KB */
        unsigned int            cache_size;             /* Units: KB */
index 64ec963..78753bc 100644 (file)
@@ -281,6 +281,7 @@ struct _mmc_csd {
 #define EXT_CSD_EXP_EVENTS_CTRL                56      /* R/W, 2 bytes */
 #define EXT_CSD_DATA_SECTOR_SIZE       61      /* R */
 #define EXT_CSD_GP_SIZE_MULT           143     /* R/W */
+#define EXT_CSD_PARTITION_SETTING_COMPLETED 155        /* R/W */
 #define EXT_CSD_PARTITION_ATTRIBUTE    156     /* R/W */
 #define EXT_CSD_PARTITION_SUPPORT      160     /* RO */
 #define EXT_CSD_HPI_MGMT               161     /* R/W */
@@ -349,6 +350,7 @@ struct _mmc_csd {
 #define EXT_CSD_PART_CONFIG_ACC_RPMB   (0x3)
 #define EXT_CSD_PART_CONFIG_ACC_GP0    (0x4)
 
+#define EXT_CSD_PART_SETTING_COMPLETED (0x1)
 #define EXT_CSD_PART_SUPPORT_PART_EN   (0x1)
 
 #define EXT_CSD_CMD_SET_NORMAL         (1<<0)