1fff3340fc0fa032034016662d3d047ae152f1f8dLarry Finger/******************************************************************************
2fff3340fc0fa032034016662d3d047ae152f1f8dLarry Finger *
3fff3340fc0fa032034016662d3d047ae152f1f8dLarry Finger * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
4fff3340fc0fa032034016662d3d047ae152f1f8dLarry Finger *
5fff3340fc0fa032034016662d3d047ae152f1f8dLarry Finger * This program is free software; you can redistribute it and/or modify it
6fff3340fc0fa032034016662d3d047ae152f1f8dLarry Finger * under the terms of version 2 of the GNU General Public License as
7fff3340fc0fa032034016662d3d047ae152f1f8dLarry Finger * published by the Free Software Foundation.
8fff3340fc0fa032034016662d3d047ae152f1f8dLarry Finger *
9fff3340fc0fa032034016662d3d047ae152f1f8dLarry Finger * This program is distributed in the hope that it will be useful, but WITHOUT
10fff3340fc0fa032034016662d3d047ae152f1f8dLarry Finger * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11fff3340fc0fa032034016662d3d047ae152f1f8dLarry Finger * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
12fff3340fc0fa032034016662d3d047ae152f1f8dLarry Finger * more details.
13fff3340fc0fa032034016662d3d047ae152f1f8dLarry Finger *
14fff3340fc0fa032034016662d3d047ae152f1f8dLarry Finger * You should have received a copy of the GNU General Public License along with
15fff3340fc0fa032034016662d3d047ae152f1f8dLarry Finger * this program; if not, write to the Free Software Foundation, Inc.,
16fff3340fc0fa032034016662d3d047ae152f1f8dLarry Finger * 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
17fff3340fc0fa032034016662d3d047ae152f1f8dLarry Finger *
18fff3340fc0fa032034016662d3d047ae152f1f8dLarry Finger *
19fff3340fc0fa032034016662d3d047ae152f1f8dLarry Finger ******************************************************************************/
20fff3340fc0fa032034016662d3d047ae152f1f8dLarry Finger#ifndef	__RTW_RF_H_
21fff3340fc0fa032034016662d3d047ae152f1f8dLarry Finger#define __RTW_RF_H_
22fff3340fc0fa032034016662d3d047ae152f1f8dLarry Finger
23fff3340fc0fa032034016662d3d047ae152f1f8dLarry Finger#include <rtw_cmd.h>
24fff3340fc0fa032034016662d3d047ae152f1f8dLarry Finger
25fff3340fc0fa032034016662d3d047ae152f1f8dLarry Finger#define OFDM_PHY		1
26fff3340fc0fa032034016662d3d047ae152f1f8dLarry Finger#define MIXED_PHY		2
27fff3340fc0fa032034016662d3d047ae152f1f8dLarry Finger#define CCK_PHY		3
28fff3340fc0fa032034016662d3d047ae152f1f8dLarry Finger
29fff3340fc0fa032034016662d3d047ae152f1f8dLarry Finger#define NumRates	(13)
30fff3340fc0fa032034016662d3d047ae152f1f8dLarry Finger
31fff3340fc0fa032034016662d3d047ae152f1f8dLarry Finger/*  slot time for 11g */
32fff3340fc0fa032034016662d3d047ae152f1f8dLarry Finger#define SHORT_SLOT_TIME			9
33fff3340fc0fa032034016662d3d047ae152f1f8dLarry Finger#define NON_SHORT_SLOT_TIME		20
34fff3340fc0fa032034016662d3d047ae152f1f8dLarry Finger
35fff3340fc0fa032034016662d3d047ae152f1f8dLarry Finger#define RTL8711_RF_MAX_SENS		6
36fff3340fc0fa032034016662d3d047ae152f1f8dLarry Finger#define RTL8711_RF_DEF_SENS		4
37fff3340fc0fa032034016662d3d047ae152f1f8dLarry Finger
38fff3340fc0fa032034016662d3d047ae152f1f8dLarry Finger/*  We now define the following channels as the max channels in each
39fff3340fc0fa032034016662d3d047ae152f1f8dLarry Finger * channel plan. */
40fff3340fc0fa032034016662d3d047ae152f1f8dLarry Finger/*  2G, total 14 chnls */
41fff3340fc0fa032034016662d3d047ae152f1f8dLarry Finger/*  {1,2,3,4,5,6,7,8,9,10,11,12,13,14} */
42fff3340fc0fa032034016662d3d047ae152f1f8dLarry Finger#define	MAX_CHANNEL_NUM_2G		14
43fff3340fc0fa032034016662d3d047ae152f1f8dLarry Finger#define	MAX_CHANNEL_NUM			14	/* 2.4 GHz only */
44fff3340fc0fa032034016662d3d047ae152f1f8dLarry Finger
45fff3340fc0fa032034016662d3d047ae152f1f8dLarry Finger#define NUM_REGULATORYS	1
46fff3340fc0fa032034016662d3d047ae152f1f8dLarry Finger
47fff3340fc0fa032034016662d3d047ae152f1f8dLarry Finger/* Country codes */
48fff3340fc0fa032034016662d3d047ae152f1f8dLarry Finger#define USA				0x555320
49fff3340fc0fa032034016662d3d047ae152f1f8dLarry Finger#define EUROPE				0x1 /* temp, should be provided later */
50fff3340fc0fa032034016662d3d047ae152f1f8dLarry Finger#define JAPAN				0x2 /* temp, should be provided later */
51fff3340fc0fa032034016662d3d047ae152f1f8dLarry Finger
52fff3340fc0fa032034016662d3d047ae152f1f8dLarry Fingerstruct	regulatory_class {
53fff3340fc0fa032034016662d3d047ae152f1f8dLarry Finger	u32	starting_freq;				/* MHz, */
54fff3340fc0fa032034016662d3d047ae152f1f8dLarry Finger	u8	channel_set[MAX_CHANNEL_NUM];
55fff3340fc0fa032034016662d3d047ae152f1f8dLarry Finger	u8	channel_cck_power[MAX_CHANNEL_NUM];	/* dbm */
56fff3340fc0fa032034016662d3d047ae152f1f8dLarry Finger	u8	channel_ofdm_power[MAX_CHANNEL_NUM];	/* dbm */
57fff3340fc0fa032034016662d3d047ae152f1f8dLarry Finger	u8	txpower_limit;				/* dbm */
58fff3340fc0fa032034016662d3d047ae152f1f8dLarry Finger	u8	channel_spacing;			/* MHz */
59fff3340fc0fa032034016662d3d047ae152f1f8dLarry Finger	u8	modem;
60fff3340fc0fa032034016662d3d047ae152f1f8dLarry Finger};
61fff3340fc0fa032034016662d3d047ae152f1f8dLarry Finger
62fff3340fc0fa032034016662d3d047ae152f1f8dLarry Fingerenum capability {
63fff3340fc0fa032034016662d3d047ae152f1f8dLarry Finger	cESS		= 0x0001,
64fff3340fc0fa032034016662d3d047ae152f1f8dLarry Finger	cIBSS		= 0x0002,
65fff3340fc0fa032034016662d3d047ae152f1f8dLarry Finger	cPollable	= 0x0004,
66fff3340fc0fa032034016662d3d047ae152f1f8dLarry Finger	cPollReq	= 0x0008,
67fff3340fc0fa032034016662d3d047ae152f1f8dLarry Finger	cPrivacy	= 0x0010,
68fff3340fc0fa032034016662d3d047ae152f1f8dLarry Finger	cShortPreamble	= 0x0020,
69fff3340fc0fa032034016662d3d047ae152f1f8dLarry Finger	cPBCC		= 0x0040,
70fff3340fc0fa032034016662d3d047ae152f1f8dLarry Finger	cChannelAgility	= 0x0080,
71fff3340fc0fa032034016662d3d047ae152f1f8dLarry Finger	cSpectrumMgnt	= 0x0100,
72fff3340fc0fa032034016662d3d047ae152f1f8dLarry Finger	cQos		= 0x0200,	/* For HCCA, use with CF-Pollable
73fff3340fc0fa032034016662d3d047ae152f1f8dLarry Finger					 * and CF-PollReq */
74fff3340fc0fa032034016662d3d047ae152f1f8dLarry Finger	cShortSlotTime	= 0x0400,
75fff3340fc0fa032034016662d3d047ae152f1f8dLarry Finger	cAPSD		= 0x0800,
76fff3340fc0fa032034016662d3d047ae152f1f8dLarry Finger	cRM		= 0x1000,	/*  RRM (Radio Request Measurement) */
77fff3340fc0fa032034016662d3d047ae152f1f8dLarry Finger	cDSSS_OFDM	= 0x2000,
78fff3340fc0fa032034016662d3d047ae152f1f8dLarry Finger	cDelayedBA	= 0x4000,
79fff3340fc0fa032034016662d3d047ae152f1f8dLarry Finger	cImmediateBA	= 0x8000,
80fff3340fc0fa032034016662d3d047ae152f1f8dLarry Finger};
81fff3340fc0fa032034016662d3d047ae152f1f8dLarry Finger
82fff3340fc0fa032034016662d3d047ae152f1f8dLarry Fingerenum	_REG_PREAMBLE_MODE {
83fff3340fc0fa032034016662d3d047ae152f1f8dLarry Finger	PREAMBLE_LONG	= 1,
84fff3340fc0fa032034016662d3d047ae152f1f8dLarry Finger	PREAMBLE_AUTO	= 2,
85fff3340fc0fa032034016662d3d047ae152f1f8dLarry Finger	PREAMBLE_SHORT	= 3,
86fff3340fc0fa032034016662d3d047ae152f1f8dLarry Finger};
87fff3340fc0fa032034016662d3d047ae152f1f8dLarry Finger
88fff3340fc0fa032034016662d3d047ae152f1f8dLarry Fingerenum _RTL8712_RF_MIMO_CONFIG_ {
89fff3340fc0fa032034016662d3d047ae152f1f8dLarry Finger	RTL8712_RFCONFIG_1T = 0x10,
90fff3340fc0fa032034016662d3d047ae152f1f8dLarry Finger	RTL8712_RFCONFIG_2T = 0x20,
91fff3340fc0fa032034016662d3d047ae152f1f8dLarry Finger	RTL8712_RFCONFIG_1R = 0x01,
92fff3340fc0fa032034016662d3d047ae152f1f8dLarry Finger	RTL8712_RFCONFIG_2R = 0x02,
93fff3340fc0fa032034016662d3d047ae152f1f8dLarry Finger	RTL8712_RFCONFIG_1T1R = 0x11,
94fff3340fc0fa032034016662d3d047ae152f1f8dLarry Finger	RTL8712_RFCONFIG_1T2R = 0x12,
95fff3340fc0fa032034016662d3d047ae152f1f8dLarry Finger	RTL8712_RFCONFIG_TURBO = 0x92,
96fff3340fc0fa032034016662d3d047ae152f1f8dLarry Finger	RTL8712_RFCONFIG_2T2R = 0x22
97fff3340fc0fa032034016662d3d047ae152f1f8dLarry Finger};
98fff3340fc0fa032034016662d3d047ae152f1f8dLarry Finger
99fff3340fc0fa032034016662d3d047ae152f1f8dLarry Fingerenum rf90_radio_path {
100fff3340fc0fa032034016662d3d047ae152f1f8dLarry Finger	RF90_PATH_A = 0,		/* Radio Path A */
101fff3340fc0fa032034016662d3d047ae152f1f8dLarry Finger	RF90_PATH_B = 1,		/* Radio Path B */
102fff3340fc0fa032034016662d3d047ae152f1f8dLarry Finger	RF90_PATH_C = 2,		/* Radio Path C */
103fff3340fc0fa032034016662d3d047ae152f1f8dLarry Finger	RF90_PATH_D = 3			/* Radio Path D */
104fff3340fc0fa032034016662d3d047ae152f1f8dLarry Finger};
105fff3340fc0fa032034016662d3d047ae152f1f8dLarry Finger
106fff3340fc0fa032034016662d3d047ae152f1f8dLarry Finger/*  Bandwidth Offset */
107fff3340fc0fa032034016662d3d047ae152f1f8dLarry Finger#define HAL_PRIME_CHNL_OFFSET_DONT_CARE	0
108fff3340fc0fa032034016662d3d047ae152f1f8dLarry Finger#define HAL_PRIME_CHNL_OFFSET_LOWER	1
109fff3340fc0fa032034016662d3d047ae152f1f8dLarry Finger#define HAL_PRIME_CHNL_OFFSET_UPPER	2
110fff3340fc0fa032034016662d3d047ae152f1f8dLarry Finger
111fff3340fc0fa032034016662d3d047ae152f1f8dLarry Finger/*  Represent Channel Width in HT Capabilities */
112fff3340fc0fa032034016662d3d047ae152f1f8dLarry Finger/*  */
113fff3340fc0fa032034016662d3d047ae152f1f8dLarry Fingerenum ht_channel_width {
114fff3340fc0fa032034016662d3d047ae152f1f8dLarry Finger	HT_CHANNEL_WIDTH_20 = 0,
115fff3340fc0fa032034016662d3d047ae152f1f8dLarry Finger	HT_CHANNEL_WIDTH_40 = 1,
116fff3340fc0fa032034016662d3d047ae152f1f8dLarry Finger	HT_CHANNEL_WIDTH_80 = 2,
117fff3340fc0fa032034016662d3d047ae152f1f8dLarry Finger	HT_CHANNEL_WIDTH_160 = 3,
118fff3340fc0fa032034016662d3d047ae152f1f8dLarry Finger	HT_CHANNEL_WIDTH_10 = 4,
119fff3340fc0fa032034016662d3d047ae152f1f8dLarry Finger};
120fff3340fc0fa032034016662d3d047ae152f1f8dLarry Finger
121fff3340fc0fa032034016662d3d047ae152f1f8dLarry Finger/*  */
122f7bba924ed74d1811345f7be68d3e802339068deMasanari Iida/*  Represent Extension Channel Offset in HT Capabilities */
123fff3340fc0fa032034016662d3d047ae152f1f8dLarry Finger/*  This is available only in 40Mhz mode. */
124fff3340fc0fa032034016662d3d047ae152f1f8dLarry Finger/*  */
125fff3340fc0fa032034016662d3d047ae152f1f8dLarry Fingerenum ht_extchnl_offset {
126fff3340fc0fa032034016662d3d047ae152f1f8dLarry Finger	HT_EXTCHNL_OFFSET_NO_EXT = 0,
127fff3340fc0fa032034016662d3d047ae152f1f8dLarry Finger	HT_EXTCHNL_OFFSET_UPPER = 1,
128fff3340fc0fa032034016662d3d047ae152f1f8dLarry Finger	HT_EXTCHNL_OFFSET_NO_DEF = 2,
129fff3340fc0fa032034016662d3d047ae152f1f8dLarry Finger	HT_EXTCHNL_OFFSET_LOWER = 3,
130fff3340fc0fa032034016662d3d047ae152f1f8dLarry Finger};
131fff3340fc0fa032034016662d3d047ae152f1f8dLarry Finger
132fff3340fc0fa032034016662d3d047ae152f1f8dLarry Finger/* 2007/11/15 MH Define different RF type. */
133fff3340fc0fa032034016662d3d047ae152f1f8dLarry Fingerenum rt_rf_type_def {
134fff3340fc0fa032034016662d3d047ae152f1f8dLarry Finger	RF_1T2R = 0,
135fff3340fc0fa032034016662d3d047ae152f1f8dLarry Finger	RF_2T4R = 1,
136fff3340fc0fa032034016662d3d047ae152f1f8dLarry Finger	RF_2T2R = 2,
137fff3340fc0fa032034016662d3d047ae152f1f8dLarry Finger	RF_1T1R = 3,
138fff3340fc0fa032034016662d3d047ae152f1f8dLarry Finger	RF_2T2R_GREEN = 4,
139fff3340fc0fa032034016662d3d047ae152f1f8dLarry Finger	RF_819X_MAX_TYPE = 5,
140fff3340fc0fa032034016662d3d047ae152f1f8dLarry Finger};
141fff3340fc0fa032034016662d3d047ae152f1f8dLarry Finger
142fff3340fc0fa032034016662d3d047ae152f1f8dLarry Fingeru32 rtw_ch2freq(u32 ch);
143fff3340fc0fa032034016662d3d047ae152f1f8dLarry Fingeru32 rtw_freq2ch(u32 freq);
144fff3340fc0fa032034016662d3d047ae152f1f8dLarry Finger
145fff3340fc0fa032034016662d3d047ae152f1f8dLarry Finger
146fff3340fc0fa032034016662d3d047ae152f1f8dLarry Finger#endif /* _RTL8711_RF_H_ */
147