158391efdSNathan Chancellor /* SPDX-License-Identifier: GPL-2.0 */
2554c0a3aSHans de Goede /******************************************************************************
3554c0a3aSHans de Goede  *
4554c0a3aSHans de Goede  * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
5554c0a3aSHans de Goede  *
6554c0a3aSHans de Goede  ******************************************************************************/
7554c0a3aSHans de Goede #ifndef	__RTW_RF_H_
8554c0a3aSHans de Goede #define __RTW_RF_H_
9554c0a3aSHans de Goede 
10554c0a3aSHans de Goede 
11554c0a3aSHans de Goede #define OFDM_PHY		1
12554c0a3aSHans de Goede #define MIXED_PHY		2
13554c0a3aSHans de Goede #define CCK_PHY			3
14554c0a3aSHans de Goede 
15554c0a3aSHans de Goede #define NumRates		13
16554c0a3aSHans de Goede 
17554c0a3aSHans de Goede /*  slot time for 11g */
18554c0a3aSHans de Goede #define SHORT_SLOT_TIME		9
19554c0a3aSHans de Goede #define NON_SHORT_SLOT_TIME	20
20554c0a3aSHans de Goede 
21554c0a3aSHans de Goede #define RTL8711_RF_MAX_SENS	 6
22554c0a3aSHans de Goede #define RTL8711_RF_DEF_SENS	 4
23554c0a3aSHans de Goede 
24*c659a468SFabio Aiuto /*
25*c659a468SFabio Aiuto  * We now define the following channels as the max channels in each channel plan.
26*c659a468SFabio Aiuto  * 2G, total 14 chnls
27*c659a468SFabio Aiuto  * {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14}
28*c659a468SFabio Aiuto  */
29554c0a3aSHans de Goede #define	MAX_CHANNEL_NUM_2G	14
30*c659a468SFabio Aiuto #define	MAX_CHANNEL_NUM		14
31554c0a3aSHans de Goede 
32554c0a3aSHans de Goede #define NUM_REGULATORYS	1
33554c0a3aSHans de Goede 
34554c0a3aSHans de Goede /* Country codes */
35554c0a3aSHans de Goede #define USA			0x555320
36554c0a3aSHans de Goede #define EUROPE			0x1 /* temp, should be provided later */
37554c0a3aSHans de Goede #define JAPAN			0x2 /* temp, should be provided later */
38554c0a3aSHans de Goede 
39554c0a3aSHans de Goede struct	regulatory_class {
40554c0a3aSHans de Goede 	u32 starting_freq;			/* MHz, */
41554c0a3aSHans de Goede 	u8 channel_set[MAX_CHANNEL_NUM];
42554c0a3aSHans de Goede 	u8 channel_cck_power[MAX_CHANNEL_NUM];/* dbm */
43554c0a3aSHans de Goede 	u8 channel_ofdm_power[MAX_CHANNEL_NUM];/* dbm */
44554c0a3aSHans de Goede 	u8 txpower_limit;			/* dbm */
45554c0a3aSHans de Goede 	u8 channel_spacing;			/* MHz */
46554c0a3aSHans de Goede 	u8 modem;
47554c0a3aSHans de Goede };
48554c0a3aSHans de Goede 
495e8aa5d0SMarco Cesati enum {
50554c0a3aSHans de Goede 	cESS			= 0x0001,
51554c0a3aSHans de Goede 	cIBSS			= 0x0002,
52554c0a3aSHans de Goede 	cPollable		= 0x0004,
53554c0a3aSHans de Goede 	cPollReq		= 0x0008,
54554c0a3aSHans de Goede 	cPrivacy		= 0x0010,
55554c0a3aSHans de Goede 	cShortPreamble		= 0x0020,
56554c0a3aSHans de Goede 	cPBCC			= 0x0040,
57554c0a3aSHans de Goede 	cChannelAgility		= 0x0080,
58554c0a3aSHans de Goede 	cSpectrumMgnt		= 0x0100,
59554c0a3aSHans de Goede 	cQos			= 0x0200,	/*  For HCCA, use with CF-Pollable and CF-PollReq */
60554c0a3aSHans de Goede 	cShortSlotTime		= 0x0400,
61554c0a3aSHans de Goede 	cAPSD			= 0x0800,
62554c0a3aSHans de Goede 	cRM			= 0x1000,	/*  RRM (Radio Request Measurement) */
63554c0a3aSHans de Goede 	cDSSS_OFDM		= 0x2000,
64554c0a3aSHans de Goede 	cDelayedBA		= 0x4000,
65554c0a3aSHans de Goede 	cImmediateBA		= 0x8000,
66554c0a3aSHans de Goede };
67554c0a3aSHans de Goede 
685e8aa5d0SMarco Cesati enum {
69554c0a3aSHans de Goede 	PREAMBLE_LONG	= 1,
70554c0a3aSHans de Goede 	PREAMBLE_AUTO	= 2,
71554c0a3aSHans de Goede 	PREAMBLE_SHORT	= 3,
72554c0a3aSHans de Goede };
73554c0a3aSHans de Goede 
74554c0a3aSHans de Goede /*  Bandwidth Offset */
75554c0a3aSHans de Goede #define HAL_PRIME_CHNL_OFFSET_DONT_CARE	0
76554c0a3aSHans de Goede #define HAL_PRIME_CHNL_OFFSET_LOWER	1
77554c0a3aSHans de Goede #define HAL_PRIME_CHNL_OFFSET_UPPER	2
78554c0a3aSHans de Goede 
79554c0a3aSHans de Goede /*  Represent Channel Width in HT Capabilities */
8080e3e599SMarco Cesati enum channel_width {
81554c0a3aSHans de Goede 	CHANNEL_WIDTH_20 = 0,
82554c0a3aSHans de Goede 	CHANNEL_WIDTH_40 = 1,
83554c0a3aSHans de Goede };
84554c0a3aSHans de Goede 
85554c0a3aSHans de Goede /*  Represent Extension Channel Offset in HT Capabilities */
86554c0a3aSHans de Goede /*  This is available only in 40Mhz mode. */
8780e3e599SMarco Cesati enum extchnl_offset {
88554c0a3aSHans de Goede 	EXTCHNL_OFFSET_NO_EXT = 0,
89554c0a3aSHans de Goede 	EXTCHNL_OFFSET_UPPER = 1,
90554c0a3aSHans de Goede 	EXTCHNL_OFFSET_NO_DEF = 2,
91554c0a3aSHans de Goede 	EXTCHNL_OFFSET_LOWER = 3,
92554c0a3aSHans de Goede };
93554c0a3aSHans de Goede 
945e8aa5d0SMarco Cesati enum {
957d5fd85eSFabio Aiuto 	HT_DATA_SC_DONOT_CARE = 0,
967d5fd85eSFabio Aiuto 	HT_DATA_SC_20_UPPER_OF_40MHZ = 1,
977d5fd85eSFabio Aiuto 	HT_DATA_SC_20_LOWER_OF_40MHZ = 2,
98554c0a3aSHans de Goede };
99554c0a3aSHans de Goede 
100554c0a3aSHans de Goede u32 rtw_ch2freq(u32 ch);
101554c0a3aSHans de Goede 
102554c0a3aSHans de Goede #endif /* _RTL8711_RF_H_ */
103