aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/drivers/base/firmware_loader/firmware.h
diff options
context:
space:
mode:
authorRuss Weight <russell.h.weight@intel.com>2022-04-21 14:21:58 -0700
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2022-04-22 17:13:54 +0200
commit736da0b657f615db7e29606eb8818871534a8943 (patch)
tree08ef84fe2ae370dff2ec6849dfe76c7971a8d5e3 /drivers/base/firmware_loader/firmware.h
parentfirmware_loader: Clear data and size in fw_free_paged_buf (diff)
downloadwireguard-linux-736da0b657f615db7e29606eb8818871534a8943.tar.xz
wireguard-linux-736da0b657f615db7e29606eb8818871534a8943.zip
firmware_loader: Check fw_state_is_done in loading_store
Rename fw_sysfs_done() and fw_sysfs_loading() to fw_state_is_done() and fw_state_is_loading() respectively, and place them along side companion functions in drivers/base/firmware_loader/firmware.h. Use the fw_state_is_done() function to exit early from firmware_loading_store() if the state is already "done". This is being done in preparation for supporting persistent sysfs nodes to allow userspace to upload firmware to a device, potentially reusing the sysfs loading and data files multiple times. Reviewed-by: Luis Chamberlain <mcgrof@kernel.org> Reviewed-by: Tianfei zhang <tianfei.zhang@intel.com> Tested-by: Matthew Gerlach <matthew.gerlach@linux.intel.com> Signed-off-by: Russ Weight <russell.h.weight@intel.com> Link: https://lore.kernel.org/r/20220421212204.36052-3-russell.h.weight@intel.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/base/firmware_loader/firmware.h')
-rw-r--r--drivers/base/firmware_loader/firmware.h10
1 files changed, 10 insertions, 0 deletions
diff --git a/drivers/base/firmware_loader/firmware.h b/drivers/base/firmware_loader/firmware.h
index 2889f446ad41..d5ff32a1ba2d 100644
--- a/drivers/base/firmware_loader/firmware.h
+++ b/drivers/base/firmware_loader/firmware.h
@@ -149,6 +149,16 @@ static inline void fw_state_done(struct fw_priv *fw_priv)
__fw_state_set(fw_priv, FW_STATUS_DONE);
}
+static inline bool fw_state_is_done(struct fw_priv *fw_priv)
+{
+ return __fw_state_check(fw_priv, FW_STATUS_DONE);
+}
+
+static inline bool fw_state_is_loading(struct fw_priv *fw_priv)
+{
+ return __fw_state_check(fw_priv, FW_STATUS_LOADING);
+}
+
int assign_fw(struct firmware *fw, struct device *device);
#ifdef CONFIG_FW_LOADER