hc
2024-12-19 9370bb92b2d16684ee45cf24e879c93c509162da
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
/******************************************************************************
 *
 * Copyright(c) 2019 Realtek Corporation.
 *
 * This program is free software; you can redistribute it and/or modify it
 * under the terms of version 2 of the GNU General Public License as
 * published by the Free Software Foundation.
 *
 * This program is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
 * more details.
 *
 *****************************************************************************/
#ifndef _HAL_API_DRV_H_
#define _HAL_API_DRV_H_
 
u32 rtw_hal_mac_coex_init(struct rtw_hal_com_t *hal_com, u8 pta_mode, u8 direction);
u32 rtw_hal_mac_coex_reg_read(struct rtw_hal_com_t *hal_com, u32 offset, u32 *value);
u32 rtw_hal_mac_coex_reg_write(struct rtw_hal_com_t *hal_com, u32 offset, u32 value);
u32 rtw_hal_mac_set_scoreboard(struct rtw_hal_com_t *hal_com, u32 *value);
u32 rtw_hal_mac_get_scoreboard(struct rtw_hal_com_t *hal_com, u32 *value);
u32 rtw_hal_mac_set_grant_act(struct rtw_hal_com_t *hal_com, u8 *value);
u32 rtw_hal_mac_set_grant(struct rtw_hal_com_t *hal_com, u8 *value);
u32 rtw_hal_mac_get_grant(struct rtw_hal_com_t *hal_com, u8 *value);
u32 rtw_hal_mac_set_polluted(struct rtw_hal_com_t *hal_com, u8 band, u8 tx_val, u8 rx_val);
u32 rtw_hal_mac_set_tx_time(struct rtw_hal_com_t *hal_com, u8 is_btc,
               u8 is_resume, u8 macid, u32 tx_time);
u32 rtw_hal_mac_get_tx_time(struct rtw_hal_com_t *hal_com, u8 macid, u32 *tx_time);
u32 rtw_hal_mac_set_tx_retry_limit(struct rtw_hal_com_t *hal_com, u8 is_btc,
                  u8 is_resume, u8 macid, u8 tx_retry);
u32 rtw_hal_mac_set_rsc_cfg(struct rtw_hal_com_t *hal_com, u8 rrsr_cfg, u8 band);
u32 rtw_hal_mac_set_rrsr_ref_rate_sel(struct rtw_hal_com_t *hal_com, bool ref_rate_sel, u8 band);
u32 rtw_hal_mac_get_tx_retry_limit(struct rtw_hal_com_t *hal_com, u8 macid,
                  u8 *tx_retry);
u32 rtw_hal_mac_get_bt_polt_cnt(struct rtw_hal_com_t *hal_com, u8 band,
               u16 *cnt);
u32 rtw_hal_mac_set_coex_ctrl(struct rtw_hal_com_t *hal_com, u32 val);
u32 rtw_hal_mac_get_coex_ctrl(struct rtw_hal_com_t *hal_com, u32 *val);
 
u32 rtw_hal_mac_send_h2c(struct rtw_hal_com_t *hal_com,
   struct rtw_g6_h2c_hdr *hdr, u32 *pvalue);
 
u32 rtw_hal_read_rf_reg(struct rtw_hal_com_t *hal_com,
                   enum rf_path path, u32 addr, u32 mask);
 
bool rtw_hal_write_rf_reg(struct rtw_hal_com_t *hal_com,
                   enum rf_path path, u32 addr, u32 mask, u32 data);
 
u8 rtw_hal_ex_cn_report(struct rtw_hal_com_t *hal_com);
 
u8 rtw_hal_ex_evm_1ss_report(struct rtw_hal_com_t *hal_com);
 
u8 rtw_hal_ex_evm_max_report(struct rtw_hal_com_t *hal_com);
 
u8 rtw_hal_ex_evm_min_report(struct rtw_hal_com_t *hal_com);
 
u32 rtw_hal_bb_read_cr(struct rtw_hal_com_t *hal_com, u32 addr, u32 mask);
 
bool rtw_hal_bb_write_cr(struct rtw_hal_com_t *hal_com, u32 addr, u32 mask,
            u32 data);
 
#ifdef CONFIG_PHL_DFS
bool rtw_hal_is_radar_detect_enabled(struct rtw_hal_com_t *hal_com, enum phl_phy_idx phy_idx);
bool rtw_hal_is_under_cac(struct rtw_hal_com_t *hal_com, enum phl_phy_idx phy_idx);
u32 rtw_hal_mac_cfg_dfs_rpt(struct rtw_hal_com_t *hal_com, struct hal_mac_dfs_rpt_cfg *conf);
enum rtw_hal_status
rtw_hal_bb_dfs_rpt_cfg(struct rtw_hal_com_t *hal_com, enum phl_phy_idx phy_idx, bool dfs_en);
#endif
 
u32 rtw_hal_mac_write_msk_pwr_reg(
   struct rtw_hal_com_t *hal_com, u8 band, u32 offset, u32 mask, u32 val);
 
u32 rtw_hal_mac_set_pwr_reg(struct rtw_hal_com_t *hal_com, u8 band, u32 offset, u32 val);
 
u32 rtw_hal_mac_get_pwr_reg(struct rtw_hal_com_t *hal_com, u8 band, u32 offset, u32 *val);
 
enum rtw_hal_status
rtw_hal_mac_get_log_efuse_size(struct rtw_hal_com_t *hal_com, u32 *val,
                       bool is_limited);
 
enum rtw_hal_status
rtw_hal_mac_get_efuse_a_die_size(struct rtw_hal_com_t *hal_com, u8 *val);
 
enum rtw_hal_status
rtw_hal_mac_read_log_efuse_map(struct rtw_hal_com_t *hal_com, u8 *map,
                       bool is_limited);
 
enum rtw_hal_status
rtw_hal_mac_write_log_efuse_map(struct rtw_hal_com_t *hal_com,
                       u8 *map,
                       u32 map_size,
                       u8 *mask,
                       u32 mask_size,
                       u8 *map_version,
                       u8 *mask_version,
                       u8 version_length,
                       u8 part,
                       bool is_limited,
                       u8 a_die_size,
                       u32 hci_to_a_die_offset,
                       u32 a_die_start_offset);
 
enum rtw_hal_status
rtw_hal_mac_read_hidden_rpt(struct rtw_hal_com_t *hal_com);
 
enum rtw_hal_status
rtw_hal_mac_check_efuse_autoload(struct rtw_hal_com_t *hal_com, u8 *autoload);
 
enum rtw_hal_status
rtw_hal_mac_get_efuse_avl(struct rtw_hal_com_t *hal_com, u32 *val);
 
enum rtw_hal_status
rtw_hal_mac_get_efuse_size(struct rtw_hal_com_t *hal_com, u32 *val);
 
enum rtw_hal_status
rtw_hal_mac_get_efuse_mask_size(struct rtw_hal_com_t *hal_com, u32 *val,
                       bool is_limited);
 
enum rtw_hal_status
rtw_hal_mac_get_efuse_info(struct rtw_hal_com_t *hal_com,
   u8 *efuse_map, enum rtw_efuse_info info_type, void *value,
   u8 size, u8 map_valid);
 
enum rtw_hal_status
rtw_hal_mac_read_phy_efuse(struct rtw_hal_com_t *hal_com,
   u32 addr, u32 size, u8 *value);
 
enum rtw_hal_status
rtw_hal_mac_read_bt_phy_efuse(struct rtw_hal_com_t *hal_com,
   u32 addr, u32 size, u8 *value);
 
enum rtw_hal_status
rtw_hal_mac_get_xcap(struct rtw_hal_com_t *hal_com, u8 sc_xo, u32 *value);
 
enum rtw_hal_status
rtw_hal_mac_set_xcap(struct rtw_hal_com_t *hal_com, u8 sc_xo, u32 value);
 
enum rtw_hal_status
rtw_hal_mac_get_xsi(struct rtw_hal_com_t *hal_com, u8 offset, u8 *val);
 
enum rtw_hal_status
rtw_hal_mac_set_xsi(struct rtw_hal_com_t *hal_com, u8 offset, u8 val);
 
enum rtw_hal_status
rtw_hal_bb_get_efuse_info(struct rtw_hal_com_t *hal_com,
   u8 *efuse_map, enum rtw_efuse_info info_type, void *value,
   u8 size, u8 map_valid);
 
enum rtw_hal_status
rtw_hal_rf_get_efuse_info(struct rtw_hal_com_t *hal_com,
   u8 *efuse_map, enum rtw_efuse_info info_type, void *value,
   u8 size, u8 map_valid);
 
void
rtw_hal_rf_set_power_table_switch(struct rtw_hal_com_t *hal_com,
               enum phl_phy_idx phy_idx,
               u8 pwrbyrate_type, u8 pwrlmt_type);
 
void rtw_hal_bb_set_tx_pow_per_path_lmt(struct rtw_hal_com_t *hal_com,
                   s16 pwr_lmt_a, s16 pwr_lmt_b);
 
void
rtw_hal_bb_set_tx_pow_ref(struct rtw_hal_com_t *hal_com,
             enum phl_phy_idx phy_idx);
 
enum rtw_hal_status rtw_hal_rf_read_pwr_table(
   struct rtw_hal_com_t *hal_com, u8 rf_path, u16 rate,
   u8 bandwidth, u8 channel, u8 offset, u8 dcm,
   u8 beamforming, s16 *get_item);
 
enum rtw_hal_status rtw_hal_rf_wlan_tx_power_control(
   struct rtw_hal_com_t *hal_com,
   enum phl_phy_idx phy, enum phl_pwr_ctrl pwr_ctrl_idx, u32 tx_power_val, bool enable);
 
enum rtw_hal_status rtw_hal_rf_wl_tx_power_control(
   struct rtw_hal_com_t *hal_com,
   u32 tx_power_val);
 
enum rtw_hal_status rtw_hal_rf_ctrl_dbcc(struct rtw_hal_com_t *hal_com,
   bool dbcc_en);
 
void rtw_hal_rf_tssi_scan_ch(struct rtw_hal_com_t *hal_com,
       enum phl_phy_idx phy_idx, enum rf_path path);
 
enum rtw_hal_status
rtw_hal_btc_get_efuse_info(struct rtw_hal_com_t *hal_com,
   u8 *efuse_map, enum rtw_efuse_info info_type, void *value,
   u8 size, u8 map_valid);
 
enum rtw_hal_status rtw_hal_efuse_get_info(struct rtw_hal_com_t *hal_com,
                   enum rtw_efuse_info info_type, void *value, u8 size);
enum rtw_hal_status rtw_hal_notify_switch_band(void *hinfo,
           enum band_type band, enum phl_phy_idx phy_idx);
 
enum rtw_hal_status rtw_hal_reset(struct rtw_hal_com_t *hal_com,
           enum phl_phy_idx phy_idx, u8 band_idx, bool reset);
 
#ifndef CONFIG_BTCOEX
#define rtw_hal_btc_wl_rfk_ntfy(hal_com, phy_idx, rfk_type, rfk_process) 0
#else
u8 rtw_hal_btc_wl_rfk_ntfy(struct rtw_hal_com_t *hal_com, u8 phy_idx, u8 rfk_type, u8 rfk_process);
#endif
void rtw_hal_btc_power_on_ntfy(void *hinfo);
void rtw_hal_btc_power_off_ntfy(void *hinfo);
 
enum rtw_hal_status
rtw_hal_pause_tx_fifo_sw(void *hal, u8 band_idx,
           bool tx_pause, enum tx_pause_rson rson);
 
enum rtw_hal_status
rtw_hal_tx_pause(struct rtw_hal_com_t *hal_com,
           u8 band_idx, bool tx_pause, enum tx_pause_rson rson);
 
enum rtw_hal_status
rtw_hal_mac_set_macid_pause(struct rtw_hal_com_t *hal_com,
                            u16 macid, bool pause);
 
enum rtw_hal_status
rtw_hal_mac_set_macid_grp_pause(struct rtw_hal_com_t *hal_com,
                            u32 *macid_arr, u8 macid_arr_sz, bool pause);
 
enum rtw_hal_status
rtw_hal_mac_set_macid_pkt_drop(struct rtw_hal_com_t *hal_com,
                               u16 macid, u8 sel, u8 band, u8 port, u8 mbssid);
enum rtw_hal_status
rtw_hal_mac_data_drop_once(struct rtw_hal_com_t *hal_com,
                                  struct rtw_phl_stainfo_t *sta);
u32
rtw_hal_mac_lamode_trig(struct rtw_hal_com_t *hal_com, u8 trig);
 
enum rtw_hal_status
rtw_hal_mac_lamode_cfg_buf(struct rtw_hal_com_t *hal_com, u8 buf_sel,
               u32 *addr_start, u32 *addr_end);
 
enum rtw_hal_status
rtw_hal_mac_lamode_cfg(struct rtw_hal_com_t *hal_com, u8 func_en,
               u8 restart_en, u8 timeout_en, u8 timeout_val,
               u8 data_loss_imr, u8 la_tgr_tu_sel, u8 tgr_time_val);
 
enum rtw_hal_status
rtw_hal_mac_get_lamode_st(struct rtw_hal_com_t *hal_com, u8 *la_state,
               u16 *la_finish_addr, bool *la_round_up,
               bool *la_loss_data);
 
void
rtw_hal_mac_get_buffer_data(struct rtw_hal_com_t *hal_com, u32 strt_addr,
               u8 *buf, u32 len, u32 dbg_path);
 
enum rtw_hal_status
rtw_hal_fw_log_cfg(void *halcom, u8 op, u8 type, u32 value);
 
enum rtw_hal_status
rtw_hal_mac_tx_path_map_cfg(struct rtw_hal_com_t *hal_com,
                            struct hal_txmap_cfg *txmap_cfg);
 
enum rtw_hal_status
rtw_hal_mac_ctrl_ser(struct rtw_hal_com_t *hal_com,
           enum rtw_hal_ser_rsn rsn, bool en);
/* HALBB APIs for HW TX */
 
enum rtw_hal_status
rtw_hal_bb_set_plcp_tx(struct rtw_hal_com_t *hal_com,
                       struct halbb_plcp_info *plcp_tx_struct,
                       struct usr_plcp_gen_in *plcp_usr_info,
                       enum phl_phy_idx plcp_phy_idx,
                       u8 *plcp_sts);
 
enum rtw_hal_status
rtw_hal_bb_set_pmac_cont_tx(struct rtw_hal_com_t *hal_com, u8 enable, u8 is_cck,
                           enum phl_phy_idx phy_idx);
 
enum rtw_hal_status
rtw_hal_bb_set_pmac_carrier_suppression_tx(struct rtw_hal_com_t *hal_com, u8 enable, u8 is_cck,
                           enum phl_phy_idx phy_idx);
 
enum rtw_hal_status
rtw_hal_bb_set_pmac_packet_tx(struct rtw_hal_com_t *hal_com, u8 enable,
                           u8 is_cck, u16 tx_cnt ,u16 period, u16 tx_time, u8 cck_lbk_en,
                           enum phl_phy_idx phy_idx);
 
enum rtw_hal_status
rtw_hal_bb_set_pmac_fw_trigger_tx(struct rtw_hal_com_t *hal_com, u8 enable,
                           u8 is_cck, u16 tx_cnt, u8 tx_duty,
                           enum phl_phy_idx phy_idx);
 
enum rtw_hal_status
rtw_hal_bb_switch_antenna(struct rtw_hal_com_t *hal_com, u8 ant_sw);
 
enum rtw_hal_status
rtw_hal_bb_set_dpd_bypass(struct rtw_hal_com_t *hal_com, bool pdp_bypass,
                       enum phl_phy_idx phy_idx);
 
enum rtw_hal_status
rtw_hal_bb_set_power(struct rtw_hal_com_t *hal_com, s16 power_dbm,
                   enum phl_phy_idx phy_idx);
 
enum rtw_hal_status
rtw_hal_bb_get_power(struct rtw_hal_com_t *hal_com, s16 *power_dbm,
                   enum phl_phy_idx phy_idx);
 
enum rtw_hal_status
rtw_hal_rf_set_ch_bw(struct rtw_hal_com_t *hal_com,
                     enum phl_phy_idx phy,
                     u8 center_ch,
                     enum band_type band,
                     enum channel_width bw);
 
enum rtw_hal_status
rtw_hal_rf_chl_rfk_trigger(struct rtw_hal_com_t *hal_com,
                           u8 phy_idx,
                           enum rfk_tri_type rt_type);
 
enum rtw_hal_status
rtw_hal_bb_ctrl_btg(struct rtw_hal_com_t *hal_com, bool btg);
 
enum rtw_hal_status
rtw_hal_bb_ctrl_btc_preagc(struct rtw_hal_com_t *hal_com, bool bt_en);
 
void
rtw_hal_bb_npath_en_update(struct rtw_hal_com_t *hal_com, bool npath_en);
 
enum rtw_hal_status
rtw_hal_bb_cfg_rx_path(struct rtw_hal_com_t *hal_com, u8 rx_path, u8 phy_idx);
 
enum rtw_hal_status
rtw_hal_bb_cfg_tx_path(struct rtw_hal_com_t *hal_com, u8 tx_path, u8 phy_idx);
 
/* mode: 0 = tmac, 1 = pmac */
enum rtw_hal_status
rtw_hal_bb_tx_mode_switch(struct rtw_hal_com_t *hal_com,
                       enum phl_phy_idx phy_idx,
                       u8 mode);
/* HALBB APIs for HW TX END*/
/*@--------------------------[Prptotype]-------------------------------------*/
/**
 * rtw_hal_bb_get_txsc input arguments:
 * @hal_com: hal com info
 * @pri_ch: Spec-defined primary channel index
 * @central_ch: Spec-defined central channel index
 * @cbw: Channel BW
 * @dbw: Data BW
 */
u8 rtw_hal_bb_get_txsc(struct rtw_hal_com_t *hal_com, u8 pri_ch,
       u8 central_ch, enum channel_width cbw, enum channel_width dbw);
 
void rtw_hal_bb_nhm_mntr_result(struct rtw_hal_com_t *hal_com, void *rpt, enum phl_phy_idx phy_idx);
 
bool rtw_hal_query_regulation(void *phl, struct rtw_regulation_info *info);
 
enum rtw_hal_status
rtw_hal_mac_set_tpu_mode(struct rtw_hal_com_t *hal_com,
            enum rtw_tpu_op_mode op_mode_new, u8 band);
enum rtw_hal_status
rtw_hal_mac_write_pwr_limit_rua_reg(struct rtw_hal_com_t *hal_com, u8 band);
enum rtw_hal_status
rtw_hal_mac_write_pwr_limit_reg(struct rtw_hal_com_t *hal_com, u8 band);
enum rtw_hal_status
rtw_hal_mac_write_pwr_by_rate_reg(struct rtw_hal_com_t *hal_com, u8 band);
 
enum rtw_hal_status
rtw_hal_mac_get_efuse_bt_avl(struct rtw_hal_com_t *hal_com, u32 *val);
 
enum rtw_hal_status
rtw_hal_mac_get_efuse_bt_size(struct rtw_hal_com_t *hal_com, u32 *val);
 
enum rtw_hal_status
rtw_hal_mac_get_efuse_bt_mask_size(struct rtw_hal_com_t *hal_com, u32 *val);
 
enum rtw_hal_status
rtw_hal_mac_get_log_efuse_bt_size(struct rtw_hal_com_t *hal_com, u32 *val);
 
enum rtw_hal_status
rtw_hal_mac_read_log_efuse_bt_map(struct rtw_hal_com_t *hal_com, u8 *map);
 
enum rtw_hal_status
rtw_hal_mac_write_log_efuse_bt_map(struct rtw_hal_com_t *hal_com,
                            u8 *map,
                            u32 map_size,
                            u8 *mask,
                            u32 mask_size);
 
enum rtw_hal_status
rtw_hal_bb_backup_info(struct rtw_hal_com_t *hal_com, u8 cur_phy_idx);
 
enum rtw_hal_status
rtw_hal_bb_restore_info(struct rtw_hal_com_t *hal_com, u8 cur_phy_idx);
 
enum rtw_hal_status
rtw_hal_bb_tssi_bb_reset(struct rtw_hal_com_t *hal_com);
 
enum rtw_hal_status
rtw_hal_bb_query_rainfo(void *hal, struct rtw_hal_stainfo_t *hal_sta,
           struct rtw_phl_rainfo *phl_rainfo);
enum rtw_hal_status rtw_hal_bb_ctrl_rx_cca(struct rtw_hal_com_t *hal_com,
   bool cca_en, enum phl_phy_idx phy_idx);
bool rtw_hal_bb_query_cck_en(struct rtw_hal_com_t *hal_com, enum phl_phy_idx phy_idx);
 
enum rtw_hal_status rtw_hal_bb_ctrl_cck_en(struct rtw_hal_com_t *hal_com,
   bool cca_en, enum phl_phy_idx phy_idx);
enum rtw_hal_status
rtw_hal_mac_set_pwr_ofst_mode(struct rtw_hal_com_t *hal_com, u8 band, s8 pwr_ofst);
enum rtw_hal_status
rtw_hal_mac_write_pwr_ofst_mode(struct rtw_hal_com_t *hal_com, u8 band);
enum rtw_hal_status
rtw_hal_mac_set_pwr_ofst_bw(struct rtw_hal_com_t *hal_com, u8 band, s8 pwr_ofst);
enum rtw_hal_status
rtw_hal_mac_write_pwr_ofst_bw(struct rtw_hal_com_t *hal_com, u8 band);
enum rtw_hal_status
rtw_hal_mac_write_pwr_ref_reg(struct rtw_hal_com_t *hal_com, u8 band);
enum rtw_hal_status
rtw_hal_mac_write_pwr_limit_en(struct rtw_hal_com_t *hal_com, u8 band);
enum rtw_hal_status
rtw_hal_mac_set_pwr_lmt_en_val(struct rtw_hal_com_t *hal_com, u8 band, bool en_val);
bool
rtw_hal_mac_get_pwr_lmt_en_val(struct rtw_hal_com_t *hal_com, u8 band);
enum rtw_hal_status
rtw_hal_mac_write_pwr_limit_rua_reg(struct rtw_hal_com_t *hal_com, u8 band);
enum rtw_hal_status
rtw_hal_mac_write_pwr_limit_reg(struct rtw_hal_com_t *hal_com, u8 band);
enum rtw_hal_status
rtw_hal_mac_write_pwr_by_rate_reg(struct rtw_hal_com_t *hal_com, u8 band);
enum rtw_hal_status
rtw_hal_mac_read_efuse_bt_hidden(struct rtw_hal_com_t *hal_com, u32 addr, u32 size,  u8 *val);
 
enum rtw_hal_status
rtw_hal_mac_write_efuse_bt_hidden(struct rtw_hal_com_t *hal_com, u32 addr, u8 val);
 
enum rtw_hal_status
rtw_hal_mac_ax_init_bf_role(struct rtw_hal_com_t *hal_com, u8 bf_role, u8 band);
 
enum rtw_hal_status
rtw_hal_mac_ax_deinit_bfee(struct rtw_hal_com_t *hal_com, u8 band);
 
void rtw_hal_bb_gpio_setting_all(struct rtw_hal_com_t *hal_com, u8 rfe_idx);
 
void rtw_hal_bb_gpio_setting(struct rtw_hal_com_t *hal_com, u8 gpio_idx, u8 path,
           bool inv, u8 src);
 
enum rtw_hal_status
rtw_hal_mac_set_gpio_func(struct rtw_hal_com_t *hal_com, u8 func, s8 gpio_cfg);
 
enum rtw_phl_status
rtw_hal_cmd_notify(struct rtw_phl_com_t *phl_com,
                   enum phl_msg_evt_id event,
                   void *hal_cmd,
                   u8 hw_idx);
 
#ifdef CONFIG_PHL_DIAGNOSE
void rtw_hal_bb_diagnostic_event(struct rtw_hal_com_t *hal, u8 type,
       u8 level, u8 version, u8 *buf, u32 len);
 
void rtw_hal_rf_diagnostic_event(struct rtw_hal_com_t *hal, u8 type,
       u8 level, u8 version, u8 *buf, u32 len);
#endif
 
enum rtw_hal_status rtw_hal_mac_add_cmd_ofld(struct rtw_hal_com_t *hal_com, struct rtw_mac_cmd *cmd);
enum rtw_hal_status rtw_hal_mac_cmd_ofld(struct rtw_hal_com_t *hal_com);
 
void rtw_hal_bb_env_rpt(struct rtw_hal_com_t *hal_com, struct rtw_env_report *env_rpt,
            enum phl_phy_idx phy_indx);
 
void rtw_hal_bb_set_pow_patten_sharp(struct rtw_hal_com_t *hal_com, u8 channel, u8 is_cck, u8 sharp_id, enum phl_phy_idx phy_idx);
 
#if defined(CONFIG_PHL_DRV_HAS_NVM) || defined(RTW_FLASH_98D)
/* For BB to get paramater values */
enum rtw_hal_status
rtw_hal_flash_get_info(struct rtw_hal_com_t *hal_com,
              enum rtw_efuse_info info_type,
              void *value,
              u8 size);
#endif /* CONFIG_PHL_DRV_HAS_NVM || RTW_FLASH_98D */
 
enum rtw_hal_status
rtw_hal_rf_syn_config(struct rtw_hal_com_t *hal_com,
                      u8 syn_id,
                      enum phl_phy_idx phy_idx,
                      u8 path,
                      bool turn_on);
void rtw_hal_rf_set_pwr_lmt_main_or_aux(struct rtw_hal_com_t *hal_com, u8 ant);
 
bool
rtw_hal_bb_adc_cfg(struct rtw_hal_com_t *hal_com,
                   enum channel_width bw,
                   enum rf_path path,
                   enum phl_phy_idx phy_idx);
 
void rtw_hal_rf_set_ant_main_or_aux(void *hal, enum rf_path path, bool main);
 
struct halrf_fem_info rtw_hal_rf_efem_info(struct rtw_hal_com_t *hal_com);
 
enum rtw_hal_status
rtw_hal_mac_sr_update(struct rtw_hal_com_t *hal_com,
                      void *sr_info,
                      u8 hw_band);
#endif /*_HAL_API_DRV_H_*/