From: Redhairer Li <[email protected]>

Translate the status codes of the result of JEDEC Byte Addressable Energy Backed
DSM to generic errno style error codes.

Signed-off-by: Li Redhairer <[email protected]>
---
 ndctl/lib/msft.c | 22 ++++++++++++++++++++++
 ndctl/lib/msft.h |  6 ++++++
 2 files changed, 28 insertions(+)

diff --git a/ndctl/lib/msft.c b/ndctl/lib/msft.c
index 145872c..3112799 100644
--- a/ndctl/lib/msft.c
+++ b/ndctl/lib/msft.c
@@ -149,10 +149,32 @@ static unsigned int msft_cmd_smart_get_life_used(struct 
ndctl_cmd *cmd)
        return 100 - CMD_MSFT_SMART(cmd)->nvm_lifetime;
 }
 
+static int msft_cmd_xlat_firmware_status(struct ndctl_cmd *cmd)
+{
+       unsigned int status;
+
+       status = cmd->get_firmware_status(cmd) & NDN_MSFT_STATUS_MASK;
+
+       /* Common statuses */
+       switch (status) {
+       case NDN_MSFT_STATUS_SUCCESS:
+               return 0;
+       case NDN_MSFT_STATUS_NOTSUPP:
+               return -EOPNOTSUPP;
+       case NDN_MSFT_STATUS_INVALPARM:
+               return -EINVAL;
+       case NDN_MSFT_STATUS_I2CERR:
+               return -EIO;
+       }
+
+       return -ENOMSG;
+}
+
 struct ndctl_dimm_ops * const msft_dimm_ops = &(struct ndctl_dimm_ops) {
        .new_smart = msft_dimm_cmd_new_smart,
        .smart_get_flags = msft_cmd_smart_get_flags,
        .smart_get_health = msft_cmd_smart_get_health,
        .smart_get_media_temperature = msft_cmd_smart_get_media_temperature,
        .smart_get_life_used = msft_cmd_smart_get_life_used,
+       .xlat_firmware_status = msft_cmd_xlat_firmware_status,
 };
diff --git a/ndctl/lib/msft.h b/ndctl/lib/msft.h
index 7cfd26f..978cc11 100644
--- a/ndctl/lib/msft.h
+++ b/ndctl/lib/msft.h
@@ -50,4 +50,10 @@ struct ndn_pkg_msft {
        union ndn_msft_cmd      u;
 } __attribute__((packed));
 
+#define NDN_MSFT_STATUS_MASK           0xffff
+#define NDN_MSFT_STATUS_SUCCESS        0
+#define NDN_MSFT_STATUS_NOTSUPP        1
+#define NDN_MSFT_STATUS_INVALPARM      2
+#define NDN_MSFT_STATUS_I2CERR         3
+
 #endif /* __NDCTL_MSFT_H__ */
-- 
2.27.0.windows.1
_______________________________________________
Linux-nvdimm mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to