/****************************************************************************** * * Copyright(c) 2007 - 2020 Realtek Corporation. * * This program is free software; you can redistribute it and/or modify it * under the terms of version 2 of the GNU General Public License as * published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for * more details. * * The full GNU General Public License is included in this distribution in the * file called LICENSE. * * Contact Information: * wlanfae * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park, * Hsinchu 300, Taiwan. * * Larry Finger * *****************************************************************************/ #ifndef __HALBB_DFS_H__ #define __HALBB_DFS_H__ /*@--------------------------[Define] ---------------------------------------*/ #define DFS_RPT_LENGTH 8 #define DFS_RDR_TYP_NUM 8 #define DFS_L_RDR_IDX 6 #define PW_FTR_IDLE 1 #define PRI_FTR_IDLE 1 #define PW_FTR 3 #define PRI_FTR 3 #define DFS_PPB_PRCNT 4 #define DFS_PPB_IDLE_PRCNT 5 #define DFS_PPB_ADPTV_PRCNT 8 #define DFS_CHIRP_TH 3 #define DFS_FCC_LP_LNGTH 12 /*Real Waveform length of FCC-LP is 12 secs*/ #define DFS_MAX_SEQ_NUM 127 /*@--------------------------[Enum]------------------------------------------*/ /*@--------------------------[Structure]-------------------------------------*/ struct bb_dfs_cr_info { u32 dfs_en; u32 dfs_en_m; }; struct bb_dfs_info { struct bb_dfs_cr_info bb_dfs_cr_i; u8 dfs_rgn_domain; u8 ppb_prcnt; u16 pw_rpt[DFS_MAX_SEQ_NUM]; u8 pri_rpt[DFS_MAX_SEQ_NUM]; bool chrp_rpt[DFS_MAX_SEQ_NUM]; u8 chrp_cnt; u8 chrp_th; u32 chrp_srt_t; u8 n_cnfd_lvl; u8 lng_rdr_cnt; u8 srt_rdr_cnt[DFS_RDR_TYP_NUM]; u8 pw_lbd[DFS_RDR_TYP_NUM]; u16 pw_ubd[DFS_RDR_TYP_NUM]; u8 pri_lbd[DFS_RDR_TYP_NUM]; u8 pri_ubd[DFS_RDR_TYP_NUM]; u8 pw_min_tab[DFS_RDR_TYP_NUM]; u16 pw_max_tab[DFS_RDR_TYP_NUM]; u8 pri_min_tab[DFS_RDR_TYP_NUM]; u8 pri_max_tab[DFS_RDR_TYP_NUM]; u8 ppb_tab[DFS_RDR_TYP_NUM]; u8 lst_seq_num; u8 pri_tmp; u16 pw_tmp; bool is_mic_w53; bool is_mic_w56; bool l_rdr_exst_flag; bool chrp_obsrv_flag; bool n_cnfd_flag; bool n_seq_flag; bool idle_flag; bool dfs_sw_trgr_mode; bool dfs_dbg_mode; bool dbg_prnt_en; u8 fk_dfs_num_th; u8 dfs_tp_th; u8 dfs_idle_prd_th; u8 dfs_fa_th; u8 dfs_nhm_th; u8 dfs_n_cnfd_lvl_th; bool dfs_dyn_setting_en; }; struct bb_dfs_rpt { u8 *dfs_ptr; u16 dfs_num; u8 phy_idx; /*phy0,phy1*/ }; #if (PLATFOM_IS_LITTLE_ENDIAN) struct bb_rdr_info { u8 rdr_info_sg0_chirp_flag:1; /*[18:9],[8:1],[0]*/ u8 rdr_info_sg0_pri_l:7; u8 rdr_info_sg0_pri_m:1; u8 rdr_info_sg0_pw_l:7; u8 rdr_info_sg0_pw_m:3; u8 rdr_info_sg1_chirp_flag:1; /*[37:28],[27:20],[19]*/ u8 rdr_info_sg1_pri_l:4; u8 rdr_info_sg1_pri_m:4; u8 rdr_info_sg1_pw_l:4; u8 rdr_info_sg1_pw_m:6; u8 rdr_info_zw_chirp_flag:1; /*[56:47],[46:39],[38]*/ u8 rdr_info_zw_pri_l:1; u8 rdr_info_zw_pri_m:7; u8 rdr_info_zw_pw_l:1; u8 rdr_info_zw_pw_m; u8 rdr_info_zw_pw_h:1; u8 rdr_info_seq:7; }; #else struct bb_rdr_info { u8 rdr_info_sg0_pri_l:7; u8 rdr_info_sg0_chirp_flag:1; u8 rdr_info_sg0_pw_l:7; u8 rdr_info_sg0_pri_m:1; u8 rdr_info_sg1_pri_l:4; u8 rdr_info_sg1_chirp_flag:1; u8 rdr_info_sg0_pw_m:3; u8 rdr_info_sg1_pw_l:4; u8 rdr_info_sg1_pri_m:4; u8 rdr_info_zw_pri_l:1; u8 rdr_info_zw_chirp_flag:1; u8 rdr_info_sg1_pw_m:6; u8 rdr_info_zw_pw_l:1; u8 rdr_info_zw_pri_m:7; u8 rdr_info_zw_pw_m; u8 rdr_info_seq:7; u8 rdr_info_zw_pw_h:1; }; #endif /*@--------------------------[Prptotype]-------------------------------------*/ struct bb_info; struct hal_dfs_rpt; void halbb_dfs(struct bb_info *bb); void halbb_dfs_rgn_dmn_dflt_cnfg(struct bb_info *bb); void halbb_dfs_rgn_dmn_cnfg_by_ch(struct bb_info *bb, bool w53_band, bool w56_band); void halbb_radar_chrp_mntr(struct bb_info *bb, bool chrp_flag); void halbb_radar_seq_inspctn(struct bb_info *bb, u16 dfs_rpt_idx, u8 c_num, u8 p_num); void halbb_radar_ptrn_cmprn(struct bb_info *bb, u16 dfs_rpt_idx, u8 pri, u16 pw, bool chrp_flag); void halbb_radar_info_processing(struct bb_info *bb, struct hal_dfs_rpt *dfs_rpt, u16 dfs_rpt_idx); void halbb_dfs_dyn_setting(struct bb_info *bb); void halbb_dfs_debug(struct bb_info *bb, char input[][16], u32 *_used, char *output, u32 *_out_len); void halbb_cr_cfg_dfs_init(struct bb_info *bb); #endif