Commit 352a5f5f authored by Eric Lapuyade's avatar Eric Lapuyade Committed by Samuel Ortiz

NFC: netlink: Add result of firmware operation to completion event

Result is added as an NFC_ATTR_FIRMWARE_DOWNLOAD_STATUS attribute
containing the standard errno positive value of the completion result.
This event will be sent when the firmare download operation is done and
will contain the operation result.
Signed-off-by: default avatarEric Lapuyade <eric.lapuyade@intel.com>
Signed-off-by: default avatarSamuel Ortiz <sameo@linux.intel.com>
parent eab10b71
...@@ -224,7 +224,8 @@ int nfc_set_remote_general_bytes(struct nfc_dev *dev, ...@@ -224,7 +224,8 @@ int nfc_set_remote_general_bytes(struct nfc_dev *dev,
u8 *gt, u8 gt_len); u8 *gt, u8 gt_len);
u8 *nfc_get_local_general_bytes(struct nfc_dev *dev, size_t *gb_len); u8 *nfc_get_local_general_bytes(struct nfc_dev *dev, size_t *gb_len);
int nfc_fw_download_done(struct nfc_dev *dev, const char *firmware_name); int nfc_fw_download_done(struct nfc_dev *dev, const char *firmware_name,
u32 result);
int nfc_targets_found(struct nfc_dev *dev, int nfc_targets_found(struct nfc_dev *dev,
struct nfc_target *targets, int ntargets); struct nfc_target *targets, int ntargets);
......
...@@ -146,6 +146,7 @@ enum nfc_commands { ...@@ -146,6 +146,7 @@ enum nfc_commands {
* @NFC_ATTR_FIRMWARE_NAME: Free format firmware version * @NFC_ATTR_FIRMWARE_NAME: Free format firmware version
* @NFC_ATTR_SE_INDEX: Secure element index * @NFC_ATTR_SE_INDEX: Secure element index
* @NFC_ATTR_SE_TYPE: Secure element type (UICC or EMBEDDED) * @NFC_ATTR_SE_TYPE: Secure element type (UICC or EMBEDDED)
* @NFC_ATTR_FIRMWARE_DOWNLOAD_STATUS: Firmware download operation status
*/ */
enum nfc_attrs { enum nfc_attrs {
NFC_ATTR_UNSPEC, NFC_ATTR_UNSPEC,
...@@ -172,6 +173,7 @@ enum nfc_attrs { ...@@ -172,6 +173,7 @@ enum nfc_attrs {
NFC_ATTR_SE_INDEX, NFC_ATTR_SE_INDEX,
NFC_ATTR_SE_TYPE, NFC_ATTR_SE_TYPE,
NFC_ATTR_SE_AID, NFC_ATTR_SE_AID,
NFC_ATTR_FIRMWARE_DOWNLOAD_STATUS,
/* private: internal use only */ /* private: internal use only */
__NFC_ATTR_AFTER_LAST __NFC_ATTR_AFTER_LAST
}; };
......
...@@ -77,11 +77,19 @@ int nfc_fw_download(struct nfc_dev *dev, const char *firmware_name) ...@@ -77,11 +77,19 @@ int nfc_fw_download(struct nfc_dev *dev, const char *firmware_name)
return rc; return rc;
} }
int nfc_fw_download_done(struct nfc_dev *dev, const char *firmware_name) /**
* nfc_fw_download_done - inform that a firmware download was completed
*
* @dev: The nfc device to which firmware was downloaded
* @firmware_name: The firmware filename
* @result: The positive value of a standard errno value
*/
int nfc_fw_download_done(struct nfc_dev *dev, const char *firmware_name,
u32 result)
{ {
dev->fw_download_in_progress = false; dev->fw_download_in_progress = false;
return nfc_genl_fw_download_done(dev, firmware_name); return nfc_genl_fw_download_done(dev, firmware_name, result);
} }
EXPORT_SYMBOL(nfc_fw_download_done); EXPORT_SYMBOL(nfc_fw_download_done);
......
...@@ -1114,7 +1114,8 @@ static int nfc_genl_fw_download(struct sk_buff *skb, struct genl_info *info) ...@@ -1114,7 +1114,8 @@ static int nfc_genl_fw_download(struct sk_buff *skb, struct genl_info *info)
return rc; return rc;
} }
int nfc_genl_fw_download_done(struct nfc_dev *dev, const char *firmware_name) int nfc_genl_fw_download_done(struct nfc_dev *dev, const char *firmware_name,
u32 result)
{ {
struct sk_buff *msg; struct sk_buff *msg;
void *hdr; void *hdr;
...@@ -1129,6 +1130,7 @@ int nfc_genl_fw_download_done(struct nfc_dev *dev, const char *firmware_name) ...@@ -1129,6 +1130,7 @@ int nfc_genl_fw_download_done(struct nfc_dev *dev, const char *firmware_name)
goto free_msg; goto free_msg;
if (nla_put_string(msg, NFC_ATTR_FIRMWARE_NAME, firmware_name) || if (nla_put_string(msg, NFC_ATTR_FIRMWARE_NAME, firmware_name) ||
nla_put_u32(msg, NFC_ATTR_FIRMWARE_DOWNLOAD_STATUS, result) ||
nla_put_u32(msg, NFC_ATTR_DEVICE_INDEX, dev->idx)) nla_put_u32(msg, NFC_ATTR_DEVICE_INDEX, dev->idx))
goto nla_put_failure; goto nla_put_failure;
......
...@@ -124,7 +124,8 @@ static inline void nfc_device_iter_exit(struct class_dev_iter *iter) ...@@ -124,7 +124,8 @@ static inline void nfc_device_iter_exit(struct class_dev_iter *iter)
} }
int nfc_fw_download(struct nfc_dev *dev, const char *firmware_name); int nfc_fw_download(struct nfc_dev *dev, const char *firmware_name);
int nfc_genl_fw_download_done(struct nfc_dev *dev, const char *firmware_name); int nfc_genl_fw_download_done(struct nfc_dev *dev, const char *firmware_name,
u32 result);
int nfc_dev_up(struct nfc_dev *dev); int nfc_dev_up(struct nfc_dev *dev);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment