59 lines
2.0 KiB
C
59 lines
2.0 KiB
C
/******************************************************************************
|
|
*
|
|
* Copyright(c) 2021 Realtek Corporation.
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify it
|
|
* under the terms of version 2 of the GNU General Public License as
|
|
* published by the Free Software Foundation.
|
|
*
|
|
* This program is distributed in the hope that it will be useful, but WITHOUT
|
|
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
|
* more details.
|
|
*
|
|
*****************************************************************************/
|
|
#ifndef _PHL_PS_H_
|
|
#define _PHL_PS_H_
|
|
#ifdef CONFIG_POWER_SAVE
|
|
enum phl_ps_mode {
|
|
PS_MODE_NONE,
|
|
PS_MODE_LPS,
|
|
PS_MODE_IPS
|
|
};
|
|
|
|
#define PS_MACID_NONE 0xFFFF
|
|
|
|
/* use to configure specific pwr mode along with pwr lvl and others */
|
|
struct ps_cfg {
|
|
/* common */
|
|
u8 ps_mode;
|
|
u8 cur_pwr_lvl;
|
|
u8 pwr_lvl;
|
|
u16 macid;
|
|
/* lps */
|
|
bool pwr_cfg; /* whether to configure pwr lvl */
|
|
bool proto_cfg; /* whether to configure protocol */
|
|
u32 *token;
|
|
u8 listen_bcn_mode;
|
|
u8 awake_interval;
|
|
u8 smart_ps_mode;
|
|
};
|
|
|
|
#define _get_ps_cap(_phl_info) (&_phl_info->phl_com->dev_cap.ps_cap)
|
|
#define _get_ps_sw_cap(_phl_info) (&_phl_info->phl_com->dev_sw_cap.ps_cap)
|
|
|
|
const char *phl_ps_op_mode_to_str(u8 op_mode);
|
|
const char *phl_ps_ps_mode_to_str(u8 ps_mode);
|
|
const char *phl_ps_pwr_lvl_to_str(u8 pwr_lvl);
|
|
u8 phl_ps_judge_pwr_lvl(u8 ps_cap, u8 ps_mode, u8 ps_en);
|
|
|
|
enum rtw_phl_status
|
|
phl_ps_ips_cfg(struct phl_info_t *phl_info, struct ps_cfg *cfg, u8 ips_en);
|
|
enum rtw_phl_status phl_ps_lps_cfg(struct phl_info_t *phl_info, struct ps_cfg *cfg, u8 lps_en);
|
|
enum rtw_phl_status phl_ps_cfg_pwr_lvl(struct phl_info_t *phl_info, u8 ps_mode, u8 cur_pwr_lvl, u8 req_pwr_lvl);
|
|
|
|
enum rtw_phl_status phl_ps_enter_ps(struct phl_info_t *phl_info, struct ps_cfg *cfg);
|
|
enum rtw_phl_status phl_ps_leave_ps(struct phl_info_t *phl_info, struct ps_cfg *cfg);
|
|
#endif
|
|
#endif /* _PHL_PS_H_ */
|