summaryrefslogtreecommitdiff
path: root/network/wlan/WDI/HAL/HalPhy.h
blob: 387fe95aa4a387e26e189036f42eb31d4305068e (plain)
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
#ifndef __INC_HALPHY_H
#define __INC_HALPHY_H
/*++
Copyright (c) Realtek Semiconductor Corp. All rights reserved.

Module Name:
	HalPhy.h
	
Abstract:
	Prototype of PHY_XXX() and related data structure.
	    
Major Change History:
	When       Who               What
	---------- ---------------   -------------------------------
	2011-08-10 Lanhsin            Create.	
--*/

/*--------------------------Define Parameters-------------------------------*/

#if (DISABLE_BB_RF == 1)
#define		HAL_FW_ENABLE				0
#define		HAL_MAC_ENABLE				0
#define		HAL_BB_ENABLE				0
#define		HAL_RF_ENABLE				0
#else // FPGA_PHY and ASIC
#define 	HAL_FW_ENABLE				1
#define		HAL_MAC_ENABLE				1
#define		HAL_BB_ENABLE				1
#define		HAL_RF_ENABLE				1
#endif


#define delay_ms(_t)			PlatformStallExecution(1000*(_t))
#define delay_us(_t)			PlatformStallExecution(_t)

#define	RF6052_MAX_TX_PWR			0x3F
#define	RF6052_MAX_REG_88E			0xFF
#define	RF6052_MAX_REG_92C			0x7F

#define	RF6052_MAX_REG	\
		(RF6052_MAX_REG_88E > RF6052_MAX_REG_92C) ? RF6052_MAX_REG_88E: RF6052_MAX_REG_92C

#define GET_RF6052_REAL_MAX_REG(_Adapter)	\
		IS_HARDWARE_TYPE_8188E(_Adapter) ? RF6052_MAX_REG_88E : RF6052_MAX_REG_92C


#define	RF6052_MAX_PATH						4

#define	HAL_PRIME_CHNL_OFFSET_DONT_CARE	0
#define	HAL_PRIME_CHNL_OFFSET_LOWER			1
#define	HAL_PRIME_CHNL_OFFSET_UPPER			2


#define	PHY_SUPPORT_92C				1
#define	PHY_SUPPORT_92D				1
#define	PHY_SUPPORT_88E				1
#define	PHY_SUPPORT_8812				1
#define	PHY_SUPPORT_92E				1
#define	PHY_SUPPORT_8723B				1
#define	PHY_SUPPORT_8814A				1
#define	PHY_SUPPORT_8822B				1


#define	SHORT_SLOT_TIME					9
#define	NON_SHORT_SLOT_TIME				20

//
// Antenna detection method, i.e., using single tone detection or RSSI reported from each antenna detected. 
// Added by Roger, 2013.05.22.
//
#define IS_ANT_DETECT_SUPPORT_SINGLE_TONE(__Adapter)		((GET_HAL_DATA(__Adapter)->AntDetection) & BIT0)
#define IS_ANT_DETECT_SUPPORT_RSSI(__Adapter)		((GET_HAL_DATA(__Adapter)->AntDetection) & BIT1)
#define IS_ANT_DETECT_SUPPORT_PSD(__Adapter)		((GET_HAL_DATA(__Adapter)->AntDetection) & BIT2)

/*--------------------------Define Parameters-------------------------------*/
typedef	enum _RF_TYPE{
	RF_TYPE_MIN = 0, 	// 0
	RF_8225=1,			// 1 11b/g RF for verification only
	RF_8256=2,			// 2 11b/g/n 
	RF_8258=3,			// 3 11a/b/g/n RF
	RF_6052=4,			// 4 11b/g/n RF
	RF_PSEUDO_11N=5,	// 5, It is a temporality RF. 
	RF_TYPE_MAX
}RF_TYPE_E,*PRF_TYPE_E;


#define	RF_PATH_MAX_92C_88E 		2
#define	RF_PATH_MAX_90_8812		4	//Max RF number 90 support 
#define   RF_PATH_MAX_90_8814A         4


