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_CHANA_H_ 16*4882a593Smuzhiyun #define _PHL_CHANA_H_ 17*4882a593Smuzhiyun 18*4882a593Smuzhiyun u8 phl_chanctx_get_rnum(struct phl_info_t *phl_info, 19*4882a593Smuzhiyun struct phl_queue *chan_ctx_queue, 20*4882a593Smuzhiyun struct rtw_chan_ctx *chanctx); 21*4882a593Smuzhiyun 22*4882a593Smuzhiyun u8 phl_chanctx_get_rnum_with_lock(struct phl_info_t *phl_info, 23*4882a593Smuzhiyun struct phl_queue *chan_ctx_queue, 24*4882a593Smuzhiyun struct rtw_chan_ctx *chanctx); 25*4882a593Smuzhiyun 26*4882a593Smuzhiyun u8 phl_get_chanctx_rolemap(struct phl_info_t *phl_info, u8 band_idx); 27*4882a593Smuzhiyun 28*4882a593Smuzhiyun enum rtw_phl_status 29*4882a593Smuzhiyun phl_chanctx_free(struct phl_info_t *phl_info, struct hw_band_ctl_t *band_ctl); 30*4882a593Smuzhiyun 31*4882a593Smuzhiyun enum rtw_phl_status 32*4882a593Smuzhiyun phl_set_ch_bw(struct rtw_wifi_role_t *wifi_role, 33*4882a593Smuzhiyun struct rtw_chan_def *chdef, bool do_rfk); 34*4882a593Smuzhiyun 35*4882a593Smuzhiyun 36*4882a593Smuzhiyun bool rtw_phl_chanctx_add(void *phl, struct rtw_wifi_role_t *wifi_role, 37*4882a593Smuzhiyun u8 *chan, enum channel_width *bw, enum chan_offset *offset); 38*4882a593Smuzhiyun 39*4882a593Smuzhiyun int rtw_phl_chanctx_del(void *phl, struct rtw_wifi_role_t *wifi_role, 40*4882a593Smuzhiyun struct rtw_chan_def *chan_def); 41*4882a593Smuzhiyun 42*4882a593Smuzhiyun #ifdef CONFIG_CMD_DISP 43*4882a593Smuzhiyun enum rtw_phl_status 44*4882a593Smuzhiyun phl_cmd_chg_op_chdef_start_hdl(struct phl_info_t *phl, u8 *param); 45*4882a593Smuzhiyun 46*4882a593Smuzhiyun enum rtw_phl_status 47*4882a593Smuzhiyun phl_cmd_set_ch_bw_hdl(struct phl_info_t *phl_info, u8 *param); 48*4882a593Smuzhiyun enum rtw_phl_status 49*4882a593Smuzhiyun rtw_phl_cmd_set_ch_bw(struct rtw_wifi_role_t *wifi_role, 50*4882a593Smuzhiyun struct rtw_chan_def *chdef, 51*4882a593Smuzhiyun bool do_rfk, 52*4882a593Smuzhiyun enum phl_cmd_type cmd_type, 53*4882a593Smuzhiyun u32 cmd_timeout); 54*4882a593Smuzhiyun enum rtw_phl_status 55*4882a593Smuzhiyun phl_cmd_dfs_tx_pause_hdl(struct phl_info_t *phl_info, u8 *param); 56*4882a593Smuzhiyun #endif 57*4882a593Smuzhiyun 58*4882a593Smuzhiyun #ifdef DBG_PHL_CHAN 59*4882a593Smuzhiyun void phl_chan_dump_chandef(const char *caller, const int line, bool show_caller, 60*4882a593Smuzhiyun struct rtw_chan_def *chandef); 61*4882a593Smuzhiyun #define PHL_DUMP_CHAN_DEF(_chandef) phl_chan_dump_chandef(__FUNCTION__, __LINE__, false, _chandef); 62*4882a593Smuzhiyun #define PHL_DUMP_CHAN_DEF_EX(_chandef) phl_chan_dump_chandef(__FUNCTION__, __LINE__, true, _chandef); 63*4882a593Smuzhiyun #else 64*4882a593Smuzhiyun #define PHL_DUMP_CHAN_DEF(_chandef) 65*4882a593Smuzhiyun #define PHL_DUMP_CHAN_DEF_EX(_chandef) 66*4882a593Smuzhiyun #endif 67*4882a593Smuzhiyun 68*4882a593Smuzhiyun #ifdef CONFIG_DBCC_SUPPORT 69*4882a593Smuzhiyun enum rtw_phl_status 70*4882a593Smuzhiyun rtw_phl_dbcc_test(void *phl, enum dbcc_test_id id, void *param); 71*4882a593Smuzhiyun #endif 72*4882a593Smuzhiyun 73*4882a593Smuzhiyun enum band_type rtw_phl_get_band_type(u8 chan); 74*4882a593Smuzhiyun u8 rtw_phl_get_center_ch(u8 ch, 75*4882a593Smuzhiyun enum channel_width bw, enum chan_offset offset); 76*4882a593Smuzhiyun u8 77*4882a593Smuzhiyun rtw_phl_get_operating_class( 78*4882a593Smuzhiyun struct rtw_chan_def chan_def 79*4882a593Smuzhiyun ); 80*4882a593Smuzhiyun 81*4882a593Smuzhiyun bool 82*4882a593Smuzhiyun rtw_phl_get_chandef_from_operating_class( 83*4882a593Smuzhiyun u8 channel, 84*4882a593Smuzhiyun u8 operating_class, 85*4882a593Smuzhiyun struct rtw_chan_def *chan_def 86*4882a593Smuzhiyun ); 87*4882a593Smuzhiyun #endif /*_PHL_CHANA_H_*/ 88