]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
wifi: iwlwifi: Add an helper function for polling bits
authorRotem Kerem <rotem.kerem@intel.com>
Wed, 9 Jul 2025 05:16:20 +0000 (08:16 +0300)
committerMiri Korenblit <miriam.rachel.korenblit@intel.com>
Wed, 9 Jul 2025 08:39:28 +0000 (11:39 +0300)
Add iwl_poll_bits helper to simplify calls to iwl_poll_bit
for the case when the bits and mask arguments are equal.

Signed-off-by: Rotem Kerem <rotem.kerem@intel.com>
Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
Link: https://patch.msgid.link/20250709081300.6bbc4bccc597.Ic7a10a7f8a9a32a9a9feecaf6e3a48fa37479f2d@changeid
drivers/net/wireless/intel/iwlwifi/dvm/eeprom.c
drivers/net/wireless/intel/iwlwifi/iwl-io.c
drivers/net/wireless/intel/iwlwifi/iwl-io.h
drivers/net/wireless/intel/iwlwifi/pcie/gen1_2/trans.c
drivers/net/wireless/intel/iwlwifi/pcie/gen1_2/tx.c

index 2423125e52849aaf9840488a78ca47c4a076e131..8087aee03d1c018da7be01908909d4b3ecf06f6f 100644 (file)
@@ -676,10 +676,9 @@ static int iwl_eeprom_acquire_semaphore(struct iwl_trans *trans)
                            CSR_HW_IF_CONFIG_REG_EEPROM_OWN_SEM);
 
                /* See if we got it */
