diff options
Diffstat (limited to 'drivers/net/wireless/intel/iwlwifi/fw')
| -rw-r--r-- | drivers/net/wireless/intel/iwlwifi/fw/api/nvm-reg.h | 2 | ||||
| -rw-r--r-- | drivers/net/wireless/intel/iwlwifi/fw/dbg.c | 7 | ||||
| -rw-r--r-- | drivers/net/wireless/intel/iwlwifi/fw/dbg.h | 15 | 
3 files changed, 19 insertions, 5 deletions
| diff --git a/drivers/net/wireless/intel/iwlwifi/fw/api/nvm-reg.h b/drivers/net/wireless/intel/iwlwifi/fw/api/nvm-reg.h index 00bc7a25dece..3fd07bc80f54 100644 --- a/drivers/net/wireless/intel/iwlwifi/fw/api/nvm-reg.h +++ b/drivers/net/wireless/intel/iwlwifi/fw/api/nvm-reg.h @@ -108,6 +108,7 @@ enum iwl_nvm_access_target {   * @NVM_SECTION_TYPE_REGULATORY: regulatory section   * @NVM_SECTION_TYPE_CALIBRATION: calibration section   * @NVM_SECTION_TYPE_PRODUCTION: production section + * @NVM_SECTION_TYPE_REGULATORY_SDP: regulatory section used by 3168 series   * @NVM_SECTION_TYPE_MAC_OVERRIDE: MAC override section   * @NVM_SECTION_TYPE_PHY_SKU: PHY SKU section   * @NVM_MAX_NUM_SECTIONS: number of sections @@ -117,6 +118,7 @@ enum iwl_nvm_section_type {  	NVM_SECTION_TYPE_REGULATORY = 3,  	NVM_SECTION_TYPE_CALIBRATION = 4,  	NVM_SECTION_TYPE_PRODUCTION = 5, +	NVM_SECTION_TYPE_REGULATORY_SDP = 8,  	NVM_SECTION_TYPE_MAC_OVERRIDE = 11,  	NVM_SECTION_TYPE_PHY_SKU = 12,  	NVM_MAX_NUM_SECTIONS = 13, diff --git a/drivers/net/wireless/intel/iwlwifi/fw/dbg.c b/drivers/net/wireless/intel/iwlwifi/fw/dbg.c index 6afc7a799892..f5dd7d83cd0a 100644 --- a/drivers/net/wireless/intel/iwlwifi/fw/dbg.c +++ b/drivers/net/wireless/intel/iwlwifi/fw/dbg.c @@ -1086,7 +1086,7 @@ void iwl_fw_error_dump_wk(struct work_struct *work)  	if (fwrt->trans->cfg->device_family == IWL_DEVICE_FAMILY_7000) {  		/* stop recording */ -		iwl_set_bits_prph(fwrt->trans, MON_BUFF_SAMPLE_CTL, 0x100); +		iwl_fw_dbg_stop_recording(fwrt);  		iwl_fw_error_dump(fwrt); @@ -1104,10 +1104,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); -		/* stop recording */ -		iwl_write_prph(fwrt->trans, DBGC_IN_SAMPLE, 0); -		udelay(100); -		iwl_write_prph(fwrt->trans, DBGC_OUT_CTRL, 0); +		iwl_fw_dbg_stop_recording(fwrt);  		/* wait before we collect the data till the DBGC stop */  		udelay(500); diff --git a/drivers/net/wireless/intel/iwlwifi/fw/dbg.h b/drivers/net/wireless/intel/iwlwifi/fw/dbg.h index 0f810ea89d31..9c889a32fe24 100644 --- a/drivers/net/wireless/intel/iwlwifi/fw/dbg.h +++ b/drivers/net/wireless/intel/iwlwifi/fw/dbg.h @@ -68,6 +68,8 @@  #include <linux/workqueue.h>  #include <net/cfg80211.h>  #include "runtime.h" +#include "iwl-prph.h" +#include "iwl-io.h"  #include "file.h"  #include "error-dump.h" @@ -194,8 +196,21 @@ _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) +{ +	if (fwrt->trans->cfg->device_family == IWL_DEVICE_FAMILY_7000) { +		iwl_set_bits_prph(fwrt->trans, MON_BUFF_SAMPLE_CTL, 0x100); +	} else { +		iwl_write_prph(fwrt->trans, DBGC_IN_SAMPLE, 0); +		udelay(100); +		iwl_write_prph(fwrt->trans, DBGC_OUT_CTRL, 0); +	} +} +  static inline void iwl_fw_dump_conf_clear(struct iwl_fw_runtime *fwrt)  { +	iwl_fw_dbg_stop_recording(fwrt); +  	fwrt->dump.conf = FW_DBG_INVALID;  } |