xref: /freebsd/sys/contrib/dev/rtw88/ps.h (revision 90aac0d83bc9645f51ef0c2aeae6f9c0540bb031)
12774f206SBjoern A. Zeeb /* SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause */
22774f206SBjoern A. Zeeb /* Copyright(c) 2018-2019  Realtek Corporation
32774f206SBjoern A. Zeeb  */
42774f206SBjoern A. Zeeb 
52774f206SBjoern A. Zeeb #ifndef __RTW_PS_H_
62774f206SBjoern A. Zeeb #define __RTW_PS_H_
72774f206SBjoern A. Zeeb 
82774f206SBjoern A. Zeeb #define RTW_LPS_THRESHOLD	50
92774f206SBjoern A. Zeeb 
102774f206SBjoern A. Zeeb #define POWER_MODE_ACK		BIT(6)
112774f206SBjoern A. Zeeb #define POWER_MODE_PG		BIT(4)
122774f206SBjoern A. Zeeb #define POWER_TX_WAKE		BIT(1)
132774f206SBjoern A. Zeeb #define POWER_MODE_LCLK		BIT(0)
142774f206SBjoern A. Zeeb 
152774f206SBjoern A. Zeeb #define LEAVE_LPS_TRY_CNT	5
162774f206SBjoern A. Zeeb #define LEAVE_LPS_TIMEOUT	msecs_to_jiffies(100)
172774f206SBjoern A. Zeeb 
182774f206SBjoern A. Zeeb int rtw_enter_ips(struct rtw_dev *rtwdev);
192774f206SBjoern A. Zeeb int rtw_leave_ips(struct rtw_dev *rtwdev);
202774f206SBjoern A. Zeeb 
212774f206SBjoern A. Zeeb void rtw_power_mode_change(struct rtw_dev *rtwdev, bool enter);
222774f206SBjoern A. Zeeb void rtw_enter_lps(struct rtw_dev *rtwdev, u8 port_id);
232774f206SBjoern A. Zeeb void rtw_leave_lps(struct rtw_dev *rtwdev);
242774f206SBjoern A. Zeeb void rtw_leave_lps_deep(struct rtw_dev *rtwdev);
252774f206SBjoern A. Zeeb enum rtw_lps_deep_mode rtw_get_lps_deep_mode(struct rtw_dev *rtwdev);
26*90aac0d8SBjoern A. Zeeb void rtw_recalc_lps(struct rtw_dev *rtwdev, struct ieee80211_vif *new_vif);
27*90aac0d8SBjoern A. Zeeb 
282774f206SBjoern A. Zeeb #endif
29