-               ret = iwl_poll_bit(trans, CSR_HW_IF_CONFIG_REG,
-                               CSR_HW_IF_CONFIG_REG_EEPROM_OWN_SEM,
-                               CSR_HW_IF_CONFIG_REG_EEPROM_OWN_SEM,
-                               IWL_EEPROM_SEM_TIMEOUT);
+               ret = iwl_poll_bits(trans, CSR_HW_IF_CONFIG_REG,
+                                   CSR_HW_IF_CONFIG_REG_EEPROM_OWN_SEM,
+                                   IWL_EEPROM_SEM_TIMEOUT);
                if (ret >= 0) {
                        IWL_DEBUG_EEPROM(trans->dev,
                                         "Acquired semaphore after %d tries.\n",
@@ -797,10 +796,9 @@ static int iwl_read_otp_word(struct iwl_trans *trans, u16 addr,
 
        iwl_write32(trans, CSR_EEPROM_REG,
                    CSR_EEPROM_REG_MSK_ADDR & (addr << 1));
-       ret = iwl_poll_bit(trans, CSR_EEPROM_REG,
-                                CSR_EEPROM_REG_READ_VALID_MSK,
-                                CSR_EEPROM_REG_READ_VALID_MSK,
-                                IWL_EEPROM_ACCESS_TIMEOUT);
+       ret = iwl_poll_bits(trans, CSR_EEPROM_REG,
+                           CSR_EEPROM_REG_READ_VALID_MSK,
+                           IWL_EEPROM_ACCESS_TIMEOUT);
        if (ret < 0) {
                IWL_ERR(trans, "Time out reading OTP[%d]\n", addr);
                return ret;
@@ -993,10 +991,9 @@ int iwl_read_eeprom(struct iwl_trans *trans, u8 **eeprom, size_t *eeprom_size)
                        iwl_write32(trans, CSR_EEPROM_REG,
                                    CSR_EEPROM_REG_MSK_ADDR & (addr << 1));
 
-                       ret = iwl_poll_bit(trans, CSR_EEPROM_REG,
-                                          CSR_EEPROM_REG_READ_VALID_MSK,
-                                          CSR_EEPROM_REG_READ_VALID_MSK,
-                                          IWL_EEPROM_ACCESS_TIMEOUT);
+                       ret = iwl_poll_bits(trans, CSR_EEPROM_REG,
+                                           CSR_EEPROM_REG_READ_VALID_MSK,
+                                           IWL_EEPROM_ACCESS_TIMEOUT);
                        if (ret < 0) {
                                IWL_ERR(trans,
                                        "Time out reading EEPROM[%d]\n", addr);
index 80591809164e503594bad44959e64dc68ba43e25..47ad447b622652a8f210ccd7ce6edb88dd28876a 100644 (file)
@@ -47,8 +47,8 @@ IWL_EXPORT_SYMBOL(iwl_read32);
 
 #define IWL_POLL_INTERVAL 10   /* microseconds */
 
-int iwl_poll_bit(struct iwl_trans *trans, u32 addr,
-                u32 bits, u32 mask, int timeout)
+int iwl_poll_bits_mask(struct iwl_trans *trans, u32 addr,
+                      u32 bits, u32 mask, int timeout)
 {
        int t = 0;
 
@@ -61,7 +61,7 @@ int iwl_poll_bit(struct iwl_trans *trans, u32 addr,
 
        return -ETIMEDOUT;
 }
-IWL_EXPORT_SYMBOL(iwl_poll_bit);
+IWL_EXPORT_SYMBOL(iwl_poll_bits_mask);
 
 u32 iwl_read_direct32(struct iwl_trans *trans, u32 reg)
 {
@@ -477,7 +477,7 @@ int iwl_finish_nic_init(struct iwl_trans *trans)
         * device-internal resources is supported, e.g. iwl_write_prph()
         * and accesses to uCode SRAM.
         */
-       err = iwl_poll_bit(trans, CSR_GP_CNTRL, poll_ready, poll_ready, 25000);
+       err = iwl_poll_bits(trans, CSR_GP_CNTRL, poll_ready, 25000);
        if (err < 0) {
                IWL_DEBUG_INFO(trans, "Failed to wake NIC\n");
 
index f4833c5fe86e9e2ad7c5e18d8e170897c41df1e1..731cda1a4e6632ea8b089c1b3070229d64b23f90 100644 (file)
@@ -23,8 +23,13 @@ static inline void iwl_clear_bit(struct iwl_trans *trans, u32 reg, u32 mask)
        iwl_trans_set_bits_mask(trans, reg, mask, 0);
 }
 
-int iwl_poll_bit(struct iwl_trans *trans, u32 addr,
-                u32 bits, u32 mask, int timeout);
+int iwl_poll_bits_mask(struct iwl_trans *trans, u32 addr,
+                      u32 bits, u32 mask, int timeout);
+static inline int iwl_poll_bits(struct iwl_trans *trans, u32 addr, u32 bits,
+                               int timeout)
+{
+       return iwl_poll_bits_mask(trans, addr, bits, bits, timeout);
+}
 int iwl_poll_direct_bit(struct iwl_trans *trans, u32 addr, u32 mask,
                        int timeout);
 
index 97e90cbeb6cd695f9ac1c52748bcc588456de6f9..4b063c2e7356c2349310ad5827bc40e6bdcdac9b 100644 (file)
@@ -380,17 +380,15 @@ void iwl_pcie_apm_stop_master(struct iwl_trans *trans)
                iwl_set_bit(trans, CSR_GP_CNTRL,
                            CSR_GP_CNTRL_REG_FLAG_BUS_MASTER_DISABLE_REQ);
 
-               ret = iwl_poll_bit(trans, CSR_GP_CNTRL,
-                                  CSR_GP_CNTRL_REG_FLAG_BUS_MASTER_DISABLE_STATUS,
-                                  CSR_GP_CNTRL_REG_FLAG_BUS_MASTER_DISABLE_STATUS,
-                                  100);
+               ret = iwl_poll_bits(trans, CSR_GP_CNTRL,
+                                   CSR_GP_CNTRL_REG_FLAG_BUS_MASTER_DISABLE_STATUS,
+                                   100);
                usleep_range(10000, 20000);
        } else {
                iwl_set_bit(trans, CSR_RESET, CSR_RESET_REG_FLAG_STOP_MASTER);
 
-               ret = iwl_poll_bit(trans, CSR_RESET,
-                                  CSR_RESET_REG_FLAG_MASTER_DISABLED,
-                                  CSR_RESET_REG_FLAG_MASTER_DISABLED, 100);
+               ret = iwl_poll_bits(trans, CSR_RESET,
+                                   CSR_RESET_REG_FLAG_MASTER_DISABLED, 100);
        }
 
        if (ret < 0)
@@ -492,10 +490,9 @@ static int iwl_pcie_set_hw_ready(struct iwl_trans *trans)
                    CSR_HW_IF_CONFIG_REG_PCI_OWN_SET);
 
        /* See if we got it */
-       ret = iwl_poll_bit(trans, CSR_HW_IF_CONFIG_REG,
-                          CSR_HW_IF_CONFIG_REG_PCI_OWN_SET,
-                          CSR_HW_IF_CONFIG_REG_PCI_OWN_SET,
-                          HW_READY_TIMEOUT);
+       ret = iwl_poll_bits(trans, CSR_HW_IF_CONFIG_REG,
+                           CSR_HW_IF_CONFIG_REG_PCI_OWN_SET,
+                           HW_READY_TIMEOUT);
 
        if (ret >= 0)
                iwl_set_bit(trans, CSR_MBOX_SET_REG, CSR_MBOX_SET_REG_OS_ALIVE);
@@ -2354,7 +2351,7 @@ bool __iwl_trans_pcie_grab_nic_access(struct iwl_trans *trans, bool silent)
         * 5000 series and later (including 1000 series) have non-volatile SRAM,
         * and do not save/restore SRAM when power cycling.
         */
-       ret = iwl_poll_bit(trans, CSR_GP_CNTRL, poll, mask, 15000);
+       ret = iwl_poll_bits_mask(trans, CSR_GP_CNTRL, poll, mask, 15000);
        if (unlikely(ret < 0)) {
                u32 cntrl = iwl_read32(trans, CSR_GP_CNTRL);
 
index 8676726d789b3b433344be00994fbe8aee1bfd36..3af6e3b3640d648b4b522de1a0e3733850b90ac2 100644 (file)
@@ -590,7 +590,7 @@ static void iwl_pcie_tx_stop_fh(struct iwl_trans *trans)
        }
 
        /* Wait for DMA channels to be idle */
-       ret = iwl_poll_bit(trans, FH_TSSR_TX_STATUS_REG, mask, mask, 5000);
+       ret = iwl_poll_bits(trans, FH_TSSR_TX_STATUS_REG, mask, 5000);
        if (ret < 0)
                IWL_ERR(trans,
                        "Failing on timeout while stopping DMA channel %d [0x%08x]\n",