1e3037485SYan-Hsuan Chuang /* SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause */
2e3037485SYan-Hsuan Chuang /* Copyright(c) 2018-2019  Realtek Corporation
3e3037485SYan-Hsuan Chuang  */
4e3037485SYan-Hsuan Chuang 
5e3037485SYan-Hsuan Chuang #ifndef __RTW_PS_H_
6e3037485SYan-Hsuan Chuang #define __RTW_PS_H_
7e3037485SYan-Hsuan Chuang 
8bf9840ccSYan-Hsuan Chuang #define RTW_LPS_THRESHOLD	50
9e3037485SYan-Hsuan Chuang 
1027e117e4SYan-Hsuan Chuang #define POWER_MODE_ACK		BIT(6)
1104b786e0SYan-Hsuan Chuang #define POWER_MODE_PG		BIT(4)
125d5d68bcSChin-Yen Lee #define POWER_TX_WAKE		BIT(1)
1327e117e4SYan-Hsuan Chuang #define POWER_MODE_LCLK		BIT(0)
1427e117e4SYan-Hsuan Chuang 
153a2dd6b7SChin-Yen Lee #define LEAVE_LPS_TRY_CNT	5
16f31e039fSChin-Yen Lee #define LEAVE_LPS_TIMEOUT	msecs_to_jiffies(100)
173a2dd6b7SChin-Yen Lee 
18e3037485SYan-Hsuan Chuang int rtw_enter_ips(struct rtw_dev *rtwdev);
19e3037485SYan-Hsuan Chuang int rtw_leave_ips(struct rtw_dev *rtwdev);
20e3037485SYan-Hsuan Chuang 
2127e117e4SYan-Hsuan Chuang void rtw_power_mode_change(struct rtw_dev *rtwdev, bool enter);
223d391c06SYan-Hsuan Chuang void rtw_enter_lps(struct rtw_dev *rtwdev, u8 port_id);
233d391c06SYan-Hsuan Chuang void rtw_leave_lps(struct rtw_dev *rtwdev);
2427e117e4SYan-Hsuan Chuang void rtw_leave_lps_deep(struct rtw_dev *rtwdev);
25fc3ac64aSChin-Yen Lee enum rtw_lps_deep_mode rtw_get_lps_deep_mode(struct rtw_dev *rtwdev);
26*3918dd01SPing-Ke Shih void rtw_recalc_lps(struct rtw_dev *rtwdev, struct ieee80211_vif *new_vif);
27*3918dd01SPing-Ke Shih 
28e3037485SYan-Hsuan Chuang #endif
29