1
2
3
4
5
6
7#ifndef _RTW_MP_H_
8#define _RTW_MP_H_
9
10#define MAX_MP_XMITBUF_SZ 2048
11#define NR_MP_XMITFRAME 8
12
13struct mp_xmit_frame {
14 struct list_head list;
15
16 struct pkt_attrib attrib;
17
18 _pkt *pkt;
19
20 int frame_tag;
21
22 struct adapter *padapter;
23
24 uint mem[(MAX_MP_XMITBUF_SZ >> 2)];
25};
26
27struct mp_wiparam {
28 u32 bcompleted;
29 u32 act_type;
30 u32 io_offset;
31 u32 io_value;
32};
33
34typedef void(*wi_act_func)(void *padapter);
35
36struct mp_tx {
37 u8 stop;
38 u32 count, sended;
39 u8 payload;
40 struct pkt_attrib attrib;
41
42
43 u8 desc[TXDESC_SIZE];
44 u8 *pallocated_buf;
45 u8 *buf;
46 u32 buf_size, write_size;
47 void *PktTxThread;
48};
49
50#define MP_MAX_LINES 1000
51#define MP_MAX_LINES_BYTES 256
52
53typedef void (*MPT_WORK_ITEM_HANDLER)(void *Adapter);
54typedef struct _MPT_CONTEXT {
55
56 bool bMassProdTest;
57
58
59 bool bMptDrvUnload;
60
61 _timer MPh2c_timeout_timer;
62
63
64 bool MptH2cRspEvent;
65 bool MptBtC2hEvent;
66 bool bMPh2c_timeout;
67
68
69
70
71
72
73
74
75
76
77 bool bMptWorkItemInProgress;
78
79 MPT_WORK_ITEM_HANDLER CurrMptAct;
80
81
82 u32 MptTestStart;
83
84 u32 MptTestItem;
85
86 u32 MptActType;
87
88 u32 MptIoOffset;
89
90 u32 MptIoValue;
91
92 u32 MptRfPath;
93
94 enum WIRELESS_MODE MptWirelessModeToSw;
95 u8 MptChannelToSw;
96 u8 MptInitGainToSet;
97 u32 MptBandWidth;
98 u32 MptRateIndex;
99
100 u8 btMpCckTxPower;
101
102 u8 btMpOfdmTxPower;
103
104 u8 TxPwrLevel[2];
105 u32 RegTxPwrLimit;
106
107 u32 MptRCR;
108
109 bool bMptFilterPattern;
110
111 u32 MptRxOkCnt;
112
113 u32 MptRxCrcErrCnt;
114
115 bool bCckContTx;
116 bool bOfdmContTx;
117 bool bStartContTx;
118
119 bool bSingleCarrier;
120
121 bool bCarrierSuppression;
122
123 bool bSingleTone;
124
125
126 bool bMptEnableAckCounter;
127 u32 MptAckCounter;
128
129
130
131
132
133
134 u8 APK_bound[2];
135 bool bMptIndexEven;
136
137 u8 backup0xc50;
138 u8 backup0xc58;
139 u8 backup0xc30;
140 u8 backup0x52_RF_A;
141 u8 backup0x52_RF_B;
142
143 u32 backup0x58_RF_A;
144 u32 backup0x58_RF_B;
145
146 u8 h2cReqNum;
147 u8 c2hBuf[32];
148
149 u8 btInBuf[100];
150 u32 mptOutLen;
151 u8 mptOutBuf[100];
152
153} MPT_CONTEXT, *PMPT_CONTEXT;
154
155
156
157#define EFUSE_MAP_SIZE 512
158
159#define EFUSE_MAX_SIZE 512
160
161
162
163enum {
164 WRITE_REG = 1,
165 READ_REG,
166 WRITE_RF,
167 READ_RF,
168 MP_START,
169 MP_STOP,
170 MP_RATE,
171 MP_CHANNEL,
172 MP_BANDWIDTH,
173 MP_TXPOWER,
174 MP_ANT_TX,
175 MP_ANT_RX,
176 MP_CTX,
177 MP_QUERY,
178 MP_ARX,
179 MP_PSD,
180 MP_PWRTRK,
181 MP_THER,
182 MP_IOCTL,
183 EFUSE_GET,
184 EFUSE_SET,
185 MP_RESET_STATS,
186 MP_DUMP,
187 MP_PHYPARA,
188 MP_SetRFPathSwh,
189 MP_QueryDrvStats,
190 MP_SetBT,
191 CTA_TEST,
192 MP_DISABLE_BT_COEXIST,
193 MP_PwrCtlDM,
194#ifdef CONFIG_WOWLAN
195 MP_WOW_ENABLE,
196#endif
197#ifdef CONFIG_AP_WOWLAN
198 MP_AP_WOW_ENABLE,
199#endif
200 MP_NULL,
201 MP_GET_TXPOWER_INX,
202};
203
204struct mp_priv {
205 struct adapter *papdater;
206
207
208 u32 mode;
209
210 u32 prev_fw_state;
211
212
213 struct mp_wiparam workparam;
214
215
216
217 u8 TID;
218 u32 tx_pktcount;
219 u32 pktInterval;
220 struct mp_tx tx;
221
222
223 u32 rx_bssidpktcount;
224 u32 rx_pktcount;
225 u32 rx_pktcount_filter_out;
226 u32 rx_crcerrpktcount;
227 u32 rx_pktloss;
228 bool rx_bindicatePkt;
229 struct recv_stat rxstat;
230
231
232 u8 channel;
233 u8 bandwidth;
234 u8 prime_channel_offset;
235 u8 txpoweridx;
236 u8 txpoweridx_b;
237 u8 rateidx;
238 u32 preamble;
239
240 u32 CrystalCap;
241
242
243 u16 antenna_tx;
244 u16 antenna_rx;
245
246
247 u8 check_mp_pkt;
248
249 u8 bSetTxPower;
250
251 u8 mp_dm;
252 u8 mac_filter[ETH_ALEN];
253 u8 bmac_filter;
254
255 struct wlan_network mp_network;
256 NDIS_802_11_MAC_ADDRESS network_macaddr;
257
258 u8 *pallocated_mp_xmitframe_buf;
259 u8 *pmp_xmtframe_buf;
260 struct __queue free_mp_xmitqueue;
261 u32 free_mp_xmitframe_cnt;
262 bool bSetRxBssid;
263 bool bTxBufCkFail;
264
265 MPT_CONTEXT MptCtx;
266
267 u8 *TXradomBuffer;
268};
269
270typedef struct _IOCMD_STRUCT_ {
271 u8 cmdclass;
272 u16 value;
273 u8 index;
274} IOCMD_STRUCT;
275
276struct rf_reg_param {
277 u32 path;
278 u32 offset;
279 u32 value;
280};
281
282struct bb_reg_param {
283 u32 offset;
284 u32 value;
285};
286
287#define LOWER true
288#define RAISE false
289
290
291#define BB_REG_BASE_ADDR 0x800
292
293
294enum MP_MODE {
295 MP_OFF,
296 MP_ON,
297 MP_ERR,
298 MP_CONTINUOUS_TX,
299 MP_SINGLE_CARRIER_TX,
300 MP_CARRIER_SUPPRISSION_TX,
301 MP_SINGLE_TONE_TX,
302 MP_PACKET_TX,
303 MP_PACKET_RX
304};
305
306#define MAX_RF_PATH_NUMS RF_PATH_MAX
307
308extern u8 mpdatarate[NumRates];
309
310
311enum MPT_RATE_INDEX {
312
313 MPT_RATE_1M = 0,
314 MPT_RATE_2M,
315 MPT_RATE_55M,
316 MPT_RATE_11M,
317
318
319 MPT_RATE_6M,
320 MPT_RATE_9M,
321 MPT_RATE_12M,
322 MPT_RATE_18M,
323 MPT_RATE_24M,
324 MPT_RATE_36M,
325 MPT_RATE_48M,
326 MPT_RATE_54M,
327
328
329 MPT_RATE_MCS0,
330 MPT_RATE_MCS1,
331 MPT_RATE_MCS2,
332 MPT_RATE_MCS3,
333 MPT_RATE_MCS4,
334 MPT_RATE_MCS5,
335 MPT_RATE_MCS6,
336 MPT_RATE_MCS7,
337 MPT_RATE_MCS8,
338 MPT_RATE_MCS9,
339 MPT_RATE_MCS10,
340 MPT_RATE_MCS11,
341 MPT_RATE_MCS12,
342 MPT_RATE_MCS13,
343 MPT_RATE_MCS14,
344 MPT_RATE_MCS15,
345
346 MPT_RATE_VHT1SS_MCS0 = 100,
347 MPT_RATE_VHT1SS_MCS1,
348 MPT_RATE_VHT1SS_MCS2,
349 MPT_RATE_VHT1SS_MCS3,
350 MPT_RATE_VHT1SS_MCS4,
351 MPT_RATE_VHT1SS_MCS5,
352 MPT_RATE_VHT1SS_MCS6,
353 MPT_RATE_VHT1SS_MCS7,
354 MPT_RATE_VHT1SS_MCS8,
355 MPT_RATE_VHT1SS_MCS9,
356 MPT_RATE_VHT2SS_MCS0,
357 MPT_RATE_VHT2SS_MCS1,
358 MPT_RATE_VHT2SS_MCS2,
359 MPT_RATE_VHT2SS_MCS3,
360 MPT_RATE_VHT2SS_MCS4,
361 MPT_RATE_VHT2SS_MCS5,
362 MPT_RATE_VHT2SS_MCS6,
363 MPT_RATE_VHT2SS_MCS7,
364 MPT_RATE_VHT2SS_MCS8,
365 MPT_RATE_VHT2SS_MCS9,
366 MPT_RATE_LAST
367};
368
369#define MAX_TX_PWR_INDEX_N_MODE 64
370
371enum POWER_MODE {
372 POWER_LOW = 0,
373 POWER_NORMAL
374};
375
376
377enum OFDM_TX_MODE {
378 OFDM_ALL_OFF = 0,
379 OFDM_ContinuousTx = 1,
380 OFDM_SingleCarrier = 2,
381 OFDM_SingleTone = 4,
382};
383
384#define RX_PKT_BROADCAST 1
385#define RX_PKT_DEST_ADDR 2
386#define RX_PKT_PHY_MATCH 3
387
388#define Mac_OFDM_OK 0x00000000
389#define Mac_OFDM_Fail 0x10000000
390#define Mac_OFDM_FasleAlarm 0x20000000
391#define Mac_CCK_OK 0x30000000
392#define Mac_CCK_Fail 0x40000000
393#define Mac_CCK_FasleAlarm 0x50000000
394#define Mac_HT_OK 0x60000000
395#define Mac_HT_Fail 0x70000000
396#define Mac_HT_FasleAlarm 0x90000000
397#define Mac_DropPacket 0xA0000000
398
399enum ENCRY_CTRL_STATE {
400 HW_CONTROL,
401 SW_CONTROL,
402 HW_ENCRY_SW_DECRY,
403 SW_ENCRY_HW_DECRY
404};
405
406enum MPT_TXPWR_DEF {
407 MPT_CCK,
408 MPT_OFDM,
409 MPT_VHT_OFDM
410};
411
412#define REG_RF_BB_GAIN_OFFSET 0x7f
413#define RF_GAIN_OFFSET_MASK 0xfffff
414
415
416
417
418
419s32 init_mp_priv(struct adapter *padapter);
420void free_mp_priv(struct mp_priv *pmp_priv);
421s32 MPT_InitializeAdapter(struct adapter *padapter, u8 Channel);
422void MPT_DeInitAdapter(struct adapter *padapter);
423s32 mp_start_test(struct adapter *padapter);
424void mp_stop_test(struct adapter *padapter);
425
426u32 _read_rfreg(struct adapter *padapter, u8 rfpath, u32 addr, u32 bitmask);
427void _write_rfreg(struct adapter *padapter, u8 rfpath, u32 addr, u32 bitmask, u32 val);
428
429u32 read_macreg(struct adapter *padapter, u32 addr, u32 sz);
430void write_macreg(struct adapter *padapter, u32 addr, u32 val, u32 sz);
431u32 read_bbreg(struct adapter *padapter, u32 addr, u32 bitmask);
432void write_bbreg(struct adapter *padapter, u32 addr, u32 bitmask, u32 val);
433u32 read_rfreg(struct adapter *padapter, u8 rfpath, u32 addr);
434void write_rfreg(struct adapter *padapter, u8 rfpath, u32 addr, u32 val);
435
436void SetChannel(struct adapter *padapter);
437void SetBandwidth(struct adapter *padapter);
438int SetTxPower(struct adapter *padapter);
439void SetAntennaPathPower(struct adapter *padapter);
440void SetDataRate(struct adapter *padapter);
441
442void SetAntenna(struct adapter *padapter);
443
444s32 SetThermalMeter(struct adapter *padapter, u8 target_ther);
445void GetThermalMeter(struct adapter *padapter, u8 *value);
446
447void SetContinuousTx(struct adapter *padapter, u8 bStart);
448void SetSingleCarrierTx(struct adapter *padapter, u8 bStart);
449void SetSingleToneTx(struct adapter *padapter, u8 bStart);
450void SetCarrierSuppressionTx(struct adapter *padapter, u8 bStart);
451void PhySetTxPowerLevel(struct adapter *padapter);
452
453void fill_txdesc_for_mp(struct adapter *padapter, u8 *ptxdesc);
454void SetPacketTx(struct adapter *padapter);
455void SetPacketRx(struct adapter *padapter, u8 bStartRx);
456
457void ResetPhyRxPktCount(struct adapter *padapter);
458u32 GetPhyRxPktReceived(struct adapter *padapter);
459u32 GetPhyRxPktCRC32Error(struct adapter *padapter);
460
461s32 SetPowerTracking(struct adapter *padapter, u8 enable);
462void GetPowerTracking(struct adapter *padapter, u8 *enable);
463
464u32 mp_query_psd(struct adapter *padapter, u8 *data);
465
466void Hal_SetAntenna(struct adapter *padapter);
467void Hal_SetBandwidth(struct adapter *padapter);
468
469void Hal_SetTxPower(struct adapter *padapter);
470void Hal_SetCarrierSuppressionTx(struct adapter *padapter, u8 bStart);
471void Hal_SetSingleToneTx(struct adapter *padapter, u8 bStart);
472void Hal_SetSingleCarrierTx(struct adapter *padapter, u8 bStart);
473void Hal_SetContinuousTx(struct adapter *padapter, u8 bStart);
474void Hal_SetBandwidth(struct adapter *padapter);
475
476void Hal_SetDataRate(struct adapter *padapter);
477void Hal_SetChannel(struct adapter *padapter);
478void Hal_SetAntennaPathPower(struct adapter *padapter);
479s32 Hal_SetThermalMeter(struct adapter *padapter, u8 target_ther);
480s32 Hal_SetPowerTracking(struct adapter *padapter, u8 enable);
481void Hal_GetPowerTracking(struct adapter *padapter, u8 *enable);
482void Hal_GetThermalMeter(struct adapter *padapter, u8 *value);
483void Hal_mpt_SwitchRfSetting(struct adapter *padapter);
484void Hal_MPT_CCKTxPowerAdjust(struct adapter *Adapter, bool bInCH14);
485void Hal_MPT_CCKTxPowerAdjustbyIndex(struct adapter *padapter, bool beven);
486void Hal_SetCCKTxPower(struct adapter *padapter, u8 *TxPower);
487void Hal_SetOFDMTxPower(struct adapter *padapter, u8 *TxPower);
488void Hal_TriggerRFThermalMeter(struct adapter *padapter);
489u8 Hal_ReadRFThermalMeter(struct adapter *padapter);
490void Hal_SetCCKContinuousTx(struct adapter *padapter, u8 bStart);
491void Hal_SetOFDMContinuousTx(struct adapter *padapter, u8 bStart);
492void Hal_ProSetCrystalCap(struct adapter *padapter, u32 CrystalCapVal);
493void MP_PHY_SetRFPathSwitch(struct adapter *padapter, bool bMain);
494u32 mpt_ProQueryCalTxPower(struct adapter *padapter, u8 RfPath);
495void MPT_PwrCtlDM(struct adapter *padapter, u32 bstart);
496u8 MptToMgntRate(u32 MptRateIdx);
497
498#endif
499