]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
wifi: iwlwifi: fix STEP_URM register address for SC devices
authorMoriya Itzchaki <moriya.itzchaki@intel.com>
Wed, 27 May 2026 20:05:02 +0000 (23:05 +0300)
committerMiri Korenblit <miriam.rachel.korenblit@intel.com>
Wed, 3 Jun 2026 14:02:54 +0000 (17:02 +0300)
The CNVI_PMU_STEP_FLOW register address differs between device families.
For SC and newer devices, the register is at 0xA2D688,
while for BZ devices it's at 0xA2D588.

Signed-off-by: Moriya Itzchaki <moriya.itzchaki@intel.com>
Link: https://patch.msgid.link/20260527230313.f0c115c4f74e.I3c66b2e39a97f754e853ac7e7dba8e433523619e@changeid
Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
drivers/net/wireless/intel/iwlwifi/iwl-prph.h
drivers/net/wireless/intel/iwlwifi/pcie/gen1_2/trans-gen2.c

index 6ca1f51b69a1cd1cc859df1b9b429dee3a4fc1bd..50acfe0d4f794d8912838183fc120a2ec80f16d3 100644 (file)
@@ -385,7 +385,8 @@ enum {
 #define   CNVI_SCU_REG_FOR_ECO_1_WIAMT_KNOWN           BIT(4)
 #define   CNVI_SCU_REG_FOR_ECO_1_WIAMT_PRESENT         BIT(5)
 
-#define CNVI_PMU_STEP_FLOW                             0xA2D588
+#define CNVI_PMU_STEP_FLOW_BZ                          0xA2D588
+#define CNVI_PMU_STEP_FLOW_SC                          0xA2D688
 #define CNVI_PMU_STEP_FLOW_FORCE_URM                   BIT(2)
 
 #define PREG_AUX_BUS_WPROT_0           0xA04CC0
index 0e324aeb9055627276b48fb1150f84e2e7f55065..f41cbe62e7aa57dcfd2b0ce25bc580ae46d8c499 100644 (file)
@@ -376,6 +376,7 @@ static void iwl_pcie_get_rf_name(struct iwl_trans *trans)
 void iwl_trans_pcie_gen2_fw_alive(struct iwl_trans *trans)
 {
        struct iwl_trans_pcie *trans_pcie = IWL_TRANS_GET_PCIE_TRANS(trans);
+       u32 step_reg;
 
        iwl_pcie_reset_ict(trans);
 
@@ -404,10 +405,13 @@ void iwl_trans_pcie_gen2_fw_alive(struct iwl_trans *trans)
        iwl_pcie_get_rf_name(trans);
        mutex_unlock(&trans_pcie->mutex);
 
-       if (trans->mac_cfg->device_family >= IWL_DEVICE_FAMILY_BZ)
-               trans->step_urm = !!(iwl_read_prph(trans,
-                                                  CNVI_PMU_STEP_FLOW) &
-                                    CNVI_PMU_STEP_FLOW_FORCE_URM);
+       if (trans->mac_cfg->device_family < IWL_DEVICE_FAMILY_BZ)
+               return;
+
+       step_reg = trans->mac_cfg->device_family >= IWL_DEVICE_FAMILY_SC ?
+                  CNVI_PMU_STEP_FLOW_SC : CNVI_PMU_STEP_FLOW_BZ;
+       trans->step_urm = !!(iwl_read_prph(trans, step_reg) &
+                            CNVI_PMU_STEP_FLOW_FORCE_URM);
 }
 
 static bool iwl_pcie_set_ltr(struct iwl_trans *trans)