From: Moriya Itzchaki Date: Wed, 27 May 2026 20:05:02 +0000 (+0300) Subject: wifi: iwlwifi: fix STEP_URM register address for SC devices X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f60f2159219fda21e5fde5a6a9aa94edb14d76a0;p=thirdparty%2Flinux.git wifi: iwlwifi: fix STEP_URM register address for SC devices 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 Link: https://patch.msgid.link/20260527230313.f0c115c4f74e.I3c66b2e39a97f754e853ac7e7dba8e433523619e@changeid Signed-off-by: Miri Korenblit --- diff --git a/drivers/net/wireless/intel/iwlwifi/iwl-prph.h b/drivers/net/wireless/intel/iwlwifi/iwl-prph.h index 6ca1f51b69a1c..50acfe0d4f794 100644 --- a/drivers/net/wireless/intel/iwlwifi/iwl-prph.h +++ b/drivers/net/wireless/intel/iwlwifi/iwl-prph.h @@ -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 diff --git a/drivers/net/wireless/intel/iwlwifi/pcie/gen1_2/trans-gen2.c b/drivers/net/wireless/intel/iwlwifi/pcie/gen1_2/trans-gen2.c index 0e324aeb90556..f41cbe62e7aa5 100644 --- a/drivers/net/wireless/intel/iwlwifi/pcie/gen1_2/trans-gen2.c +++ b/drivers/net/wireless/intel/iwlwifi/pcie/gen1_2/trans-gen2.c @@ -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)