]> git.proxmox.com Git - mirror_ubuntu-jammy-kernel.git/commitdiff
iwlwifi: mvm: add IML/ROM information for other HW families
authorMordechay Goodstein <mordechay.goodstein@intel.com>
Sun, 31 Jan 2021 18:22:01 +0000 (20:22 +0200)
committerLuca Coelho <luciano.coelho@intel.com>
Fri, 5 Feb 2021 09:57:41 +0000 (11:57 +0200)
This makes it easier to debug IML/ROM errors for other HW families
as well.

Signed-off-by: Mordechay Goodstein <mordechay.goodstein@intel.com>
Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
Link: https://lore.kernel.org/r/iwlwifi.20210131201907.4a802b308a0f.I77855abbf6dc1a6edf9c914f3313a87bd78de4df@changeid
Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
drivers/net/wireless/intel/iwlwifi/iwl-prph.h
drivers/net/wireless/intel/iwlwifi/mvm/utils.c

index 0b03fdedc1f70e4861adc4479926400a9d36fa9f..9dd2d79f4d5a095353bd3837f710e969bc019926 100644 (file)
@@ -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
index 01a0fe86fd0d3da884676986b362937cd14abc99..b6b481ff15185b95dec7510c734c05ca2d94a1c2 100644 (file)
@@ -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);
 }