xref: /OK3568_Linux_fs/external/rkwifibt/drivers/rtl8852be/phl/hal_g6/hal_api_bb.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1 /******************************************************************************
2  *
3  * Copyright(c) 2019 Realtek Corporation.
4  *
5  * This program is free software; you can redistribute it and/or modify it
6  * under the terms of version 2 of the GNU General Public License as
7  * published by the Free Software Foundation.
8  *
9  * This program is distributed in the hope that it will be useful, but WITHOUT
10  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11  * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
12  * more details.
13  *
14  *****************************************************************************/
15 #ifndef _HAL_API_BB_H_
16 #define _HAL_API_BB_H_
17 enum phl_phy_idx rtw_hal_bb_band_to_phy_idx(struct rtw_hal_com_t *hal_com, u8 band_idx);
18 void rtw_hal_bb_dfs_en(struct hal_info_t *hal_info, bool en);
19 void rtw_hal_bb_tssi_cont_en(struct hal_info_t *hal_info, bool en, enum rf_path path);
20 void rtw_hal_bb_adc_en(struct hal_info_t *hal_info,bool en);
21 void rtw_hal_bb_reset_en(struct hal_info_t *hal_info,bool en, enum phl_phy_idx phy_idx);
22 
23 bool rtw_hal_bb_proc_cmd(struct hal_info_t *hal_info,
24 					struct rtw_proc_cmd *incmd,
25 					char *output, u32 out_len);
26 
27 enum rtw_hal_status rtw_hal_bb_watchdog(struct hal_info_t *hal_info, u8 is_lps);
28 enum rtw_hal_status rtw_hal_bb_simple_watchdog(struct hal_info_t *hal_info, u8 io_en);
29 
30 void rtw_hal_bb_fw_edcca(struct hal_info_t *hal_info);
31 
32 void rtw_hal_bb_reset(struct hal_info_t *hal_info);
33 
34 void rtw_hal_bb_dm_init(struct hal_info_t *hal_info);
35 
36 void rtw_hal_bb_dm_deinit(struct rtw_phl_com_t *phl_com, struct hal_info_t *hal_info);
37 
38 enum rtw_hal_status rtw_hal_bb_ctrl_rx_cca(struct rtw_hal_com_t *hal_com,
39 	bool cca_en, enum phl_phy_idx phy_idx);
40 enum rtw_hal_status rtw_hal_bb_ctrl_dbcc(struct hal_info_t *hal_info, bool dbcc_en);
41 enum rtw_hal_status rtw_hal_bb_cfg_dbcc(struct hal_info_t *hal_info, bool dbcc_en);
42 
43 u32 rtw_hal_bb_init(struct rtw_phl_com_t *phl_com,
44 			struct hal_info_t *hal_info);
45 
46 void rtw_hal_bb_deinit(struct rtw_phl_com_t *phl_com,
47 			struct hal_info_t *hal_info);
48 
49 void rtw_hal_init_bb_reg(struct hal_info_t *hal_info);
50 
51 u32 rtw_hal_read_rf_reg(struct rtw_hal_com_t *hal_com,
52 			enum rf_path path, u32 addr, u32 mask);
53 
54 bool rtw_hal_write_rf_reg(struct rtw_hal_com_t *hal_com,
55 				enum rf_path path, u32 addr, u32 mask, u32 data);
56 
57 u32 rtw_hal_read_bb_reg(struct rtw_hal_com_t *hal_com,
58 						u32 addr, u32 mask);
59 
60 bool rtw_hal_write_bb_reg(struct rtw_hal_com_t *hal_com,
61 			  			  u32 addr, u32 mask, u32 data);
62 
63 enum rtw_hal_status
64 rtw_hal_bb_stainfo_init(struct hal_info_t *hal_info,
65 				struct rtw_phl_stainfo_t *sta);
66 enum rtw_hal_status
67 rtw_hal_bb_stainfo_deinit(struct hal_info_t *hal_info,
68 				struct rtw_phl_stainfo_t *sta);
69 
70 enum rtw_hal_status
71 rtw_hal_bb_stainfo_add(struct hal_info_t *hal_info,
72 				struct rtw_phl_stainfo_t *sta);
73 enum rtw_hal_status
74 rtw_hal_bb_stainfo_delete(struct hal_info_t *hal_info,
75 				struct rtw_phl_stainfo_t *sta);
76 void rtw_hal_bb_media_status_update(struct hal_info_t *hal_info,
77 			struct rtw_phl_stainfo_t *sta, bool is_connected);
78 enum rtw_hal_status
79 rtw_hal_bb_upt_ramask(struct hal_info_t *hal_info,
80 				struct rtw_phl_stainfo_t *sta);
81 enum rtw_hal_status
82 rtw_hal_bb_ra_update(struct hal_info_t *hal_info,
83 				struct rtw_phl_stainfo_t *sta);
84 enum rtw_hal_status
85 rtw_hal_bb_ra_register(struct hal_info_t *hal_info,
86 				struct rtw_phl_stainfo_t *sta);
87 enum rtw_hal_status
88 rtw_hal_bb_ra_deregister(struct hal_info_t *hal_info,
89 				struct rtw_phl_stainfo_t *sta);
90 u8
91 rtw_hal_bb_get_arfr_idx(struct hal_info_t *hal_info,
92 				struct rtw_phl_stainfo_t *sta);
93 
94 enum rtw_hal_status
95 rtw_hal_bb_set_ch_bw(struct hal_info_t *hal_info,
96 					enum phl_phy_idx phy_idx,
97 					u8 pri_ch,
98 					u8 central_ch_seg0,
99 		      		u8 central_ch_seg1,
100 					enum band_type band,
101 					enum channel_width bw);
102 #ifdef CONFIG_PHL_CUSTOM_FEATURE
103 enum rtw_hal_status
104 rtw_hal_bb_set_pop_en(struct hal_info_t *hal_info,
105                       bool en,
106                       enum phl_phy_idx phy_idx);
107 
108 bool
109 rtw_hal_bb_query_pop_en(struct hal_info_t *hal_info,
110                         enum phl_phy_idx phy_idx);
111 
112 enum rtw_hal_status
113 rtw_hal_bb_set_pkt_detect_thold(struct hal_info_t *hal_info, u32 bound);
114 
115 u8
116 rtw_hal_bb_query_pkt_detect_thold(struct hal_info_t *hal_info,
117                                   bool get_en_info,
118                                   enum phl_phy_idx phy_idx);
119 #endif
120 #ifdef CONFIG_RTW_ACS
121 void rtw_hal_bb_acs_mntr_trigger(struct hal_info_t *hal_info, u16 monitor_time);
122 enum rtw_hal_status rtw_hal_bb_acs_mntr_result(struct hal_info_t *hal_info, void *rpt);
123 #endif /* CONFIG_RTW_ACS */
124 #ifdef CONFIG_PHL_DFS
125 enum rtw_hal_status
126 rtw_hal_bb_dfs_rpt_cfg(struct hal_info_t *hal_info, bool dfs_en);
127 bool
128 rtw_hal_bb_radar_detect(struct hal_info_t *hal_info,
129 				struct hal_dfs_rpt *hal_dfs);
130 
131 #endif
132 
133 #ifdef CONFIG_PHL_CHANNEL_INFO
134 enum rtw_hal_status
135 rtw_hal_bb_ch_info_parsing(struct hal_info_t *hal_info,
136 	u8 *addr, u32 len, u8 *rpt_buf, struct ch_rpt_hdr_info *ch_hdr_rpt,
137 	struct phy_info_rpt *phy_rpt, struct ch_info_drv_rpt *drv);
138 
139 void
140 rtw_hal_bb_chan_info_cfg(struct hal_info_t *hal_info, struct chinfo_bbcr_cfg *bbcr);
141 #endif /* CONFIG_PHL_CHANNEL_INFO */
142 
143 enum rtw_hal_status rtw_hal_bb_get_rx_ok(struct hal_info_t *hal_info, u8 cur_phy_idx, u32 *rx_ok);
144 
145 enum rtw_hal_status rtw_hal_bb_get_rx_crc(struct hal_info_t *hal_info, u8 cur_phy_idx, u32 *rx_crc_err);
146 
147 enum rtw_hal_status rtw_hal_bb_set_reset_cnt(void *hal);
148 
149 enum rtw_hal_status rtw_hal_bb_set_pwr_index(void *hal, u16 pwr_idx, enum rf_path tx_path, bool is_cck);
150 
151 enum rtw_hal_status rtw_hal_bb_get_pwr_index(void *hal, u16 *pwr_idx, enum rf_path tx_path, bool is_cck);
152 
153 enum rtw_hal_status
154 rtw_hal_bb_parse_phy_sts(void *hal, void *ppdu_sts,
155 			 struct rtw_phl_rx_pkt *phl_rx, u8 is_su);
156 
157 enum rtw_hal_status rtw_hal_bb_get_tx_ok(void *hal, u8 cur_phy_idx, u32 *tx_ok);
158 
159 enum rtw_hal_status rtw_hal_bb_get_txpwr_ref(struct hal_info_t *hal_info, u8 is_cck, u8 tx_path, s16 *txpwr_ref);
160 
161 enum rtw_hal_status rtw_hal_bb_get_rssi(struct hal_info_t *hal_info, enum rf_path rx_path, u8 *rssi);
162 
163 enum rtw_hal_status rtw_hal_bb_get_rssi_ex(struct hal_info_t *hal_info, enum rf_path rx_path, s16 *rssi, u8 cur_phy_idx);
164 
165 enum rtw_hal_status rtw_hal_bb_get_rxevm(struct hal_info_t *hal_info, u8 user, u8 strm, u8 rxevm_table, u8 *rx_evm);
166 
167 enum rtw_hal_status rtw_hal_bb_trigger_rxevm(struct hal_info_t *hal_info, u8 cur_phy_idx,
168 	u32 *phy0_user0_rxevm, u32 *phy0_user1_rxevm, u32 *phy0_user2_rxevm, u32 *phy0_user3_rxevm,
169 	u32 *phy1_user0_rxevm, u32 *phy1_user1_rxevm, u32 *phy1_user2_rxevm, u32 *phy1_user3_rxevm);
170 
171 enum rtw_hal_status rtw_hal_bb_set_txsc(struct hal_info_t *hal_info, u8 txsc,
172 										enum phl_phy_idx phy_idx);
173 u32 rtw_hal_bb_process_c2h(void *hal, struct rtw_c2h_info *c2h);
174 
175 #ifdef CONFIG_DBCC_SUPPORT
176 enum rtw_hal_status
177 rtw_hal_phy_dbcc_pre_cfg(struct hal_info_t *hal_info,
178 			struct rtw_phl_com_t *phl_com, bool dbcc_en);
179 
180 enum rtw_hal_status
181 rtw_hal_phy_dbcc_cfg(struct hal_info_t *hal_info,
182 			struct rtw_phl_com_t *phl_com, bool dbcc_en);
183 #endif
184 
185 enum rtw_hal_status
186 rtw_hal_bb_get_txinfo_power(struct hal_info_t *hal_info,
187 				s16	 *txinfo_power_dbm);
188 
189 enum rtw_hal_status
190 rtw_hal_bb_ctrl_rf_mode(struct hal_info_t *hal_info,
191 					enum phl_rf_mode rf_mode);
192 
193 enum rtw_hal_status
194 rtw_hal_bb_set_sta_id(struct hal_info_t *hal_info,
195 	u16 staid, enum phl_phy_idx phy_idx);
196 
197 enum rtw_hal_status
198 rtw_hal_bb_set_bss_color(struct hal_info_t *hal_info,
199 	u8 bsscolor, enum phl_phy_idx phy_idx);
200 
201 #ifdef RTW_WKARD_DEF_CMACTBL_CFG
202 enum rtw_hal_status
203 rtw_hal_bb_trx_path_cfg(struct hal_info_t *hal_info,
204 	enum rf_path tx, u8 tx_nss, enum rf_path rx, u8 rx_nss);
205 
206 u16 rtw_hal_bb_cfg_cmac_tx_ant(struct hal_info_t *hal_info,
207 	enum rf_path tx_path);
208 #endif
209 
210 #ifdef RTW_WKARD_DYNAMIC_BFEE_CAP
211 void rtw_hal_bb_dcr_en(struct hal_info_t *hal_info, bool en);
212 bool rtw_hal_bb_csi_rsp(struct hal_info_t *hal_info);
213 #endif
214 
215 void rtw_hal_bb_notification(struct hal_info_t *hal_info,
216                              enum phl_msg_evt_id event,
217                              enum phl_phy_idx phy_idx);
218 
219 void rtw_hal_bb_cmd_notification(struct hal_info_t *hal_info,
220                              void *hal_cmd,
221                              enum phl_phy_idx phy_idx);
222 
223 enum rtw_hal_status
224 rtw_hal_bb_set_gain_offset(struct hal_info_t *hal_info, s8 rx_gain_offset,
225 				enum rf_path rx_path, enum phl_phy_idx phy_idx, u8 iscck);
226 
227 void rtw_hal_bb_get_efuse_init(struct rtw_hal_com_t *hal_com);
228 
229 enum rtw_hal_status
230 rtw_hal_bb_ic_hw_setting_init(struct hal_info_t *hal_info);
231 
232 bool rtw_hal_bb_check_tx_idle(struct hal_info_t *hal_info, enum phl_phy_idx phy_idx);
233 
234 enum rtw_hal_status
235 rtw_hal_bb_query_rainfo(void *hal, struct rtw_hal_stainfo_t *hal_sta,
236 			struct rtw_phl_rainfo *phl_rainfo);
237 
238 enum rtw_hal_status
239 rtw_hal_bb_query_txsts_rpt(struct hal_info_t *hal_info,
240 				u16 macid0, u16 macid1);
241 
242 enum rtw_hal_status
243 rtw_hal_bb_set_tb_pwr_ofst(struct hal_info_t *hal_info,
244 			s16 ofst, enum phl_phy_idx phy_idx);
245 #ifdef CONFIG_MCC_SUPPORT
246 enum rtw_hal_status
247 rtw_hal_bb_upd_mcc_macid(struct hal_info_t *hal_info,
248                          struct rtw_phl_mcc_role *mrole);
249 
250 void
251 rtw_hal_bb_mcc_stop(struct hal_info_t *hal_info);
252 
253 enum rtw_hal_status
254 rtw_hal_bb_mcc_start(struct hal_info_t *hal_info,
255                      struct rtw_phl_mcc_role *m_role1,
256                      struct rtw_phl_mcc_role *m_role2);
257 #endif
258 #endif /*_HAL_API_BB_H_*/
259