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 struct sk_buff *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
34struct mp_tx {
35 u8 stop;
36 u32 count, sended;
37 u8 payload;
38 struct pkt_attrib attrib;
39
40
41 u8 desc[TXDESC_SIZE];
42 u8 *pallocated_buf;
43 u8 *buf;
44 u32 buf_size, write_size;
45 void *PktTxThread;
46};
47
48#define MP_MAX_LINES 1000
49#define MP_MAX_LINES_BYTES 256
50
51typedef void (*MPT_WORK_ITEM_HANDLER)(void *Adapter);
52struct mpt_context {
53
54 bool bMassProdTest;
55
56
57 bool bMptDrvUnload;
58
59 struct timer_list MPh2c_timeout_timer;
60
61
62 bool MptH2cRspEvent;
63 bool MptBtC2hEvent;
64 bool bMPh2c_timeout;
65
66
67
68
69
70
71
72
73
74
75 bool bMptWorkItemInProgress;
76
77 MPT_WORK_ITEM_HANDLER CurrMptAct;
78
79
80 u32 MptTestStart;
81
82 u32 MptTestItem;
83
84 u32 MptActType;
85
86 u32 MptIoOffset;
87
88 u32 MptIoValue;
89
90 u32 MptRfPath;
91
92 enum wireless_mode MptWirelessModeToSw;
93 u8 MptChannelToSw;
94 u8 MptInitGainToSet;
95 u32 MptBandWidth;
96 u32 MptRateIndex;
97
98 u8 btMpCckTxPower;
99
100 u8 btMpOfdmTxPower;
101
102 u8 TxPwrLevel[2];
103 u32 RegTxPwrLimit;
104
105 u32 MptRCR;
106
107 bool bMptFilterPattern;
108
109 u32 MptRxOkCnt;
110
111 u32 MptRxCrcErrCnt;
112
113 bool bCckContTx;
114 bool bOfdmContTx;
115 bool bStartContTx;
116
117 bool bSingleCarrier;
118
119 bool bCarrierSuppression;
120
121 bool bSingleTone;
122
123
124 bool bMptEnableAckCounter;
125 u32 MptAckCounter;
126
127
128
129
130
131
132 u8 APK_bound[2];
133 bool bMptIndexEven;
134
135 u8 backup0xc50;
136 u8 backup0xc58;
137 u8 backup0xc30;
138 u8 backup0x52_RF_A;
139 u8 backup0x52_RF_B;
140
141 u32 backup0x58_RF_A;
142 u32 backup0x58_RF_B;
143
144 u8 h2cReqNum;
145 u8 c2hBuf[32];
146
147 u8 btInBuf[100];
148 u32 mptOutLen;
149 u8 mptOutBuf[100];
150
151};
152
153
154
155#define EFUSE_MAP_SIZE 512
156
157#define EFUSE_MAX_SIZE 512
158
159
160
161enum {
162 WRITE_REG = 1,
163 READ_REG,
164 WRITE_RF,
165 READ_RF,
166 MP_START,
167 MP_STOP,
168 MP_RATE,
169 MP_CHANNEL,
170 MP_BANDWIDTH,
171 MP_TXPOWER,
172 MP_ANT_TX,
173 MP_ANT_RX,
174 MP_CTX,
175 MP_QUERY,
176 MP_ARX,
177 MP_PSD,
178 MP_PWRTRK,
179 MP_THER,
180 MP_IOCTL,
181 EFUSE_GET,
182 EFUSE_SET,
183 MP_RESET_STATS,
184 MP_DUMP,
185 MP_PHYPARA,
186 MP_SetRFPathSwh,
187 MP_QueryDrvStats,
188 MP_SetBT,
189 CTA_TEST,
190 MP_DISABLE_BT_COEXIST,
191 MP_PwrCtlDM,
192 MP_NULL,
193 MP_GET_TXPOWER_INX,
194};
195
196struct mp_priv {
197 struct adapter *papdater;
198
199
200 u32 mode;
201
202 u32 prev_fw_state;
203
204
205 struct mp_wiparam workparam;
206
207
208
209 u8 TID;
210 u32 tx_pktcount;
211 u32 pktInterval;
212 struct mp_tx tx;
213
214
215 u32 rx_bssidpktcount;
216 u32 rx_pktcount;
217 u32 rx_pktcount_filter_out;
218 u32 rx_crcerrpktcount;
219 u32 rx_pktloss;
220 bool rx_bindicatePkt;
221 struct recv_stat rxstat;
222
223
224 u8 channel;
225 u8 bandwidth;
226 u8 prime_channel_offset;
227 u8 txpoweridx;
228 u8 txpoweridx_b;
229 u8 rateidx;
230 u32 preamble;
231
232 u32 CrystalCap;
233
234
235 u16 antenna_tx;
236 u16 antenna_rx;
237
238
239 u8 check_mp_pkt;
240
241 u8 bSetTxPower;
242
243 u8 mp_dm;
244 u8 mac_filter[ETH_ALEN];
245 u8 bmac_filter;
246
247 struct wlan_network mp_network;
248 NDIS_802_11_MAC_ADDRESS network_macaddr;
249
250 u8 *pallocated_mp_xmitframe_buf;
251 u8 *pmp_xmtframe_buf;
252 struct __queue free_mp_xmitqueue;
253 u32 free_mp_xmitframe_cnt;
254 bool bSetRxBssid;
255 bool bTxBufCkFail;
256
257 struct mpt_context MptCtx;
258
259 u8 *TXradomBuffer;
260};
261
262#define LOWER true
263#define RAISE false
264
265
266#define BB_REG_BASE_ADDR 0x800
267
268#define MAX_RF_PATH_NUMS RF_PATH_MAX
269
270extern u8 mpdatarate[NumRates];
271
272#define MAX_TX_PWR_INDEX_N_MODE 64
273
274#define RX_PKT_BROADCAST 1
275#define RX_PKT_DEST_ADDR 2
276#define RX_PKT_PHY_MATCH 3
277
278#define Mac_OFDM_OK 0x00000000
279#define Mac_OFDM_Fail 0x10000000
280#define Mac_OFDM_FasleAlarm 0x20000000
281#define Mac_CCK_OK 0x30000000
282#define Mac_CCK_Fail 0x40000000
283#define Mac_CCK_FasleAlarm 0x50000000
284#define Mac_HT_OK 0x60000000
285#define Mac_HT_Fail 0x70000000
286#define Mac_HT_FasleAlarm 0x90000000
287#define Mac_DropPacket 0xA0000000
288
289#define REG_RF_BB_GAIN_OFFSET 0x7f
290#define RF_GAIN_OFFSET_MASK 0xfffff
291
292
293
294
295
296s32 init_mp_priv(struct adapter *padapter);
297void free_mp_priv(struct mp_priv *pmp_priv);
298s32 MPT_InitializeAdapter(struct adapter *padapter, u8 Channel);
299void MPT_DeInitAdapter(struct adapter *padapter);
300s32 mp_start_test(struct adapter *padapter);
301void mp_stop_test(struct adapter *padapter);
302
303u32 _read_rfreg(struct adapter *padapter, u8 rfpath, u32 addr, u32 bitmask);
304void _write_rfreg(struct adapter *padapter, u8 rfpath, u32 addr, u32 bitmask, u32 val);
305
306u32 read_macreg(struct adapter *padapter, u32 addr, u32 sz);
307void write_macreg(struct adapter *padapter, u32 addr, u32 val, u32 sz);
308u32 read_bbreg(struct adapter *padapter, u32 addr, u32 bitmask);
309void write_bbreg(struct adapter *padapter, u32 addr, u32 bitmask, u32 val);
310u32 read_rfreg(struct adapter *padapter, u8 rfpath, u32 addr);
311void write_rfreg(struct adapter *padapter, u8 rfpath, u32 addr, u32 val);
312
313void SetChannel(struct adapter *padapter);
314void SetBandwidth(struct adapter *padapter);
315int SetTxPower(struct adapter *padapter);
316void SetAntennaPathPower(struct adapter *padapter);
317void SetDataRate(struct adapter *padapter);
318
319void SetAntenna(struct adapter *padapter);
320
321s32 SetThermalMeter(struct adapter *padapter, u8 target_ther);
322void GetThermalMeter(struct adapter *padapter, u8 *value);
323
324void SetContinuousTx(struct adapter *padapter, u8 bStart);
325void SetSingleCarrierTx(struct adapter *padapter, u8 bStart);
326void SetSingleToneTx(struct adapter *padapter, u8 bStart);
327void SetCarrierSuppressionTx(struct adapter *padapter, u8 bStart);
328void PhySetTxPowerLevel(struct adapter *padapter);
329
330void fill_txdesc_for_mp(struct adapter *padapter, u8 *ptxdesc);
331void SetPacketTx(struct adapter *padapter);
332void SetPacketRx(struct adapter *padapter, u8 bStartRx);
333
334void ResetPhyRxPktCount(struct adapter *padapter);
335u32 GetPhyRxPktReceived(struct adapter *padapter);
336u32 GetPhyRxPktCRC32Error(struct adapter *padapter);
337
338s32 SetPowerTracking(struct adapter *padapter, u8 enable);
339void GetPowerTracking(struct adapter *padapter, u8 *enable);
340
341u32 mp_query_psd(struct adapter *padapter, u8 *data);
342
343void Hal_SetAntenna(struct adapter *padapter);
344void Hal_SetBandwidth(struct adapter *padapter);
345
346void Hal_SetTxPower(struct adapter *padapter);
347void Hal_SetCarrierSuppressionTx(struct adapter *padapter, u8 bStart);
348void Hal_SetSingleToneTx(struct adapter *padapter, u8 bStart);
349void Hal_SetSingleCarrierTx(struct adapter *padapter, u8 bStart);
350void Hal_SetContinuousTx(struct adapter *padapter, u8 bStart);
351
352void Hal_SetDataRate(struct adapter *padapter);
353void Hal_SetChannel(struct adapter *padapter);
354void Hal_SetAntennaPathPower(struct adapter *padapter);
355s32 Hal_SetThermalMeter(struct adapter *padapter, u8 target_ther);
356s32 Hal_SetPowerTracking(struct adapter *padapter, u8 enable);
357void Hal_GetPowerTracking(struct adapter *padapter, u8 *enable);
358void Hal_GetThermalMeter(struct adapter *padapter, u8 *value);
359void Hal_mpt_SwitchRfSetting(struct adapter *padapter);
360void Hal_MPT_CCKTxPowerAdjust(struct adapter *Adapter, bool bInCH14);
361void Hal_MPT_CCKTxPowerAdjustbyIndex(struct adapter *padapter, bool beven);
362void Hal_SetCCKTxPower(struct adapter *padapter, u8 *TxPower);
363void Hal_SetOFDMTxPower(struct adapter *padapter, u8 *TxPower);
364void Hal_TriggerRFThermalMeter(struct adapter *padapter);
365u8 Hal_ReadRFThermalMeter(struct adapter *padapter);
366void Hal_SetCCKContinuousTx(struct adapter *padapter, u8 bStart);
367void Hal_SetOFDMContinuousTx(struct adapter *padapter, u8 bStart);
368void Hal_ProSetCrystalCap(struct adapter *padapter, u32 CrystalCapVal);
369void MP_PHY_SetRFPathSwitch(struct adapter *padapter, bool bMain);
370u32 mpt_ProQueryCalTxPower(struct adapter *padapter, u8 RfPath);
371void MPT_PwrCtlDM(struct adapter *padapter, u32 bstart);
372u8 MptToMgntRate(u32 MptRateIdx);
373
374#endif
375