iwlwifi: avoid code duplication in stopping fw debug data recording
authorShahar S Matityahu <shahar.s.matityahu@intel.com>
Thu, 3 May 2018 06:52:12 +0000 (09:52 +0300)
committerLuca Coelho <luciano.coelho@intel.com>
Fri, 31 Aug 2018 08:38:39 +0000 (11:38 +0300)
Make all FW debug data stop recording flows to use
iwl_fw_dbg_stop_recording function instead of writing to FW
registers directly.

Signed-off-by: Shahar S Matityahu <shahar.s.matityahu@intel.com>
Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
drivers/net/wireless/intel/iwlwifi/fw/dbg.c
drivers/net/wireless/intel/iwlwifi/fw/dbg.h
drivers/net/wireless/intel/iwlwifi/mvm/d3.c
drivers/net/wireless/intel/iwlwifi/pcie/trans-gen2.c
drivers/net/wireless/intel/iwlwifi/pcie/trans.c

index 37b1e1f..3435a83 100644 (file)
@@ -1197,7 +1197,7 @@ void iwl_fw_error_dump_wk(struct work_struct *work)
 
        if (fwrt->trans->cfg->device_family == IWL_DEVICE_FAMILY_7000) {
                /* stop recording */
-               iwl_fw_dbg_stop_recording(fwrt);
+               iwl_fw_dbg_stop_recording(fwrt->trans);
 
                iwl_fw_error_dump(fwrt);
 
@@ -1215,7 +1215,7 @@ void iwl_fw_error_dump_wk(struct work_struct *work)
                u32 in_sample = iwl_read_prph(fwrt->trans, DBGC_IN_SAMPLE);
                u32 out_ctrl = iwl_read_prph(fwrt->trans, DBGC_OUT_CTRL);
 
-               iwl_fw_dbg_stop_recording(fwrt);
+               iwl_fw_dbg_stop_recording(fwrt->trans);
                /* wait before we collect the data till the DBGC stop */
                udelay(500);
 
index 5eba0e7..d04e681 100644 (file)
@@ -196,14 +196,14 @@ _iwl_fw_dbg_trigger_simple_stop(struct iwl_fw_runtime *fwrt,
                                        iwl_fw_dbg_get_trigger((fwrt)->fw,\
                                                               (trig)))
 
-static inline void iwl_fw_dbg_stop_recording(struct iwl_fw_runtime *fwrt)
+static inline void iwl_fw_dbg_stop_recording(struct iwl_trans *trans)
 {
-       if (fwrt->trans->cfg->device_family == IWL_DEVICE_FAMILY_7000) {
-               iwl_set_bits_prph(fwrt->trans, MON_BUFF_SAMPLE_CTL, 0x100);
+       if (trans->cfg->device_family == IWL_DEVICE_FAMILY_7000) {
+               iwl_set_bits_prph(trans, MON_BUFF_SAMPLE_CTL, 0x100);
        } else {
-               iwl_write_prph(fwrt->trans, DBGC_IN_SAMPLE, 0);
+               iwl_write_prph(trans, DBGC_IN_SAMPLE, 0);
                udelay(100);
-               iwl_write_prph(fwrt->trans, DBGC_OUT_CTRL, 0);
+               iwl_write_prph(trans, DBGC_OUT_CTRL, 0);
        }
 }
 
index 58531dd..99050c8 100644 (file)
@@ -1042,7 +1042,7 @@ static int __iwl_mvm_suspend(struct ieee80211_hw *hw,
         * the recording automatically before entering D3.  This can
         * be removed once the FW starts doing that.
         */
-       iwl_fw_dbg_stop_recording(&mvm->fwrt);
+       iwl_fw_dbg_stop_recording(mvm->fwrt.trans);
 
        /* must be last -- this switches firmware state */
        ret = iwl_mvm_send_cmd(mvm, &d3_cfg_cmd);
index 9b2a248..5f61b02 100644 (file)
@@ -55,6 +55,7 @@
 #include "iwl-context-info.h"
 #include "iwl-context-info-gen3.h"
 #include "internal.h"
+#include "fw/dbg.h"
 
 /*
  * Start up NIC's basic functionality after it has been reset
@@ -164,9 +165,7 @@ void _iwl_trans_pcie_gen2_stop_device(struct iwl_trans *trans, bool low_power)
        trans_pcie->is_down = true;
 
        /* Stop dbgc before stopping device */
-       iwl_write_prph(trans, DBGC_IN_SAMPLE, 0);
-       udelay(100);
-       iwl_write_prph(trans, DBGC_OUT_CTRL, 0);
+       iwl_fw_dbg_stop_recording(trans);
 
        /* tell the device to stop sending interrupts */
        iwl_disable_interrupts(trans);
index d8aca72..cc8c53d 100644 (file)
@@ -1243,13 +1243,7 @@ static void _iwl_trans_pcie_stop_device(struct iwl_trans *trans, bool low_power)
        trans_pcie->is_down = true;
 
        /* Stop dbgc before stopping device */
-       if (trans->cfg->device_family == IWL_DEVICE_FAMILY_7000) {
-               iwl_set_bits_prph(trans, MON_BUFF_SAMPLE_CTL, 0x100);
-       } else {
-               iwl_write_prph(trans, DBGC_IN_SAMPLE, 0);
-               udelay(100);
-               iwl_write_prph(trans, DBGC_OUT_CTRL, 0);
-       }
+       iwl_fw_dbg_stop_recording(trans);
 
        /* tell the device to stop sending interrupts */
        iwl_disable_interrupts(trans);