1 /* SPDX-License-Identifier: GPL-2.0 */
2 /******************************************************************************
3  *
4  * Copyright(c) 2016  Realtek Corporation.
5  *
6  * Contact Information:
7  * wlanfae <wlanfae@realtek.com>
8  * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park,
9  * Hsinchu 300, Taiwan.
10  *
11  * Larry Finger <Larry.Finger@lwfinger.net>
12  *
13  *****************************************************************************/
14 #ifndef _HALMAC_API_88XX_H_
15 #define _HALMAC_API_88XX_H_
16 
17 #include "../halmac_2_platform.h"
18 #include "../halmac_type.h"
19 
20 void halmac_init_state_machine_88xx(struct halmac_adapter *halmac_adapter);
21 
22 void halmac_init_adapter_para_88xx(struct halmac_adapter *halmac_adapter);
23 
24 void halmac_init_adapter_dynamic_para_88xx(
25 	struct halmac_adapter *halmac_adapter);
26 
27 enum halmac_ret_status
28 halmac_mount_api_88xx(struct halmac_adapter *halmac_adapter);
29 
30 enum halmac_ret_status
31 halmac_download_firmware_88xx(struct halmac_adapter *halmac_adapter,
32 			      u8 *hamacl_fw, u32 halmac_fw_size);
33 
34 enum halmac_ret_status
35 halmac_free_download_firmware_88xx(struct halmac_adapter *halmac_adapter,
36 				   enum halmac_dlfw_mem dlfw_mem, u8 *hamacl_fw,
37 				   u32 halmac_fw_size);
38 
39 enum halmac_ret_status
40 halmac_get_fw_version_88xx(struct halmac_adapter *halmac_adapter,
41 			   struct halmac_fw_version *fw_version);
42 
43 enum halmac_ret_status
44 halmac_cfg_mac_addr_88xx(struct halmac_adapter *halmac_adapter, u8 halmac_port,
45 			 union halmac_wlan_addr *hal_address);
46 
47 enum halmac_ret_status
48 halmac_cfg_bssid_88xx(struct halmac_adapter *halmac_adapter, u8 halmac_port,
49 		      union halmac_wlan_addr *hal_address);
50 
51 enum halmac_ret_status
52 halmac_cfg_multicast_addr_88xx(struct halmac_adapter *halmac_adapter,
53 			       union halmac_wlan_addr *hal_address);
54 
55 enum halmac_ret_status
56 halmac_pre_init_system_cfg_88xx(struct halmac_adapter *halmac_adapter);
57 
58 enum halmac_ret_status
59 halmac_init_system_cfg_88xx(struct halmac_adapter *halmac_adapter);
60 
61 enum halmac_ret_status
62 halmac_cfg_rx_aggregation_88xx(struct halmac_adapter *halmac_adapter,
63 			       struct halmac_rxagg_cfg halmac_rxagg_cfg);
64 
65 enum halmac_ret_status
66 halmac_init_edca_cfg_88xx(struct halmac_adapter *halmac_adapter);
67 
68 enum halmac_ret_status
69 halmac_cfg_operation_mode_88xx(struct halmac_adapter *halmac_adapter,
70 			       enum halmac_wireless_mode wireless_mode);
71 
72 enum halmac_ret_status
73 halmac_cfg_ch_bw_88xx(struct halmac_adapter *halmac_adapter, u8 channel,
74 		      enum halmac_pri_ch_idx pri_ch_idx, enum halmac_bw bw);
75 
76 enum halmac_ret_status halmac_cfg_ch_88xx(struct halmac_adapter *halmac_adapter,
77 					  u8 channel);
78 
79 enum halmac_ret_status
80 halmac_cfg_pri_ch_idx_88xx(struct halmac_adapter *halmac_adapter,
81 			   enum halmac_pri_ch_idx pri_ch_idx);
82 
83 enum halmac_ret_status halmac_cfg_bw_88xx(struct halmac_adapter *halmac_adapter,
84 					  enum halmac_bw bw);
85 
86 enum halmac_ret_status
87 halmac_init_wmac_cfg_88xx(struct halmac_adapter *halmac_adapter);
88 
89 enum halmac_ret_status
90 halmac_init_mac_cfg_88xx(struct halmac_adapter *halmac_adapter,
91 			 enum halmac_trx_mode mode);
92 
93 enum halmac_ret_status
94 halmac_dump_efuse_map_88xx(struct halmac_adapter *halmac_adapter,
95 			   enum halmac_efuse_read_cfg cfg);
96 
97 enum halmac_ret_status
98 halmac_dump_efuse_map_bt_88xx(struct halmac_adapter *halmac_adapter,
99 			      enum halmac_efuse_bank halmac_efuse_bank,
100 			      u32 bt_efuse_map_size, u8 *bt_efuse_map);
101 
102 enum halmac_ret_status
103 halmac_write_efuse_bt_88xx(struct halmac_adapter *halmac_adapter,
104 			   u32 halmac_offset, u8 halmac_value,
105 			   enum halmac_efuse_bank halmac_efuse_bank);
106 
107 enum halmac_ret_status
108 halmac_pg_efuse_by_map_88xx(struct halmac_adapter *halmac_adapter,
109 			    struct halmac_pg_efuse_info *pg_efuse_info,
110 			    enum halmac_efuse_read_cfg cfg);
111 
112 enum halmac_ret_status
113 halmac_get_efuse_size_88xx(struct halmac_adapter *halmac_adapter,
114 			   u32 *halmac_size);
115 
116 enum halmac_ret_status
117 halmac_get_efuse_available_size_88xx(struct halmac_adapter *halmac_adapter,
118 				     u32 *halmac_size);
119 
120 enum halmac_ret_status
121 halmac_get_c2h_info_88xx(struct halmac_adapter *halmac_adapter, u8 *halmac_buf,
122 			 u32 halmac_size);
123 
124 enum halmac_ret_status
125 halmac_get_logical_efuse_size_88xx(struct halmac_adapter *halmac_adapter,
126 				   u32 *halmac_size);
127 
128 enum halmac_ret_status
129 halmac_dump_logical_efuse_map_88xx(struct halmac_adapter *halmac_adapter,
130 				   enum halmac_efuse_read_cfg cfg);
131 
132 enum halmac_ret_status
133 halmac_write_logical_efuse_88xx(struct halmac_adapter *halmac_adapter,
134 				u32 halmac_offset, u8 halmac_value);
135 
136 enum halmac_ret_status
137 halmac_read_logical_efuse_88xx(struct halmac_adapter *halmac_adapter,
138 			       u32 halmac_offset, u8 *value);
139 
140 enum halmac_ret_status
141 halmac_cfg_fwlps_option_88xx(struct halmac_adapter *halmac_adapter,
142 			     struct halmac_fwlps_option *lps_option);
143 
144 enum halmac_ret_status
145 halmac_cfg_fwips_option_88xx(struct halmac_adapter *halmac_adapter,
146 			     struct halmac_fwips_option *ips_option);
147 
148 enum halmac_ret_status
149 halmac_enter_wowlan_88xx(struct halmac_adapter *halmac_adapter,
150 			 struct halmac_wowlan_option *wowlan_option);
151 
152 enum halmac_ret_status
153 halmac_leave_wowlan_88xx(struct halmac_adapter *halmac_adapter);
154 
155 enum halmac_ret_status
156 halmac_enter_ps_88xx(struct halmac_adapter *halmac_adapter,
157 		     enum halmac_ps_state ps_state);
158 
159 enum halmac_ret_status
160 halmac_leave_ps_88xx(struct halmac_adapter *halmac_adapter);
161 
162 enum halmac_ret_status
163 halmac_h2c_lb_88xx(struct halmac_adapter *halmac_adapter);
164 
165 enum halmac_ret_status halmac_debug_88xx(struct halmac_adapter *halmac_adapter);
166 
167 enum halmac_ret_status
168 halmac_cfg_parameter_88xx(struct halmac_adapter *halmac_adapter,
169 			  struct halmac_phy_parameter_info *para_info,
170 			  u8 full_fifo);
171 
172 enum halmac_ret_status
173 halmac_update_packet_88xx(struct halmac_adapter *halmac_adapter,
174 			  enum halmac_packet_id pkt_id, u8 *pkt, u32 pkt_size);
175 
176 enum halmac_ret_status
177 halmac_bcn_ie_filter_88xx(struct halmac_adapter *halmac_adapter,
178 			  struct halmac_bcn_ie_info *bcn_ie_info);
179 
180 enum halmac_ret_status
181 halmac_send_original_h2c_88xx(struct halmac_adapter *halmac_adapter,
182 			      u8 *original_h2c, u16 *seq, u8 ack);
183 
184 enum halmac_ret_status
185 halmac_update_datapack_88xx(struct halmac_adapter *halmac_adapter,
186 			    enum halmac_data_type halmac_data_type,
187 			    struct halmac_phy_parameter_info *para_info);
188 
189 enum halmac_ret_status
190 halmac_run_datapack_88xx(struct halmac_adapter *halmac_adapter,
191 			 enum halmac_data_type halmac_data_type);
192 
193 enum halmac_ret_status
194 halmac_cfg_drv_info_88xx(struct halmac_adapter *halmac_adapter,
195 			 enum halmac_drv_info halmac_drv_info);
196 
197 enum halmac_ret_status
198 halmac_send_bt_coex_88xx(struct halmac_adapter *halmac_adapter, u8 *bt_buf,
199 			 u32 bt_size, u8 ack);
200 
201 enum halmac_ret_status
202 halmac_verify_platform_api_88xx(struct halmac_adapter *halmac_adapter);
203 
204 enum halmac_ret_status
205 halmac_timer_2s_88xx(struct halmac_adapter *halmac_adapter);
206 
207 enum halmac_ret_status
208 halmac_fill_txdesc_check_sum_88xx(struct halmac_adapter *halmac_adapter,
209 				  u8 *cur_desc);
210 
211 enum halmac_ret_status
212 halmac_dump_fifo_88xx(struct halmac_adapter *halmac_adapter,
213 		      enum hal_fifo_sel halmac_fifo_sel, u32 halmac_start_addr,
214 		      u32 halmac_fifo_dump_size, u8 *fifo_map);
215 
216 u32 halmac_get_fifo_size_88xx(struct halmac_adapter *halmac_adapter,
217 			      enum hal_fifo_sel halmac_fifo_sel);
218 
219 enum halmac_ret_status
220 halmac_cfg_txbf_88xx(struct halmac_adapter *halmac_adapter, u8 userid,
221 		     enum halmac_bw bw, u8 txbf_en);
222 
223 enum halmac_ret_status
224 halmac_cfg_mumimo_88xx(struct halmac_adapter *halmac_adapter,
225 		       struct halmac_cfg_mumimo_para *cfgmu);
226 
227 enum halmac_ret_status
228 halmac_cfg_sounding_88xx(struct halmac_adapter *halmac_adapter,
229 			 enum halmac_snd_role role,
230 			 enum halmac_data_rate datarate);
231 
232 enum halmac_ret_status
233 halmac_del_sounding_88xx(struct halmac_adapter *halmac_adapter,
234 			 enum halmac_snd_role role);
235 
236 enum halmac_ret_status
237 halmac_su_bfee_entry_init_88xx(struct halmac_adapter *halmac_adapter, u8 userid,
238 			       u16 paid);
239 
240 enum halmac_ret_status
241 halmac_su_bfer_entry_init_88xx(struct halmac_adapter *halmac_adapter,
242 			       struct halmac_su_bfer_init_para *su_bfer_init);
243 
244 enum halmac_ret_status
245 halmac_mu_bfee_entry_init_88xx(struct halmac_adapter *halmac_adapter,
246 			       struct halmac_mu_bfee_init_para *mu_bfee_init);
247 
248 enum halmac_ret_status
249 halmac_mu_bfer_entry_init_88xx(struct halmac_adapter *halmac_adapter,
250 			       struct halmac_mu_bfer_init_para *mu_bfer_init);
251 
252 enum halmac_ret_status
253 halmac_su_bfee_entry_del_88xx(struct halmac_adapter *halmac_adapter, u8 userid);
254 
255 enum halmac_ret_status
256 halmac_su_bfer_entry_del_88xx(struct halmac_adapter *halmac_adapter, u8 userid);
257 
258 enum halmac_ret_status
259 halmac_mu_bfee_entry_del_88xx(struct halmac_adapter *halmac_adapter, u8 userid);
260 
261 enum halmac_ret_status
262 halmac_mu_bfer_entry_del_88xx(struct halmac_adapter *halmac_adapter);
263 
264 enum halmac_ret_status
265 halmac_add_ch_info_88xx(struct halmac_adapter *halmac_adapter,
266 			struct halmac_ch_info *ch_info);
267 
268 enum halmac_ret_status
269 halmac_add_extra_ch_info_88xx(struct halmac_adapter *halmac_adapter,
270 			      struct halmac_ch_extra_info *ch_extra_info);
271 
272 enum halmac_ret_status
273 halmac_ctrl_ch_switch_88xx(struct halmac_adapter *halmac_adapter,
274 			   struct halmac_ch_switch_option *cs_option);
275 
276 enum halmac_ret_status halmac_p2pps_88xx(struct halmac_adapter *halmac_adapter,
277 					 struct halmac_p2pps *p2p_ps);
278 
279 enum halmac_ret_status
280 halmac_func_p2pps_88xx(struct halmac_adapter *halmac_adapter,
281 		       struct halmac_p2pps *p2p_ps);
282 
283 enum halmac_ret_status
284 halmac_clear_ch_info_88xx(struct halmac_adapter *halmac_adapter);
285 
286 enum halmac_ret_status
287 halmac_send_general_info_88xx(struct halmac_adapter *halmac_adapter,
288 			      struct halmac_general_info *general_info);
289 
290 enum halmac_ret_status
291 halmac_start_iqk_88xx(struct halmac_adapter *halmac_adapter,
292 		      struct halmac_iqk_para_ *iqk_para);
293 
294 enum halmac_ret_status halmac_ctrl_pwr_tracking_88xx(
295 	struct halmac_adapter *halmac_adapter,
296 	struct halmac_pwr_tracking_option *pwr_tracking_opt);
297 
298 enum halmac_ret_status
299 halmac_query_status_88xx(struct halmac_adapter *halmac_adapter,
300 			 enum halmac_feature_id feature_id,
301 			 enum halmac_cmd_process_status *process_status,
302 			 u8 *data, u32 *size);
303 
304 enum halmac_ret_status
305 halmac_reset_feature_88xx(struct halmac_adapter *halmac_adapter,
306 			  enum halmac_feature_id feature_id);
307 
308 enum halmac_ret_status
309 halmac_check_fw_status_88xx(struct halmac_adapter *halmac_adapter,
310 			    bool *fw_status);
311 
312 enum halmac_ret_status
313 halmac_dump_fw_dmem_88xx(struct halmac_adapter *halmac_adapter, u8 *dmem,
314 			 u32 *size);
315 
316 enum halmac_ret_status
317 halmac_cfg_max_dl_size_88xx(struct halmac_adapter *halmac_adapter, u32 size);
318 
319 enum halmac_ret_status halmac_psd_88xx(struct halmac_adapter *halmac_adapter,
320 				       u16 start_psd, u16 end_psd);
321 
322 enum halmac_ret_status
323 halmac_cfg_la_mode_88xx(struct halmac_adapter *halmac_adapter,
324 			enum halmac_la_mode la_mode);
325 
326 enum halmac_ret_status halmac_cfg_rx_fifo_expanding_mode_88xx(
327 	struct halmac_adapter *halmac_adapter,
328 	enum halmac_rx_fifo_expanding_mode rx_fifo_expanding_mode);
329 
330 enum halmac_ret_status
331 halmac_config_security_88xx(struct halmac_adapter *halmac_adapter,
332 			    struct halmac_security_setting *sec_setting);
333 
334 u8 halmac_get_used_cam_entry_num_88xx(struct halmac_adapter *halmac_adapter,
335 				      enum hal_security_type sec_type);
336 
337 enum halmac_ret_status
338 halmac_write_cam_88xx(struct halmac_adapter *halmac_adapter, u32 entry_index,
339 		      struct halmac_cam_entry_info *cam_entry_info);
340 
341 enum halmac_ret_status
342 halmac_read_cam_entry_88xx(struct halmac_adapter *halmac_adapter,
343 			   u32 entry_index,
344 			   struct halmac_cam_entry_format *content);
345 
346 enum halmac_ret_status
347 halmac_clear_cam_entry_88xx(struct halmac_adapter *halmac_adapter,
348 			    u32 entry_index);
349 
350 enum halmac_ret_status
351 halmac_get_hw_value_88xx(struct halmac_adapter *halmac_adapter,
352 			 enum halmac_hw_id hw_id, void *pvalue);
353 
354 enum halmac_ret_status
355 halmac_set_hw_value_88xx(struct halmac_adapter *halmac_adapter,
356 			 enum halmac_hw_id hw_id, void *pvalue);
357 
358 enum halmac_ret_status
359 halmac_cfg_drv_rsvd_pg_num_88xx(struct halmac_adapter *halmac_adapter,
360 				enum halmac_drv_rsvd_pg_num pg_num);
361 
362 enum halmac_ret_status
363 halmac_get_chip_version_88xx(struct halmac_adapter *halmac_adapter,
364 			     struct halmac_ver *version);
365 
366 enum halmac_ret_status
367 halmac_chk_txdesc_88xx(struct halmac_adapter *halmac_adapter, u8 *halmac_buf,
368 		       u32 halmac_size);
369 
370 enum halmac_ret_status
371 halmac_dl_drv_rsvd_page_88xx(struct halmac_adapter *halmac_adapter,
372 			     u8 pg_offset, u8 *halmac_buf, u32 halmac_size);
373 
374 enum halmac_ret_status
375 halmac_cfg_csi_rate_88xx(struct halmac_adapter *halmac_adapter, u8 rssi,
376 			 u8 current_rate, u8 fixrate_en, u8 *new_rate);
377 
378 enum halmac_ret_status halmac_sdio_cmd53_4byte_88xx(
379 	struct halmac_adapter *halmac_adapter,
380 	enum halmac_sdio_cmd53_4byte_mode cmd53_4byte_mode);
381 
382 enum halmac_ret_status
383 halmac_txfifo_is_empty_88xx(struct halmac_adapter *halmac_adapter, u32 chk_num);
384 
385 #endif /* _HALMAC_API_H_ */
386