diff mbox series

[01/12] iwlwifi: mvm: add IML/ROM information for other HW families

Message ID iwlwifi.20210131201907.4a802b308a0f.I77855abbf6dc1a6edf9c914f3313a87bd78de4df@changeid
State New
Headers show
Series iwlwifi: updates intended for v5.12 2021-01-31 part 2 | expand

Commit Message

Luca Coelho Jan. 31, 2021, 6:22 p.m. UTC
From: Mordechay Goodstein <mordechay.goodstein@intel.com>

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>
---
 drivers/net/wireless/intel/iwlwifi/iwl-prph.h |  1 +
 .../net/wireless/intel/iwlwifi/mvm/utils.c    | 24 +++++++++++++++----
 2 files changed, 20 insertions(+), 5 deletions(-)

Comments

Luca Coelho Feb. 5, 2021, 9:59 a.m. UTC | #1
Luca Coelho <luca@coelho.fi> wrote:

> From: Mordechay Goodstein <mordechay.goodstein@intel.com>

> 

> 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>


12 patches applied to iwlwifi-next.git, thanks.

5226cecbc6c8 iwlwifi: mvm: add IML/ROM information for other HW families
119c2a13a3e8 iwlwifi: mvm: add triggers for MLME events
1db5c3472b2a iwlwifi: fwrt: add suspend/resume time point
0d65ce900d11 iwlwifi: mvm: add tx fail time point
9dbb62a29042 iwlwifi: mvm: add debugfs entry to trigger a dump as any time-point
efaa85cf2294 iwlwifi: mvm: set enabled in the PPAG command properly
a2ac0f48a07c iwlwifi: mvm: implement approved list for the PPAG feature
ca176eddeba2 iwlwifi: mvm: add HP to the PPAG approved list
dd158ed674ed iwlwifi: mvm: add Samsung to the PPAG approved list
4a76553c88b4 iwlwifi: mvm: add Microsoft to the PPAG approved list
a7abc1eae7e4 iwlwifi: mvm: add Asus to the PPAG approved list
df8ba77ef4cc iwlwifi: bump FW API to 61 for AX devices
diff mbox series

Patch

diff --git a/drivers/net/wireless/intel/iwlwifi/iwl-prph.h b/drivers/net/wireless/intel/iwlwifi/iwl-prph.h
index 0b03fdedc1f7..9dd2d79f4d5a 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 01a0fe86fd0d..b6b481ff1518 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);
 }