diff mbox series

[1/1] msft: Add xlat_firmware_status for JEDEC Byte Addressable Energy Backed DSM

Message ID 20210109153633.8493-1-redhairer.li@intel.com (mailing list archive)
State Accepted
Commit 11357d68b77392e4360ae2824e75bf8397a84885
Headers show
Series [1/1] msft: Add xlat_firmware_status for JEDEC Byte Addressable Energy Backed DSM | expand

Commit Message

Li, Redhairer Jan. 9, 2021, 3:36 p.m. UTC
From: Redhairer Li <redhairer.li@intel.com>

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 <redhairer.li@intel.com>
---
 ndctl/lib/msft.c | 22 ++++++++++++++++++++++
 ndctl/lib/msft.h |  6 ++++++
 2 files changed, 28 insertions(+)

Comments

Dan Williams Jan. 13, 2021, 7:12 a.m. UTC | #1
[ notify Vishal ]

On Sat, Jan 9, 2021 at 9:37 AM redhairer <redhairer.li@intel.com> wrote:
>
> From: Redhairer Li <redhairer.li@intel.com>
>
> 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 <redhairer.li@intel.com>

Looks good to me:

Reviewed-by: Dan Williams <dan.j.williams@intel.com>
diff mbox series

Patch

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__ */