1 /*-
2  * SPDX-License-Identifier: ISC
3  *
4  * Copyright (c) 2002-2009 Sam Leffler, Errno Consulting
5  * Copyright (c) 2005-2011 Atheros Communications, Inc.
6  * All rights reserved.
7  *
8  * Permission to use, copy, modify, and/or distribute this software for any
9  * purpose with or without fee is hereby granted, provided that the above
10  * copyright notice and this permission notice appear in all copies.
11  *
12  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
13  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
14  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
15  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
16  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
17  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
18  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
19  *
20  * $FreeBSD$
21  */
22 
23 #ifndef	__AH_REGDOMAIN_REGENUM_H__
24 #define	__AH_REGDOMAIN_REGENUM_H__
25 
26 /*
27  * Enumerated Regulatory Domain Information 8 bit values indicate that
28  * the regdomain is really a pair of unitary regdomains.  12 bit values
29  * are the real unitary regdomains and are the only ones which have the
30  * frequency bitmasks and flags set.
31  */
32 enum {
33 	/*
34 	 * The following regulatory domain definitions are
35 	 * found in the EEPROM. Each regulatory domain
36 	 * can operate in either a 5GHz or 2.4GHz wireless mode or
37 	 * both 5GHz and 2.4GHz wireless modes.
38 	 * In general, the value holds no special
39 	 * meaning and is used to decode into either specific
40 	 * 2.4GHz or 5GHz wireless mode for that particular
41 	 * regulatory domain.
42 	 */
43 	NO_ENUMRD	= 0x00,
44 	NULL1_WORLD	= 0x03,		/* For 11b-only countries (no 11a allowed) */
45 	NULL1_ETSIB	= 0x07,		/* Israel */
46 	NULL1_ETSIC	= 0x08,
47 	FCC1_FCCA	= 0x10,		/* USA */
48 	FCC1_WORLD	= 0x11,		/* Hong Kong */
49 	FCC4_FCCA	= 0x12,		/* USA - Public Safety */
50 	FCC5_FCCB	= 0x13,		/* USA w/ 1/2 and 1/4 width channels */
51 	FCC6_FCCA	= 0x14,		/* Canada for AP only */
52 
53 	FCC2_FCCA	= 0x20,		/* Canada */
54 	FCC2_WORLD	= 0x21,		/* Australia & HK */
55 	FCC2_ETSIC	= 0x22,
56 	FCC_UBNT	= 0x2A,		/* Ubiquity PicoStation M2HP */
57 	FRANCE_RES	= 0x31,		/* Legacy France for OEM */
58 	FCC3_FCCA	= 0x3A,		/* USA & Canada w/5470 band, 11h, DFS enabled */
59 	FCC3_WORLD	= 0x3B,		/* USA & Canada w/5470 band, 11h, DFS enabled */
60 
61 	ETSI1_WORLD	= 0x37,
62 	ETSI3_ETSIA	= 0x32,		/* France (optional) */
63 	ETSI2_WORLD	= 0x35,		/* Hungary & others */
64 	ETSI3_WORLD	= 0x36,		/* France & others */
65 	ETSI4_WORLD	= 0x30,
66 	ETSI4_ETSIC	= 0x38,
67 	ETSI5_WORLD	= 0x39,
68 	ETSI6_WORLD	= 0x34,		/* Bulgaria */
69 	ETSI8_WORLD	= 0x3D,		/* Russia */
70 	ETSI9_WORLD	= 0x3E,		/* Ukraine */
71 	ETSI_RESERVED	= 0x33,		/* Reserved (Do not used) */
72 
73 	MKK1_MKKA	= 0x40,		/* Japan (JP1) */
74 	MKK1_MKKB	= 0x41,		/* Japan (JP0) */
75 	APL4_WORLD	= 0x42,		/* Singapore */
76 	MKK2_MKKA	= 0x43,		/* Japan with 4.9G channels */
77 	APL_RESERVED	= 0x44,		/* Reserved (Do not used)  */
78 	APL2_WORLD	= 0x45,		/* Korea */
79 	APL2_APLC	= 0x46,
80 	APL3_WORLD	= 0x47,
81 	MKK1_FCCA	= 0x48,		/* Japan (JP1-1) */
82 	APL2_APLD	= 0x49,		/* Korea with 2.3G channels */
83 	MKK1_MKKA1	= 0x4A,		/* Japan (JE1) */
84 	MKK1_MKKA2	= 0x4B,		/* Japan (JE2) */
85 	MKK1_MKKC	= 0x4C,		/* Japan (MKK1_MKKA,except Ch14) */
86 	APL2_FCCA	= 0x4D,		/* Mobile customer */
87 
88 	APL3_FCCA	= 0x50,
89 	APL1_WORLD	= 0x52,		/* Latin America */
90 	APL1_FCCA	= 0x53,
91 	APL1_APLA	= 0x54,
92 	APL1_ETSIC	= 0x55,
93 	APL2_ETSIC	= 0x56,		/* Venezuela */
94 	APL5_WORLD	= 0x58,		/* Chile */
95 	APL6_WORLD	= 0x5B,		/* Singapore */
96 	APL7_FCCA	= 0x5C,		/* Taiwan 5.47 Band */
97 	APL8_WORLD	= 0x5D,		/* Malaysia 5GHz */
98 	APL9_WORLD	= 0x5E,		/* Korea 5GHz; before 11/2007; now APs only */
99 	APL10_WORLD	= 0x5F,		/* Korea 5GHz; After 11/2007; STAs only */
100 
101 	/*
102 	 * World mode SKUs
103 	 */
104 	WOR0_WORLD	= 0x60,		/* World0 (WO0 SKU) */
105 	WOR1_WORLD	= 0x61,		/* World1 (WO1 SKU) */
106 	WOR2_WORLD	= 0x62,		/* World2 (WO2 SKU) */
107 	WOR3_WORLD	= 0x63,		/* World3 (WO3 SKU) */
108 	WOR4_WORLD	= 0x64,		/* World4 (WO4 SKU) */
109 	WOR5_ETSIC	= 0x65,		/* World5 (WO5 SKU) */
110 
111 	WOR01_WORLD	= 0x66,		/* World0-1 (WW0-1 SKU) */
112 	WOR02_WORLD	= 0x67,		/* World0-2 (WW0-2 SKU) */
113 	EU1_WORLD	= 0x68,		/* Same as World0-2 (WW0-2 SKU), except active scan ch1-13. No ch14 */
114 
115 	WOR9_WORLD	= 0x69,		/* World9 (WO9 SKU) */
116 	WORA_WORLD	= 0x6A,		/* WorldA (WOA SKU) */
117 	WORB_WORLD	= 0x6B,		/* WorldB (WOB SKU) */
118 	WORC_WORLD	= 0x6C,		/* WorldC (WOC SKU) */
119 
120 	MKK3_MKKB	= 0x80,		/* Japan UNI-1 even + MKKB */
121 	MKK3_MKKA2	= 0x81,		/* Japan UNI-1 even + MKKA2 */
122 	MKK3_MKKC	= 0x82,		/* Japan UNI-1 even + MKKC */
123 
124 	MKK4_MKKB	= 0x83,		/* Japan UNI-1 even + UNI-2 + MKKB */
125 	MKK4_MKKA2	= 0x84,		/* Japan UNI-1 even + UNI-2 + MKKA2 */
126 	MKK4_MKKC	= 0x85,		/* Japan UNI-1 even + UNI-2 + MKKC */
127 
128 	MKK5_MKKB	= 0x86,		/* Japan UNI-1 even + UNI-2 + mid-band + MKKB */
129 	MKK5_MKKA2	= 0x87,		/* Japan UNI-1 even + UNI-2 + mid-band + MKKA2 */
130 	MKK5_MKKC	= 0x88,		/* Japan UNI-1 even + UNI-2 + mid-band + MKKC */
131 
132 	MKK6_MKKB	= 0x89,		/* Japan UNI-1 even + UNI-1 odd MKKB */
133 	MKK6_MKKA2	= 0x8A,		/* Japan UNI-1 even + UNI-1 odd + MKKA2 */
134 	MKK6_MKKC	= 0x8B,		/* Japan UNI-1 even + UNI-1 odd + MKKC */
135 
136 	MKK7_MKKB	= 0x8C,		/* Japan UNI-1 even + UNI-1 odd + UNI-2 + MKKB */
137 	MKK7_MKKA2	= 0x8D,		/* Japan UNI-1 even + UNI-1 odd + UNI-2 + MKKA2 */
138 	MKK7_MKKC	= 0x8E,		/* Japan UNI-1 even + UNI-1 odd + UNI-2 + MKKC */
139 
140 	MKK8_MKKB	= 0x8F,		/* Japan UNI-1 even + UNI-1 odd + UNI-2 + mid-band + MKKB */
141 	MKK8_MKKA2	= 0x90,		/* Japan UNI-1 even + UNI-1 odd + UNI-2 + mid-band + MKKA2 */
142 	MKK8_MKKC	= 0x91,		/* Japan UNI-1 even + UNI-1 odd + UNI-2 + mid-band + MKKC */
143 
144 	MKK14_MKKA1	= 0x92,		/* Japan UNI-1 even + UNI-1 odd + 4.9GHz + MKKA1 */
145 	MKK15_MKKA1	= 0x93,		/* Japan UNI-1 even + UNI-1 odd + UNI-2 + 4.9GHz + MKKA1 */
146 
147 	MKK10_FCCA	= 0xD0,		/* Japan UNI-1 even + UNI-2 + 4.9GHz + FCCA */
148 	MKK10_MKKA1	= 0xD1,		/* Japan UNI-1 even + UNI-2 + 4.9GHz + MKKA1 */
149 	MKK10_MKKC	= 0xD2,		/* Japan UNI-1 even + UNI-2 + 4.9GHz + MKKC */
150 	MKK10_MKKA2	= 0xD3,		/* Japan UNI-1 even + UNI-2 + 4.9GHz + MKKA2 */
151 
152 	MKK11_MKKA	= 0xD4,		/* Japan UNI-1 even + UNI-2 + mid-band + 4.9GHz + MKKA */
153 	MKK11_FCCA	= 0xD5,		/* Japan UNI-1 even + UNI-2 + mid-band + 4.9GHz + FCCA */
154 	MKK11_MKKA1	= 0xD6,		/* Japan UNI-1 even + UNI-2 + mid-band + 4.9GHz + MKKA1 */
155 	MKK11_MKKC	= 0xD7,		/* Japan UNI-1 even + UNI-2 + mid-band + 4.9GHz + MKKC */
156 	MKK11_MKKA2	= 0xD8,		/* Japan UNI-1 even + UNI-2 + mid-band + 4.9GHz + MKKA2 */
157 
158 	MKK12_MKKA	= 0xD9,		/* Japan UNI-1 even + UNI-1 odd + UNI-2 + mid-band + 4.9GHz + MKKA */
159 	MKK12_FCCA	= 0xDA,		/* Japan UNI-1 even + UNI-1 odd + UNI-2 + mid-band + 4.9GHz + FCCA */
160 	MKK12_MKKA1	= 0xDB,		/* Japan UNI-1 even + UNI-1 odd + UNI-2 + mid-band + 4.9GHz + MKKA1 */
161 	MKK12_MKKC	= 0xDC,		/* Japan UNI-1 even + UNI-1 odd + UNI-2 + mid-band + 4.9GHz + MKKC */
162 	MKK12_MKKA2	= 0xDD,		/* Japan UNI-1 even + UNI-1 odd + UNI-2 + mid-band + 4.9GHz + MKKA2 */
163 
164 	MKK13_MKKB	= 0xDE,		/* Japan UNI-1 even + UNI-1 odd + UNI-2 + mid-band + MKKB + All passive + no adhoc */
165 
166 	/*
167 	 * Following definitions are used only by s/w to map old
168 	 * Japan SKUs.
169 	 */
170 	MKK3_MKKA	= 0xF0,		/* Japan UNI-1 even + MKKA */
171 	MKK3_MKKA1	= 0xF1,		/* Japan UNI-1 even + MKKA1 */
172 	MKK3_FCCA	= 0xF2,		/* Japan UNI-1 even + FCCA */
173 	MKK4_MKKA	= 0xF3,		/* Japan UNI-1 even + UNI-2 + MKKA */
174 	MKK4_MKKA1	= 0xF4,		/* Japan UNI-1 even + UNI-2 + MKKA1 */
175 	MKK4_FCCA	= 0xF5,		/* Japan UNI-1 even + UNI-2 + FCCA */
176 	MKK9_MKKA	= 0xF6,		/* Japan UNI-1 even + 4.9GHz */
177 	MKK10_MKKA	= 0xF7,		/* Japan UNI-1 even + UNI-2 + 4.9GHz */
178 	MKK6_MKKA1	= 0xF8,		/* Japan UNI-1 even + UNI-1 odd + UNI-2 + MKKA1 */
179 	MKK6_FCCA	= 0xF9,		/* Japan UNI-1 even + UNI-1 odd + UNI-2 + FCCA */
180 	MKK7_MKKA1	= 0xFA,		/* Japan UNI-1 even + UNI-1 odd + UNI-2 + MKKA1 */
181 	MKK7_FCCA	= 0xFB,		/* Japan UNI-1 even + UNI-1 odd + UNI-2 + FCCA */
182 	MKK9_FCCA	= 0xFC,		/* Japan UNI-1 even + 4.9GHz + FCCA */
183 	MKK9_MKKA1	= 0xFD,		/* Japan UNI-1 even + 4.9GHz + MKKA1 */
184 	MKK9_MKKC	= 0xFE,		/* Japan UNI-1 even + 4.9GHz + MKKC */
185 	MKK9_MKKA2	= 0xFF,		/* Japan UNI-1 even + 4.9GHz + MKKA2 */
186 
187 	/*
188 	 * Regulator domains ending in a number (e.g. APL1,
189 	 * MK1, ETSI4, etc) apply to 5GHz channel and power
190 	 * information.  Regulator domains ending in a letter
191 	 * (e.g. APLA, FCCA, etc) apply to 2.4GHz channel and
192 	 * power information.
193 	 */
194 	APL1		= 0x0150,	/* LAT & Asia */
195 	APL2		= 0x0250,	/* LAT & Asia */
196 	APL3		= 0x0350,	/* Taiwan */
197 	APL4		= 0x0450,	/* Jordan */
198 	APL5		= 0x0550,	/* Chile */
199 	APL6		= 0x0650,	/* Singapore */
200 	APL7		= 0x0750,	/* Taiwan, disable ch52 */
201 	APL8		= 0x0850,	/* Malaysia */
202 	APL9		= 0x0950,	/* Korea. Before 11/2007. Now used only by APs */
203 	APL10		= 0x1050,	/* Korea. After 11/2007. For STAs only */
204 
205 	ETSI1		= 0x0130,	/* Europe & others */
206 	ETSI2		= 0x0230,	/* Europe & others */
207 	ETSI3		= 0x0330,	/* Europe & others */
208 	ETSI4		= 0x0430,	/* Europe & others */
209 	ETSI5		= 0x0530,	/* Europe & others */
210 	ETSI6		= 0x0630,	/* Europe & others */
211 	ETSI8		= 0x0830,	/* Russia */
212 	ETSI9		= 0x0930,	/* Ukraine */
213 	ETSIA		= 0x0A30,	/* France */
214 	ETSIB		= 0x0B30,	/* Israel */
215 	ETSIC		= 0x0C30,	/* Latin America */
216 
217 	FCC1		= 0x0110,	/* US & others */
218 	FCC2		= 0x0120,	/* Canada, Australia & New Zealand */
219 	FCC3		= 0x0160,	/* US w/new middle band & DFS */
220 	FCC4		= 0x0165,	/* US Public Safety */
221 	FCC5		= 0x0166,	/* US w/ 1/2 and 1/4 width channels */
222 	FCC6		= 0x0610,	/* Canada and Australia */
223 	FCCA		= 0x0A10,
224 	FCCB		= 0x0A11,	/* US w/ 1/2 and 1/4 width channels */
225 
226 	APLD		= 0x0D50,	/* South Korea */
227 
228 	MKK1		= 0x0140,	/* Japan (UNI-1 odd)*/
229 	MKK2		= 0x0240,	/* Japan (4.9 GHz + UNI-1 odd) */
230 	MKK3		= 0x0340,	/* Japan (UNI-1 even) */
231 	MKK4		= 0x0440,	/* Japan (UNI-1 even + UNI-2) */
232 	MKK5		= 0x0540,	/* Japan (UNI-1 even + UNI-2 + mid-band) */
233 	MKK6		= 0x0640,	/* Japan (UNI-1 odd + UNI-1 even) */
234 	MKK7		= 0x0740,	/* Japan (UNI-1 odd + UNI-1 even + UNI-2 */
235 	MKK8		= 0x0840,	/* Japan (UNI-1 odd + UNI-1 even + UNI-2 + mid-band) */
236 	MKK9		= 0x0940,	/* Japan (UNI-1 even + 4.9 GHZ) */
237 	MKK10		= 0x0B40,	/* Japan (UNI-1 even + UNI-2 + 4.9 GHZ) */
238 	MKK11		= 0x1140,	/* Japan (UNI-1 even + UNI-2 + 4.9 GHZ) */
239 	MKK12		= 0x1240,	/* Japan (UNI-1 even + UNI-2 + 4.9 GHZ) */
240 	MKK13		= 0x0C40,	/* Same as MKK8 but all passive and no adhoc 11a */
241 	MKK14		= 0x1440,	/* Japan UNI-1 even + UNI-1 odd + 4.9GHz */
242 	MKK15		= 0x1540,	/* Japan UNI-1 even + UNI-1 odd + UNI-2 + 4.9GHz */
243 
244 	MKKA		= 0x0A40,	/* Japan */
245 	MKKC		= 0x0A50,
246 
247 	NULL1		= 0x0198,
248 	WORLD		= 0x0199,
249 	DEBUG_REG_DMN	= 0x01ff,
250 };
251 
252 #endif
253