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
/******************************************************************************
 *
 * 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_8852B_API_H__
#define __HALBB_8852B_API_H__
#ifdef BB_8852B_SUPPORT
#ifdef HALBB_CONFIG_RUN_IN_DRV
#include "../halbb_api.h"
#endif
 
/*@--------------------------[Define]-------------------------------------*/
#define INVALID_RF_DATA 0xffffffff
#define BB_PATH_MAX_8852B 2
#define GAIN_HIDE_EFUSE_A_2G_8852B 0x5BB
#define GAIN_HIDE_EFUSE_A_5GL_8852B 0x5BA
#define GAIN_HIDE_EFUSE_A_5GM_8852B 0x5B9
#define GAIN_HIDE_EFUSE_A_5GH_8852B 0x5B8
#define GAIN_HIDE_EFUSE_B_2G_8852B 0x590
#define GAIN_HIDE_EFUSE_B_5GL_8852B 0x58F
#define GAIN_HIDE_EFUSE_B_5GM_8852B 0x58E
#define GAIN_HIDE_EFUSE_B_5GH_8852B 0x58D
#define GAIN_HIDE_EFUSE_A_6GH_0_8852BP 0x5B7
#define GAIN_HIDE_EFUSE_A_6GH_1_8852BP 0x5B6
#define GAIN_HIDE_EFUSE_A_6GH_2_8852BP 0x5B5
#define GAIN_HIDE_EFUSE_A_6GH_3_8852BP 0x5B4
#define GAIN_HIDE_EFUSE_A_6GH_4_8852BP 0x5B3
#define GAIN_HIDE_EFUSE_A_6GH_5_8852BP 0x5B2
#define GAIN_HIDE_EFUSE_A_6GH_6_8852BP 0x5B1
#define GAIN_HIDE_EFUSE_A_6GH_7_8852BP 0x5B0
#define GAIN_HIDE_EFUSE_B_6GH_0_8852BP 0x58C
#define GAIN_HIDE_EFUSE_B_6GH_1_8852BP 0x58B
#define GAIN_HIDE_EFUSE_B_6GH_2_8852BP 0x58A
#define GAIN_HIDE_EFUSE_B_6GH_3_8852BP 0x589
#define GAIN_HIDE_EFUSE_B_6GH_4_8852BP 0x588
#define GAIN_HIDE_EFUSE_B_6GH_5_8852BP 0x587
#define GAIN_HIDE_EFUSE_B_6GH_6_8852BP 0x586
#define GAIN_HIDE_EFUSE_B_6GH_7_8852BP 0x585
 
/*@--------------------------[Enum]------------------------------------------*/
/*@--------------------------[Structure]-------------------------------------*/
struct bb_h2c_lps_info_8852b {
   u8 central_ch;
   u8 pri_ch;
   u8 bw;
   u8 band_type;
};
/*@--------------------------[Prptotype]-------------------------------------*/
struct bb_info;
u8 halbb_ex_cn_report_8852b(struct bb_info *bb);
 
u8 halbb_ex_evm_1ss_report_8852b(struct bb_info *bb);
u8 halbb_ex_evm_max_report_8852b(struct bb_info *bb);
u8 halbb_ex_evm_min_report_8852b(struct bb_info *bb);
 
bool halbb_set_pwr_ul_tb_ofst_8852b(struct bb_info *bb,
                   s16 pw_ofst, enum phl_phy_idx phy_idx);
bool halbb_lps_info_8852b(struct bb_info *bb, u16 mac_id);
void halbb_digital_cfo_comp_8852b(struct bb_info *bb, s32 curr_cfo);
 
void halbb_tx_triangular_shap_cfg_8852b(struct bb_info *bb, u8 shape_idx,
                   enum phl_phy_idx phy_idx);
void halbb_tx_dfir_shap_cck_8852b(struct bb_info *bb, u8 ch, u8 shape_idx,
                 enum phl_phy_idx phy_idx);
bool halbb_ctrl_bw_ch_8852b(struct bb_info *bb, u8 pri_ch, u8 central_ch,
               enum channel_width bw, enum band_type band,
               enum phl_phy_idx phy_idx);
 
bool halbb_ctrl_rx_path_8852b(struct bb_info *bb, enum rf_path rx_path);
 
bool halbb_ctrl_tx_path_8852b(struct bb_info *bb, enum rf_path tx_path);
 
#ifdef HALBB_CONFIG_RUN_IN_DRV
 
void halbb_gpio_ctrl_dump_8852b(struct bb_info *bb);
 
void halbb_gpio_rfm_8852b(struct bb_info *bb, enum bb_path path,
               enum bb_rfe_src_sel src, bool dis_tx_gnt_wl,
               bool active_tx_opt, bool act_bt_en, u8 rfm_output_val);
 
void halbb_gpio_trsw_table_8852b(struct bb_info *bb, enum bb_path path,
                  bool path_en, bool trsw_tx,
                  bool trsw_rx, bool trsw, bool trsw_b);
 
void halbb_gpio_setting_8852b(struct bb_info *bb, u8 gpio_idx,
                   enum bb_path path, bool inv,
                   enum bb_rfe_src_sel src);
 
void halbb_gpio_setting_all_8852b(struct bb_info *bb, u8 rfe_idx);
 
void halbb_gpio_setting_init_8852b(struct bb_info *bb);
 
void halbb_bb_reset_8852b(struct bb_info *bb, enum phl_phy_idx phy_idx);
 
void halbb_dfs_en_8852b(struct bb_info *bb, bool en);
 
void halbb_adc_en_8852b(struct bb_info *bb, bool en);
 
bool halbb_adc_cfg_8852bt(struct bb_info *bb, enum channel_width bw,
            enum rf_path path);
 
void halbb_tssi_cont_en_8852b(struct bb_info *bb, bool en, enum rf_path path);
 
void halbb_bb_reset_en_8852b(struct bb_info *bb, bool en, enum phl_phy_idx phy_idx);
 
u32 halbb_read_rf_reg_8852b_a(struct bb_info *bb, enum rf_path path,
                 u32 reg_addr, u32 bit_mask);
 
u32 halbb_read_rf_reg_8852b_d(struct bb_info *bb, enum rf_path path,
                 u32 reg_addr, u32 bit_mask);
 
u32 halbb_read_rf_reg_8852b(struct bb_info *bb, enum rf_path path, u32 reg_addr,
               u32 bit_mask);
 
bool halbb_write_rf_reg_8852b_a(struct bb_info *bb, enum rf_path path,
               u32 reg_addr, u32 bit_mask, u32 data);
 
bool halbb_write_rf_reg_8852b_d(struct bb_info *bb, enum rf_path path,
               u32 reg_addr, u32 bit_mask, u32 data);
 
bool halbb_write_rf_reg_8852b(struct bb_info *bb, enum rf_path path, u32 reg_addr,
                 u32 bit_mask, u32 data);
 
bool halbb_ctrl_bw_8852b(struct bb_info *bb, u8 pri_ch, enum channel_width bw,
            enum phl_phy_idx phy_idx);
 
bool halbb_ctrl_ch_8852b(struct bb_info *bb, u8 central_ch, enum band_type band,
            enum phl_phy_idx phy_idx);
 
void halbb_ctrl_cck_en_8852b(struct bb_info *bb, bool cck_en,
                enum phl_phy_idx phy_idx);
 
void halbb_ctrl_trx_path_8852b(struct bb_info *bb, enum rf_path tx_path,
                  u8 tx_nss, enum rf_path rx_path, u8 rx_nss);
 
void halbb_tssi_bb_reset_8852b(struct bb_info *bb);
 
bool halbb_ctrl_sco_cck_8852b(struct bb_info *bb, u8 pri_ch);
 
bool halbb_bw_setting_8852b(struct bb_info *bb, enum channel_width bw,
               enum rf_path path);
 
bool halbb_ch_setting_8852b(struct bb_info *bb, u8 central_ch, enum rf_path path,
               bool *is_2g_ch);
 
void halbb_ctrl_rf_mode_8852b(struct bb_info *bb,  enum phl_rf_mode mode);
 
void halbb_ctrl_rf_mode_rx_path_8852b(struct bb_info *bb,  enum rf_path rx_path);
 
bool halbb_ctrl_ch2_80p80_8852b(struct bb_info *bb, u8 central_ch);
 
void halbb_ctrl_rx_cca_8852b(struct bb_info *bb, bool cca_en, enum phl_phy_idx phy_idx);
 
void halbb_ctrl_ofdm_en_8852b(struct bb_info *bb, bool ofdm_en,
                 enum phl_phy_idx phy_idx);
bool halbb_set_txpwr_dbm_8852b(struct bb_info *bb, s16 power_dbm,
                  enum phl_phy_idx phy_idx);
 
void halbb_reset_bb_hw_cnt_8852b(struct bb_info *bb);
   
s16 halbb_get_txpwr_dbm_8852b(struct bb_info *bb, enum phl_phy_idx phy_idx);
 
s16 halbb_get_txinfo_txpwr_dbm_8852b(struct bb_info *bb);
 
bool halbb_set_cck_txpwr_idx_8852b(struct bb_info *bb, u16 power_idx,
                  enum rf_path tx_path);
u16 halbb_get_cck_txpwr_idx_8852b(struct bb_info *bb, enum rf_path tx_path);
 
s16 halbb_get_cck_ref_dbm_8852b(struct bb_info *bb, enum rf_path tx_path);
 
bool halbb_set_ofdm_txpwr_idx_8852b(struct bb_info *bb, u16 power_idx,
                   enum rf_path tx_path);
 
u16 halbb_get_ofdm_txpwr_idx_8852b(struct bb_info *bb, enum rf_path tx_path);
 
s16 halbb_get_ofdm_ref_dbm_8852b(struct bb_info *bb, enum rf_path tx_path);
 
void halbb_backup_info_8852b(struct bb_info *bb, enum phl_phy_idx phy_idx);
 
void halbb_restore_info_8852b(struct bb_info *bb, enum phl_phy_idx phy_idx);
 
void halbb_ctrl_btg_8852b(struct bb_info *bb, bool btg);
 
void halbb_ctrl_btc_preagc_8852b(struct bb_info *bb, bool bt_en);
 
bool halbb_set_txsc_8852b(struct bb_info *bb, u8 txsc, enum phl_phy_idx phy_idx);
 
bool halbb_set_bss_color_8852b(struct bb_info *bb, u8 bss_color, 
                  enum phl_phy_idx phy_idx);
 
bool halbb_set_sta_id_8852b(struct bb_info *bb, u16 sta_id,
               enum phl_phy_idx phy_idx);
 
void halbb_set_igi_8852b(struct bb_info *bb, u8 lna_idx, bool tia_idx,
           u8 rxbb_idx, enum rf_path path);
void halbb_set_tx_pow_ref_8852b(struct bb_info *bb, s16 pw_dbm_ofdm,
                 s16 pw_dbm_cck, s8 ofst,
                 u8 base_cw_0db, u16 tssi_16dBm_cw,
                 u16 *ofdm_cw, u16 *cck_cw,
                 enum phl_phy_idx phy_idx);
void halbb_dump_bb_reg_8852b(struct bb_info *bb, u32 *_used, char *output,
                  u32 *_out_len, bool dump_2_buff);
void halbb_dbgport_dump_all_8852b(struct bb_info *bb, u32 *_used, char *output,
                   u32 *_out_len);
void halbb_physts_brk_fail_pkt_rpt_8852b(struct bb_info *bb, bool enable,
                      enum phl_phy_idx phy_idx);
 
bool halbb_rf_write_bb_reg_8852b(struct bb_info *bb, u32 addr, u32 mask, u32 data);
 
void halbb_pre_agc_en_8852b(struct bb_info *bb, bool enable);
 
void halbb_set_gain_error_8852b(struct bb_info *bb, u8 central_ch);
void halbb_set_efuse_8852b(struct bb_info *bb, u8 central_ch, enum phl_phy_idx phy_idx);
void halbb_get_efuse_ofst_init_8852b(struct bb_info *bb);
void halbb_get_normal_efuse_init_8852b(struct bb_info *bb);
void halbb_get_hide_efuse_init_8852b(struct bb_info *bb);
void halbb_set_rxsc_rpl_comp_8852b(struct bb_info *bb, u8 central_ch);
void halbb_normal_efuse_verify_8852b(struct bb_info *bb, s8 rx_gain_offset,
                      enum rf_path rx_path,
                      enum phl_phy_idx phy_idx);
void halbb_normal_efuse_verify_cck_8852b(struct bb_info *bb, s8 rx_gain_offset,
                      enum rf_path rx_path,
                      enum phl_phy_idx phy_idx);
#endif
#endif
#endif /*  __INC_PHYDM_API_H_8852A__ */