summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Gardiner <ben.l.gardiner@gmail.com>2013-09-19 11:14:28 -0400
committerChris Ball <cjb@laptop.org>2013-09-25 22:11:55 -0400
commit4da1c0dc8bb295993d05beebc0a6132af9713322 (patch)
treee157ca062508e40bf83f99ebc4e6a4e0339ec768
parente6e84e96ac031e261bda8d441aa9c4cade144437 (diff)
downloadmmc-utils-4da1c0dc8bb295993d05beebc0a6132af9713322.tar.gz
pretty print write reliability settings
Signed-off-by: Ben Gardiner <ben.l.gardiner@gmail.com> Signed-off-by: Chris Ball <cjb@laptop.org>
-rw-r--r--mmc.h1
-rw-r--r--mmc_cmds.c26
2 files changed, 25 insertions, 2 deletions
diff --git a/mmc.h b/mmc.h
index ad07b44..72baab8 100644
--- a/mmc.h
+++ b/mmc.h
@@ -46,6 +46,7 @@
#define EXT_CSD_PART_CONFIG 179
#define EXT_CSD_ERASE_GROUP_DEF 175
#define EXT_CSD_BOOT_WP 173
+#define EXT_CSD_WR_REL_SET 167
#define EXT_CSD_WR_REL_PARAM 166
#define EXT_CSD_SANITIZE_START 165
#define EXT_CSD_BKOPS_EN 163 /* R/W */
diff --git a/mmc_cmds.c b/mmc_cmds.c
index 5ea19ac..7874b23 100644
--- a/mmc_cmds.c
+++ b/mmc_cmds.c
@@ -917,10 +917,32 @@ int do_read_extcsd(int nargs, char **argv)
/* A441]: reserved [170] */
printf("FW configuration [FW_CONFIG]: 0x%02x\n", ext_csd[169]);
printf("RPMB Size [RPMB_SIZE_MULT]: 0x%02x\n", ext_csd[168]);
+
+ reg = ext_csd[EXT_CSD_WR_REL_SET];
+ const char * const fast = "existing data is at risk if a power "
+ "failure occurs during a write operation";
+ const char * const reliable = "the device protects existing "
+ "data if a power failure occurs during a write "
+ "operation";
printf("Write reliability setting register"
- " [WR_REL_SET]: 0x%02x\n", ext_csd[167]);
+ " [WR_REL_SET]: 0x%02x\n", reg);
+
+ printf(" user area: %s\n", reg & (1<<0) ? reliable : fast);
+ int i;
+ for (i = 1; i <= 4; i++) {
+ printf(" partition %d: %s\n", i,
+ reg & (1<<i) ? reliable : fast);
+ }
+
+ reg = ext_csd[EXT_CSD_WR_REL_PARAM];
printf("Write reliability parameter register"
- " [WR_REL_PARAM]: 0x%02x\n", ext_csd[166]);
+ " [WR_REL_PARAM]: 0x%02x\n", reg);
+ if (reg & 0x01)
+ printf(" Device supports writing EXT_CSD_WR_REL_SET\n");
+ if (reg & 0x04)
+ printf(" Device supports the enhanced def. of reliable "
+ "write\n");
+
/* sanitize_start ext_csd[165]]: not readable
* bkops_start ext_csd[164]]: only writable */
printf("Enable background operations handshake"