Commit 16b2afe0 authored by Mordechay Goodstein's avatar Mordechay Goodstein Committed by Luca Coelho

iwlwifi: yoyo: add support for internal buffer allocation in D3

With yoyo a user can configure the internal buffer allocation in
SMEM to hold more log space, which is used for debugging D3 state.
Signed-off-by: default avatarMordechay Goodstein <mordechay.goodstein@intel.com>
Signed-off-by: default avatarLuca Coelho <luciano.coelho@intel.com>
Link: https://lore.kernel.org/r/iwlwifi.20200930191738.29b61ff6c78e.I235614bb2c255ee8ac49c2835796ac95a25215bf@changeidSigned-off-by: default avatarLuca Coelho <luciano.coelho@intel.com>
parent eb95a26c
...@@ -301,6 +301,7 @@ struct iwl_fw_ini_hcmd_tlv { ...@@ -301,6 +301,7 @@ struct iwl_fw_ini_hcmd_tlv {
* @IWL_FW_INI_ALLOCATION_ID_DBGC1: allocation meant for DBGC1 configuration * @IWL_FW_INI_ALLOCATION_ID_DBGC1: allocation meant for DBGC1 configuration
* @IWL_FW_INI_ALLOCATION_ID_DBGC2: allocation meant for DBGC2 configuration * @IWL_FW_INI_ALLOCATION_ID_DBGC2: allocation meant for DBGC2 configuration
* @IWL_FW_INI_ALLOCATION_ID_DBGC3: allocation meant for DBGC3 configuration * @IWL_FW_INI_ALLOCATION_ID_DBGC3: allocation meant for DBGC3 configuration
* @IWL_FW_INI_ALLOCATION_ID_INTERNAL: allocation meant for Intreanl SMEM in D3
* @IWL_FW_INI_ALLOCATION_NUM: number of allocation ids * @IWL_FW_INI_ALLOCATION_NUM: number of allocation ids
*/ */
enum iwl_fw_ini_allocation_id { enum iwl_fw_ini_allocation_id {
...@@ -308,6 +309,7 @@ enum iwl_fw_ini_allocation_id { ...@@ -308,6 +309,7 @@ enum iwl_fw_ini_allocation_id {
IWL_FW_INI_ALLOCATION_ID_DBGC1, IWL_FW_INI_ALLOCATION_ID_DBGC1,
IWL_FW_INI_ALLOCATION_ID_DBGC2, IWL_FW_INI_ALLOCATION_ID_DBGC2,
IWL_FW_INI_ALLOCATION_ID_DBGC3, IWL_FW_INI_ALLOCATION_ID_DBGC3,
IWL_FW_INI_ALLOCATION_ID_INTERNAL,
IWL_FW_INI_ALLOCATION_NUM, IWL_FW_INI_ALLOCATION_NUM,
}; /* FW_DEBUG_TLV_ALLOCATION_ID_E_VER_1 */ }; /* FW_DEBUG_TLV_ALLOCATION_ID_E_VER_1 */
...@@ -347,7 +349,7 @@ enum iwl_fw_ini_buffer_location { ...@@ -347,7 +349,7 @@ enum iwl_fw_ini_buffer_location {
* @IWL_FW_INI_REGION_CSR: CSR registers * @IWL_FW_INI_REGION_CSR: CSR registers
* @IWL_FW_INI_REGION_DRAM_IMR: IMR memory * @IWL_FW_INI_REGION_DRAM_IMR: IMR memory
* @IWL_FW_INI_REGION_PCI_IOSF_CONFIG: PCI/IOSF config * @IWL_FW_INI_REGION_PCI_IOSF_CONFIG: PCI/IOSF config
* @IWL_FW_INI_REGION_SPECIAL_DEVICE_MEMORY: special device memroy * @IWL_FW_INI_REGION_SPECIAL_DEVICE_MEMORY: special device memory
* @IWL_FW_INI_REGION_NUM: number of region types * @IWL_FW_INI_REGION_NUM: number of region types
*/ */
enum iwl_fw_ini_region_type { enum iwl_fw_ini_region_type {
......
...@@ -182,9 +182,13 @@ static int iwl_dbg_tlv_alloc_buf_alloc(struct iwl_trans *trans, ...@@ -182,9 +182,13 @@ static int iwl_dbg_tlv_alloc_buf_alloc(struct iwl_trans *trans,
alloc_id >= IWL_FW_INI_ALLOCATION_NUM) alloc_id >= IWL_FW_INI_ALLOCATION_NUM)
goto err; goto err;
if ((buf_location == IWL_FW_INI_LOCATION_SRAM_PATH || if (buf_location == IWL_FW_INI_LOCATION_NPK_PATH &&
buf_location == IWL_FW_INI_LOCATION_NPK_PATH) && alloc_id != IWL_FW_INI_ALLOCATION_ID_DBGC1)
alloc_id != IWL_FW_INI_ALLOCATION_ID_DBGC1) goto err;
if (buf_location == IWL_FW_INI_LOCATION_SRAM_PATH &&
alloc_id != IWL_FW_INI_ALLOCATION_ID_DBGC1 &&
alloc_id != IWL_FW_INI_ALLOCATION_ID_INTERNAL)
goto err; goto err;
trans->dbg.fw_mon_cfg[alloc_id] = *alloc; trans->dbg.fw_mon_cfg[alloc_id] = *alloc;
......
...@@ -133,6 +133,7 @@ module_exit(iwl_mvm_exit); ...@@ -133,6 +133,7 @@ module_exit(iwl_mvm_exit);
static void iwl_mvm_nic_config(struct iwl_op_mode *op_mode) static void iwl_mvm_nic_config(struct iwl_op_mode *op_mode)
{ {
struct iwl_mvm *mvm = IWL_OP_MODE_GET_MVM(op_mode); struct iwl_mvm *mvm = IWL_OP_MODE_GET_MVM(op_mode);
struct iwl_trans_debug *dbg = &mvm->trans->dbg;
u8 radio_cfg_type, radio_cfg_step, radio_cfg_dash; u8 radio_cfg_type, radio_cfg_step, radio_cfg_dash;
u32 reg_val = 0; u32 reg_val = 0;
u32 phy_config = iwl_mvm_get_phy_config(mvm); u32 phy_config = iwl_mvm_get_phy_config(mvm);
...@@ -169,7 +170,10 @@ static void iwl_mvm_nic_config(struct iwl_op_mode *op_mode) ...@@ -169,7 +170,10 @@ static void iwl_mvm_nic_config(struct iwl_op_mode *op_mode)
if (mvm->trans->trans_cfg->device_family < IWL_DEVICE_FAMILY_8000) if (mvm->trans->trans_cfg->device_family < IWL_DEVICE_FAMILY_8000)
reg_val |= CSR_HW_IF_CONFIG_REG_BIT_RADIO_SI; reg_val |= CSR_HW_IF_CONFIG_REG_BIT_RADIO_SI;
if (iwl_fw_dbg_is_d3_debug_enabled(&mvm->fwrt)) if (iwl_fw_dbg_is_d3_debug_enabled(&mvm->fwrt) ||
(iwl_trans_dbg_ini_valid(mvm->trans) &&
dbg->fw_mon_cfg[IWL_FW_INI_ALLOCATION_ID_INTERNAL].buf_location)
)
reg_val |= CSR_HW_IF_CONFIG_REG_D3_DEBUG; reg_val |= CSR_HW_IF_CONFIG_REG_D3_DEBUG;
iwl_trans_set_bits_mask(mvm->trans, CSR_HW_IF_CONFIG_REG, iwl_trans_set_bits_mask(mvm->trans, CSR_HW_IF_CONFIG_REG,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment