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 8487b7b70SPing-Ke Shih void rtw89_enter_lps(struct rtw89_dev *rtwdev, struct rtw89_vif *rtwvif); 9e3ec7017SPing-Ke Shih void rtw89_leave_lps(struct rtw89_dev *rtwdev); 10e3ec7017SPing-Ke Shih void __rtw89_leave_ps_mode(struct rtw89_dev *rtwdev); 1119e28c7fSChin-Yen Lee void __rtw89_enter_ps_mode(struct rtw89_dev *rtwdev, struct rtw89_vif *rtwvif); 12e3ec7017SPing-Ke Shih void rtw89_leave_ps_mode(struct rtw89_dev *rtwdev); 13e3ec7017SPing-Ke Shih void rtw89_enter_ips(struct rtw89_dev *rtwdev); 14e3ec7017SPing-Ke Shih void rtw89_leave_ips(struct rtw89_dev *rtwdev); 15e3ec7017SPing-Ke Shih void rtw89_set_coex_ctrl_lps(struct rtw89_dev *rtwdev, bool btc_ctrl); 16f4a43c3bSDian-Syuan Yang void rtw89_process_p2p_ps(struct rtw89_dev *rtwdev, struct ieee80211_vif *vif); 17e3ec7017SPing-Ke Shih 18*a0e97ae3SPo-Hao Huang static inline void rtw89_leave_ips_by_hwflags(struct rtw89_dev *rtwdev) 19*a0e97ae3SPo-Hao Huang { 20*a0e97ae3SPo-Hao Huang struct ieee80211_hw *hw = rtwdev->hw; 21*a0e97ae3SPo-Hao Huang 22*a0e97ae3SPo-Hao Huang if (hw->conf.flags & IEEE80211_CONF_IDLE) 23*a0e97ae3SPo-Hao Huang rtw89_leave_ips(rtwdev); 24*a0e97ae3SPo-Hao Huang } 25*a0e97ae3SPo-Hao Huang 26*a0e97ae3SPo-Hao Huang static inline void rtw89_enter_ips_by_hwflags(struct rtw89_dev *rtwdev) 27*a0e97ae3SPo-Hao Huang { 28*a0e97ae3SPo-Hao Huang struct ieee80211_hw *hw = rtwdev->hw; 29*a0e97ae3SPo-Hao Huang 30*a0e97ae3SPo-Hao Huang if (hw->conf.flags & IEEE80211_CONF_IDLE) 31*a0e97ae3SPo-Hao Huang rtw89_enter_ips(rtwdev); 32*a0e97ae3SPo-Hao Huang } 33*a0e97ae3SPo-Hao Huang 34e3ec7017SPing-Ke Shih #endif 35