GNU Linux-libre 4.14.290-gnu1
[releases.git] / drivers / staging / rtlwifi / halmac / halmac_88xx / halmac_func_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_FUNC_88XX_H_
26 #define _HALMAC_FUNC_88XX_H_
27
28 #include "../halmac_type.h"
29
30 void halmac_init_offload_feature_state_machine_88xx(
31         struct halmac_adapter *halmac_adapter);
32
33 enum halmac_ret_status
34 halmac_send_h2c_pkt_88xx(struct halmac_adapter *halmac_adapter, u8 *hal_buff,
35                          u32 size, bool ack);
36
37 enum halmac_ret_status
38 halmac_download_rsvd_page_88xx(struct halmac_adapter *halmac_adapter,
39                                u8 *hal_buf, u32 size);
40
41 enum halmac_ret_status
42 halmac_set_h2c_header_88xx(struct halmac_adapter *halmac_adapter,
43                            u8 *hal_h2c_hdr, u16 *seq, bool ack);
44
45 enum halmac_ret_status halmac_set_fw_offload_h2c_header_88xx(
46         struct halmac_adapter *halmac_adapter, u8 *hal_h2c_hdr,
47         struct halmac_h2c_header_info *h2c_header_info, u16 *seq_num);
48
49 enum halmac_ret_status
50 halmac_dump_efuse_88xx(struct halmac_adapter *halmac_adapter,
51                        enum halmac_efuse_read_cfg cfg);
52
53 enum halmac_ret_status
54 halmac_func_read_efuse_88xx(struct halmac_adapter *halmac_adapter, u32 offset,
55                             u32 size, u8 *efuse_map);
56
57 enum halmac_ret_status
58 halmac_func_write_efuse_88xx(struct halmac_adapter *halmac_adapter, u32 offset,
59                              u8 value);
60
61 enum halmac_ret_status
62 halmac_func_switch_efuse_bank_88xx(struct halmac_adapter *halmac_adapter,
63                                    enum halmac_efuse_bank efuse_bank);
64
65 enum halmac_ret_status
66 halmac_read_logical_efuse_map_88xx(struct halmac_adapter *halmac_adapter,
67                                    u8 *map);
68
69 enum halmac_ret_status
70 halmac_func_write_logical_efuse_88xx(struct halmac_adapter *halmac_adapter,
71                                      u32 offset, u8 value);
72
73 enum halmac_ret_status
74 halmac_func_pg_efuse_by_map_88xx(struct halmac_adapter *halmac_adapter,
75                                  struct halmac_pg_efuse_info *pg_efuse_info,
76                                  enum halmac_efuse_read_cfg cfg);
77
78 enum halmac_ret_status
79 halmac_eeprom_parser_88xx(struct halmac_adapter *halmac_adapter,
80                           u8 *physical_efuse_map, u8 *logical_efuse_map);
81
82 enum halmac_ret_status
83 halmac_read_hw_efuse_88xx(struct halmac_adapter *halmac_adapter, u32 offset,
84                           u32 size, u8 *efuse_map);
85
86 enum halmac_ret_status
87 halmac_dlfw_to_mem_88xx(struct halmac_adapter *halmac_adapter, u8 *ram_code,
88                         u32 dest, u32 code_size);
89
90 enum halmac_ret_status
91 halmac_send_fwpkt_88xx(struct halmac_adapter *halmac_adapter, u8 *ram_code,
92                        u32 code_size);
93
94 enum halmac_ret_status
95 halmac_iddma_dlfw_88xx(struct halmac_adapter *halmac_adapter, u32 source,
96                        u32 dest, u32 length, u8 first);
97
98 enum halmac_ret_status
99 halmac_check_fw_chksum_88xx(struct halmac_adapter *halmac_adapter,
100                             u32 memory_address);
101
102 enum halmac_ret_status
103 halmac_dlfw_end_flow_88xx(struct halmac_adapter *halmac_adapter);
104
105 enum halmac_ret_status
106 halmac_free_dl_fw_end_flow_88xx(struct halmac_adapter *halmac_adapter);
107
108 enum halmac_ret_status
109 halmac_pwr_seq_parser_88xx(struct halmac_adapter *halmac_adapter, u8 cut,
110                            u8 fab, u8 intf,
111                            struct halmac_wl_pwr_cfg_ **pp_pwr_seq_cfg
112
113                            );
114
115 enum halmac_ret_status
116 halmac_get_h2c_buff_free_space_88xx(struct halmac_adapter *halmac_adapter);
117
118 enum halmac_ret_status
119 halmac_send_h2c_set_pwr_mode_88xx(struct halmac_adapter *halmac_adapter,
120                                   struct halmac_fwlps_option *hal_fw_lps_opt);
121
122 enum halmac_ret_status
123 halmac_func_send_original_h2c_88xx(struct halmac_adapter *halmac_adapter,
124                                    u8 *original_h2c, u16 *seq, u8 ack);
125
126 enum halmac_ret_status
127 halmac_media_status_rpt_88xx(struct halmac_adapter *halmac_adapter, u8 op_mode,
128                              u8 mac_id_ind, u8 mac_id, u8 mac_id_end);
129
130 enum halmac_ret_status halmac_send_h2c_update_datapack_88xx(
131         struct halmac_adapter *halmac_adapter,
132         enum halmac_data_type halmac_data_type,
133         struct halmac_phy_parameter_info *para_info);
134
135 enum halmac_ret_status
136 halmac_send_h2c_run_datapack_88xx(struct halmac_adapter *halmac_adapter,
137                                   enum halmac_data_type halmac_data_type);
138
139 enum halmac_ret_status
140 halmac_send_bt_coex_cmd_88xx(struct halmac_adapter *halmac_adapter, u8 *bt_buf,
141                              u32 bt_size, u8 ack);
142
143 enum halmac_ret_status
144 halmac_func_ctrl_ch_switch_88xx(struct halmac_adapter *halmac_adapter,
145                                 struct halmac_ch_switch_option *cs_option);
146
147 enum halmac_ret_status
148 halmac_func_send_general_info_88xx(struct halmac_adapter *halmac_adapter,
149                                    struct halmac_general_info *general_info);
150
151 enum halmac_ret_status
152 halmac_send_h2c_ps_tuning_para_88xx(struct halmac_adapter *halmac_adapter);
153
154 enum halmac_ret_status
155 halmac_parse_c2h_packet_88xx(struct halmac_adapter *halmac_adapter,
156                              u8 *halmac_buf, u32 halmac_size);
157
158 enum halmac_ret_status
159 halmac_send_h2c_update_packet_88xx(struct halmac_adapter *halmac_adapter,
160                                    enum halmac_packet_id pkt_id, u8 *pkt,
161                                    u32 pkt_size);
162
163 enum halmac_ret_status
164 halmac_send_h2c_phy_parameter_88xx(struct halmac_adapter *halmac_adapter,
165                                    struct halmac_phy_parameter_info *para_info,
166                                    bool full_fifo);
167
168 enum halmac_ret_status
169 halmac_dump_physical_efuse_fw_88xx(struct halmac_adapter *halmac_adapter,
170                                    u32 offset, u32 size, u8 *efuse_map);
171
172 enum halmac_ret_status halmac_send_h2c_update_bcn_parse_info_88xx(
173         struct halmac_adapter *halmac_adapter,
174         struct halmac_bcn_ie_info *bcn_ie_info);
175
176 enum halmac_ret_status
177 halmac_convert_to_sdio_bus_offset_88xx(struct halmac_adapter *halmac_adapter,
178                                        u32 *halmac_offset);
179
180 enum halmac_ret_status
181 halmac_update_sdio_free_page_88xx(struct halmac_adapter *halmac_adapter);
182
183 enum halmac_ret_status
184 halmac_update_oqt_free_space_88xx(struct halmac_adapter *halmac_adapter);
185
186 enum halmac_efuse_cmd_construct_state
187 halmac_query_efuse_curr_state_88xx(struct halmac_adapter *halmac_adapter);
188
189 enum halmac_ret_status halmac_transition_efuse_state_88xx(
190         struct halmac_adapter *halmac_adapter,
191         enum halmac_efuse_cmd_construct_state dest_state);
192
193 enum halmac_cfg_para_cmd_construct_state
194 halmac_query_cfg_para_curr_state_88xx(struct halmac_adapter *halmac_adapter);
195
196 enum halmac_ret_status halmac_transition_cfg_para_state_88xx(
197         struct halmac_adapter *halmac_adapter,
198         enum halmac_cfg_para_cmd_construct_state dest_state);
199
200 enum halmac_scan_cmd_construct_state
201 halmac_query_scan_curr_state_88xx(struct halmac_adapter *halmac_adapter);
202
203 enum halmac_ret_status halmac_transition_scan_state_88xx(
204         struct halmac_adapter *halmac_adapter,
205         enum halmac_scan_cmd_construct_state dest_state);
206
207 enum halmac_ret_status halmac_query_cfg_para_status_88xx(
208         struct halmac_adapter *halmac_adapter,
209         enum halmac_cmd_process_status *process_status, u8 *data, u32 *size);
210
211 enum halmac_ret_status halmac_query_dump_physical_efuse_status_88xx(
212         struct halmac_adapter *halmac_adapter,
213         enum halmac_cmd_process_status *process_status, u8 *data, u32 *size);
214
215 enum halmac_ret_status halmac_query_dump_logical_efuse_status_88xx(
216         struct halmac_adapter *halmac_adapter,
217         enum halmac_cmd_process_status *process_status, u8 *data, u32 *size);
218
219 enum halmac_ret_status halmac_query_channel_switch_status_88xx(
220         struct halmac_adapter *halmac_adapter,
221         enum halmac_cmd_process_status *process_status, u8 *data, u32 *size);
222
223 enum halmac_ret_status halmac_query_update_packet_status_88xx(
224         struct halmac_adapter *halmac_adapter,
225         enum halmac_cmd_process_status *process_status, u8 *data, u32 *size);
226
227 enum halmac_ret_status
228 halmac_query_iqk_status_88xx(struct halmac_adapter *halmac_adapter,
229                              enum halmac_cmd_process_status *process_status,
230                              u8 *data, u32 *size);
231
232 enum halmac_ret_status halmac_query_power_tracking_status_88xx(
233         struct halmac_adapter *halmac_adapter,
234         enum halmac_cmd_process_status *process_status, u8 *data, u32 *size);
235
236 enum halmac_ret_status
237 halmac_query_psd_status_88xx(struct halmac_adapter *halmac_adapter,
238                              enum halmac_cmd_process_status *process_status,
239                              u8 *data, u32 *size);
240
241 enum halmac_ret_status
242 halmac_verify_io_88xx(struct halmac_adapter *halmac_adapter);
243
244 enum halmac_ret_status
245 halmac_verify_send_rsvd_page_88xx(struct halmac_adapter *halmac_adapter);
246
247 void halmac_power_save_cb_88xx(void *cb_data);
248
249 enum halmac_ret_status
250 halmac_buffer_read_88xx(struct halmac_adapter *halmac_adapter, u32 offset,
251                         u32 size, enum hal_fifo_sel halmac_fifo_sel,
252                         u8 *fifo_map);
253
254 void halmac_restore_mac_register_88xx(struct halmac_adapter *halmac_adapter,
255                                       struct halmac_restore_info *restore_info,
256                                       u32 restore_num);
257
258 void halmac_api_record_id_88xx(struct halmac_adapter *halmac_adapter,
259                                enum halmac_api_id api_id);
260
261 enum halmac_ret_status
262 halmac_set_usb_mode_88xx(struct halmac_adapter *halmac_adapter,
263                          enum halmac_usb_mode usb_mode);
264
265 void halmac_enable_bb_rf_88xx(struct halmac_adapter *halmac_adapter, u8 enable);
266
267 void halmac_config_sdio_tx_page_threshold_88xx(
268         struct halmac_adapter *halmac_adapter,
269         struct halmac_tx_page_threshold_info *threshold_info);
270
271 enum halmac_ret_status
272 halmac_rqpn_parser_88xx(struct halmac_adapter *halmac_adapter,
273                         enum halmac_trx_mode halmac_trx_mode,
274                         struct halmac_rqpn_ *pwr_seq_cfg);
275
276 enum halmac_ret_status
277 halmac_check_oqt_88xx(struct halmac_adapter *halmac_adapter, u32 tx_agg_num,
278                       u8 *halmac_buf);
279
280 enum halmac_ret_status
281 halmac_pg_num_parser_88xx(struct halmac_adapter *halmac_adapter,
282                           enum halmac_trx_mode halmac_trx_mode,
283                           struct halmac_pg_num_ *pg_num_table);
284
285 enum halmac_ret_status
286 halmac_parse_intf_phy_88xx(struct halmac_adapter *halmac_adapter,
287                            struct halmac_intf_phy_para_ *intf_phy_para,
288                            enum halmac_intf_phy_platform platform,
289                            enum hal_intf_phy intf_phy);
290
291 enum halmac_ret_status
292 halmac_dbi_write32_88xx(struct halmac_adapter *halmac_adapter, u16 addr,
293                         u32 data);
294
295 u32 halmac_dbi_read32_88xx(struct halmac_adapter *halmac_adapter, u16 addr);
296
297 enum halmac_ret_status
298 halmac_dbi_write8_88xx(struct halmac_adapter *halmac_adapter, u16 addr,
299                        u8 data);
300
301 u8 halmac_dbi_read8_88xx(struct halmac_adapter *halmac_adapter, u16 addr);
302
303 u16 halmac_mdio_read_88xx(struct halmac_adapter *halmac_adapter, u8 addr,
304                           u8 speed
305
306                           );
307
308 enum halmac_ret_status
309 halmac_mdio_write_88xx(struct halmac_adapter *halmac_adapter, u8 addr, u16 data,
310                        u8 speed);
311
312 void halmac_config_ampdu_88xx(struct halmac_adapter *halmac_adapter,
313                               struct halmac_ampdu_config *ampdu_config);
314
315 enum halmac_ret_status
316 halmac_usbphy_write_88xx(struct halmac_adapter *halmac_adapter, u8 addr,
317                          u16 data, u8 speed);
318
319 u16 halmac_usbphy_read_88xx(struct halmac_adapter *halmac_adapter, u8 addr,
320                             u8 speed);
321 #endif /* _HALMAC_FUNC_88XX_H_ */