mmc: Adding AUTO_BKOPS_EN bit set for Auto BKOPS support
authorUri Yanai <uri.yanai@sandisk.com>
Tue, 7 Feb 2017 16:00:01 +0000 (18:00 +0200)
committerUlf Hansson <ulf.hansson@linaro.org>
Tue, 14 Feb 2017 08:11:00 +0000 (09:11 +0100)
Adding dedicated flag for AUTO_BKOPS in card->ext_csd structure.
Read AUTO_BKOPS bit value from the device EXT_CSD and set to the
card->ext_csd structure.
In mmc_decode_ext_csd() add a print message in case the AUTO_BKOPS
is enabled

Signed-off-by: Uri Yanai <uri.yanai@sandisk.com>
Signed-off-by: Alex Lemberg <alex.lemberg@sandisk.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 1b67e30853531926995c923052b8617be280d833..e01e70c24ca203c18e13567d763e74060e258b5a 100644 (file)
@@ -546,6 +546,12 @@ static int mmc_decode_ext_csd(struct mmc_card *card, u8 *ext_csd)
                        if (card->ext_csd.man_bkops_en)
                                pr_debug("%s: MAN_BKOPS_EN bit is set\n",
                                        mmc_hostname(card->host));
+                       card->ext_csd.auto_bkops_en =
+                                       (ext_csd[EXT_CSD_BKOPS_EN] &
+                                               EXT_CSD_AUTO_BKOPS_MASK);
+                       if (card->ext_csd.auto_bkops_en)
+                               pr_debug("%s: AUTO_BKOPS_EN bit is set\n",
+                                       mmc_hostname(card->host));
                }
 
                /* check whether the eMMC card supports HPI */
index 29d00c91c25c5263ca1819ca5282a0ddfdef132b..77e61e0a216a2728dd5cfecf55299402ac03c384 100644 (file)
@@ -83,6 +83,7 @@ struct mmc_ext_csd {
        unsigned int            hpi_cmd;                /* cmd used as HPI */
        bool                    bkops;          /* background support bit */
        bool                    man_bkops_en;   /* manual bkops enable bit */
+       bool                    auto_bkops_en;  /* auto bkops enable bit */
        unsigned int            data_sector_size;       /* 512 bytes or 4KB */
        unsigned int            data_tag_unit_size;     /* DATA TAG UNIT size */
        unsigned int            boot_ro_lock;           /* ro lock support */
index 7406d9badda078135f8bbb4bb806eb2c53912bbc..3ffc27aaeeaf2451eef9d63a74ce5675d0a9988f 100644 (file)
@@ -407,6 +407,7 @@ static inline bool mmc_op_multi(u32 opcode)
  * BKOPS modes
  */
 #define EXT_CSD_MANUAL_BKOPS_MASK      0x01
+#define EXT_CSD_AUTO_BKOPS_MASK                0x02
 
 /*
  * Command Queue