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