From 5226cecbc6c85bca11350c2d5589e0b9f31ac94f Mon Sep 17 00:00:00 2001 From: Mordechay Goodstein Date: Sun, 31 Jan 2021 20:22:01 +0200 Subject: [PATCH] iwlwifi: mvm: add IML/ROM information for other HW families This makes it easier to debug IML/ROM errors for other HW families as well. Signed-off-by: Mordechay Goodstein Signed-off-by: Luca Coelho Link: https://lore.kernel.org/r/iwlwifi.20210131201907.4a802b308a0f.I77855abbf6dc1a6edf9c914f3313a87bd78de4df@changeid Signed-off-by: Luca Coelho --- drivers/net/wireless/intel/iwlwifi/iwl-prph.h | 1 + .../net/wireless/intel/iwlwifi/mvm/utils.c | 24 +++++++++++++++---- 2 files changed, 20 insertions(+), 5 deletions(-) diff --git a/drivers/net/wireless/intel/iwlwifi/iwl-prph.h b/drivers/net/wireless/intel/iwlwifi/iwl-prph.h index 0b03fdedc1f70..9dd2d79f4d5a0 100644 --- a/drivers/net/wireless/intel/iwlwifi/iwl-prph.h +++ b/drivers/net/wireless/intel/iwlwifi/iwl-prph.h @@ -359,6 +359,7 @@ enum { /* device family 22000 WPROT register */ #define PREG_PRPH_WPROT_22000 0xA04D00 +#define SB_MODIFY_CFG_FLAG 0xA03088 #define SB_CPU_1_STATUS 0xA01E30 #define SB_CPU_2_STATUS 0xA01E34 #define UMAG_SB_CPU_1_STATUS 0xA038C0 diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/utils.c b/drivers/net/wireless/intel/iwlwifi/mvm/utils.c index 01a0fe86fd0d3..b6b481ff15185 100644 --- a/drivers/net/wireless/intel/iwlwifi/mvm/utils.c +++ b/drivers/net/wireless/intel/iwlwifi/mvm/utils.c @@ -499,18 +499,33 @@ static void iwl_mvm_dump_lmac_error_log(struct iwl_mvm *mvm, u8 lmac_num) static void iwl_mvm_dump_iml_error_log(struct iwl_mvm *mvm) { struct iwl_trans *trans = mvm->trans; - u32 error; + u32 error, data1; + + if (mvm->trans->trans_cfg->device_family >= IWL_DEVICE_FAMILY_22000) { + error = UMAG_SB_CPU_2_STATUS; + data1 = UMAG_SB_CPU_1_STATUS; + } else if (mvm->trans->trans_cfg->device_family >= + IWL_DEVICE_FAMILY_8000) { + error = SB_CPU_2_STATUS; + data1 = SB_CPU_1_STATUS; + } else { + return; + } error = iwl_read_umac_prph(trans, UMAG_SB_CPU_2_STATUS); IWL_ERR(trans, "IML/ROM dump:\n"); if (error & 0xFFFF0000) - IWL_ERR(trans, "IML/ROM SYSASSERT:\n"); + IWL_ERR(trans, "0x%04X | IML/ROM SYSASSERT\n", error >> 16); IWL_ERR(mvm, "0x%08X | IML/ROM error/state\n", error); IWL_ERR(mvm, "0x%08X | IML/ROM data1\n", - iwl_read_umac_prph(trans, UMAG_SB_CPU_1_STATUS)); + iwl_read_umac_prph(trans, data1)); + + if (mvm->trans->trans_cfg->device_family >= IWL_DEVICE_FAMILY_22000) + IWL_ERR(mvm, "0x%08X | IML/ROM WFPM_AUTH_KEY_0\n", + iwl_read_umac_prph(trans, SB_MODIFY_CFG_FLAG)); } void iwl_mvm_dump_nic_error_log(struct iwl_mvm *mvm) @@ -528,8 +543,7 @@ void iwl_mvm_dump_nic_error_log(struct iwl_mvm *mvm) iwl_mvm_dump_umac_error_log(mvm); - if (mvm->trans->trans_cfg->device_family >= IWL_DEVICE_FAMILY_AX210) - iwl_mvm_dump_iml_error_log(mvm); + iwl_mvm_dump_iml_error_log(mvm); iwl_fw_error_print_fseq_regs(&mvm->fwrt); } -- 2.30.2