typedef enum _ANTENNA_PATH{
       ANTENNA_NONE 	= 0,
	ANTENNA_D		= 1,
	ANTENNA_C		= 2,
	ANTENNA_CD	= 3,
	ANTENNA_B		= 4,
	ANTENNA_BD	= 5,
	ANTENNA_BC	= 6,
	ANTENNA_BCD	= 7,
	ANTENNA_A		= 8,
	ANTENNA_AD	= 9,
	ANTENNA_AC	= 10,
	ANTENNA_ACD	= 11,
	ANTENNA_AB	= 12,
	ANTENNA_ABD	= 13,
	ANTENNA_ABC	= 14,
	ANTENNA_ABCD	= 15
} ANTENNA_PATH;

 typedef enum _RF_CONTENT{
	radioa_txt = 0x1000,
	radiob_txt = 0x1001,
	radioc_txt = 0x1002,
	radiod_txt = 0x1003
} RF_CONTENT;

typedef enum _BaseBand_Config_Type{
	BaseBand_Config_PHY_REG = 0,			//Radio Path A
	BaseBand_Config_AGC_TAB = 1,			//Radio Path B
	BaseBand_Config_AGC_TAB_2G = 2,
	BaseBand_Config_AGC_TAB_5G = 3,	
	BaseBand_Config_PHY_REG_PG
}BaseBand_Config_Type, *PBaseBand_Config_Type;



typedef enum _HW_BLOCK{
	HW_BLOCK_MAC = 0,
	HW_BLOCK_PHY0 = 1,
	HW_BLOCK_PHY1 = 2,
	HW_BLOCK_RF = 3,
	HW_BLOCK_MAXIMUM = 4, // Never use this
}HW_BLOCK_E, *PHW_BLOCK_E;

typedef enum _SwChnlCmdID{
	CmdID_End,
	CmdID_SetTxPowerLevel,
	CmdID_WritePortUlong,
	CmdID_WritePortUshort,
	CmdID_WritePortUchar,
	CmdID_RF_WriteReg,
}SwChnlCmdID;



typedef enum _RATR_TABLE_MODE{
	RATR_INX_WIRELESS_NGB = 0,		// BGN 40 Mhz 2SS 1SS
	RATR_INX_WIRELESS_NG = 1,		// GN or N
	RATR_INX_WIRELESS_NB = 2,		// BGN 20 Mhz 2SS 1SS  or BN
	RATR_INX_WIRELESS_N = 3,
	RATR_INX_WIRELESS_GB = 4,
	RATR_INX_WIRELESS_G = 5,
	RATR_INX_WIRELESS_B = 6,
	RATR_INX_WIRELESS_MC = 7,
	RATR_INX_WIRELESS_AC_5N = 8,
	RATR_INX_WIRELESS_AC_24N = 9,
}RATR_TABLE_MODE, *PRATR_TABLE_MODE;


/*------------------------------Define structure----------------------------*/ 
typedef struct _SwChnlCmd{
	SwChnlCmdID		CmdID;
	u4Byte			Para1;
	u4Byte			Para2;
	u4Byte			msDelay;
}SwChnlCmd;


#ifdef REMOVE_PACK
#pragma pack(1)
#endif

typedef struct _R_ANTENNA_SELECT_OFDM{	
	u4Byte			r_tx_antenna:4;	
	u4Byte			r_ant_l:4;
	u4Byte			r_ant_non_ht:4;	
	u4Byte			r_ant_ht1:4;
	u4Byte			r_ant_ht2:4;
	u4Byte			r_ant_ht_s1:4;
	u4Byte			r_ant_non_ht_s1:4;
	u4Byte			OFDM_TXSC:2;
	u4Byte			Reserved:2;
}R_ANTENNA_SELECT_OFDM;

typedef struct _R_ANTENNA_SELECT_CCK{
	u1Byte			r_cckrx_enable_2:2;	
	u1Byte			r_cckrx_enable:2;
	u1Byte			r_ccktx_enable:4;
}R_ANTENNA_SELECT_CCK;


