[RFC v0 8/8] iwl4965: use firmware_stat instead of completion
From: Daniel Wagner <hidden>
Date: 2016-07-28 07:56:26
Also in:
linux-input, lkml
Subsystem:
intel wireless 3945abg/bg, 4965agn (iwlegacy), the rest · Maintainers:
Stanislaw Gruszka, Linus Torvalds
From: Daniel Wagner <redacted> Loading firmware is an operation many drivers implement in various ways around the completion API. And most of them do it almost in the same way. Let's reuse the firmware_stat API which is used also by the firmware_class loader. Apart of streamlining the firmware loading states we also document it slightly better. Signed-off-by: Daniel Wagner <redacted> --- drivers/net/wireless/intel/iwlegacy/4965-mac.c | 8 ++++---- drivers/net/wireless/intel/iwlegacy/common.h | 3 ++- 2 files changed, 6 insertions(+), 5 deletions(-)
diff --git a/drivers/net/wireless/intel/iwlegacy/4965-mac.c b/drivers/net/wireless/intel/iwlegacy/4965-mac.c
index a91d170..d5e5808 100644
--- a/drivers/net/wireless/intel/iwlegacy/4965-mac.c
+++ b/drivers/net/wireless/intel/iwlegacy/4965-mac.c@@ -5005,7 +5005,7 @@ il4965_ucode_callback(const struct firmware *ucode_raw, void *context) /* We have our copies now, allow OS release its copies */ release_firmware(ucode_raw); - complete(&il->_4965.firmware_loading_complete); + fw_loading_done(il->_4965.fw_st); return; try_again:
@@ -5019,7 +5019,7 @@ err_pci_alloc: IL_ERR("failed to allocate pci memory\n"); il4965_dealloc_ucode_pci(il); out_unbind: - complete(&il->_4965.firmware_loading_complete); + fw_loading_done(il->_4965.fw_st); device_release_driver(&il->pci_dev->dev); release_firmware(ucode_raw); }
@@ -6678,7 +6678,7 @@ il4965_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent) il_power_initialize(il); - init_completion(&il->_4965.firmware_loading_complete); + firmware_stat_init(&il->_4965.fw_st); err = il4965_request_firmware(il, true); if (err)
@@ -6716,7 +6716,7 @@ il4965_pci_remove(struct pci_dev *pdev) if (!il) return; - wait_for_completion(&il->_4965.firmware_loading_complete); + fw_loading_wait(il->_4965.fw_st); D_INFO("*** UNLOAD DRIVER ***\n");
diff --git a/drivers/net/wireless/intel/iwlegacy/common.h b/drivers/net/wireless/intel/iwlegacy/common.h
index 726ede3..94af7b7 100644
--- a/drivers/net/wireless/intel/iwlegacy/common.h
+++ b/drivers/net/wireless/intel/iwlegacy/common.h@@ -32,6 +32,7 @@ #include <linux/leds.h> #include <linux/wait.h> #include <linux/io.h> +#include <linux/firmware.h> #include <net/mac80211.h> #include <net/ieee80211_radiotap.h>
@@ -1357,7 +1358,7 @@ struct il_priv { bool last_phy_res_valid; u32 ampdu_ref; - struct completion firmware_loading_complete; + struct firmware_stat fw_st; /* * chain noise reset and gain commands are the
--
2.7.4