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