1554c0a3aSHans de Goede /******************************************************************************
2554c0a3aSHans de Goede  *
3554c0a3aSHans de Goede  * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
4554c0a3aSHans de Goede  *
5554c0a3aSHans de Goede  * This program is free software; you can redistribute it and/or modify it
6554c0a3aSHans de Goede  * under the terms of version 2 of the GNU General Public License as
7554c0a3aSHans de Goede  * published by the Free Software Foundation.
8554c0a3aSHans de Goede  *
9554c0a3aSHans de Goede  * This program is distributed in the hope that it will be useful, but WITHOUT
10554c0a3aSHans de Goede  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11554c0a3aSHans de Goede  * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
12554c0a3aSHans de Goede  * more details.
13554c0a3aSHans de Goede  *
14554c0a3aSHans de Goede  ******************************************************************************/
15554c0a3aSHans de Goede #ifndef	__RTW_RF_H_
16554c0a3aSHans de Goede #define __RTW_RF_H_
17554c0a3aSHans de Goede 
18554c0a3aSHans de Goede 
19554c0a3aSHans de Goede #define OFDM_PHY		1
20554c0a3aSHans de Goede #define MIXED_PHY		2
21554c0a3aSHans de Goede #define CCK_PHY			3
22554c0a3aSHans de Goede 
23554c0a3aSHans de Goede #define NumRates		13
24554c0a3aSHans de Goede 
25554c0a3aSHans de Goede /*  slot time for 11g */
26554c0a3aSHans de Goede #define SHORT_SLOT_TIME		9
27554c0a3aSHans de Goede #define NON_SHORT_SLOT_TIME	20
28554c0a3aSHans de Goede 
29554c0a3aSHans de Goede #define RTL8711_RF_MAX_SENS	 6
30554c0a3aSHans de Goede #define RTL8711_RF_DEF_SENS	 4
31554c0a3aSHans de Goede 
32554c0a3aSHans de Goede /*  */
33554c0a3aSHans de Goede /*  We now define the following channels as the max channels in each channel plan. */
34554c0a3aSHans de Goede /*  2G, total 14 chnls */
35554c0a3aSHans de Goede /*  {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14} */
36554c0a3aSHans de Goede /*  5G, total 24 chnls */
37554c0a3aSHans de Goede /*  {36, 40, 44, 48, 52, 56, 60, 64, 100, 104, 108, 112, 116, 120,
38554c0a3aSHans de Goede  *   124, 128, 132, 136, 140, 149, 153, 157, 161, 165} */
39554c0a3aSHans de Goede #define	MAX_CHANNEL_NUM_2G	14
40554c0a3aSHans de Goede #define	MAX_CHANNEL_NUM_5G	24
41554c0a3aSHans de Goede #define	MAX_CHANNEL_NUM		38/* 14+24 */
42554c0a3aSHans de Goede 
43554c0a3aSHans de Goede #define NUM_REGULATORYS	1
44554c0a3aSHans de Goede 
45554c0a3aSHans de Goede /* Country codes */
46554c0a3aSHans de Goede #define USA			0x555320
47554c0a3aSHans de Goede #define EUROPE			0x1 /* temp, should be provided later */
48554c0a3aSHans de Goede #define JAPAN			0x2 /* temp, should be provided later */
49554c0a3aSHans de Goede 
50554c0a3aSHans de Goede struct	regulatory_class {
51554c0a3aSHans de Goede 	u32 starting_freq;			/* MHz, */
52554c0a3aSHans de Goede 	u8 channel_set[MAX_CHANNEL_NUM];
53554c0a3aSHans de Goede 	u8 channel_cck_power[MAX_CHANNEL_NUM];/* dbm */
54554c0a3aSHans de Goede 	u8 channel_ofdm_power[MAX_CHANNEL_NUM];/* dbm */
55554c0a3aSHans de Goede 	u8 txpower_limit;			/* dbm */
56554c0a3aSHans de Goede 	u8 channel_spacing;			/* MHz */
57554c0a3aSHans de Goede 	u8 modem;
58554c0a3aSHans de Goede };
59554c0a3aSHans de Goede 
60554c0a3aSHans de Goede enum CAPABILITY {
61554c0a3aSHans de Goede 	cESS			= 0x0001,
62554c0a3aSHans de Goede 	cIBSS			= 0x0002,
63554c0a3aSHans de Goede 	cPollable		= 0x0004,
64554c0a3aSHans de Goede 	cPollReq		= 0x0008,
65554c0a3aSHans de Goede 	cPrivacy		= 0x0010,
66554c0a3aSHans de Goede 	cShortPreamble		= 0x0020,
67554c0a3aSHans de Goede 	cPBCC			= 0x0040,
68554c0a3aSHans de Goede 	cChannelAgility		= 0x0080,
69554c0a3aSHans de Goede 	cSpectrumMgnt		= 0x0100,
70554c0a3aSHans de Goede 	cQos			= 0x0200,	/*  For HCCA, use with CF-Pollable and CF-PollReq */
71554c0a3aSHans de Goede 	cShortSlotTime		= 0x0400,
72554c0a3aSHans de Goede 	cAPSD			= 0x0800,
73554c0a3aSHans de Goede 	cRM			= 0x1000,	/*  RRM (Radio Request Measurement) */
74554c0a3aSHans de Goede 	cDSSS_OFDM		= 0x2000,
75554c0a3aSHans de Goede 	cDelayedBA		= 0x4000,
76554c0a3aSHans de Goede 	cImmediateBA		= 0x8000,
77554c0a3aSHans de Goede };
78554c0a3aSHans de Goede 
79554c0a3aSHans de Goede enum	_REG_PREAMBLE_MODE {
80554c0a3aSHans de Goede 	PREAMBLE_LONG	= 1,
81554c0a3aSHans de Goede 	PREAMBLE_AUTO	= 2,
82554c0a3aSHans de Goede 	PREAMBLE_SHORT	= 3,
83554c0a3aSHans de Goede };
84554c0a3aSHans de Goede 
85554c0a3aSHans de Goede enum _RTL8712_RF_MIMO_CONFIG_ {
86554c0a3aSHans de Goede 	RTL8712_RFCONFIG_1T = 0x10,
87554c0a3aSHans de Goede 	RTL8712_RFCONFIG_2T = 0x20,
88554c0a3aSHans de Goede 	RTL8712_RFCONFIG_1R = 0x01,
89554c0a3aSHans de Goede 	RTL8712_RFCONFIG_2R = 0x02,
90554c0a3aSHans de Goede 	RTL8712_RFCONFIG_1T1R = 0x11,
91554c0a3aSHans de Goede 	RTL8712_RFCONFIG_1T2R = 0x12,
92554c0a3aSHans de Goede 	RTL8712_RFCONFIG_TURBO = 0x92,
93554c0a3aSHans de Goede 	RTL8712_RFCONFIG_2T2R = 0x22
94554c0a3aSHans de Goede };
95554c0a3aSHans de Goede 
96554c0a3aSHans de Goede enum RF90_RADIO_PATH {
97554c0a3aSHans de Goede 	RF90_PATH_A = 0,		/* Radio Path A */
98554c0a3aSHans de Goede 	RF90_PATH_B = 1,		/* Radio Path B */
99554c0a3aSHans de Goede 	RF90_PATH_C = 2,		/* Radio Path C */
100554c0a3aSHans de Goede 	RF90_PATH_D = 3			/* Radio Path D */
101554c0a3aSHans de Goede };
102554c0a3aSHans de Goede 
103554c0a3aSHans de Goede /*  Bandwidth Offset */
104554c0a3aSHans de Goede #define HAL_PRIME_CHNL_OFFSET_DONT_CARE	0
105554c0a3aSHans de Goede #define HAL_PRIME_CHNL_OFFSET_LOWER	1
106554c0a3aSHans de Goede #define HAL_PRIME_CHNL_OFFSET_UPPER	2
107554c0a3aSHans de Goede 
108554c0a3aSHans de Goede /*  Represent Channel Width in HT Capabilities */
109554c0a3aSHans de Goede enum CHANNEL_WIDTH {
110554c0a3aSHans de Goede 	CHANNEL_WIDTH_20 = 0,
111554c0a3aSHans de Goede 	CHANNEL_WIDTH_40 = 1,
112554c0a3aSHans de Goede 	CHANNEL_WIDTH_80 = 2,
113554c0a3aSHans de Goede 	CHANNEL_WIDTH_160 = 3,
114554c0a3aSHans de Goede 	CHANNEL_WIDTH_80_80 = 4,
115554c0a3aSHans de Goede 	CHANNEL_WIDTH_MAX = 5,
116554c0a3aSHans de Goede };
117554c0a3aSHans de Goede 
118554c0a3aSHans de Goede /*  Represent Extension Channel Offset in HT Capabilities */
119554c0a3aSHans de Goede /*  This is available only in 40Mhz mode. */
120554c0a3aSHans de Goede enum EXTCHNL_OFFSET {
121554c0a3aSHans de Goede 	EXTCHNL_OFFSET_NO_EXT = 0,
122554c0a3aSHans de Goede 	EXTCHNL_OFFSET_UPPER = 1,
123554c0a3aSHans de Goede 	EXTCHNL_OFFSET_NO_DEF = 2,
124554c0a3aSHans de Goede 	EXTCHNL_OFFSET_LOWER = 3,
125554c0a3aSHans de Goede };
126554c0a3aSHans de Goede 
127554c0a3aSHans de Goede enum VHT_DATA_SC {
128554c0a3aSHans de Goede 	VHT_DATA_SC_DONOT_CARE = 0,
129554c0a3aSHans de Goede 	VHT_DATA_SC_20_UPPER_OF_80MHZ = 1,
130554c0a3aSHans de Goede 	VHT_DATA_SC_20_LOWER_OF_80MHZ = 2,
131554c0a3aSHans de Goede 	VHT_DATA_SC_20_UPPERST_OF_80MHZ = 3,
132554c0a3aSHans de Goede 	VHT_DATA_SC_20_LOWEST_OF_80MHZ = 4,
133554c0a3aSHans de Goede 	VHT_DATA_SC_20_RECV1 = 5,
134554c0a3aSHans de Goede 	VHT_DATA_SC_20_RECV2 = 6,
135554c0a3aSHans de Goede 	VHT_DATA_SC_20_RECV3 = 7,
136554c0a3aSHans de Goede 	VHT_DATA_SC_20_RECV4 = 8,
137554c0a3aSHans de Goede 	VHT_DATA_SC_40_UPPER_OF_80MHZ = 9,
138554c0a3aSHans de Goede 	VHT_DATA_SC_40_LOWER_OF_80MHZ = 10,
139554c0a3aSHans de Goede };
140554c0a3aSHans de Goede 
141554c0a3aSHans de Goede enum PROTECTION_MODE {
142554c0a3aSHans de Goede 	PROTECTION_MODE_AUTO = 0,
143554c0a3aSHans de Goede 	PROTECTION_MODE_FORCE_ENABLE = 1,
144554c0a3aSHans de Goede 	PROTECTION_MODE_FORCE_DISABLE = 2,
145554c0a3aSHans de Goede };
146554c0a3aSHans de Goede 
147554c0a3aSHans de Goede /* 2007/11/15 MH Define different RF type. */
148554c0a3aSHans de Goede enum RT_RF_TYPE_DEFINITION {
149554c0a3aSHans de Goede 	RF_1T2R = 0,
150554c0a3aSHans de Goede 	RF_2T4R = 1,
151554c0a3aSHans de Goede 	RF_2T2R = 2,
152554c0a3aSHans de Goede 	RF_1T1R = 3,
153554c0a3aSHans de Goede 	RF_2T2R_GREEN = 4,
154554c0a3aSHans de Goede 	RF_MAX_TYPE = 5,
155554c0a3aSHans de Goede };
156554c0a3aSHans de Goede 
157554c0a3aSHans de Goede u32 rtw_ch2freq(u32 ch);
158554c0a3aSHans de Goede 
159554c0a3aSHans de Goede #endif /* _RTL8711_RF_H_ */
160