The FIRMWARE_VERSION field is 8-bytes in size and contains non-printable
characters.

Treat this field as binary and print individual byte values in hex

Signed-off-by: James Nuss <jamesn...@nanometrics.ca>
---
 mmc.h      |  9 ++++++++-
 mmc_cmds.c | 11 +++++++++--
 2 files changed, 17 insertions(+), 3 deletions(-)

diff --git a/mmc.h b/mmc.h
index 5d8a7e3..86e209a 100644
--- a/mmc.h
+++ b/mmc.h
@@ -59,7 +59,14 @@
 #define EXT_CSD_OPTIMAL_READ_SIZE      266     /* RO */
 #define EXT_CSD_OPTIMAL_WRITE_SIZE     265     /* RO */
 #define EXT_CSD_OPTIMAL_TRIM_UNIT_SIZE 264     /* RO */
-#define EXT_CSD_FIRMWARE_VERSION       254     /* RO */
+#define EXT_CSD_FIRMWARE_VERSION_7     261     /* RO */
+#define EXT_CSD_FIRMWARE_VERSION_6     260     /* RO */
+#define EXT_CSD_FIRMWARE_VERSION_5     259     /* RO */
+#define EXT_CSD_FIRMWARE_VERSION_4     258     /* RO */
+#define EXT_CSD_FIRMWARE_VERSION_3     257     /* RO */
+#define EXT_CSD_FIRMWARE_VERSION_2     256     /* RO */
+#define EXT_CSD_FIRMWARE_VERSION_1     255     /* RO */
+#define EXT_CSD_FIRMWARE_VERSION_0     254     /* RO */
 #define EXT_CSD_CACHE_SIZE_3           252
 #define EXT_CSD_CACHE_SIZE_2           251
 #define EXT_CSD_CACHE_SIZE_1           250
diff --git a/mmc_cmds.c b/mmc_cmds.c
index 97ea111..45aa4c0 100644
--- a/mmc_cmds.c
+++ b/mmc_cmds.c
@@ -1758,8 +1758,15 @@ int do_read_extcsd(int nargs, char **argv)
        }
 
        if (ext_csd_rev >= 7) {
-               printf("eMMC Firmware Version: %s\n",
-                       (char*)&ext_csd[EXT_CSD_FIRMWARE_VERSION]);
+               printf("Firmware Version: 0x%02x%02x%02x%02x%02x%02x%02x%02x\n",
+                       ext_csd[EXT_CSD_FIRMWARE_VERSION_7],
+                       ext_csd[EXT_CSD_FIRMWARE_VERSION_6],
+                       ext_csd[EXT_CSD_FIRMWARE_VERSION_5],
+                       ext_csd[EXT_CSD_FIRMWARE_VERSION_4],
+                       ext_csd[EXT_CSD_FIRMWARE_VERSION_3],
+                       ext_csd[EXT_CSD_FIRMWARE_VERSION_2],
+                       ext_csd[EXT_CSD_FIRMWARE_VERSION_1],
+                       ext_csd[EXT_CSD_FIRMWARE_VERSION_0]);
                printf("eMMC Life Time Estimation A 
[EXT_CSD_DEVICE_LIFE_TIME_EST_TYP_A]: 0x%02x\n",
                        ext_csd[EXT_CSD_DEVICE_LIFE_TIME_EST_TYP_A]);
                printf("eMMC Life Time Estimation B 
[EXT_CSD_DEVICE_LIFE_TIME_EST_TYP_B]: 0x%02x\n",
-- 
2.7.4


-- 
This message is intended exclusively for the individual or entity to which 
it is addressed. This communication may contain information that is 
proprietary, privileged, confidential or otherwise legally exempt from 
disclosure. If you are not the named addressee, or have been inadvertently 
and erroneously referenced in the address line, you are not authorized to 
read, print, retain, copy or disseminate this message or any part of it. If 
you have received this message in error, please notify the sender 
immediately by e-mail and delete all copies of the message.

Reply via email to