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 8*deb1b2aeSChih-Kang Chang void rtw89_enter_lps(struct rtw89_dev *rtwdev, struct rtw89_vif *rtwvif, 9*deb1b2aeSChih-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); 18e3ec7017SPing-Ke Shih 19a0e97ae3SPo-Hao Huang static inline void rtw89_leave_ips_by_hwflags(struct rtw89_dev *rtwdev) 20a0e97ae3SPo-Hao Huang { 21a0e97ae3SPo-Hao Huang struct ieee80211_hw *hw = rtwdev->hw; 22a0e97ae3SPo-Hao Huang 23a0e97ae3SPo-Hao Huang if (hw->conf.flags & IEEE80211_CONF_IDLE) 24a0e97ae3SPo-Hao Huang rtw89_leave_ips(rtwdev); 25a0e97ae3SPo-Hao Huang } 26a0e97ae3SPo-Hao Huang 27a0e97ae3SPo-Hao Huang static inline void rtw89_enter_ips_by_hwflags(struct rtw89_dev *rtwdev) 28a0e97ae3SPo-Hao Huang { 29a0e97ae3SPo-Hao Huang struct ieee80211_hw *hw = rtwdev->hw; 30a0e97ae3SPo-Hao Huang 31a0e97ae3SPo-Hao Huang if (hw->conf.flags & IEEE80211_CONF_IDLE) 32a0e97ae3SPo-Hao Huang rtw89_enter_ips(rtwdev); 33a0e97ae3SPo-Hao Huang } 34a0e97ae3SPo-Hao Huang 35e3ec7017SPing-Ke Shih #endif 36