1e3ec7017SPing-Ke Shih /* SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause */ 2e3ec7017SPing-Ke Shih /* Copyright(c) 2019-2020 Realtek Corporation 3e3ec7017SPing-Ke Shih */ 4e3ec7017SPing-Ke Shih 5e3ec7017SPing-Ke Shih #ifndef __RTW89_PS_H_ 6e3ec7017SPing-Ke Shih #define __RTW89_PS_H_ 7e3ec7017SPing-Ke Shih 8deb1b2aeSChih-Kang Chang void rtw89_enter_lps(struct rtw89_dev *rtwdev, struct rtw89_vif *rtwvif, 9deb1b2aeSChih-Kang Chang bool ps_mode); 10e3ec7017SPing-Ke Shih void rtw89_leave_lps(struct rtw89_dev *rtwdev); 11e3ec7017SPing-Ke Shih void __rtw89_leave_ps_mode(struct rtw89_dev *rtwdev); 1219e28c7fSChin-Yen Lee void __rtw89_enter_ps_mode(struct rtw89_dev *rtwdev, struct rtw89_vif *rtwvif); 13e3ec7017SPing-Ke Shih void rtw89_leave_ps_mode(struct rtw89_dev *rtwdev); 14e3ec7017SPing-Ke Shih void rtw89_enter_ips(struct rtw89_dev *rtwdev); 15e3ec7017SPing-Ke Shih void rtw89_leave_ips(struct rtw89_dev *rtwdev); 16e3ec7017SPing-Ke Shih void rtw89_set_coex_ctrl_lps(struct rtw89_dev *rtwdev, bool btc_ctrl); 17f4a43c3bSDian-Syuan Yang void rtw89_process_p2p_ps(struct rtw89_dev *rtwdev, struct ieee80211_vif *vif); 1826a125f5SPing-Ke Shih void rtw89_recalc_lps(struct rtw89_dev *rtwdev); 19*51383fd7SZong-Zhe Yang void rtw89_p2p_noa_renew(struct rtw89_vif *rtwvif); 20*51383fd7SZong-Zhe Yang void rtw89_p2p_noa_append(struct rtw89_vif *rtwvif, 21*51383fd7SZong-Zhe Yang const struct ieee80211_p2p_noa_desc *desc); 22*51383fd7SZong-Zhe Yang u8 rtw89_p2p_noa_fetch(struct rtw89_vif *rtwvif, void **data); 23e3ec7017SPing-Ke Shih rtw89_leave_ips_by_hwflags(struct rtw89_dev * rtwdev)24a0e97ae3SPo-Hao Huangstatic inline void rtw89_leave_ips_by_hwflags(struct rtw89_dev *rtwdev) 25a0e97ae3SPo-Hao Huang { 26a0e97ae3SPo-Hao Huang struct ieee80211_hw *hw = rtwdev->hw; 27a0e97ae3SPo-Hao Huang 28a0e97ae3SPo-Hao Huang if (hw->conf.flags & IEEE80211_CONF_IDLE) 29a0e97ae3SPo-Hao Huang rtw89_leave_ips(rtwdev); 30a0e97ae3SPo-Hao Huang } 31a0e97ae3SPo-Hao Huang rtw89_enter_ips_by_hwflags(struct rtw89_dev * rtwdev)32a0e97ae3SPo-Hao Huangstatic inline void rtw89_enter_ips_by_hwflags(struct rtw89_dev *rtwdev) 33a0e97ae3SPo-Hao Huang { 34a0e97ae3SPo-Hao Huang struct ieee80211_hw *hw = rtwdev->hw; 35a0e97ae3SPo-Hao Huang 36a0e97ae3SPo-Hao Huang if (hw->conf.flags & IEEE80211_CONF_IDLE) 37a0e97ae3SPo-Hao Huang rtw89_enter_ips(rtwdev); 38a0e97ae3SPo-Hao Huang } 39a0e97ae3SPo-Hao Huang 40e3ec7017SPing-Ke Shih #endif 41