From: Sara Sharon <[email protected]>

This register is helpful for debugging D3 issues.
Driver turns all bits on, and then on exit reads the
updated value there.

Signed-off-by: Sara Sharon <[email protected]>
Signed-off-by: Luca Coelho <[email protected]>
---
 drivers/net/wireless/intel/iwlwifi/iwl-prph.h   |  1 +
 drivers/net/wireless/intel/iwlwifi/pcie/trans.c | 13 +++++++++++++
 2 files changed, 14 insertions(+)

diff --git a/drivers/net/wireless/intel/iwlwifi/iwl-prph.h 
b/drivers/net/wireless/intel/iwlwifi/iwl-prph.h
index 406ef301b8ab..3a8aeee3b55a 100644
--- a/drivers/net/wireless/intel/iwlwifi/iwl-prph.h
+++ b/drivers/net/wireless/intel/iwlwifi/iwl-prph.h
@@ -378,6 +378,7 @@
 #define RADIO_REG_SYS_MANUAL_DFT_0     0xAD4078
 #define RFIC_REG_RD                    0xAD0470
 #define WFPM_CTRL_REG                  0xA03030
+#define WFPM_GP2                       0xA030B4
 enum {
        ENABLE_WFPM = BIT(31),
        WFPM_AUX_CTL_AUX_IF_MAC_OWNER_MSK       = 0x80000000,
diff --git a/drivers/net/wireless/intel/iwlwifi/pcie/trans.c 
b/drivers/net/wireless/intel/iwlwifi/pcie/trans.c
index 69f1b032260c..15bf5100d096 100644
--- a/drivers/net/wireless/intel/iwlwifi/pcie/trans.c
+++ b/drivers/net/wireless/intel/iwlwifi/pcie/trans.c
@@ -1047,6 +1047,16 @@ static int iwl_pcie_load_given_ucode_8000(struct 
iwl_trans *trans,
        if (ret)
                return ret;
 
+       IWL_DEBUG_POWER(trans, "Original WFPM value = 0x%08X\n",
+                       iwl_read_prph(trans, WFPM_GP2));
+
+       /*
+        * Set default value. On resume reading the values that were
+        * zeored can provide debug data on the resume flow.
+        * This is for debugging only and has no functional impact.
+        */
+       iwl_write_prph(trans, WFPM_GP2, 0x01010101);
+
        /* configure the ucode to be ready to get the secured image */
        /* release CPU reset */
        iwl_write_prph(trans, RELEASE_CPU_RESET, RELEASE_CPU_RESET_BIT);
@@ -1527,6 +1537,9 @@ static int iwl_trans_pcie_d3_resume(struct iwl_trans 
*trans,
                }
        }
 
+       IWL_DEBUG_POWER(trans, "WFPM value upon resume = 0x%08X\n",
+                       iwl_read_prph(trans, WFPM_GP2));
+
        val = iwl_read32(trans, CSR_RESET);
        if (val & CSR_RESET_REG_FLAG_NEVO_RESET)
                *status = IWL_D3_STATUS_RESET;
-- 
2.11.0

Reply via email to