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,
|
||||
};
|
||||
|
||||
/**
|
||||
* 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
|
||||
*
|
||||
|
@ -612,6 +627,8 @@ struct iwl_trans {
|
|||
const struct iwl_fw_dbg_conf_tlv *dbg_conf_tlv[FW_DBG_MAX];
|
||||
u8 dbg_dest_reg_num;
|
||||
|
||||
enum iwl_d0i3_mode d0i3_mode;
|
||||
|
||||
/* pointer to trans specific struct */
|
||||
/*Ensure that this pointer will always be aligned to sizeof pointer */
|
||||
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)
|
||||
{
|
||||
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);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue