Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
nu11secur1ty
GitHub Repository: nu11secur1ty/Kali-Linux
Path: blob/master/ALFA-W1F1/RTL8814AU/hal/phydm/phydm_interface.h
1307 views
1
/******************************************************************************
2
*
3
* Copyright(c) 2007 - 2017 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 <[email protected]>
19
* Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park,
20
* Hsinchu 300, Taiwan.
21
*
22
* Larry Finger <[email protected]>
23
*
24
*****************************************************************************/
25
26
#ifndef __ODM_INTERFACE_H__
27
#define __ODM_INTERFACE_H__
28
29
#define INTERFACE_VERSION "1.2"
30
31
#define pdm_set_reg odm_set_bb_reg
32
33
/*@=========== Constant/Structure/Enum/... Define*/
34
35
enum phydm_h2c_cmd {
36
PHYDM_H2C_RA_MASK = 0x40,
37
PHYDM_H2C_TXBF = 0x41,
38
ODM_H2C_RSSI_REPORT = 0x42,
39
ODM_H2C_IQ_CALIBRATION = 0x45,
40
PHYDM_RA_MASK_ABOVE_3SS = 0x46,
41
ODM_H2C_RA_PARA_ADJUST = 0x47,
42
PHYDM_H2C_DYNAMIC_TX_PATH = 0x48,
43
PHYDM_H2C_FW_TRACE_EN = 0x49,
44
ODM_H2C_WIFI_CALIBRATION = 0x6d,
45
PHYDM_H2C_MU = 0x4a,
46
PHYDM_H2C_FW_GENERAL_INIT = 0x4c,
47
PHYDM_H2C_FW_CLM_MNTR = 0x4d,
48
PHYDM_H2C_MCC = 0x4f,
49
PHYDM_H2C_RESP_TX_PATH_CTRL = 0x50,
50
PHYDM_H2C_RESP_TX_ANT_CTRL = 0x51,
51
ODM_MAX_H2CCMD
52
};
53
54
enum phydm_c2h_evt {
55
PHYDM_C2H_DBG = 0,
56
PHYDM_C2H_LB = 1,
57
PHYDM_C2H_XBF = 2,
58
PHYDM_C2H_TX_REPORT = 3,
59
PHYDM_C2H_INFO = 9,
60
PHYDM_C2H_BT_MP = 11,
61
PHYDM_C2H_RA_RPT = 12,
62
PHYDM_C2H_RA_PARA_RPT = 14,
63
PHYDM_C2H_DYNAMIC_TX_PATH_RPT = 15,
64
PHYDM_C2H_IQK_FINISH = 17, /*@0x11*/
65
PHYDM_C2H_CLM_MONITOR = 0x2a,
66
PHYDM_C2H_DBG_CODE = 0xFE,
67
PHYDM_C2H_EXTEND = 0xFF,
68
};
69
70
enum phydm_extend_c2h_evt {
71
PHYDM_EXTEND_C2H_DBG_PRINT = 0
72
73
};
74
75
enum phydm_halmac_param {
76
PHYDM_HALMAC_CMD_MAC_W8 = 0,
77
PHYDM_HALMAC_CMD_MAC_W16 = 1,
78
PHYDM_HALMAC_CMD_MAC_W32 = 2,
79
PHYDM_HALMAC_CMD_BB_W8,
80
PHYDM_HALMAC_CMD_BB_W16,
81
PHYDM_HALMAC_CMD_BB_W32,
82
PHYDM_HALMAC_CMD_RF_W,
83
PHYDM_HALMAC_CMD_DELAY_US,
84
PHYDM_HALMAC_CMD_DELAY_MS,
85
PHYDM_HALMAC_CMD_END = 0XFF,
86
};
87
88
/*@=========== Macro Define*/
89
90
#define _reg_all(_name) ODM_##_name
91
#define _reg_ic(_name, _ic) ODM_##_name##_ic
92
#define _bit_all(_name) BIT_##_name
93
#define _bit_ic(_name, _ic) BIT_##_name##_ic
94
95
/* @_cat: implemented by Token-Pasting Operator. */
96
#if 0
97
#define _cat(_name, _ic_type, _func) \
98
( \
99
_func##_all(_name))
100
#endif
101
102
#if 0
103
104
#define ODM_REG_DIG_11N 0xC50
105
#define ODM_REG_DIG_11AC 0xDDD
106
107
ODM_REG(DIG,_pdm_odm)
108
#endif
109
110
#if defined(DM_ODM_CE_MAC80211)
111
#define ODM_BIT(name, dm) \
112
((dm->support_ic_type & ODM_IC_11N_SERIES) ? \
113
ODM_BIT_##name##_11N : ODM_BIT_##name##_11AC)
114
115
#define ODM_REG(name, dm) \
116
((dm->support_ic_type & ODM_IC_11N_SERIES) ? \
117
ODM_REG_##name##_11N : ODM_REG_##name##_11AC)
118
#else
119
#define _reg_11N(_name) ODM_REG_##_name##_11N
120
#define _reg_11AC(_name) ODM_REG_##_name##_11AC
121
#define _bit_11N(_name) ODM_BIT_##_name##_11N
122
#define _bit_11AC(_name) ODM_BIT_##_name##_11AC
123
124
#ifdef __ECOS
125
#define _rtk_cat(_name, _ic_type, _func) \
126
( \
127
((_ic_type) & ODM_IC_11N_SERIES) ? _func##_11N(_name) : \
128
_func##_11AC(_name))
129
#else
130
131
#define _cat(_name, _ic_type, _func) \
132
( \
133
((_ic_type) & ODM_IC_11N_SERIES) ? _func##_11N(_name) : \
134
_func##_11AC(_name))
135
#endif
136
/*@
137
* only sample code
138
*#define _cat(_name, _ic_type, _func) \
139
* ( \
140
* ((_ic_type) & ODM_RTL8188E) ? _func##_ic(_name, _8188E) :\
141
* _func##_ic(_name, _8195) \
142
* )
143
*/
144
145
/* @_name: name of register or bit.
146
* Example: "ODM_REG(R_A_AGC_CORE1, dm)"
147
* gets "ODM_R_A_AGC_CORE1" or "ODM_R_A_AGC_CORE1_8192C",
148
* depends on support_ic_type.
149
*/
150
#ifdef __ECOS
151
#define ODM_REG(_name, _pdm_odm) \
152
_rtk_cat(_name, _pdm_odm->support_ic_type, _reg)
153
#define ODM_BIT(_name, _pdm_odm) \
154
_rtk_cat(_name, _pdm_odm->support_ic_type, _bit)
155
#else
156
#define ODM_REG(_name, _pdm_odm) \
157
_cat(_name, _pdm_odm->support_ic_type, _reg)
158
#define ODM_BIT(_name, _pdm_odm) \
159
_cat(_name, _pdm_odm->support_ic_type, _bit)
160
#endif
161
162
#endif
163
/*@
164
* =========== Extern Variable ??? It should be forbidden.
165
*/
166
167
/*@
168
* =========== EXtern Function Prototype
169
*/
170
171
u8 odm_read_1byte(struct dm_struct *dm, u32 reg_addr);
172
173
u16 odm_read_2byte(struct dm_struct *dm, u32 reg_addr);
174
175
u32 odm_read_4byte(struct dm_struct *dm, u32 reg_addr);
176
177
void odm_write_1byte(struct dm_struct *dm, u32 reg_addr, u8 data);
178
179
void odm_write_2byte(struct dm_struct *dm, u32 reg_addr, u16 data);
180
181
void odm_write_4byte(struct dm_struct *dm, u32 reg_addr, u32 data);
182
183
void odm_set_mac_reg(struct dm_struct *dm, u32 reg_addr, u32 bit_mask,
184
u32 data);
185
186
u32 odm_get_mac_reg(struct dm_struct *dm, u32 reg_addr, u32 bit_mask);
187
188
void odm_set_bb_reg(struct dm_struct *dm, u32 reg_addr, u32 bit_mask, u32 data);
189
190
u32 odm_get_bb_reg(struct dm_struct *dm, u32 reg_addr, u32 bit_mask);
191
192
void odm_set_rf_reg(struct dm_struct *dm, u8 e_rf_path, u32 reg_addr,
193
u32 bit_mask, u32 data);
194
195
u32 odm_get_rf_reg(struct dm_struct *dm, u8 e_rf_path, u32 reg_addr,
196
u32 bit_mask);
197
198
/*@
199
* Memory Relative Function.
200
*/
201
void odm_allocate_memory(struct dm_struct *dm, void **ptr, u32 length);
202
void odm_free_memory(struct dm_struct *dm, void *ptr, u32 length);
203
204
void odm_move_memory(struct dm_struct *dm, void *dest, void *src, u32 length);
205
206
s32 odm_compare_memory(struct dm_struct *dm, void *buf1, void *buf2,
207
u32 length);
208
209
void odm_memory_set(struct dm_struct *dm, void *pbuf, s8 value, u32 length);
210
211
/*@
212
* ODM MISC-spin lock relative API.
213
*/
214
void odm_acquire_spin_lock(struct dm_struct *dm, enum rt_spinlock_type type);
215
216
void odm_release_spin_lock(struct dm_struct *dm, enum rt_spinlock_type type);
217
218
#if (DM_ODM_SUPPORT_TYPE == ODM_WIN)
219
/*@
220
* ODM MISC-workitem relative API.
221
*/
222
void odm_initialize_work_item(
223
struct dm_struct *dm,
224
PRT_WORK_ITEM p_rt_work_item,
225
RT_WORKITEM_CALL_BACK rt_work_item_callback,
226
void *context,
227
const char *sz_id);
228
229
void odm_start_work_item(
230
PRT_WORK_ITEM p_rt_work_item);
231
232
void odm_stop_work_item(
233
PRT_WORK_ITEM p_rt_work_item);
234
235
void odm_free_work_item(
236
PRT_WORK_ITEM p_rt_work_item);
237
238
void odm_schedule_work_item(
239
PRT_WORK_ITEM p_rt_work_item);
240
241
boolean
242
odm_is_work_item_scheduled(
243
PRT_WORK_ITEM p_rt_work_item);
244
#endif
245
246
/*@
247
* ODM Timer relative API.
248
*/
249
void ODM_delay_ms(u32 ms);
250
251
void ODM_delay_us(u32 us);
252
253
void ODM_sleep_ms(u32 ms);
254
255
void ODM_sleep_us(u32 us);
256
257
void odm_set_timer(struct dm_struct *dm, struct phydm_timer_list *timer,
258
u32 ms_delay);
259
260
void odm_initialize_timer(struct dm_struct *dm, struct phydm_timer_list *timer,
261
void *call_back_func, void *context,
262
const char *sz_id);
263
264
void odm_cancel_timer(struct dm_struct *dm, struct phydm_timer_list *timer);
265
266
void odm_release_timer(struct dm_struct *dm, struct phydm_timer_list *timer);
267
268
/*ODM FW relative API.*/
269
270
enum hal_status
271
phydm_set_reg_by_fw(struct dm_struct *dm, enum phydm_halmac_param config_type,
272
u32 offset, u32 data, u32 mask, enum rf_path e_rf_path,
273
u32 delay_time);
274
275
void odm_fill_h2c_cmd(struct dm_struct *dm, u8 element_id, u32 cmd_len,
276
u8 *cmd_buffer);
277
278
u8 phydm_c2H_content_parsing(void *dm_void, u8 c2h_cmd_id, u8 c2h_cmd_len,
279
u8 *tmp_buf);
280
281
u64 odm_get_current_time(struct dm_struct *dm);
282
u64 odm_get_progressing_time(struct dm_struct *dm, u64 start_time);
283
284
#if (DM_ODM_SUPPORT_TYPE & (ODM_WIN | ODM_CE)) && \
285
(!defined(DM_ODM_CE_MAC80211) && !defined(DM_ODM_CE_MAC80211_V2))
286
287
void phydm_set_hw_reg_handler_interface(struct dm_struct *dm, u8 reg_Name,
288
u8 *val);
289
290
void phydm_get_hal_def_var_handler_interface(struct dm_struct *dm,
291
enum _HAL_DEF_VARIABLE e_variable,
292
void *value);
293
294
#endif
295
296
void odm_set_tx_power_index_by_rate_section(struct dm_struct *dm,
297
enum rf_path path, u8 channel,
298
u8 rate_section);
299
300
u8 odm_get_tx_power_index(struct dm_struct *dm, enum rf_path path, u8 tx_rate,
301
u8 band_width, u8 channel);
302
303
u8 odm_efuse_one_byte_read(struct dm_struct *dm, u16 addr, u8 *data,
304
boolean b_pseu_do_test);
305
306
void odm_efuse_logical_map_read(struct dm_struct *dm, u8 type, u16 offset,
307
u32 *data);
308
309
enum hal_status
310
odm_iq_calibrate_by_fw(struct dm_struct *dm, u8 clear, u8 segment);
311
312
enum hal_status
313
odm_dpk_by_fw(struct dm_struct *dm);
314
315
void phydm_cmn_sta_info_hook(struct dm_struct *dm, u8 index,
316
struct cmn_sta_info *pcmn_sta_info);
317
318
void phydm_macid2sta_idx_table(struct dm_struct *dm, u8 entry_idx,
319
struct cmn_sta_info *pcmn_sta_info);
320
321
void phydm_add_interrupt_mask_handler(struct dm_struct *dm, u8 interrupt_type);
322
323
void phydm_enable_rx_related_interrupt_handler(struct dm_struct *dm);
324
325
#if 0
326
boolean
327
phydm_get_txbf_en(
328
struct dm_struct *dm,
329
u16 mac_id,
330
u8 i
331
);
332
#endif
333
334
void phydm_iqk_wait(struct dm_struct *dm, u32 timeout);
335
u8 phydm_get_hwrate_to_mrate(struct dm_struct *dm, u8 rate);
336
337
void phydm_set_crystalcap(struct dm_struct *dm, u8 crystal_cap);
338
void phydm_run_in_thread_cmd(struct dm_struct *dm, void (*func)(void *),
339
void *context);
340
u8 phydm_get_tx_rate(struct dm_struct *dm);
341
u8 phydm_get_tx_power_dbm(struct dm_struct *dm, u8 rf_path,
342
u8 rate, u8 bandwidth, u8 channel);
343
u64 phydm_division64(u64 x, u64 y);
344
345
#endif /* @__ODM_INTERFACE_H__ */
346
347