156746Sroberto/*
256746Sroberto * Copyright (c) 2002-2009 Sam Leffler, Errno Consulting
356746Sroberto * Copyright (c) 2005-2006 Atheros Communications, Inc.
456746Sroberto * All rights reserved.
5132451Sroberto *
656746Sroberto * Permission to use, copy, modify, and/or distribute this software for any
756746Sroberto * purpose with or without fee is hereby granted, provided that the above
8132451Sroberto * copyright notice and this permission notice appear in all copies.
9132451Sroberto *
1082498Sroberto * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
1156746Sroberto * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
1282498Sroberto * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
1382498Sroberto * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
1482498Sroberto * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
1582498Sroberto * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
1682498Sroberto * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
1756746Sroberto *
1882498Sroberto * $FreeBSD$
1956746Sroberto */
2056746Sroberto
21132451Sroberto#ifndef	__AH_REGDOMAIN_FREQBANDS_H__
2256746Sroberto#define	__AH_REGDOMAIN_FREQBANDS_H__
2382498Sroberto
2456746Sroberto#define	AFTER(x)	((x)+1)
25132451Sroberto
26132451Sroberto/*
2756746Sroberto * Frequency band collections are defined using bitmasks.  Each bit
2882498Sroberto * in a mask is the index of an entry in one of the following tables.
2956746Sroberto * Bitmasks are BMLEN*64 bits so if a table grows beyond that the bit
30132451Sroberto * vectors must be enlarged or the tables split somehow (e.g. split
3156746Sroberto * 1/2 and 1/4 rate channels into a separate table).
3256746Sroberto *
3356746Sroberto * Beware of ordering; the indices are defined relative to the preceding
3456746Sroberto * entry so if things get off there will be confusion.  A good way to
35132451Sroberto * check the indices is to collect them in a switch statement in a stub
36132451Sroberto * function so the compiler checks for duplicates.
37132451Sroberto */
38132451Sroberto
39132451Sroberto/*
40132451Sroberto * 5GHz 11A channel tags
41132451Sroberto */
42132451Srobertostatic REG_DMN_FREQ_BAND regDmn5GhzFreq[] = {
43132451Sroberto	{ 4915, 4925, 23, 0, 10,  5, NO_DFS, PSCAN_MKK2 },
44132451Sroberto#define	F1_4915_4925	0
45132451Sroberto	{ 4935, 4945, 23, 0, 10,  5, NO_DFS, PSCAN_MKK2 },
46132451Sroberto#define	F1_4935_4945	AFTER(F1_4915_4925)
47132451Sroberto	{ 4920, 4980, 23, 0, 20, 20, NO_DFS, PSCAN_MKK2 },
48132451Sroberto#define	F1_4920_4980	AFTER(F1_4935_4945)
4956746Sroberto	{ 4942, 4987, 27, 6,  5,  5, NO_DFS, PSCAN_FCC },
5056746Sroberto#define	F1_4942_4987	AFTER(F1_4920_4980)
5156746Sroberto	{ 4945, 4985, 30, 6, 10,  5, NO_DFS, PSCAN_FCC },
5256746Sroberto#define	F1_4945_4985	AFTER(F1_4942_4987)
5356746Sroberto	{ 4950, 4980, 33, 6, 20,  5, NO_DFS, PSCAN_FCC },
5482498Sroberto#define	F1_4950_4980	AFTER(F1_4945_4985)
55132451Sroberto	{ 5035, 5040, 23, 0, 10,  5, NO_DFS, PSCAN_MKK2 },
56132451Sroberto#define	F1_5035_5040	AFTER(F1_4950_4980)
57132451Sroberto	{ 5040, 5080, 23, 0, 20, 20, NO_DFS, PSCAN_MKK2 },
58310419Sdelphij#define	F1_5040_5080	AFTER(F1_5035_5040)
59132451Sroberto	{ 5055, 5055, 23, 0, 10,  5, NO_DFS, PSCAN_MKK2 },
60132451Sroberto#define	F1_5055_5055	AFTER(F1_5040_5080)
61132451Sroberto
62132451Sroberto	{ 5120, 5240, 5,  6, 20, 20, NO_DFS, NO_PSCAN },
63132451Sroberto#define	F1_5120_5240	AFTER(F1_5055_5055)
64132451Sroberto	{ 5120, 5240, 5,  6, 10, 10, NO_DFS, NO_PSCAN },
6556746Sroberto#define	F2_5120_5240	AFTER(F1_5120_5240)
66132451Sroberto	{ 5120, 5240, 5,  6,  5,  5, NO_DFS, NO_PSCAN },
6756746Sroberto#define	F3_5120_5240	AFTER(F2_5120_5240)
6856746Sroberto
69132451Sroberto	{ 5170, 5230, 23, 0, 20, 20, NO_DFS, PSCAN_MKK1 | PSCAN_MKK2 },
70290001Sglebius#define	F1_5170_5230	AFTER(F3_5120_5240)
71290001Sglebius	{ 5170, 5230, 20, 0, 20, 20, NO_DFS, PSCAN_MKK1 | PSCAN_MKK2 },
7256746Sroberto#define	F2_5170_5230	AFTER(F1_5170_5230)
73132451Sroberto
74132451Sroberto	{ 5180, 5240, 15, 0, 20, 20, NO_DFS, PSCAN_FCC | PSCAN_ETSI },
75132451Sroberto#define	F1_5180_5240	AFTER(F2_5170_5230)
76132451Sroberto	{ 5180, 5240, 17, 6, 20, 20, NO_DFS, PSCAN_FCC },
77132451Sroberto#define	F2_5180_5240	AFTER(F1_5180_5240)
78132451Sroberto	{ 5180, 5240, 18, 0, 20, 20, NO_DFS, PSCAN_FCC | PSCAN_ETSI },
79132451Sroberto#define	F3_5180_5240	AFTER(F2_5180_5240)
80132451Sroberto	{ 5180, 5240, 20, 0, 20, 20, NO_DFS, PSCAN_FCC | PSCAN_ETSI },
81132451Sroberto#define	F4_5180_5240	AFTER(F3_5180_5240)
82132451Sroberto	{ 5180, 5240, 23, 0, 20, 20, NO_DFS, PSCAN_FCC | PSCAN_ETSI },
83132451Sroberto#define	F5_5180_5240	AFTER(F4_5180_5240)
84132451Sroberto	{ 5180, 5240, 23, 6, 20, 20, NO_DFS, PSCAN_FCC },
85132451Sroberto#define	F6_5180_5240	AFTER(F5_5180_5240)
86132451Sroberto	{ 5180, 5240, 17, 6, 20, 10, NO_DFS, PSCAN_FCC },
87132451Sroberto#define	F7_5180_5240	AFTER(F6_5180_5240)
88132451Sroberto	{ 5180, 5240, 17, 6, 20,  5, NO_DFS, PSCAN_FCC },
89132451Sroberto#define	F8_5180_5240	AFTER(F7_5180_5240)
90132451Sroberto	{ 5180, 5320, 20, 6, 20, 20, DFS_ETSI, PSCAN_ETSI },
91132451Sroberto
92132451Sroberto#define	F1_5180_5320	AFTER(F8_5180_5240)
93132451Sroberto	{ 5240, 5280, 23, 0, 20, 20, DFS_FCC3, PSCAN_FCC | PSCAN_ETSI },
9456746Sroberto
95132451Sroberto#define	F1_5240_5280	AFTER(F1_5180_5320)
96132451Sroberto	{ 5260, 5280, 23, 0, 20, 20, DFS_FCC3 | DFS_ETSI, PSCAN_FCC | PSCAN_ETSI },
97132451Sroberto
98132451Sroberto#define	F1_5260_5280	AFTER(F1_5240_5280)
99132451Sroberto	{ 5260, 5320, 18, 0, 20, 20, DFS_FCC3 | DFS_ETSI, PSCAN_FCC | PSCAN_ETSI },
100132451Sroberto
101132451Sroberto#define	F1_5260_5320	AFTER(F1_5260_5280)
102132451Sroberto	{ 5260, 5320, 20, 0, 20, 20, DFS_FCC3 | DFS_ETSI | DFS_MKK4, PSCAN_FCC | PSCAN_ETSI | PSCAN_MKK3  },
103132451Sroberto#define	F2_5260_5320	AFTER(F1_5260_5320)
104132451Sroberto
105132451Sroberto	{ 5260, 5320, 20, 6, 20, 20, DFS_FCC3 | DFS_ETSI, PSCAN_FCC },
106132451Sroberto#define	F3_5260_5320	AFTER(F2_5260_5320)
107132451Sroberto	{ 5260, 5320, 23, 6, 20, 20, DFS_FCC3 | DFS_ETSI, PSCAN_FCC },
108132451Sroberto#define	F4_5260_5320	AFTER(F3_5260_5320)
109132451Sroberto	{ 5260, 5320, 23, 6, 20, 20, DFS_FCC3 | DFS_ETSI, PSCAN_FCC },
110132451Sroberto#define	F5_5260_5320	AFTER(F4_5260_5320)
111132451Sroberto	{ 5260, 5320, 30, 0, 20, 20, NO_DFS, NO_PSCAN },
112132451Sroberto#define	F6_5260_5320	AFTER(F5_5260_5320)
113132451Sroberto	{ 5260, 5320, 23, 6, 20, 10, DFS_FCC3 | DFS_ETSI, PSCAN_FCC },
114132451Sroberto#define	F7_5260_5320	AFTER(F6_5260_5320)
115132451Sroberto	{ 5260, 5320, 23, 6, 20,  5, DFS_FCC3 | DFS_ETSI, PSCAN_FCC },
116132451Sroberto#define	F8_5260_5320	AFTER(F7_5260_5320)
117290001Sglebius
118290001Sglebius	{ 5260, 5700, 5,  6, 20, 20, DFS_FCC3 | DFS_ETSI, NO_PSCAN },
119132451Sroberto#define	F1_5260_5700	AFTER(F8_5260_5320)
120132451Sroberto	{ 5260, 5700, 5,  6, 10, 10, DFS_FCC3 | DFS_ETSI, NO_PSCAN },
121132451Sroberto#define	F2_5260_5700	AFTER(F1_5260_5700)
122132451Sroberto	{ 5260, 5700, 5,  6,  5,  5, DFS_FCC3 | DFS_ETSI, NO_PSCAN },
123132451Sroberto#define	F3_5260_5700	AFTER(F2_5260_5700)
124290001Sglebius
125132451Sroberto	{ 5280, 5320, 17, 6, 20, 20, DFS_FCC3 | DFS_ETSI, PSCAN_FCC },
126132451Sroberto#define	F1_5280_5320	AFTER(F3_5260_5700)
127290001Sglebius
128290001Sglebius	{ 5500, 5620, 30, 6, 20, 20, DFS_ETSI, PSCAN_ETSI },
129132451Sroberto#define	F1_5500_5620	AFTER(F1_5280_5320)
130132451Sroberto
131290001Sglebius	{ 5500, 5700, 20, 6, 20, 20, DFS_FCC3 | DFS_ETSI, PSCAN_FCC },
132290001Sglebius#define	F1_5500_5700	AFTER(F1_5500_5620)
133132451Sroberto	{ 5500, 5700, 27, 0, 20, 20, DFS_FCC3 | DFS_ETSI, PSCAN_FCC | PSCAN_ETSI },
134290001Sglebius#define	F2_5500_5700	AFTER(F1_5500_5700)
135290001Sglebius	{ 5500, 5700, 30, 0, 20, 20, DFS_FCC3 | DFS_ETSI, PSCAN_FCC | PSCAN_ETSI },
136132451Sroberto#define	F3_5500_5700	AFTER(F2_5500_5700)
137132451Sroberto	{ 5500, 5700, 23, 0, 20, 20, DFS_FCC3 | DFS_ETSI | DFS_MKK4, PSCAN_MKK3 | PSCAN_FCC },
138132451Sroberto#define	F4_5500_5700	AFTER(F3_5500_5700)
139132451Sroberto
140132451Sroberto	{ 5745, 5805, 23, 0, 20, 20, NO_DFS, NO_PSCAN },
141132451Sroberto#define	F1_5745_5805	AFTER(F4_5500_5700)
142132451Sroberto	{ 5745, 5805, 30, 6, 20, 20, NO_DFS, NO_PSCAN },
143132451Sroberto#define	F2_5745_5805	AFTER(F1_5745_5805)
144132451Sroberto	{ 5745, 5805, 30, 6, 20, 20, DFS_ETSI, PSCAN_ETSI },
145132451Sroberto#define	F3_5745_5805	AFTER(F2_5745_5805)
146132451Sroberto	{ 5745, 5825, 5,  6, 20, 20, NO_DFS, NO_PSCAN },
147132451Sroberto#define	F1_5745_5825	AFTER(F3_5745_5805)
148132451Sroberto	{ 5745, 5825, 17, 0, 20, 20, NO_DFS, NO_PSCAN },
149132451Sroberto#define	F2_5745_5825	AFTER(F1_5745_5825)
150132451Sroberto	{ 5745, 5825, 20, 0, 20, 20, NO_DFS, NO_PSCAN },
151290001Sglebius#define	F3_5745_5825	AFTER(F2_5745_5825)
152132451Sroberto	{ 5745, 5825, 30, 0, 20, 20, NO_DFS, NO_PSCAN },
153132451Sroberto#define	F4_5745_5825	AFTER(F3_5745_5825)
154132451Sroberto	{ 5745, 5825, 30, 6, 20, 20, NO_DFS, NO_PSCAN },
155132451Sroberto#define	F5_5745_5825	AFTER(F4_5745_5825)
156290001Sglebius	{ 5745, 5825, 30, 6, 20, 20, NO_DFS, NO_PSCAN },
157132451Sroberto#define	F6_5745_5825	AFTER(F5_5745_5825)
158132451Sroberto	{ 5745, 5825, 5,  6, 10, 10, NO_DFS, NO_PSCAN },
159132451Sroberto#define	F7_5745_5825	AFTER(F6_5745_5825)
160132451Sroberto	{ 5745, 5825, 5,  6,  5,  5, NO_DFS, NO_PSCAN },
161132451Sroberto#define	F8_5745_5825	AFTER(F7_5745_5825)
162132451Sroberto	{ 5745, 5825, 30, 6, 20, 10, NO_DFS, NO_PSCAN },
163132451Sroberto#define	F9_5745_5825	AFTER(F8_5745_5825)
164132451Sroberto	{ 5745, 5825, 30, 6, 20,  5, NO_DFS, NO_PSCAN },
165290001Sglebius#define	F10_5745_5825	AFTER(F9_5745_5825)
166290001Sglebius
167290001Sglebius	/*
168290001Sglebius	 * Below are the world roaming channels
169132451Sroberto	 * All WWR domains have no power limit, instead use the card's CTL
170132451Sroberto	 * or max power settings.
171132451Sroberto	 */
172132451Sroberto	{ 4920, 4980, 30, 0, 20, 20, NO_DFS, PSCAN_WWR },
173132451Sroberto#define	W1_4920_4980	AFTER(F10_5745_5825)
174290001Sglebius	{ 5040, 5080, 30, 0, 20, 20, NO_DFS, PSCAN_WWR },
175132451Sroberto#define	W1_5040_5080	AFTER(W1_4920_4980)
176132451Sroberto	{ 5170, 5230, 30, 0, 20, 20, DFS_FCC3 | DFS_ETSI, PSCAN_WWR },
177290001Sglebius#define	W1_5170_5230	AFTER(W1_5040_5080)
178290001Sglebius	{ 5180, 5240, 30, 0, 20, 20, DFS_FCC3 | DFS_ETSI, PSCAN_WWR },
179290001Sglebius#define	W1_5180_5240	AFTER(W1_5170_5230)
180132451Sroberto	{ 5260, 5320, 30, 0, 20, 20, DFS_FCC3 | DFS_ETSI, PSCAN_WWR },
181290001Sglebius#define	W1_5260_5320	AFTER(W1_5180_5240)
182290001Sglebius	{ 5745, 5825, 30, 0, 20, 20, NO_DFS, PSCAN_WWR },
183290001Sglebius#define	W1_5745_5825	AFTER(W1_5260_5320)
184132451Sroberto	{ 5500, 5700, 30, 0, 20, 20, DFS_FCC3 | DFS_ETSI, PSCAN_WWR },
185290001Sglebius#define	W1_5500_5700	AFTER(W1_5745_5825)
186290001Sglebius	{ 5260, 5320, 30, 0, 20, 20, NO_DFS, NO_PSCAN },
187290001Sglebius#define	W2_5260_5320	AFTER(W1_5500_5700)
188132451Sroberto	{ 5180, 5240, 30, 0, 20, 20, NO_DFS, NO_PSCAN },
189290001Sglebius#define	W2_5180_5240	AFTER(W2_5260_5320)
190290001Sglebius	{ 5825, 5825, 30, 0, 20, 20, NO_DFS, PSCAN_WWR },
191290001Sglebius#define	W2_5825_5825	AFTER(W2_5180_5240)
192132451Sroberto};
193132451Sroberto
194132451Sroberto/*
195132451Sroberto * 5GHz Turbo (dynamic & static) tags
196132451Sroberto */
197132451Srobertostatic REG_DMN_FREQ_BAND regDmn5GhzTurboFreq[] = {
198132451Sroberto	{ 5130, 5210, 5,  6, 40, 40, NO_DFS, NO_PSCAN },
199132451Sroberto#define	T1_5130_5210	0
200132451Sroberto	{ 5250, 5330, 5,  6, 40, 40, DFS_FCC3, NO_PSCAN },
20156746Sroberto#define	T1_5250_5330	AFTER(T1_5130_5210)
20256746Sroberto	{ 5370, 5490, 5,  6, 40, 40, NO_DFS, NO_PSCAN },
203132451Sroberto#define	T1_5370_5490	AFTER(T1_5250_5330)
20456746Sroberto	{ 5530, 5650, 5,  6, 40, 40, DFS_FCC3, NO_PSCAN },
20556746Sroberto#define	T1_5530_5650	AFTER(T1_5370_5490)
20656746Sroberto
20756746Sroberto	{ 5150, 5190, 5,  6, 40, 40, NO_DFS, NO_PSCAN },
20856746Sroberto#define	T1_5150_5190	AFTER(T1_5530_5650)
20956746Sroberto	{ 5230, 5310, 5,  6, 40, 40, DFS_FCC3, NO_PSCAN },
21056746Sroberto#define	T1_5230_5310	AFTER(T1_5150_5190)
21156746Sroberto	{ 5350, 5470, 5,  6, 40, 40, NO_DFS, NO_PSCAN },
21282498Sroberto#define	T1_5350_5470	AFTER(T1_5230_5310)
213290001Sglebius	{ 5510, 5670, 5,  6, 40, 40, DFS_FCC3, NO_PSCAN },
214132451Sroberto#define	T1_5510_5670	AFTER(T1_5350_5470)
215132451Sroberto
21682498Sroberto	{ 5200, 5240, 17, 6, 40, 40, NO_DFS, NO_PSCAN },
21756746Sroberto#define	T1_5200_5240	AFTER(T1_5510_5670)
218132451Sroberto	{ 5200, 5240, 23, 6, 40, 40, NO_DFS, NO_PSCAN },
219132451Sroberto#define	T2_5200_5240	AFTER(T1_5200_5240)
220132451Sroberto	{ 5210, 5210, 17, 6, 40, 40, NO_DFS, NO_PSCAN },
221132451Sroberto#define	T1_5210_5210	AFTER(T2_5200_5240)
222132451Sroberto	{ 5210, 5210, 23, 0, 40, 40, NO_DFS, NO_PSCAN },
223132451Sroberto#define	T2_5210_5210	AFTER(T1_5210_5210)
224132451Sroberto
225132451Sroberto	{ 5280, 5280, 23, 6, 40, 40, DFS_FCC3, PSCAN_FCC_T },
226132451Sroberto#define	T1_5280_5280	AFTER(T2_5210_5210)
227132451Sroberto	{ 5280, 5280, 20, 6, 40, 40, DFS_FCC3, PSCAN_FCC_T },
22856746Sroberto#define	T2_5280_5280	AFTER(T1_5280_5280)
22956746Sroberto	{ 5250, 5250, 17, 0, 40, 40, DFS_FCC3, PSCAN_FCC_T },
230290001Sglebius#define	T1_5250_5250	AFTER(T2_5280_5280)
231132451Sroberto	{ 5290, 5290, 20, 0, 40, 40, DFS_FCC3, PSCAN_FCC_T },
232132451Sroberto#define	T1_5290_5290	AFTER(T1_5250_5250)
233132451Sroberto	{ 5250, 5290, 20, 0, 40, 40, DFS_FCC3, PSCAN_FCC_T },
234132451Sroberto#define	T1_5250_5290	AFTER(T1_5290_5290)
235132451Sroberto	{ 5250, 5290, 23, 6, 40, 40, DFS_FCC3, PSCAN_FCC_T },
236132451Sroberto#define	T2_5250_5290	AFTER(T1_5250_5290)
23756746Sroberto
238132451Sroberto	{ 5540, 5660, 20, 6, 40, 40, DFS_FCC3, PSCAN_FCC_T },
239290001Sglebius#define	T1_5540_5660	AFTER(T2_5250_5290)
240132451Sroberto	{ 5760, 5800, 20, 0, 40, 40, NO_DFS, NO_PSCAN },
241132451Sroberto#define	T1_5760_5800	AFTER(T1_5540_5660)
242132451Sroberto	{ 5760, 5800, 30, 6, 40, 40, NO_DFS, NO_PSCAN },
243132451Sroberto#define	T2_5760_5800	AFTER(T1_5760_5800)
244182007Sroberto
245132451Sroberto	{ 5765, 5805, 30, 6, 40, 40, NO_DFS, NO_PSCAN },
246182007Sroberto#define	T1_5765_5805	AFTER(T2_5760_5800)
247132451Sroberto
248132451Sroberto	/*
24956746Sroberto	 * Below are the WWR frequencies
250290001Sglebius	 */
25156746Sroberto	{ 5210, 5250, 15, 0, 40, 40, DFS_FCC3 | DFS_ETSI, PSCAN_WWR },
25282498Sroberto#define	WT1_5210_5250	AFTER(T1_5765_5805)
253290001Sglebius	{ 5290, 5290, 18, 0, 40, 40, DFS_FCC3 | DFS_ETSI, PSCAN_WWR },
254290001Sglebius#define	WT1_5290_5290	AFTER(WT1_5210_5250)
25556746Sroberto	{ 5540, 5660, 20, 0, 40, 40, DFS_FCC3 | DFS_ETSI, PSCAN_WWR },
256290001Sglebius#define	WT1_5540_5660	AFTER(WT1_5290_5290)
25756746Sroberto	{ 5760, 5800, 20, 0, 40, 40, NO_DFS, PSCAN_WWR },
25856746Sroberto#define	WT1_5760_5800	AFTER(WT1_5540_5660)
25982498Sroberto};
26056746Sroberto
261132451Sroberto/*
26256746Sroberto * 2GHz 11b channel tags
263290001Sglebius */
264290001Sglebiusstatic REG_DMN_FREQ_BAND regDmn2GhzFreq[] = {
26556746Sroberto	{ 2312, 2372, 5,  6, 20, 5, NO_DFS, NO_PSCAN },
26656746Sroberto#define	F1_2312_2372	0
26756746Sroberto	{ 2312, 2372, 20, 0, 20, 5, NO_DFS, NO_PSCAN },
26856746Sroberto#define	F2_2312_2372	AFTER(F1_2312_2372)
26956746Sroberto
27056746Sroberto	{ 2412, 2472, 5,  6, 20, 5, NO_DFS, NO_PSCAN },
27156746Sroberto#define	F1_2412_2472	AFTER(F2_2312_2372)
272132451Sroberto	{ 2412, 2472, 20, 0, 20, 5, NO_DFS, PSCAN_MKKA },
273132451Sroberto#define	F2_2412_2472	AFTER(F1_2412_2472)
274132451Sroberto	{ 2412, 2472, 30, 0, 20, 5, NO_DFS, NO_PSCAN },
275132451Sroberto#define	F3_2412_2472	AFTER(F2_2412_2472)
276132451Sroberto
277132451Sroberto	{ 2412, 2462, 27, 6, 20, 5, NO_DFS, NO_PSCAN },
278132451Sroberto#define	F1_2412_2462	AFTER(F3_2412_2472)
279132451Sroberto	{ 2412, 2462, 20, 0, 20, 5, NO_DFS, PSCAN_MKKA },
280132451Sroberto#define	F2_2412_2462	AFTER(F1_2412_2462)
281132451Sroberto
282132451Sroberto	{ 2432, 2442, 20, 0, 20, 5, NO_DFS, NO_PSCAN },
283132451Sroberto#define	F1_2432_2442	AFTER(F2_2412_2462)
284132451Sroberto
285132451Sroberto	{ 2457, 2472, 20, 0, 20, 5, NO_DFS, NO_PSCAN },
286132451Sroberto#define	F1_2457_2472	AFTER(F1_2432_2442)
287132451Sroberto
288132451Sroberto	{ 2467, 2472, 20, 0, 20, 5, NO_DFS, PSCAN_MKKA2 | PSCAN_MKKA },
289132451Sroberto#define	F1_2467_2472	AFTER(F1_2457_2472)
290132451Sroberto
291132451Sroberto	{ 2484, 2484, 5,  6, 20, 5, NO_DFS, NO_PSCAN },
292132451Sroberto#define	F1_2484_2484	AFTER(F1_2467_2472)
293132451Sroberto	{ 2484, 2484, 20, 0, 20, 5, NO_DFS, PSCAN_MKKA | PSCAN_MKKA1 | PSCAN_MKKA2 },
294182007Sroberto#define	F2_2484_2484	AFTER(F1_2484_2484)
295182007Sroberto
296182007Sroberto	{ 2512, 2732, 5,  6, 20, 5, NO_DFS, NO_PSCAN },
297182007Sroberto#define	F1_2512_2732	AFTER(F2_2484_2484)
298182007Sroberto
299182007Sroberto	/*
300182007Sroberto	 * WWR have powers opened up to 20dBm.
301182007Sroberto	 * Limits should often come from CTL/Max powers
302182007Sroberto	 */
303132451Sroberto	{ 2312, 2372, 20, 0, 20, 5, NO_DFS, NO_PSCAN },
304132451Sroberto#define	W1_2312_2372	AFTER(F1_2512_2732)
305132451Sroberto	{ 2412, 2412, 20, 0, 20, 5, NO_DFS, NO_PSCAN },
306132451Sroberto#define	W1_2412_2412	AFTER(W1_2312_2372)
307132451Sroberto	{ 2417, 2432, 20, 0, 20, 5, NO_DFS, NO_PSCAN },
308132451Sroberto#define	W1_2417_2432	AFTER(W1_2412_2412)
309132451Sroberto	{ 2437, 2442, 20, 0, 20, 5, NO_DFS, NO_PSCAN },
310132451Sroberto#define	W1_2437_2442	AFTER(W1_2417_2432)
311132451Sroberto	{ 2447, 2457, 20, 0, 20, 5, NO_DFS, NO_PSCAN },
312132451Sroberto#define	W1_2447_2457	AFTER(W1_2437_2442)
313132451Sroberto	{ 2462, 2462, 20, 0, 20, 5, NO_DFS, NO_PSCAN },
314132451Sroberto#define	W1_2462_2462	AFTER(W1_2447_2457)
315132451Sroberto	{ 2467, 2467, 20, 0, 20, 5, NO_DFS, PSCAN_WWR | IS_ECM_CHAN },
316132451Sroberto#define	W1_2467_2467	AFTER(W1_2462_2462)
317132451Sroberto	{ 2467, 2467, 20, 0, 20, 5, NO_DFS, NO_PSCAN | IS_ECM_CHAN },
318132451Sroberto#define	W2_2467_2467	AFTER(W1_2467_2467)
319290001Sglebius	{ 2472, 2472, 20, 0, 20, 5, NO_DFS, PSCAN_WWR | IS_ECM_CHAN },
320132451Sroberto#define	W1_2472_2472	AFTER(W2_2467_2467)
321132451Sroberto	{ 2472, 2472, 20, 0, 20, 5, NO_DFS, NO_PSCAN | IS_ECM_CHAN },
322290001Sglebius#define	W2_2472_2472	AFTER(W1_2472_2472)
323290001Sglebius	{ 2484, 2484, 20, 0, 20, 5, NO_DFS, PSCAN_WWR | IS_ECM_CHAN },
324132451Sroberto#define	W1_2484_2484	AFTER(W2_2472_2472)
325132451Sroberto	{ 2484, 2484, 20, 0, 20, 5, NO_DFS, NO_PSCAN | IS_ECM_CHAN },
326132451Sroberto#define	W2_2484_2484	AFTER(W1_2484_2484)
327132451Sroberto};
328132451Sroberto
329132451Sroberto/*
330132451Sroberto * 2GHz 11g channel tags
331290001Sglebius */
332132451Srobertostatic REG_DMN_FREQ_BAND regDmn2Ghz11gFreq[] = {
333132451Sroberto	{ 2312, 2372, 5,  6, 20, 5, NO_DFS, NO_PSCAN },
334132451Sroberto#define	G1_2312_2372	0
335132451Sroberto	{ 2312, 2372, 20, 0, 20, 5, NO_DFS, NO_PSCAN },
336132451Sroberto#define	G2_2312_2372	AFTER(G1_2312_2372)
337310419Sdelphij	{ 2312, 2372, 5,  6, 10, 5, NO_DFS, NO_PSCAN },
338132451Sroberto#define	G3_2312_2372	AFTER(G2_2312_2372)
339132451Sroberto	{ 2312, 2372, 5,  6,  5, 5, NO_DFS, NO_PSCAN },
340132451Sroberto#define	G4_2312_2372	AFTER(G3_2312_2372)
341132451Sroberto
342132451Sroberto	{ 2412, 2472, 5,  6, 20, 5, NO_DFS, NO_PSCAN },
343132451Sroberto#define	G1_2412_2472	AFTER(G4_2312_2372)
344132451Sroberto	{ 2412, 2472, 20, 0, 20, 5,  NO_DFS, PSCAN_MKKA_G },
345132451Sroberto#define	G2_2412_2472	AFTER(G1_2412_2472)
346132451Sroberto	{ 2412, 2472, 30, 0, 20, 5, NO_DFS, NO_PSCAN },
347132451Sroberto#define	G3_2412_2472	AFTER(G2_2412_2472)
348132451Sroberto	{ 2412, 2472, 5,  6, 10, 5, NO_DFS, NO_PSCAN },
349132451Sroberto#define	G4_2412_2472	AFTER(G3_2412_2472)
350132451Sroberto	{ 2412, 2472, 5,  6,  5, 5, NO_DFS, NO_PSCAN },
35156746Sroberto#define	G5_2412_2472	AFTER(G4_2412_2472)
352290001Sglebius
35356746Sroberto	{ 2412, 2462, 27, 6, 20, 5, NO_DFS, NO_PSCAN },
35456746Sroberto#define	G1_2412_2462	AFTER(G5_2412_2472)
35556746Sroberto	{ 2412, 2462, 20, 0, 20, 5, NO_DFS, PSCAN_MKKA_G },
35656746Sroberto#define	G2_2412_2462	AFTER(G1_2412_2462)
357132451Sroberto	{ 2412, 2462, 27, 6, 10, 5, NO_DFS, NO_PSCAN },
358132451Sroberto#define	G3_2412_2462	AFTER(G2_2412_2462)
359132451Sroberto	{ 2412, 2462, 27, 6,  5, 5, NO_DFS, NO_PSCAN },
36056746Sroberto#define	G4_2412_2462	AFTER(G3_2412_2462)
36156746Sroberto
36256746Sroberto	{ 2432, 2442, 20, 0, 20, 5, NO_DFS, NO_PSCAN },
36356746Sroberto#define	G1_2432_2442	AFTER(G4_2412_2462)
364132451Sroberto
36556746Sroberto	{ 2457, 2472, 20, 0, 20, 5, NO_DFS, NO_PSCAN },
36656746Sroberto#define	G1_2457_2472	AFTER(G1_2432_2442)
36756746Sroberto
368132451Sroberto	{ 2512, 2732, 5,  6, 20, 5, NO_DFS, NO_PSCAN },
369132451Sroberto#define	G1_2512_2732	AFTER(G1_2457_2472)
370132451Sroberto	{ 2512, 2732, 5,  6, 10, 5, NO_DFS, NO_PSCAN },
37156746Sroberto#define	G2_2512_2732	AFTER(G1_2512_2732)
37256746Sroberto	{ 2512, 2732, 5,  6,  5, 5, NO_DFS, NO_PSCAN },
37356746Sroberto#define	G3_2512_2732	AFTER(G2_2512_2732)
374132451Sroberto
375132451Sroberto	{ 2467, 2472, 20, 0, 20, 5, NO_DFS, PSCAN_MKKA2 | PSCAN_MKKA },
37656746Sroberto#define	G1_2467_2472	AFTER(G3_2512_2732)
377132451Sroberto
378132451Sroberto	/*
379132451Sroberto	 * WWR open up the power to 20dBm
380290001Sglebius	 */
381290001Sglebius	{ 2312, 2372, 20, 0, 20, 5, NO_DFS, NO_PSCAN },
382290001Sglebius#define	WG1_2312_2372	AFTER(G1_2467_2472)
383132451Sroberto	{ 2412, 2412, 20, 0, 20, 5, NO_DFS, NO_PSCAN },
384132451Sroberto#define	WG1_2412_2412	AFTER(WG1_2312_2372)
385132451Sroberto	{ 2417, 2432, 20, 0, 20, 5, NO_DFS, NO_PSCAN },
386132451Sroberto#define	WG1_2417_2432	AFTER(WG1_2412_2412)
387132451Sroberto	{ 2437, 2442, 20, 0, 20, 5, NO_DFS, NO_PSCAN },
388132451Sroberto#define	WG1_2437_2442	AFTER(WG1_2417_2432)
389290001Sglebius	{ 2447, 2457, 20, 0, 20, 5, NO_DFS, NO_PSCAN },
390132451Sroberto#define	WG1_2447_2457	AFTER(WG1_2437_2442)
391132451Sroberto	{ 2462, 2462, 20, 0, 20, 5, NO_DFS, NO_PSCAN },
392290001Sglebius#define	WG1_2462_2462	AFTER(WG1_2447_2457)
393132451Sroberto	{ 2467, 2467, 20, 0, 20, 5, NO_DFS, PSCAN_WWR | IS_ECM_CHAN },
394290001Sglebius#define	WG1_2467_2467	AFTER(WG1_2462_2462)
395290001Sglebius	{ 2467, 2467, 20, 0, 20, 5, NO_DFS, NO_PSCAN | IS_ECM_CHAN },
396290001Sglebius#define	WG2_2467_2467	AFTER(WG1_2467_2467)
397290001Sglebius	{ 2472, 2472, 20, 0, 20, 5, NO_DFS, PSCAN_WWR | IS_ECM_CHAN },
398290001Sglebius#define	WG1_2472_2472	AFTER(WG2_2467_2467)
399290001Sglebius	{ 2472, 2472, 20, 0, 20, 5, NO_DFS, NO_PSCAN | IS_ECM_CHAN },
400290001Sglebius#define	WG2_2472_2472	AFTER(WG1_2472_2472)
401290001Sglebius};
402290001Sglebius
403132451Sroberto/*
404290001Sglebius * 2GHz Dynamic turbo tags
405132451Sroberto */
406132451Srobertostatic REG_DMN_FREQ_BAND regDmn2Ghz11gTurboFreq[] = {
407132451Sroberto	{ 2312, 2372, 5,  6, 40, 40, NO_DFS, NO_PSCAN },
408132451Sroberto#define	T1_2312_2372	0
409132451Sroberto	{ 2437, 2437, 5,  6, 40, 40, NO_DFS, NO_PSCAN },
410132451Sroberto#define	T1_2437_2437	AFTER(T1_2312_2372)
411132451Sroberto	{ 2437, 2437, 20, 6, 40, 40, NO_DFS, NO_PSCAN },
412132451Sroberto#define	T2_2437_2437	AFTER(T1_2437_2437)
413132451Sroberto	{ 2437, 2437, 18, 6, 40, 40, NO_DFS, PSCAN_WWR },
414290001Sglebius#define	T3_2437_2437	AFTER(T2_2437_2437)
415310419Sdelphij	{ 2512, 2732, 5,  6, 40, 40, NO_DFS, NO_PSCAN },
416290001Sglebius#define	T1_2512_2732	AFTER(T3_2437_2437)
417290001Sglebius};
418290001Sglebius
419290001Sglebius#endif
420132451Sroberto