mirror of https://gitee.com/openkylin/linux.git
iwlwifi: support multiple d0i3 modes
Allow configuring additional d0i3 mode, in which the fw will be configured to enter d0i3 only on suspend (while keeping the wake_lock accounting as usual) The d0i3 mode to use will be determined by the underlying trans layer. Signed-off-by: Eliad Peller <eliadx.peller@intel.com> Reviewed-by: Johannes Berg <johannes.berg@intel.com> Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
This commit is contained in:
parent
9174244947
commit
0f8f93d6c8
|
@ -551,6 +551,21 @@ enum iwl_trans_state {
|
||||||
IWL_TRANS_FW_ALIVE = 1,
|
IWL_TRANS_FW_ALIVE = 1,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* enum iwl_d0i3_mode - d0i3 mode
|
||||||
|
*
|
||||||
|
* @IWL_D0I3_MODE_OFF - d0i3 is disabled
|
||||||
|
* @IWL_D0I3_MODE_ON_IDLE - enter d0i3 when device is idle
|
||||||
|
* (e.g. no active references)
|
||||||
|
* @IWL_D0I3_MODE_ON_SUSPEND - enter d0i3 only on suspend
|
||||||
|
* (in case of 'any' trigger)
|
||||||
|
*/
|
||||||
|
enum iwl_d0i3_mode {
|
||||||
|
IWL_D0I3_MODE_OFF = 0,
|
||||||
|
IWL_D0I3_MODE_ON_IDLE,
|
||||||
|
IWL_D0I3_MODE_ON_SUSPEND,
|
||||||
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* struct iwl_trans - transport common data
|
* struct iwl_trans - transport common data
|
||||||
*
|
*
|
||||||
|
@ -612,6 +627,8 @@ struct iwl_trans {
|
||||||
const struct iwl_fw_dbg_conf_tlv *dbg_conf_tlv[FW_DBG_MAX];
|
const struct iwl_fw_dbg_conf_tlv *dbg_conf_tlv[FW_DBG_MAX];
|
||||||
u8 dbg_dest_reg_num;
|
u8 dbg_dest_reg_num;
|
||||||
|
|
||||||
|
enum iwl_d0i3_mode d0i3_mode;
|
||||||
|
|
||||||
/* pointer to trans specific struct */
|
/* pointer to trans specific struct */
|
||||||
/*Ensure that this pointer will always be aligned to sizeof pointer */
|
/*Ensure that this pointer will always be aligned to sizeof pointer */
|
||||||
char trans_specific[0] __aligned(sizeof(void *));
|
char trans_specific[0] __aligned(sizeof(void *));
|
||||||
|
|
|
@ -850,6 +850,7 @@ iwl_mvm_sta_from_staid_protected(struct iwl_mvm *mvm, u8 sta_id)
|
||||||
static inline bool iwl_mvm_is_d0i3_supported(struct iwl_mvm *mvm)
|
static inline bool iwl_mvm_is_d0i3_supported(struct iwl_mvm *mvm)
|
||||||
{
|
{
|
||||||
return mvm->trans->cfg->d0i3 &&
|
return mvm->trans->cfg->d0i3 &&
|
||||||
|
mvm->trans->d0i3_mode != IWL_D0I3_MODE_OFF &&
|
||||||
(mvm->fw->ucode_capa.capa[0] & IWL_UCODE_TLV_CAPA_D0I3_SUPPORT);
|
(mvm->fw->ucode_capa.capa[0] & IWL_UCODE_TLV_CAPA_D0I3_SUPPORT);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue