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
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
/******************************************************************************
 *
 * Copyright(c) 2007 - 2020  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.
 *
 * The full GNU General Public License is included in this distribution in the
 * file called LICENSE.
 *
 * Contact Information:
 * wlanfae <wlanfae@realtek.com>
 * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park,
 * Hsinchu 300, Taiwan.
 *
 * Larry Finger <Larry.Finger@lwfinger.net>
 *
 *****************************************************************************/
#ifndef __HALBB_ENV_MNTR_H__
#define __HALBB_ENV_MNTR_H__
 
/*--------------------------[Define] ---------------------------------------*/
#define ENV_MNTR_FAIL_BYTE        0xff
#define ENV_MNTR_FAIL_WORD        0xffff
#define ENV_MNTR_FAIL_DWORD    0xffffffff
#define MAX_ENV_MNTR_TIME        8    /*second*/
#define MS_TO_4US_RATIO        250
/*NHM*/
#define RSSI_2_NHM_TH(rssi)    ((rssi) << 1) /*NHM_threshold = u(8,1)*/
#define NHM_TH_2_RSSI(th)        (th >> 1)
#define NHM_PWR_OFST        20
#define NHM_NOISE_F_TH        60    /*60/2 = 30 = -80 dBm*/
#define NHM_160M_NOISE_F_TH    70    /*70/2 = 35 = -75 dBm*/
#define NHM_WA_TH            109    /*109 = -1 dBm*/
#define NHM_WA_PWR        26 /*26 - 110 = -84dBm, only for 52A*/
/*FAHM*/
#define RSSI_2_FAHM_TH(rssi)    ((rssi) << 1) /*FAHM_threshold = u(8,1)*/
#define FAHM_TH_2_RSSI(th)        (th >> 1)
#define FAHM_PWR_OFST        20
#define FAHM_WA_TH        109    /*109 = -1 dBm*/
#define FAHM_INCLU_FA        BIT(0)
#define FAHM_INCLU_CRC_OK        BIT(1)
#define FAHM_INCLU_CRC_ERR        BIT(2)
#define FAHM_TH_NUM        11    /*threshold number of FAHM*/
#define FAHM_RPT_NUM        12
/*--------------------------[Enum]------------------------------------------*/
enum ccx_unit {
   CCX_04_US        = 0,    /*4us*/
   CCX_08_US        = 1,    /*8us*/
   CCX_16_US        = 2,    /*16us*/
   CCX_32_US        = 3    /*32us*/
};
 
enum fahm_application {
   FAHM_INIT        = 0,
   FAHM_BACKGROUND        = 1, /*IEEE 11K for background*/
   FAHM_DIG        = 2,
   FAHM_DBG_11K        = 3, /*IEEE 11K for dbg cmd*/
   FAHM_DBG_MANUAL        = 4 /*fahm_th[0] & th_ofst is manual*/
};
 
enum env_mntr_sel {
   NHM_SEL            = BIT(0),
   CLM_SEL            = BIT(1),
   IFS_CLM_SEL        = BIT(2),
   EDCCA_CLM_SEL        = BIT(3),
   FAHM_SEL        = BIT(4),
   CCX_SEL_EXCLU_NHM_FAHM    = 0xe,
   CCX_SEL_EXCLU_FAHM    = 0xf,
   CCX_SEL            = 0x1f
};
 
/*--------------------------[Structure]-------------------------------------*/
 
struct bb_env_mntr_cr_info {
   u32 ccx_en;
   u32 ccx_en_m;
   u32 ccx_trig_opt;
   u32 ccx_trig_opt_m;
   u32 ccx_trig;
   u32 ccx_trig_m;
   u32 ccx_edcca_opt;
   u32 ccx_edcca_opt_m;
   u32 ccx_source_sel;
   u32 ccx_source_sel_m;
   u32 clm_unit_idx;
   u32 clm_unit_idx_m;
   u32 clm_en;
   u32 clm_en_m;
   u32 clm_opt;
   u32 clm_opt_m;
   u32 clm_period;
   u32 clm_period_m;
   u32 clm_dbg_sel;
   u32 clm_dbg_sel_m;
   u32 clm_nav_en;
   u32 clm_nav_en_m;
   u32 clm_rssi_th_en;
   u32 clm_rssi_th_en_m;
   u32 clm_rssi_th;
   u32 clm_rssi_th_m;
   u32 clm_cnt;
   u32 clm_cnt_m;
   u32 clm_rdy;
   u32 clm_rdy_m;
   u32 edcca_clm_period;
   u32 edcca_clm_period_m;
   u32 edcca_clm_unit_idx;
   u32 edcca_clm_unit_idx_m;
   u32 edcca_clm_en;
   u32 edcca_clm_en_m;
   u32 edcca_clm_cnt;
   u32 edcca_clm_cnt_m;
   u32 edcca_clm_rdy;
   u32 edcca_clm_rdy_m;
   u32 nhm_en;
   u32 nhm_en_m;
   u32 nhm_method_sel;
   u32 nhm_method_sel_m;
   u32 nhm_period;
   u32 nhm_period_m;
   u32 nhm_unit_idx;
   u32 nhm_unit_idx_m;
   u32 nhm_inclu_cca;
   u32 nhm_inclu_cca_m;
   u32 nhm_nav_en;
   u32 nhm_nav_en_m;
   u32 nhm_rssi_th_en;
   u32 nhm_rssi_th_en_m;
   u32 nhm_rssi_th;
   u32 nhm_rssi_th_m;
   u32 nhm_th0;
   u32 nhm_th0_m;
   u32 nhm_th1;
   u32 nhm_th1_m;
   u32 nhm_th2;
   u32 nhm_th2_m;
   u32 nhm_th3;
   u32 nhm_th3_m;
   u32 nhm_th4;
   u32 nhm_th4_m;
   u32 nhm_th5;
   u32 nhm_th5_m;
   u32 nhm_th6;
   u32 nhm_th6_m;
   u32 nhm_th7;
   u32 nhm_th7_m;
   u32 nhm_th8;
   u32 nhm_th8_m;
   u32 nhm_th9;
   u32 nhm_th9_m;
   u32 nhm_th10;
   u32 nhm_th10_m;
   u32 nhm_cnt0;
   u32 nhm_cnt0_m;
   u32 nhm_cnt1;
   u32 nhm_cnt1_m;
   u32 nhm_cnt2;
   u32 nhm_cnt2_m;
   u32 nhm_cnt3;
   u32 nhm_cnt3_m;
   u32 nhm_cnt4;
   u32 nhm_cnt4_m;
   u32 nhm_cnt5;
   u32 nhm_cnt5_m;
   u32 nhm_cnt6;
   u32 nhm_cnt6_m;
   u32 nhm_cnt7;
   u32 nhm_cnt7_m;
   u32 nhm_cnt8;
   u32 nhm_cnt8_m;
   u32 nhm_cnt9;
   u32 nhm_cnt9_m;
   u32 nhm_cnt10;
   u32 nhm_cnt10_m;
   u32 nhm_cnt11;
   u32 nhm_cnt11_m;
   u32 nhm_cca_cnt;
   u32 nhm_cca_cnt_m;
   u32 nhm_tx_cnt;
   u32 nhm_tx_cnt_m;
   u32 nhm_idle_cnt;
   u32 nhm_idle_cnt_m;
   u32 nhm_rdy;
   u32 nhm_rdy_m;
   u32 fahm_en;
   u32 fahm_en_m;
   u32 fahm_ofdm_en;
   u32 fahm_ofdm_en_m;
   u32 fahm_cck_en;
   u32 fahm_cck_en_m;
   u32 fahm_numer_opt;
   u32 fahm_numer_opt_m;
   u32 fahm_denom_opt;
   u32 fahm_denom_opt_m;
   u32 fahm_dis_count_each_mpdu;
   u32 fahm_dis_count_each_mpdu_m;
   u32 fahm_period;
   u32 fahm_period_m;
   u32 fahm_unit_idx;
   u32 fahm_unit_idx_m;
   u32 fahm_method_sel;
   u32 fahm_method_sel_m;
   u32 fahm_th0;
   u32 fahm_th0_m;
   u32 fahm_th1;
   u32 fahm_th1_m;
   u32 fahm_th2;
   u32 fahm_th2_m;
   u32 fahm_th3;
   u32 fahm_th3_m;
   u32 fahm_th4;
   u32 fahm_th4_m;
   u32 fahm_th5;
   u32 fahm_th5_m;
   u32 fahm_th6;
   u32 fahm_th6_m;
   u32 fahm_th7;
   u32 fahm_th7_m;
   u32 fahm_th8;
   u32 fahm_th8_m;
   u32 fahm_th9;
   u32 fahm_th9_m;
   u32 fahm_th10;
   u32 fahm_th10_m;
   u32 fahm_cnt0;
   u32 fahm_cnt0_m;
   u32 fahm_cnt1;
   u32 fahm_cnt1_m;
   u32 fahm_cnt2;
   u32 fahm_cnt2_m;
   u32 fahm_cnt3;
   u32 fahm_cnt3_m;
   u32 fahm_cnt4;
   u32 fahm_cnt4_m;
   u32 fahm_cnt5;
   u32 fahm_cnt5_m;
   u32 fahm_cnt6;
   u32 fahm_cnt6_m;
   u32 fahm_cnt7;
   u32 fahm_cnt7_m;
   u32 fahm_cnt8;
   u32 fahm_cnt8_m;
   u32 fahm_cnt9;
   u32 fahm_cnt9_m;
   u32 fahm_cnt10;
   u32 fahm_cnt10_m;
   u32 fahm_cnt11;
   u32 fahm_cnt11_m;
   u32 fahm_denom_cnt;
   u32 fahm_denom_cnt_m;
   u32 fahm_rdy;
   u32 fahm_rdy_m;
   u32 ifs_clm_en;
   u32 ifs_clm_en_m;
   u32 ifs_clm_clr;
   u32 ifs_clm_clr_m;
   u32 ifs_clm_period;
   u32 ifs_clm_period_m;
   u32 ifs_clm_unit_idx;
   u32 ifs_clm_unit_idx_m;
   u32 ifs_t1_en;
   u32 ifs_t1_en_m;
   u32 ifs_t2_en;
   u32 ifs_t2_en_m;
   u32 ifs_t3_en;
   u32 ifs_t3_en_m;
   u32 ifs_t4_en;
   u32 ifs_t4_en_m;
   u32 ifs_t5_en;
   u32 ifs_t5_en_m;
   u32 ifs_t1_th_l;
   u32 ifs_t1_th_l_m;
   u32 ifs_t2_th_l;
   u32 ifs_t2_th_l_m;
   u32 ifs_t3_th_l;
   u32 ifs_t3_th_l_m;
   u32 ifs_t4_th_l;
   u32 ifs_t4_th_l_m;
   u32 ifs_t5_th_l;
   u32 ifs_t5_th_l_m;
   u32 ifs_t1_th_h;
   u32 ifs_t1_th_h_m;
   u32 ifs_t2_th_h;
   u32 ifs_t2_th_h_m;
   u32 ifs_t3_th_h;
   u32 ifs_t3_th_h_m;
   u32 ifs_t4_th_h;
   u32 ifs_t4_th_h_m;
   u32 ifs_t5_th_h;
   u32 ifs_t5_th_h_m;
   u32 ifs_clm_tx_cnt;
   u32 ifs_clm_tx_cnt_m;
   u32 ifs_clm_edcca_exclu_cca;
   u32 ifs_clm_edcca_exclu_cca_m;
   u32 ifs_clm_cckcca_exclu_fa;
   u32 ifs_clm_cckcca_exclu_fa_m;
   u32 ifs_clm_ofdmcca_exclu_fa;
   u32 ifs_clm_ofdmcca_exclu_fa_m;
   u32 ifs_clm_cck_fa;
   u32 ifs_clm_cck_fa_m;
   u32 ifs_clm_ofdm_fa;
   u32 ifs_clm_ofdm_fa_m;
   u32 ifs_clm_t1_his;
   u32 ifs_clm_t1_his_m;
   u32 ifs_clm_t2_his;
   u32 ifs_clm_t2_his_m;
   u32 ifs_clm_t3_his;
   u32 ifs_clm_t3_his_m;
   u32 ifs_clm_t4_his;
   u32 ifs_clm_t4_his_m;
   u32 ifs_clm_t5_his;
   u32 ifs_clm_t5_his_m;
   u32 ifs_clm_t1_avg;
   u32 ifs_clm_t1_avg_m;
   u32 ifs_clm_t2_avg;
   u32 ifs_clm_t2_avg_m;
   u32 ifs_clm_t3_avg;
   u32 ifs_clm_t3_avg_m;
   u32 ifs_clm_t4_avg;
   u32 ifs_clm_t4_avg_m;
   u32 ifs_clm_t5_avg;
   u32 ifs_clm_t5_avg_m;
   u32 ifs_clm_t1_cca;
   u32 ifs_clm_t1_cca_m;
   u32 ifs_clm_t2_cca;
   u32 ifs_clm_t2_cca_m;
   u32 ifs_clm_t3_cca;
   u32 ifs_clm_t3_cca_m;
   u32 ifs_clm_t4_cca;
   u32 ifs_clm_t4_cca_m;
   u32 ifs_clm_t5_cca;
   u32 ifs_clm_t5_cca_m;
   u32 ifs_total_cnt;
   u32 ifs_total_cnt_m;
   u32 ifs_clm_rdy;
   u32 ifs_clm_rdy_m;
   u32 ifs_clm_cca_opt;
   u32 ifs_clm_cca_opt_m;
};
 
struct fahm_trig_report {
   u8            fahm_rpt_stamp;
};
 
struct fahm_para_info {
   enum halbb_racing_lv        fahm_rac_lv;
   u16                fahm_mntr_time;    /*0~2097ms*/
   enum fahm_application        fahm_app;
   u8                fahm_manual_th_ofst;
   u8                fahm_manual_th0; /*dbg manual mode*/
   u8                fahm_numer_opt;
   u8                fahm_denom_opt;
};
 
struct fahm_report {
   u8            fahm_rpt_stamp;
   bool            fahm_rpt_result;
   u8            fahm_rpt[FAHM_RPT_NUM]; /*percent*/
   u8            fahm_ratio; /*percent*/
   u8            fahm_denom_ratio; /*percent*/
   u16            fahm_permil; /*permil*/
   u16            fahm_denom_permil; /*permil*/
   u8            fahm_pwr; /*110+x(dBm), unit = 1dB*/
   u8            fahm_pwr_0p5; /*110+x/2(dBm), unit = 0.5dB*/
};
 
struct bb_env_mntr_info {
   struct bb_env_mntr_cr_info    bb_env_mntr_cr_i;
   /*sw ctrl*/
   u32                ccx_trigger_time;
   u8                ccx_rpt_stamp;
   u8                ccx_watchdog_result;
   bool                ccx_ongoing;
   u8                ccx_rac_lv;
   bool                ccx_manual_ctrl;
   bool                ccx_ext_loss_update;
   s8                ccx_ext_loss_pre; /* S(8.1)*/
   s8                ccx_ext_loss; /* S(8.1)*/
   u16                clm_mntr_time; /*0~2097 ms*/
   enum clm_application        clm_app;
   u16                nhm_mntr_time; /*0~2097 ms*/
   enum nhm_application        nhm_app;
   u16                ifs_clm_mntr_time; /*0~2097 ms*/
   enum ifs_clm_application    ifs_clm_app;
   u32                fahm_trigger_time;
   u8                 fahm_rpt_stamp;
   bool                fahm_watchdog_result;
   bool                fahm_ongoing;
   u8                fahm_rac_lv;
   bool                fahm_manual_ctrl;
   u16                fahm_mntr_time; /*0~2097 ms*/
   enum fahm_application        fahm_app;
   u16                edcca_clm_mntr_time; /*0~2097 ms*/
   enum edcca_clm_application    edcca_clm_app;
   /*hw ctrl*/
   u16                ccx_period;
   u8                ccx_unit_idx;
   u8                ccx_edcca_opt;
   enum clm_opt_input        clm_input_opt;
   bool                clm_nav_en;
   bool                clm_rssi_th_en;
   u8                clm_rssi_th;
   enum nhm_opt_cca_all        nhm_include_cca;
   u8                nhm_th[NHM_TH_NUM];
   bool                nhm_nav_en;
   bool                nhm_rssi_th_en;
   u8                nhm_rssi_th;
   u16                ifs_clm_th_l[BE_IFS_CLM_NUM];
   u16                ifs_clm_th_h[BE_IFS_CLM_NUM];
   u16                fahm_period;
   u8                fahm_numer_opt;
   u8                fahm_denom_opt;
   u8                fahm_th[FAHM_TH_NUM];
   /*hw report*/
   u16            clm_result; /*sample cnt*/
   u16            nhm_result[NHM_RPT_NUM]; /*sample cnt*/
   u16            nhm_tx_cnt; /*sample cnt*/
   u16            nhm_cca_cnt; /*sample cnt*/
   u16            nhm_idle_cnt; /*sample cnt*/
   u16            ifs_clm_tx; /*sample cnt*/
   u16            ifs_clm_edcca_excl_cca; /*sample cnt*/
   u16            ifs_clm_ofdmfa; /*sample cnt*/
   u16            ifs_clm_ofdmcca_excl_fa; /*sample cnt*/
   u16            ifs_clm_cckfa; /*sample cnt*/
   u16            ifs_clm_cckcca_excl_fa; /*sample cnt*/
   u16            ifs_clm_total_ifs; /*cnt*/
   u16            ifs_clm_his[BE_IFS_CLM_NUM]; /*cnt*/
   u16            ifs_clm_avg[BE_IFS_CLM_NUM]; /*sample cnt*/
   u16            ifs_clm_cca[BE_IFS_CLM_NUM]; /*sample cnt*/
   u16            fahm_result[FAHM_RPT_NUM]; /*sample cnt*/
   u16            fahm_denom_result; /*sample cnt*/
   u16            edcca_clm_result; /*sample cnt*/
   /*sw report*/
   u8            clm_ratio; /*percent*/
   u16            nhm_sw_result[NHM_RPT_NUM]; /*sample cnt*/
   u8            nhm_wgt[NHM_RPT_NUM]; /*dBm+110*/
   u8            nhm_rpt[NHM_RPT_NUM]; /*percent*/
   u8            nhm_tx_ratio; /*percent*/
   u8            nhm_cca_ratio; /*percent*/
   u8            nhm_idle_ratio; /*percent*/
   u8            nhm_ratio; /*percent*/
   u16            nhm_result_sum; /*sample cnt*/
   u8            nhm_pwr; /*110+x => dBm, unit = 1dB*/
   u8            nhm_pwr_0p5; /*110+x/2 => dBm, unit = 0.5dB*/
   u8            ifs_clm_tx_ratio; /*percent*/
   u8            ifs_clm_edcca_excl_cca_ratio; /*percent*/
   u8            ifs_clm_cck_fa_ratio; /*percent*/
   u8            ifs_clm_ofdm_fa_ratio; /*percent*/
   u8            ifs_clm_cck_cca_excl_fa_ratio; /*percent*/
   u8            ifs_clm_ofdm_cca_excl_fa_ratio; /*percent*/
   u16            ifs_clm_cck_fa_permil; /*permil*/
   u16            ifs_clm_ofdm_fa_permil; /*permil*/
   u32            ifs_clm_ifs_avg[BE_IFS_CLM_NUM]; /*us*/
   u32            ifs_clm_cca_avg[BE_IFS_CLM_NUM]; /*us*/
   u16            fahm_sw_result[FAHM_RPT_NUM]; /*sample cnt*/
   u8            fahm_wgt[FAHM_RPT_NUM]; /*dBm+110*/
   u8            fahm_rpt[FAHM_RPT_NUM]; /*percent*/
   u16            fahm_result_sum; /*sample cnt*/
   u8            fahm_ratio; /*percent*/
   u8            fahm_denom_ratio; /*percent*/
   u16            fahm_permil; /*permil*/
   u16            fahm_denom_permil; /*permil*/
   u8            fahm_pwr; /*110+x => dBm, unit = 1dB*/
   u8            fahm_pwr_0p5; /*110+x/2 => dBm, unit = 0.5dB*/
   u8            edcca_clm_ratio; /*percent*/
   u8            edcca_noise_bg; /*dBm+110, only for 52A*/
   struct env_mntr_rpt    env_mntr_rpt_bg;
   struct ccx_para_info    ccx_para_info_bg;
   struct fahm_report    fahm_report_bg;
   struct fahm_para_info    fahm_para_info_bg;
   u16            idle_pwr_physts; /*RSSI u(16,3) Idle time pwr from physts*/
};
 
struct bb_c2h_nhm_info {
   u8            nhm_rpt[NHM_RPT_NUM]; /*percent*/
   u8            nhm_tx_ratio; /*percent*/
   u8            nhm_cca_ratio; /*percent*/
   u8            nhm_idle_ratio; /*percent*/
   u8            nhm_ratio; /*percent*/
   u8            nhm_pwr_0p5; /*110+x/2 => dBm, unit = 0.5dB*/
   u8             phy_idx;
};
 
/*--------------------------[Prptotype]-------------------------------------*/
struct bb_info;
 
u32 halbb_ccx_idx_cnt_2_us(struct bb_info *bb, u16 idx_cnt);
#ifdef CLM_SUPPORT
void halbb_clm_dbg(struct bb_info *bb, char input[][16], u32 *_used,
          char *output, u32 *_out_len);
#endif
#ifdef NHM_SUPPORT
void halbb_nhm_dbg(struct bb_info *bb, char input[][16], u32 *_used,
          char *output, u32 *_out_len);
#endif
#ifdef IFS_CLM_SUPPORT
void halbb_ifs_clm_dbg(struct bb_info *bb, char input[][16], u32 *_used,
              char *output, u32 *_out_len);
#endif
#ifdef FAHM_SUPPORT
bool halbb_fahm_trigger(struct bb_info *bb, struct fahm_para_info *para,
           struct fahm_trig_report *trig_rpt);
bool halbb_fahm_result(struct bb_info *bb, struct fahm_report *rpt);
void halbb_fahm_dbg(struct bb_info *bb, char input[][16], u32 *_used,
           char *output, u32 *_out_len);
#endif
#ifdef EDCCA_CLM_SUPPORT
void halbb_edcca_clm_dbg(struct bb_info *bb, char input[][16], u32 *_used,
            char *output, u32 *_out_len);
#endif
u32 halbb_env_mntr_get_fw_result_c2h(struct bb_info *bb, u8 *c2h);
void halbb_env_mntr_log(struct bb_info *bb, u32 dbg_comp);
void halbb_idle_time_pwr_physts(struct bb_info *bb, struct physts_rxd *desc,
               bool is_cck_rate);
void halbb_env_mntr(struct bb_info *bb);
void halbb_env_mntr_init(struct bb_info *bb);
void halbb_env_mntr_dbg(struct bb_info *bb, char input[][16], u32 *_used,
           char *output, u32 *_out_len);
void halbb_cr_cfg_env_mntr_init(struct bb_info *bb);
#endif