summaryrefslogtreecommitdiff
path: root/network/wlan/WDI/HAL/HalComPhyCfg.h
blob: 0af6b8d5fbde3c6ebc22342f588b62a8637b4da7 (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
/*****************************************************************************
 *	Copyright(c) 2008,  RealTEK Technology Inc. All Right Reserved.
 *
 * Module:	__INC_HALCOMPHYCFG_H
 *
 *
 * Note:	
 *			
 *
 * Export:	Constants, macro, functions(API), global variables(None).
 *
 * Abbrev:	
 *
 * History:
 *		Data		Who		Remark 
 *      08/07/2007  MHC    	1. Porting from 9x series PHYCFG.h.
 *							2. Reorganize code architecture.
 * 
 *****************************************************************************/
 /* Check to see if the file has been included already.  */
#ifndef __INC_HALCOMPHYCFG_H
#define __INC_HALCOMPHYCFG_H


//for PutRegsetting & GetRegSetting BitMask
#define		bMaskLowNibble			0xf
#define		bMaskHighNibble			0xf0
#define		bMaskByte2HighNibble	0x00f00000
#define		bMaskByte3LowNibble	0x0f000000
#define		bMaskL3Bytes			0x00ffffff
#define		bMaskByte0                	0xff	// Reg 0xc50 rOFDM0_XAAGCCore~0xC6f
#define		bMaskByte1                	0xff00
#define		bMaskByte2                	0xff0000
#define		bMaskByte3                	0xff000000
#define		bMaskHWord                	0xffff0000
#define		bMaskLWord                	0x0000ffff
#define		bMaskDWord                	0xffffffff
#define		bMask12Bits				0xfff	
#define		bMask7bits				0x7f
#define		bMaskH4Bits				0xf0000000	
#define		bMaskOFDM_D			0xffc00000
#define		bMaskCCK				0x3f3f3f3f

#define 		bRFRegOffsetMask		0xfffff		


typedef enum _RATE_SECTION {
	CCK = 0,
	OFDM,
	HT_MCS0_MCS7,
	HT_MCS8_MCS15,
	HT_MCS16_MCS23,
	HT_MCS24_MCS31,	
	VHT_1SSMCS0_1SSMCS9,
	VHT_2SSMCS0_2SSMCS9,
	VHT_3SSMCS0_3SSMCS9,
	VHT_4SSMCS0_4SSMCS9,
} RATE_SECTION;

typedef enum _RF_TX_NUM {
	RF_1TX = 0,
	RF_2TX,
	RF_3TX,
	RF_4TX,
	RF_MAX_TX_NUM,
	RF_TX_NUM_NONIMPLEMENT,
} RF_TX_NUM;
	
/*--------------------------Define Parameters-------------------------------*/

#define MAX_DOZE_WAITING_TIMES_9x	64

#define MAX_TXPWR_IDX_NMODE		63

#define HP_THERMAL_NUM			8



/* Channel switch:The size of command tables for switch channel*/
#define MAX_PRECMD_CNT		16
#define MAX_RFDEPENDCMD_CNT 16
#define MAX_POSTCMD_CNT 16


// Tx Power Limit Table Size
#define MAX_REGULATION_NUM						4
#define MAX_RF_PATH_NUM_IN_POWER_LIMIT_TABLE	4
#define MAX_2_4G_BANDWITH_NUM					2
#define MAX_RATE_SECTION_NUM					10
#define MAX_5G_BANDWITH_NUM						4
#define MAX_BASE_NUM_IN_PHY_REG_PG_2_4G			10 //  CCK:1, OFDM:1, HT:4, VHT:4
#define MAX_BASE_NUM_IN_PHY_REG_PG_5G			9 // OFDM:1, HT:4, VHT:4

/*------------------------------Define structure----------------------------*/ 
typedef struct _BB_REGISTER_DEFINITION{
	u4Byte rfintfs;			// set software control: 
							//		0x870~0x877[8 bytes]
							
	u4Byte rfintfo; 		// output data: 
							//		0x860~0x86f [16 bytes]
							
	u4Byte rfintfe; 		// output enable: 
							//		0x860~0x86f [16 bytes]
							
	u4Byte rf3wireOffset;	// LSSI data:
							//		0x840~0x84f [16 bytes]

	u4Byte rfHSSIPara2; 	// wire parameter control2 : 
							//		0x824~0x827,0x82c~0x82f, 0x834~0x837, 0x83c~0x83f [16 bytes]
								
	u4Byte rfLSSIReadBack; 	//LSSI RF readback data SI mode
								//		0x8a0~0x8af [16 bytes]

	u4Byte rfLSSIReadBackPi; 	//LSSI RF readback data PI mode 0x8b8-8bc for Path A and B

}BB_REGISTER_DEFINITION_T, *PBB_REGISTER_DEFINITION_T;

//
// <Roger_TODO> We should take RTL8723B into consideration, 2012.10.08
//
#define phy_BB_Config_ParaFile(_Adapter)  \
	(IS_HARDWARE_TYPE_8821B(_Adapter))?phy_BB8821B_Config_ParaFile(_Adapter):\
	(IS_HARDWARE_TYPE_8814A(_Adapter))?phy_BB8814A_Config_ParaFile(_Adapter):\
	(IS_HARDWARE_TYPE_8812A(_Adapter))?phy_BB8812A_Config_ParaFile(_Adapter):\
	(IS_HARDWARE_TYPE_8821(_Adapter))?phy_BB8821A_Config_ParaFile(_Adapter):\
	(IS_HARDWARE_TYPE_8723B(_Adapter))?phy_BB8723B_Config_ParaFile(_Adapter):\
	(IS_HARDWARE_TYPE_8723D(_Adapter))?phy_BB8723D_Config_ParaFile(_Adapter):\
	(IS_HARDWARE_TYPE_8703B(_Adapter))?phy_BB8703B_Config_ParaFile(_Adapter):\
	(IS_HARDWARE_TYPE_8188F(_Adapter))?phy_BB8188F_Config_ParaFile(_Adapter):\
	(IS_HARDWARE_TYPE_8188E(_Adapter)? phy_BB8188E_Config_ParaFile(_Adapter) :\
	(IS_HARDWARE_TYPE_8822B(_Adapter))?PHY_BB8822B_Config_ParaFile(_Adapter):\
	(IS_HARDWARE_TYPE_8192E(_Adapter)?phy_BB8192E_Config_ParaFile(_Adapter):\
	phy_BB8723B_Config_ParaFile(_Adapter)))

#define PHY_GetTxPowerIndex( pAdapter, RFPath, Rate, BandWidth, Channel ) \
	(IS_HARDWARE_TYPE_8814A(pAdapter)) ? PHY_GetTxPowerIndex_8814A( pAdapter, RFPath, Rate, BandWidth, Channel ):\
	(IS_HARDWARE_TYPE_8821B(pAdapter)) ? PHY_GetTxPowerIndex_8821B( pAdapter, RFPath, Rate, BandWidth, Channel ):\
	(IS_HARDWARE_TYPE_8822B(pAdapter)) ? PHY_GetTxPowerIndex_8822B( pAdapter, RFPath, Rate, BandWidth, Channel ):\
	(IS_HARDWARE_TYPE_8812A(pAdapter)) ? PHY_GetTxPowerIndex_8812A( pAdapter, RFPath, Rate, BandWidth, Channel ):\
	(IS_HARDWARE_TYPE_8821A(pAdapter)) ? PHY_GetTxPowerIndex_8821A( pAdapter, RFPath, Rate, BandWidth, Channel ):\
	(IS_HARDWARE_TYPE_8723B(pAdapter)) ? PHY_GetTxPowerIndex_8723B( pAdapter, RFPath, Rate, BandWidth, Channel ):\
	(IS_HARDWARE_TYPE_8703B(pAdapter)) ? PHY_GetTxPowerIndex_8703B( pAdapter, RFPath, Rate, BandWidth, Channel ):\
	(IS_HARDWARE_TYPE_8188F(pAdapter)) ? PHY_GetTxPowerIndex_8188F( pAdapter, RFPath, Rate, BandWidth, Channel ):\
	(IS_HARDWARE_TYPE_8192E(pAdapter)) ? PHY_GetTxPowerIndex_8192E( pAdapter, RFPath, Rate, BandWidth, Channel ):\
	(IS_HARDWARE_TYPE_8723D(pAdapter)) ? PHY_GetTxPowerIndex_8723D( pAdapter, RFPath, Rate, BandWidth, Channel ):\
	(IS_HARDWARE_TYPE_8188E(pAdapter)) ? PHY_GetTxPowerIndex_8188E( pAdapter, RFPath, Rate, BandWidth, Channel ):0\

#define PHY_SetTxPowerIndex( pAdapter, PowerIndex, RFPath, Rate ) \
	do { \
	PHY_SetTxPowerIndexShadow( pAdapter, PowerIndex, RFPath, Rate );\
	if (IS_HARDWARE_TYPE_8814A(pAdapter)) PHY_SetTxPowerIndex_8814A( pAdapter, PowerIndex, RFPath, Rate );\
	else if (IS_HARDWARE_TYPE_8821B(pAdapter)) PHY_SetTxPowerIndex_8821B( pAdapter, PowerIndex, RFPath, Rate );\
	else if (IS_HARDWARE_TYPE_8822B(pAdapter)) PHY_SetTxPowerIndex_8822B( pAdapter, PowerIndex, RFPath, Rate );\
	else if (IS_HARDWARE_TYPE_8812A(pAdapter)) PHY_SetTxPowerIndex_8812A( pAdapter, PowerIndex, RFPath, Rate );\
	else if (IS_HARDWARE_TYPE_8821A(pAdapter)) PHY_SetTxPowerIndex_8821A( pAdapter, PowerIndex, RFPath, Rate );\
	else if (IS_HARDWARE_TYPE_8723B(pAdapter)) PHY_SetTxPowerIndex_8723B( pAdapter, PowerIndex, RFPath, Rate );\
	else if (IS_HARDWARE_TYPE_8703B(pAdapter)) PHY_SetTxPowerIndex_8703B( pAdapter, PowerIndex, RFPath, Rate );\
	else if (IS_HARDWARE_TYPE_8188F(pAdapter)) PHY_SetTxPowerIndex_8188F( pAdapter, PowerIndex, RFPath, Rate );\
	else if (IS_HARDWARE_TYPE_8192E(pAdapter)) PHY_SetTxPowerIndex_8192E( pAdapter, PowerIndex, RFPath, Rate );\
	else if (IS_HARDWARE_TYPE_8723D(pAdapter)) PHY_SetTxPowerIndex_8723D( pAdapter, PowerIndex, RFPath, Rate );\
	else if (IS_HARDWARE_TYPE_8188E(pAdapter)) PHY_SetTxPowerIndex_8188E( pAdapter, PowerIndex, RFPath, Rate );\
	}while(0)

//----------------------------------------------------------------------
//  Initial MAC/BB/RF config by reading MAC/BB/RF txt.
//----------------------------------------------------------------------

//----------------------------------------------------------------------
//  Initial MAC/BB/RF config by reading Hard Code.
//----------------------------------------------------------------------		
		
RT_STATUS
phy_ConfigBBWithHeaderFile(
	IN	PADAPTER		Adapter,
	IN	u1Byte 			ConfigType
);
													
RT_STATUS
PHY_ConfigRFWithHeaderFile(
	IN	PADAPTER			Adapter,
	IN	RF_CONTENT			Content,
	IN	u1Byte				eRFPath
);


RT_STATUS
phy_ConfigBBWithPgParaFile(
	IN	PADAPTER		Adapter,
	IN	ps1Byte 		pFileName
);

RT_STATUS
PHY_ConfigRFWithPowerLimitTableParaFile(
	IN	PADAPTER			Adapter,
	IN	ps1Byte 			pFileName
);

RT_STATUS
PHY_ConfigRFWithCustomPowerLimitTableParaFile(
	IN	PADAPTER			Adapter,
	IN	pu1Byte 			pFileName,
	IN  BOOLEAN				checkInit
);

RT_STATUS
PHY_ConfigBBWithCustomPgParaFile(
	IN	PADAPTER			Adapter,
	IN	pu1Byte 			pFileName,
	IN  BOOLEAN				checkInit
);




//----------------------------------------------------------------------
//  Initial MAC/BB config from File or Hard Code.
//----------------------------------------------------------------------
RT_STATUS
PHY_MACConfig(
	IN	PADAPTER	Adapter
);
	
RT_STATUS
PHY_BBConfig(
	IN	PADAPTER	Adapter
);

//----------------------------------------------------------------------
s4Byte
phy_TxPwrIdxToDbm(
	IN	PADAPTER		Adapter,
	IN	WIRELESS_MODE	WirelessMode,
	IN	u1Byte			TxPwrIdx	
	);


u1Byte
PHY_DbmToTxPwrIdx(
	IN	PADAPTER		Adapter,
	IN	WIRELESS_MODE	WirelessMode,
	IN	s4Byte			PowerInDbm
	);

RT_CHANNEL_DOMAIN
PHY_MapChannelPlan(
	IN	PADAPTER		Adapter,
	IN	u2Byte			HalChannelPlan
	);

void 
SINGLEMODULE_MAPFUN(	
	IN  PADAPTER 	Adapter,
	IN  u2Byte 		Regchannelplane,
	IN	u1Byte		RegEnableAdaptivity,
	IN 	u2Byte		RegHTMode
	);

VOID
PHY_MapChnlPlanRegulatory(
	IN	PADAPTER		Adapter
	);

VOID
PHY_IQCalibrate(
	IN	PADAPTER 	Adapter,
	IN	BOOLEAN 	bReCovery
	);	


VOID
PHY_SetTxPowerIndexShadow(
	IN	PADAPTER			Adapter,
	IN	u4Byte				PowerIndex,
	IN	u1Byte				RFPath,	
	IN	u1Byte				Rate
	);

u1Byte
PHY_GetTxPowerIndexShadow(
	IN	PADAPTER			Adapter,
	IN	u1Byte				RFPath,	
	IN	u1Byte				Rate
	);

VOID
PHY_LCCalibrate_Dummy(
    IN PDM_ODM_T		pDM_Odm
    );

#define PHY_LCCalibrate(pDM_Odm)	\
	(pDM_Odm->SupportICType == ODM_RTL8723B) ? PHY_LCCalibrate_8723B(pDM_Odm) :\
    PHY_LCCalibrate_Dummy(pDM_Odm)

#define PHY_SetRFPathSwitch(_Adapter,_bMain)	\
	(IS_HARDWARE_TYPE_8814A(_Adapter))  ? PHY_SetRFPathSwitch_8814A(_Adapter,_bMain) :\
	(IS_HARDWARE_TYPE_8821B(_Adapter))  ? PHY_SetRFPathSwitch_8821B(_Adapter,_bMain) :\
	(IS_HARDWARE_TYPE_8822B(_Adapter))  ? PHY_SetRFPathSwitch_8822B(_Adapter,_bMain) :\
	(IS_HARDWARE_TYPE_8723B(_Adapter))  ? PHY_SetRFPathSwitch_8723B(_Adapter,_bMain) :\
	(IS_HARDWARE_TYPE_8703B(_Adapter))  ? PHY_SetRFPathSwitch_8703B(_Adapter,_bMain) :\
	(IS_HARDWARE_TYPE_8723D(_Adapter))  ? PHY_SetRFPathSwitch_8723D(_Adapter,_bMain) :\
	(IS_HARDWARE_TYPE_8192E(_Adapter))  ? PHY_SetRFPathSwitch_8192E(_Adapter,_bMain) :\
    (IS_HARDWARE_TYPE_JAGUAR(_Adapter)) ? PHY_SetRFPathSwitch_8812A(_Adapter,_bMain) :\
    (IS_HARDWARE_TYPE_8188E(_Adapter))  ? PHY_SetRFPathSwitch_8188E(_Adapter,_bMain) :\
    (IS_HARDWARE_TYPE_8188F(_Adapter))  ? PHY_SetRFPathSwitch_8188F(_Adapter,_bMain) : 0

#define PHY_QueryRFPathSwitch(_Adapter)	\
    (IS_HARDWARE_TYPE_8814A(_Adapter))  ? PHY_QueryRFPathSwitch_8814A(_Adapter) :\
    (IS_HARDWARE_TYPE_8821B(_Adapter))  ? PHY_QueryRFPathSwitch_8821B(_Adapter) :\
    (IS_HARDWARE_TYPE_8822B(_Adapter))  ? PHY_QueryRFPathSwitch_8822B(_Adapter) :\
    (IS_HARDWARE_TYPE_8723B(_Adapter))  ? PHY_QueryRFPathSwitch_8723B(_Adapter) :\
    (IS_HARDWARE_TYPE_8723D(_Adapter))  ? PHY_QueryRFPathSwitch_8723D(_Adapter) :\
     (IS_HARDWARE_TYPE_8703B(_Adapter))  ? PHY_QueryRFPathSwitch_8703B(_Adapter) :\
    (IS_HARDWARE_TYPE_8192E(_Adapter))  ? PHY_QueryRFPathSwitch_8192E(_Adapter) :\
    (IS_HARDWARE_TYPE_8812A(_Adapter)) ? PHY_QueryRFPathSwitch_8812(_Adapter) :\
    (IS_HARDWARE_TYPE_8821A(_Adapter)) ? PHY_QueryRFPathSwitch_8821A(_Adapter) :\
    (IS_HARDWARE_TYPE_8188E(_Adapter))  ? PHY_QueryRFPathSwitch_8188E(_Adapter) :\
    (IS_HARDWARE_TYPE_8188F(_Adapter))  ? PHY_QueryRFPathSwitch_8188F(_Adapter): 0


typedef struct __RT_SINGLEMODULE_ENTRY
{
	u4Byte 		country_code;	 
	u2Byte 		Regchannelplane;
	u1Byte		RegEnableAdaptivity;
	u2Byte		RegHTMode;

	void (*Func)(							// The  handler function
		IN  PADAPTER 	pAdapter,
		IN  u2Byte 		Regchannelplane,
		IN	u1Byte		RegEnableAdaptivity,
		IN 	u2Byte		RegHTMode
		);

}RT_SINGLEMODULE_ENTRY;

extern RT_SINGLEMODULE_ENTRY RT_SUPPORT_COUNTRY[];
extern u4Byte	GLNumOfSupportCountry;
/*--------------------------Exported Function prototype---------------------*/

#endif	// __INC_HALCOMPHYCFG_H