1*4882a593Smuzhiyun /****************************************************************************** 2*4882a593Smuzhiyun * 3*4882a593Smuzhiyun * Copyright(c) 2019 Realtek Corporation. 4*4882a593Smuzhiyun * 5*4882a593Smuzhiyun * This program is free software; you can redistribute it and/or modify it 6*4882a593Smuzhiyun * under the terms of version 2 of the GNU General Public License as 7*4882a593Smuzhiyun * published by the Free Software Foundation. 8*4882a593Smuzhiyun * 9*4882a593Smuzhiyun * This program is distributed in the hope that it will be useful, but WITHOUT 10*4882a593Smuzhiyun * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 11*4882a593Smuzhiyun * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for 12*4882a593Smuzhiyun * more details. 13*4882a593Smuzhiyun * 14*4882a593Smuzhiyun *****************************************************************************/ 15*4882a593Smuzhiyun #ifndef _PHL_MCC_DEF_H_ 16*4882a593Smuzhiyun #define _PHL_MCC_DEF_H_ 17*4882a593Smuzhiyun /* MCC definition for public usage in phl layer */ 18*4882a593Smuzhiyun #ifdef CONFIG_MCC_SUPPORT 19*4882a593Smuzhiyun 20*4882a593Smuzhiyun struct phl_com_mcc_info { 21*4882a593Smuzhiyun struct rtw_phl_mcc_ops ops; 22*4882a593Smuzhiyun }; 23*4882a593Smuzhiyun 24*4882a593Smuzhiyun struct phl_mcc_dur_lim_req_info { 25*4882a593Smuzhiyun enum rtw_phl_mcc_dur_lim_tag tag; 26*4882a593Smuzhiyun bool enable; 27*4882a593Smuzhiyun u32 start_t_h; /*start time of Prohibit slot*/ 28*4882a593Smuzhiyun u32 start_t_l; 29*4882a593Smuzhiyun u32 dur; /*Prohibit time slot, unit: us*/ 30*4882a593Smuzhiyun u32 intvl; /*Prohibit internval, unit us*/ 31*4882a593Smuzhiyun }; 32*4882a593Smuzhiyun 33*4882a593Smuzhiyun struct phl_tdmra_dur_change_info { 34*4882a593Smuzhiyun bool bt_role; 35*4882a593Smuzhiyun u8 hw_band; 36*4882a593Smuzhiyun struct rtw_wifi_role_t *role; 37*4882a593Smuzhiyun u16 dur; 38*4882a593Smuzhiyun }; 39*4882a593Smuzhiyun 40*4882a593Smuzhiyun void rtw_phl_mcc_watchdog(struct phl_info_t *phl, u8 band_idx); 41*4882a593Smuzhiyun 42*4882a593Smuzhiyun void rtw_phl_mcc_sta_entry_change(struct phl_info_t *phl, 43*4882a593Smuzhiyun struct rtw_wifi_role_t *wrole); 44*4882a593Smuzhiyun 45*4882a593Smuzhiyun void phl_mcc_client_link_notify_for_ap(struct phl_info_t *phl, 46*4882a593Smuzhiyun struct rtw_wifi_role_t *wrole, enum role_state state); 47*4882a593Smuzhiyun 48*4882a593Smuzhiyun enum rtw_phl_status rtw_phl_mcc_dur_lim_change(struct phl_info_t *phl, 49*4882a593Smuzhiyun struct rtw_wifi_role_t *wrole, 50*4882a593Smuzhiyun struct phl_mcc_dur_lim_req_info *lim_req); 51*4882a593Smuzhiyun 52*4882a593Smuzhiyun bool rtw_phl_mcc_inprogress(struct phl_info_t *phl, u8 band_idx); 53*4882a593Smuzhiyun 54*4882a593Smuzhiyun enum rtw_phl_status rtw_phl_mcc_reset(struct phl_info_t *phl, 55*4882a593Smuzhiyun u8 band_idx); 56*4882a593Smuzhiyun 57*4882a593Smuzhiyun enum rtw_phl_status rtw_phl_mcc_recovery(struct phl_info_t *phl, 58*4882a593Smuzhiyun u8 band_idx); 59*4882a593Smuzhiyun 60*4882a593Smuzhiyun enum rtw_phl_status rtw_phl_mcc_enable(struct phl_info_t *phl, 61*4882a593Smuzhiyun struct rtw_wifi_role_t *cur_role); 62*4882a593Smuzhiyun 63*4882a593Smuzhiyun enum rtw_phl_status rtw_phl_mcc_disable(struct phl_info_t *phl, 64*4882a593Smuzhiyun struct rtw_wifi_role_t *spec_role); 65*4882a593Smuzhiyun 66*4882a593Smuzhiyun enum rtw_phl_status rtw_phl_tdmra_duration_change(struct phl_info_t *phl, 67*4882a593Smuzhiyun struct phl_tdmra_dur_change_info *info); 68*4882a593Smuzhiyun 69*4882a593Smuzhiyun enum rtw_phl_status rtw_phl_tdmra_enable(struct phl_info_t *phl, 70*4882a593Smuzhiyun struct rtw_wifi_role_t *cur_role); 71*4882a593Smuzhiyun 72*4882a593Smuzhiyun enum rtw_phl_status rtw_phl_tdmra_disable(struct phl_info_t *phl, 73*4882a593Smuzhiyun struct rtw_wifi_role_t *spec_role); 74*4882a593Smuzhiyun 75*4882a593Smuzhiyun enum rtw_phl_status rtw_phl_mcc_init_ops(struct phl_info_t *phl, struct rtw_phl_mcc_ops *ops); 76*4882a593Smuzhiyun 77*4882a593Smuzhiyun enum rtw_phl_status rtw_phl_mcc_init(struct phl_info_t *phl); 78*4882a593Smuzhiyun 79*4882a593Smuzhiyun void rtw_phl_mcc_deinit(struct phl_info_t *phl); 80*4882a593Smuzhiyun 81*4882a593Smuzhiyun bool rtw_phl_mcc_get_dbg_info(struct phl_info_t *phl, u8 band_idx, 82*4882a593Smuzhiyun enum rtw_phl_mcc_dbg_type type, void *info); 83*4882a593Smuzhiyun 84*4882a593Smuzhiyun #else /* CONFIG_MCC_SUPPORT ==0 */ 85*4882a593Smuzhiyun #define rtw_phl_mcc_watchdog(_phl, _band_idx) 86*4882a593Smuzhiyun #define phl_mcc_client_link_notify_for_ap(_phl, _wrole, _state) 87*4882a593Smuzhiyun #define rtw_phl_mcc_enable(_phl,_cur_role) RTW_PHL_STATUS_FAILURE 88*4882a593Smuzhiyun #define rtw_phl_mcc_disable(_phl,_spec_role) RTW_PHL_STATUS_FAILURE 89*4882a593Smuzhiyun #define rtw_phl_mcc_init_ops(_phl, _ops) RTW_PHL_STATUS_FAILURE 90*4882a593Smuzhiyun #define rtw_phl_mcc_init(_phl) RTW_PHL_STATUS_FAILURE 91*4882a593Smuzhiyun #define rtw_phl_mcc_deinit(_phl) 92*4882a593Smuzhiyun #define rtw_phl_mcc_inprogress(_phl, _band_idx) false 93*4882a593Smuzhiyun #define rtw_phl_mcc_reset(_phl, _band_idx) RTW_PHL_STATUS_SUCCESS 94*4882a593Smuzhiyun #define rtw_phl_mcc_recovery(_phl, _band_idx) RTW_PHL_STATUS_SUCCESS 95*4882a593Smuzhiyun #define rtw_phl_tdmra_duration_change(_phl, _info) RTW_PHL_STATUS_FAILURE 96*4882a593Smuzhiyun #define rtw_phl_tdmra_enable(_phl, _cur_role) RTW_PHL_STATUS_FAILURE 97*4882a593Smuzhiyun #define rtw_phl_tdmra_disable(_phl, _spec_role) RTW_PHL_STATUS_FAILURE 98*4882a593Smuzhiyun #define rtw_phl_mcc_sta_entry_change(_phl, _wrole); 99*4882a593Smuzhiyun 100*4882a593Smuzhiyun #endif /* CONFIG_MCC_SUPPORT */ 101*4882a593Smuzhiyun #endif /*_PHL_MCC_DEF_H_*/ 102