#ifdef REMOVE_PACK
#pragma pack()
#endif


typedef struct RF_Shadow_Compare_Map {
	// Shadow register value
	UINT32		Value;
	// Compare or not flag
	UINT8		Compare;
	// Record If it had ever modified unpredicted
	UINT8		ErrorOrNot;
	// Recorver Flag
	UINT8		Recorver;
	//
	UINT8		Driver_Write;
}RF_SHADOW_T;

/*------------------------------Define structure----------------------------*/ 


/*------------------------Export global variable----------------------------*/
/*------------------------Export global variable----------------------------*/

/*------------------------Export Marco Definition---------------------------*/

/*------------------------Export Marco Definition---------------------------*/


/*--------------------------Exported Function prototype---------------------*/


u4Byte
PHY_CalculateBitShift(
	u4Byte BitMask
	);

VOID
PHY_SetMacReg(
	IN	PADAPTER	Adapter,
	IN	u4Byte		RegAddr,
	IN	u4Byte		BitMask,
	IN	u4Byte		Data
	);

u4Byte
PHY_QueryMacReg(
	IN	PADAPTER	Adapter,
	IN	u4Byte		RegAddr,
	IN	u4Byte		BitMask
	);

u4Byte
PHY_QueryBBReg(
	IN	PADAPTER	Adapter,
	IN	u4Byte		RegAddr,
	IN	u4Byte		BitMask
	);

VOID
PHY_SetBBReg(
	IN	PADAPTER	Adapter,
	IN	u4Byte		RegAddr,
	IN	u4Byte		BitMask,
	IN	u4Byte		Data
	);

VOID
PHY_SetBBReg1Byte(
	IN	PADAPTER	Adapter,
	IN	u4Byte		RegAddr,
	IN	u4Byte		BitMask,
	IN	u4Byte		Data
	);


u4Byte
PHY_QueryRFReg(
	IN	PADAPTER			Adapter,
	IN	u1Byte				eRFPath,
	IN	u4Byte				RegAddr,
	IN	u4Byte				BitMask
	);

VOID
PHY_SetRFReg(
	IN	PADAPTER			Adapter,
	IN	u1Byte				eRFPath,
	IN	u4Byte				RegAddr,
	IN	u4Byte				BitMask,
	IN	u4Byte				Data
	);

//
// RF Shadow operation relative API
//
u4Byte
PHY_RFShadowRead(
	IN	PADAPTER			Adapter,
	IN	u1Byte				eRFPath,
	IN	u4Byte				Offset);

VOID
PHY_RFShadowWrite(
	IN	PADAPTER			Adapter,
	IN	u1Byte				eRFPath,
	IN	u4Byte				Offset,
	IN	u4Byte				Data);

BOOLEAN
PHY_RFShadowCompare(
	IN	PADAPTER			Adapter,
	IN	u1Byte				eRFPath,
	IN	u4Byte				Offset);

VOID
PHY_RFShadowRecorver(
	IN	PADAPTER			Adapter,
	IN	u1Byte				eRFPath,
	IN	u4Byte				Offset);

VOID
PHY_RFShadowCompareAll(
	IN	PADAPTER			Adapter);

VOID
PHY_RFShadowRecorverAll(
	IN	PADAPTER			Adapter);

VOID
PHY_RFShadowCompareFlagSet(
	IN	PADAPTER			Adapter,
	IN	u1Byte				eRFPath,
	IN	u4Byte				Offset,
	IN	u1Byte				Type);

VOID
PHY_RFShadowRecorverFlagSet(
	IN	PADAPTER			Adapter,
	IN	u1Byte				eRFPath,
	IN	u4Byte				Offset,
	IN	u1Byte				Type);

VOID
PHY_RFShadowCompareFlagSetAll(
	IN	PADAPTER			Adapter);

VOID
PHY_RFShadowRecorverFlagSetAll(
	IN	PADAPTER			Adapter);

VOID
PHY_RFShadowRefresh(
	IN	PADAPTER			Adapter);


#endif