xref: /wlan-dirver/qca-wifi-host-cmn/umac/regulatory/core/src/reg_db.h (revision 901120c066e139c7f8a2c8e4820561fdd83c67ef)
1 /*
2  * Copyright (c) 2017-2021 The Linux Foundation. All rights reserved.
3  * Copyright (c) 2021-2022 Qualcomm Innovation Center, Inc. All rights reserved.
4  *
5  *
6  * Permission to use, copy, modify, and/or distribute this software for
7  * any purpose with or without fee is hereby granted, provided that the
8  * above copyright notice and this permission notice appear in all
9  * copies.
10  *
11  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
12  * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
13  * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
14  * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
15  * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
16  * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
17  * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
18  * PERFORMANCE OF THIS SOFTWARE.
19  */
20 
21 /**
22  * DOC: reg_db.h
23  * This file contains regulatory component data structures
24  */
25 
26 #ifndef __REG_DB_H
27 #define __REG_DB_H
28 
29 /*
30  * If COMPILE_REGDB_6G and CONFIG_BAND_6GHZ are defined, then
31  * reg_6ghz_super_dmn_id and max_bw_6g are part of the
32  * country_code_to_reg_domain table for a country
33  * entry. If COMPILE_REGDB_6G and CONFIG_BAND_6GHZ are not defined, then they
34  * are absent.
35  *
36  * COMPILE_REGDB_6G is not defined for the Partial offload platform.
37  *
38  * CE:- country entry
39  */
40 #if defined(CONFIG_BAND_6GHZ) && defined(COMPILE_REGDB_6G)
41 #define CE(country_code, reg_dmn_pair_id, reg_6ghz_super_dmn_id,         \
42 	   alpha2, max_bw_2g, max_bw_5g, max_bw_6g, phymode_bitmap)      \
43 	{CTRY_ ## country_code, reg_dmn_pair_id, reg_6ghz_super_dmn_id,  \
44 	 #alpha2, max_bw_2g, max_bw_5g, max_bw_6g, phymode_bitmap}
45 #else
46 #define CE(country_code, reg_dmn_pair_id, reg_6ghz_super_dmn_id, alpha2, \
47 	   max_bw_2g, max_bw_5g, max_bw_6g, phymode_bitmap)              \
48 	{CTRY_ ## country_code, reg_dmn_pair_id, #alpha2, max_bw_2g,     \
49 	 max_bw_5g, phymode_bitmap}
50 #endif
51 
52 /* Alpha2 code for world reg domain */
53 #define REG_WORLD_ALPHA2 "00"
54 
55 enum reg_domain {
56 	NO_ENUMRD = 0x00,
57 	NULL1_WORLD = 0x03,
58 	NULL1_ETSIB = 0x07,
59 	NULL1_ETSIC = 0x08,
60 
61 	FCC1_FCCA = 0x10,
62 	FCC1_WORLD = 0x11,
63 	FCC2_FCCA = 0x20,
64 	FCC2_WORLD = 0x21,
65 	FCC2_ETSIC = 0x22,
66 	FCC3_FCCA = 0x3A,
67 	FCC3_WORLD = 0x3B,
68 	FCC3_ETSIC = 0x3F,
69 	FCC4_FCCA = 0x12,
70 	FCC5_FCCA = 0x13,
71 	FCC6_WORLD = 0x23,
72 	FCC6_FCCA = 0x14,
73 	FCC7_FCCA = 0x15,
74 	FCC8_FCCA = 0x16,
75 	FCC8_WORLD = 0x09,
76 	FCC9_FCCA = 0x17,
77 	FCC10_FCCA = 0x18,
78 	FCC11_WORLD = 0x19,
79 	FCC13_WORLD = 0xE4,
80 	FCC14_FCCB = 0xE6,
81 	FCC14_WORLD = 0xD1,
82 	FCC15_FCCA = 0xEA,
83 	FCC16_FCCA = 0xE8,
84 	FCC17_FCCA = 0xE9,
85 	FCC17_WORLD = 0xEB,
86 	FCC17_ETSIC = 0xEC,
87 	FCC18_ETSIC = 0xED,
88 
89 	ETSI1_WORLD = 0x37,
90 	ETSI2_WORLD = 0x35,
91 	ETSI3_WORLD = 0x36,
92 	ETSI3_ETSIA = 0x32,
93 	ETSI4_WORLD = 0x30,
94 	ETSI4_ETSIC = 0x38,
95 	ETSI5_WORLD = 0x39,
96 	ETSI6_WORLD = 0x34,
97 	ETSI7_WORLD = 0x3C,
98 	ETSI8_WORLD = 0x3D,
99 	ETSI9_WORLD = 0x3E,
100 	ETSI10_WORLD = 0x24,
101 	ETSI10_FCCA = 0x25,
102 	ETSI11_WORLD = 0x26,
103 	ETSI12_WORLD = 0x28,
104 	ETSI13_WORLD = 0x27,
105 	ETSI14_WORLD = 0x29,
106 	ETSI15_WORLD = 0x31,
107 	ETSI15_ETSIC = 0x7A,
108 	ETSI16_WORLD = 0x4A,
109 	ETSI17_WORLD = 0x4B,
110 	ETSI18_WORLD = 0x3D,
111 	ETSI19_WORLD = 0x7B,
112 
113 	APL1_WORLD = 0x52,
114 	APL1_ETSIC = 0x55,
115 	APL2_WORLD = 0x45,
116 	APL2_ETSIC = 0x56,
117 	APL2_ETSID = 0x41,
118 	APL2_FCCA = 0x4D,
119 	APL4_WORLD = 0x42,
120 	APL6_WORLD = 0x5B,
121 	APL7_FCCA = 0x5C,
122 	APL8_WORLD = 0x5D,
123 	APL9_WORLD = 0x5E,
124 	APL9_MKKC  = 0x48,
125 	APL9_KRRA  = 0x43,
126 	APL10_WORLD = 0x5F,
127 	APL11_FCCA = 0x4F,
128 	APL12_WORLD = 0x51,
129 	APL13_WORLD = 0x5A,
130 	APL14_WORLD = 0x57,
131 	APL14_CHNA = 0x74,
132 	APL15_WORLD = 0x59,
133 	APL16_WORLD = 0x70,
134 	APL16_ETSIC = 0x6D,
135 	APL17_ETSIC = 0xE7,
136 	APL17_ETSID = 0xE0,
137 	APL19_ETSIC = 0x71,
138 	APL20_WORLD = 0xE5,
139 	APL23_WORLD = 0xE3,
140 	APL24_ETSIC = 0xE2,
141 	APL25_ETSIC = 0x75,
142 	APL26_ETSIC = 0x72,
143 	APL27_FCCA = 0x73,
144 	APL28_ETSIC = 0x76,
145 
146 	WOR0_WORLD = 0x60,
147 	WOR1_WORLD = 0x61,
148 	WOR2_WORLD = 0x62,
149 	WOR3_WORLD = 0x63,
150 	WOR4_FCCA = 0x64,
151 	WOR5_ETSIC = 0x65,
152 	WOR01_WORLD = 0x66,
153 	WOR02_WORLD = 0x67,
154 	EU1_WORLD = 0x68,
155 	WOR9_WORLD = 0x69,
156 	WORA_WORLD = 0x6A,
157 	WORB_WORLD = 0x6B,
158 	WORC_WORLD = 0x6C,
159 
160 	MKK3_MKKB = 0x80,
161 	MKK3_MKKA2 = 0x81,
162 	MKK3_MKKC = 0x82,
163 	MKK4_MKKB = 0x83,
164 	MKK4_MKKA2 = 0x84,
165 	MKK4_MKKC = 0x85,
166 	MKK5_MKKA = 0x99,
167 	MKK5_FCCA = 0x9A,
168 	MKK5_MKKB = 0x86,
169 	MKK5_MKKA2 = 0x87,
170 	MKK5_MKKC = 0x88,
171 	MKK3_MKKA = 0xF0,
172 	MKK3_MKKA1 = 0xF1,
173 	MKK3_FCCA = 0xF2,
174 	MKK4_MKKA = 0xF3,
175 	MKK4_MKKA1 = 0xF4,
176 	MKK4_FCCA = 0xF5,
177 	MKK9_MKKA = 0xF6,
178 	MKK9_FCCA = 0xFC,
179 	MKK9_MKKA1 = 0xFD,
180 	MKK9_MKKC = 0xFE,
181 	MKK9_MKKA2 = 0xFF,
182 	MKK10_MKKA = 0xF7,
183 	MKK10_FCCA = 0xD0,
184 	MKK10_MKKA1 = 0xD1,
185 	MKK10_MKKC = 0xD2,
186 	MKK10_MKKA2 = 0xD3,
187 	MKK11_MKKA = 0xD4,
188 	MKK11_FCCA = 0xD5,
189 	MKK11_MKKA1 = 0xD6,
190 	MKK11_MKKC = 0xD7,
191 	MKK11_MKKA2 = 0xD8,
192 	MKK16_MKKC = 0xDF,
193 	MKK17_MKKC = 0xE1,
194 
195 	WORLD_60 = 0x60,
196 	WORLD_61 = 0x61,
197 	WORLD_62 = 0x62,
198 	WORLD_63 = 0x63,
199 	WORLD_65 = 0x65,
200 	WORLD_64 = 0x64,
201 	WORLD_66 = 0x66,
202 	WORLD_69 = 0x69,
203 	WORLD_67 = 0x67,
204 	WORLD_68 = 0x68,
205 	WORLD_6A = 0x6A,
206 	WORLD_6C = 0x6C,
207 };
208 
209 enum reg_domains_5g {
210 	NULL1,
211 
212 	FCC1,
213 	FCC2,
214 	FCC3,
215 	FCC4,
216 	FCC5,
217 	FCC6,
218 	FCC7,
219 	FCC8,
220 	FCC9,
221 	FCC10,
222 	FCC11,
223 	FCC13,
224 	FCC14,
225 	FCC15,
226 	FCC16,
227 	FCC17,
228 	FCC18,
229 
230 	ETSI1,
231 	ETSI2,
232 	ETSI3,
233 	ETSI4,
234 	ETSI5,
235 	ETSI6,
236 	ETSI8,
237 	ETSI9,
238 	ETSI10,
239 	ETSI11,
240 	ETSI12,
241 	ETSI13,
242 	ETSI14,
243 	ETSI15,
244 	ETSI16,
245 	ETSI17,
246 	ETSI18,
247 	ETSI19,
248 
249 	APL1,
250 	APL2,
251 	APL3,
252 	APL4,
253 	APL5,
254 	APL6,
255 	APL7,
256 	APL8,
257 	APL9,
258 	APL10,
259 	APL11,
260 	APL12,
261 	APL13,
262 	APL14,
263 	APL15,
264 	APL16,
265 	APL17,
266 	APL19,
267 	APL23,
268 	APL20,
269 	APL24,
270 	APL25,
271 	APL26,
272 	APL27,
273 	APL28,
274 
275 	MKK3,
276 	MKK5,
277 	MKK11,
278 	MKK16,
279 	MKK17,
280 	MKK4,
281 	MKK9,
282 	MKK10,
283 
284 	WORLD_5G_1,
285 	WORLD_5G_2,
286 
287 	REG_DOMAINS_5G_MAX,
288 };
289 
290 enum reg_domains_2g {
291 	FCCA,
292 	MKKA,
293 	MKKC,
294 	KRRA,
295 	CHNA,
296 	FCCB,
297 	ETSIC,
298 	WORLD,
299 	ETSID,
300 	WORLD_2G_1,
301 	WORLD_2G_2,
302 	WORLD_2G_3,
303 
304 	REG_DOMAINS_2G_MAX,
305 };
306 
307 enum country_code {
308 	CTRY_AFGHANISTAN = 4,
309 	CTRY_ALAND_ISLANDS = 248,
310 	CTRY_ALBANIA = 8,
311 	CTRY_ALGERIA = 12,
312 	CTRY_AMERICAN_SAMOA = 16,
313 	CTRY_ANDORRA = 20,
314 	CTRY_ANGUILLA = 660,
315 	CTRY_ANTIGUA_AND_BARBUDA = 28,
316 	CTRY_ARGENTINA = 32,
317 	CTRY_ARMENIA = 51,
318 	CTRY_MYANMAR = 104,
319 	CTRY_ARUBA = 533,
320 	CTRY_AUSTRALIA = 36,
321 	CTRY_AUSTRIA = 40,
322 	CTRY_AZERBAIJAN = 31,
323 	CTRY_BAHAMAS = 44,
324 	CTRY_BAHRAIN = 48,
325 	CTRY_BANGLADESH = 50,
326 	CTRY_BARBADOS = 52,
327 	CTRY_BELARUS = 112,
328 	CTRY_BELGIUM = 56,
329 	CTRY_BELIZE = 84,
330 	CTRY_BERMUDA = 60,
331 	CTRY_BHUTAN = 64,
332 	CTRY_BOLIVIA = 68,
333 	CTRY_BOSNIA_HERZ = 70,
334 	CTRY_BOTSWANA = 72,
335 	CTRY_BRAZIL = 76,
336 	CTRY_BRUNEI_DARUSSALAM = 96,
337 	CTRY_BULGARIA = 100,
338 	CTRY_BURUNDI = 108,
339 	CTRY_BURKINA_FASO = 854,
340 	CTRY_CAMBODIA = 116,
341 	CTRY_CAMEROON = 120,
342 	CTRY_CANADA = 124,
343 	CTRY_CAYMAN_ISLANDS = 136,
344 	CTRY_CENTRAL_AFRICA_REPUBLIC = 140,
345 	CTRY_CHAD = 148,
346 	CTRY_CHILE = 152,
347 	CTRY_CHINA = 156,
348 	CTRY_CHRISTMAS_ISLAND = 162,
349 	CTRY_COLOMBIA = 170,
350 	CTRY_CONGO = 178,
351 	CTRY_CONGO_DEMOCRATIC_REPUBLIC = 180,
352 	CTRY_COOK_ISLANDS = 184,
353 	CTRY_COSTA_RICA = 188,
354 	CTRY_COTE_DIVOIRE = 384,
355 	CTRY_CROATIA = 191,
356 	CTRY_CURACAO = 531,
357 	CTRY_CYPRUS = 196,
358 	CTRY_CZECH = 203,
359 	CTRY_DENMARK = 208,
360 	CTRY_DOMINICA = 212,
361 	CTRY_DOMINICAN_REPUBLIC = 214,
362 	CTRY_ECUADOR = 218,
363 	CTRY_EGYPT = 818,
364 	CTRY_EL_SALVADOR = 222,
365 	CTRY_ESTONIA = 233,
366 	CTRY_ETHIOPIA = 231,
367 	CTRY_FALKLAND_ISLANDS = 238,
368 	CTRY_FAROE_ISLANDS = 234,
369 	CTRY_FIJI = 242,
370 	CTRY_FINLAND = 246,
371 	CTRY_FRANCE = 250,
372 	CTRY_FRENCH_GUIANA = 254,
373 	CTRY_FRENCH_POLYNESIA = 258,
374 	CTRY_FRENCH_SOUTHERN_TERRITORIES = 260,
375 	CTRY_GABON = 266,
376 	CTRY_GEORGIA = 268,
377 	CTRY_GERMANY = 276,
378 	CTRY_GHANA = 288,
379 	CTRY_GIBRALTAR = 292,
380 	CTRY_GREECE = 300,
381 	CTRY_GREENLAND = 304,
382 	CTRY_GRENADA = 308,
383 	CTRY_GUADELOUPE = 312,
384 	CTRY_GUAM = 316,
385 	CTRY_GUATEMALA = 320,
386 	CTRY_GUERNSEY = 831,
387 	CTRY_GUYANA = 328,
388 	CTRY_HAITI = 332,
389 	CTRY_HEARD_ISLAND_AND_MCDONALD_ISLANDS = 334,
390 	CTRY_HOLY_SEE = 336,
391 	CTRY_HONDURAS = 340,
392 	CTRY_HONG_KONG = 344,
393 	CTRY_HUNGARY = 348,
394 	CTRY_ICELAND = 352,
395 	CTRY_INDIA = 356,
396 	CTRY_INDONESIA = 360,
397 	CTRY_IRAQ = 368,
398 	CTRY_IRELAND = 372,
399 	CTRY_ISLE_OF_MAN = 833,
400 	CTRY_ISRAEL = 376,
401 	CTRY_ITALY = 380,
402 	CTRY_JAMAICA = 388,
403 	CTRY_JAPAN = 392,
404 	CTRY_JAPAN15 = 4015,
405 	CTRY_JERSEY = 832,
406 	CTRY_JORDAN = 400,
407 	CTRY_KAZAKHSTAN = 398,
408 	CTRY_KENYA = 404,
409 	CTRY_KOREA_ROC = 410,
410 	CTRY_KUWAIT = 414,
411 	CTRY_LAO_PEOPLES_DEMOCRATIC_REPUBLIC = 418,
412 	CTRY_LATVIA = 428,
413 	CTRY_LEBANON = 422,
414 	CTRY_LESOTHO = 426,
415 	CTRY_LIBYA = 434,
416 	CTRY_LIECHTENSTEIN = 438,
417 	CTRY_LITHUANIA = 440,
418 	CTRY_LUXEMBOURG = 442,
419 	CTRY_MACAU = 446,
420 	CTRY_MACEDONIA = 807,
421 	CTRY_MALAWI = 454,
422 	CTRY_MALAYSIA = 458,
423 	CTRY_MALDIVES = 462,
424 	CTRY_MALTA = 470,
425 	CTRY_MARSHALL_ISLANDS = 584,
426 	CTRY_MARTINIQUE = 474,
427 	CTRY_MAURITANIA = 478,
428 	CTRY_MAURITIUS = 480,
429 	CTRY_MAYOTTE = 175,
430 	CTRY_MEXICO = 484,
431 	CTRY_MICRONESIA = 583,
432 	CTRY_MOLDOVA = 498,
433 	CTRY_MONACO = 492,
434 	CTRY_MONGOLIA = 496,
435 	CTRY_MONTENEGRO = 499,
436 	CTRY_MONTSERRAT = 500,
437 	CTRY_MOROCCO = 504,
438 	CTRY_NAMIBIA = 516,
439 	CTRY_NEPAL = 524,
440 	CTRY_NETHERLANDS = 528,
441 	CTRY_NETHERLANDS_ANTILLES = 530,
442 	CTRY_NEW_CALEDONIA = 540,
443 	CTRY_NEW_ZEALAND = 554,
444 	CTRY_NIGERIA = 566,
445 	CTRY_NORTHERN_MARIANA_ISLANDS = 580,
446 	CTRY_NICARAGUA = 558,
447 	CTRY_NIUE = 570,
448 	CTRY_NORFOLK_ISLAND = 574,
449 	CTRY_NORWAY = 578,
450 	CTRY_OMAN = 512,
451 	CTRY_PAKISTAN = 586,
452 	CTRY_PALAU = 585,
453 	CTRY_PANAMA = 591,
454 	CTRY_PAPUA_NEW_GUINEA = 598,
455 	CTRY_PARAGUAY = 600,
456 	CTRY_PERU = 604,
457 	CTRY_PHILIPPINES = 608,
458 	CTRY_POLAND = 616,
459 	CTRY_PORTUGAL = 620,
460 	CTRY_PUERTO_RICO = 630,
461 	CTRY_QATAR = 634,
462 	CTRY_REUNION = 638,
463 	CTRY_ROMANIA = 642,
464 	CTRY_RUSSIA = 643,
465 	CTRY_RWANDA = 646,
466 	CTRY_SAINT_BARTHELEMY = 652,
467 	CTRY_SAINT_HELENA_ASCENSION_AND_TRISTAN_DA_CUNHA = 654,
468 	CTRY_SAINT_KITTS_AND_NEVIS = 659,
469 	CTRY_SAINT_LUCIA = 662,
470 	CTRY_SAINT_MARTIN = 663,
471 	CTRY_SAINT_PIERRE_AND_MIQUELON = 666,
472 	CTRY_SAINT_VINCENT_AND_THE_GRENADIENS = 670,
473 	CTRY_SAMOA = 882,
474 	CTRY_SAN_MARINO = 674,
475 	CTRY_SAO_TOME_AND_PRINCIPE = 678,
476 	CTRY_SAUDI_ARABIA = 682,
477 	CTRY_SENEGAL = 686,
478 	CTRY_SERBIA = 688,
479 	CTRY_SINGAPORE = 702,
480 	CTRY_SINT_MAARTEN = 534,
481 	CTRY_SLOVAKIA = 703,
482 	CTRY_SLOVENIA = 705,
483 	CTRY_SOUTH_AFRICA = 710,
484 	CTRY_SPAIN = 724,
485 	CTRY_SURINAME = 740,
486 	CTRY_SRI_LANKA = 144,
487 	CTRY_SVALBARD_AND_JAN_MAYEN = 744,
488 	CTRY_SWEDEN = 752,
489 	CTRY_SWITZERLAND = 756,
490 	CTRY_TAIWAN = 158,
491 	CTRY_TANZANIA = 834,
492 	CTRY_THAILAND = 764,
493 	CTRY_TOGO = 768,
494 	CTRY_TRINIDAD_Y_TOBAGO = 780,
495 	CTRY_TUNISIA = 788,
496 	CTRY_TURKEY = 792,
497 	CTRY_TURKS_AND_CAICOS = 796,
498 	CTRY_UGANDA = 800,
499 	CTRY_UKRAINE = 804,
500 	CTRY_UAE = 784,
501 	CTRY_UNITED_KINGDOM = 826,
502 	CTRY_UNITED_STATES = 840,
503 	CTRY_UNITED_STATES_MINOR_OUTLYING_ISLANDS = 581,
504 	CTRY_URUGUAY = 858,
505 	CTRY_UZBEKISTAN = 860,
506 	CTRY_VANUATU = 548,
507 	CTRY_VENEZUELA = 862,
508 	CTRY_VIET_NAM = 704,
509 	CTRY_VIRGIN_ISLANDS = 850,
510 	CTRY_VIRGIN_ISLANDS_BRITISH = 92,
511 	CTRY_WALLIS_AND_FUTUNA = 876,
512 	CTRY_XA = 4100,   /* Used by Linux Client for legacy MKK domain */
513 	CTRY_YEMEN = 887,
514 	CTRY_ZIMBABWE = 716,
515 	CTRY_ZAMBIA = 884,
516 };
517 
518 /**
519  * struct regulatory_rule
520  * @start_freq: start frequency
521  * @end_freq: end frequency
522  * @max_bw: maximum bandwidth
523  * @reg_power: regulatory power
524  * @flags: regulatory flags
525  */
526 struct regulatory_rule {
527 	uint16_t start_freq;
528 	uint16_t end_freq;
529 	uint16_t max_bw;
530 	uint8_t reg_power;
531 	uint16_t flags;
532 };
533 
534 #if defined(CONFIG_BAND_6GHZ) && defined(COMPILE_REGDB_6G)
535 /**
536  * struct regulatory_rule_ext
537  * @start_freq: start frequency in MHz
538  * @end_freq: end frequency in MHz
539  * @max_bw: maximum bandwidth in MHz
540  * @eirp_power: EIRP power in dBm
541  * @psd_power: Max PSD power in dBm per MHz
542  * @flags: regulatory flags
543  */
544 struct regulatory_rule_ext {
545 	uint16_t start_freq;
546 	uint16_t end_freq;
547 	uint16_t max_bw;
548 	uint8_t eirp_power;
549 	int8_t psd_power;
550 	uint16_t flags;
551 };
552 #endif
553 
554 /**
555  * struct regdomain
556  * @ctl_val: CTL value
557  * @dfs_region: dfs region
558  * @min_bw: minimum bandwidth
559  * @max_bw: maximum bandwidth
560  * @num_reg_rules: number of regulatory rules
561  * @reg_rules_id: regulatory rule index
562  */
563 struct regdomain   {
564 	uint8_t ctl_val;
565 	enum dfs_reg dfs_region;
566 	uint16_t min_bw;
567 	uint16_t max_bw;
568 	uint8_t ant_gain;
569 	uint8_t num_reg_rules;
570 	uint8_t reg_rule_id[MAX_REG_RULES];
571 };
572 
573 #if defined(CONFIG_BAND_6GHZ) && defined(COMPILE_REGDB_6G)
574 #define REG_MAX_PSD (0x7F) /* 127=63.5 dBm/MHz */
575 
576 /**
577  * struct sub_6g_regdomain
578  * @min_bw: Minimum bandwidth in MHz
579  * @max_bw: Maximum bandwidth in MHz
580  * @num_reg_rules: number of regulatory rules
581  * @reg_rules_id: regulatory rule index
582  */
583 struct sub_6g_regdomain   {
584 	uint16_t min_bw;
585 	uint16_t max_bw;
586 	uint8_t num_reg_rules;
587 	uint8_t sixg_reg_rule_id[MAX_REG_RULES];
588 };
589 #endif
590 
591 /**
592  * struct country_code_to_reg_domain
593  * @country_code: country code
594  * @reg_dmn_pair_id: reg domainpair id
595  * @reg_6ghz_super_dmn_id: 6GHz super domain id
596  * @alpha2: iso-3166 alpha2
597  * @max_bw_2g: maximum 2g bandwidth in MHz
598  * @max_bw_5g: maximum 5g bandwidth in MHz
599  * @max_bw_6g: maximum 6g bandwidth in MHz
600  * @phymode_bitmap: phymodes not supported
601  */
602 struct country_code_to_reg_domain   {
603 	uint16_t country_code;
604 	uint16_t reg_dmn_pair_id;
605 #if defined(CONFIG_BAND_6GHZ) && defined(COMPILE_REGDB_6G)
606 	uint16_t reg_6ghz_super_dmn_id;
607 #endif
608 	uint8_t alpha2[REG_ALPHA2_LEN + 1];
609 	uint16_t max_bw_2g;
610 	uint16_t max_bw_5g;
611 #if defined(CONFIG_BAND_6GHZ) && defined(COMPILE_REGDB_6G)
612 	uint16_t max_bw_6g;
613 #endif
614 	uint16_t phymode_bitmap;
615 };
616 
617 /**
618  * struct reg_domain_pair
619  * @reg_dmn_pair_id: reg domainpiar value
620  * @dmn_id_5g: 5g reg domain value
621  * @dmn_id_2g: 2g regdomain value
622  */
623 struct reg_domain_pair {
624 	uint16_t reg_dmn_pair_id;
625 	uint8_t dmn_id_5g;
626 	uint8_t dmn_id_2g;
627 };
628 
629 #if defined(CONFIG_BAND_6GHZ)
630 /**
631  * enum reg_super_domain_6g - 6G Super Domain enumeration
632  * @FCC1_6G_01: Super domain FCC1_6G_01 for US
633  * @ETSI1_6G_02: Super domain ETSI1_6G_02 for EU
634  * @ETSI2_6G_03: Super domain ETSI2_6G_03 for UK
635  * @APL1_6G_04: Super domain APL1_6G_04 for Korea
636  * @FCC1_6G_05: Super domain FCC1_6G_05 for Chile
637  * @APL2_6G_06: Super domain APL2_6G_06 for Guatemala
638  * @FCC1_6G_07: Super domain FCC1_6G_07 for Brazil
639  * @APL3_6G_08: Super domain APL3_6G_08 for UAE
640  * @FCC1_6G_09: Super domain FCC1_6G_09 for US AFC Testing
641  * @APL6_6G_0A: Super domain APL6_6G_0A for Saudi Arabia LPI STA and AP
642  * @MKK1_6G_0B: Super domain MKK1_6G_0B for Japan LPI and VLP
643  * @ETSI2_6G_0C: Super domain ETSI2_6G_0C for Australia LPI and VLP
644  * @ETSI2_6G_0D: Super domain ETSI2_6G_0D for ISRAEL LPI
645  * @ETSI2_6G_0E: Super domain ETSI2_6G_0E for NEW ZEALAND LPI and VLP
646  * @FCC2_6G_10: Super domain FCC1_6G_10 for Canada LPI &
647 		SP(VLP to be added later)
648  * @APL4_6G_11: Super domain APL3_6G_11 for Costa Rica LPI and VLP
649  * @APL5_6G_12: Super domain APL3_6G_12 for CHILE LPI and VLP
650  */
651 enum reg_super_domain_6g {
652 	FCC1_6G_01 = 0x01,
653 	ETSI1_6G_02 = 0x02,
654 	ETSI2_6G_03 = 0x03,
655 	APL1_6G_04 = 0x04,
656 	FCC1_6G_05 = 0x05,
657 	APL2_6G_06 = 0x06,
658 	FCC1_6G_07 = 0x07,
659 	APL3_6G_08 = 0x08,
660 	FCC1_6G_09 = 0x09,
661 	APL6_6G_0A = 0x0A,
662 	MKK1_6G_0B = 0x0B,
663 	ETSI2_6G_0C = 0x0C,
664 	ETSI1_6G_0D = 0x0D,
665 	ETSI2_6G_0E = 0x0E,
666 	FCC2_6G_10 = 0x10,
667 	APL4_6G_11 = 0x11,
668 	APL5_6G_12 = 0x12,
669 };
670 
671 #if defined(COMPILE_REGDB_6G)
672 /**
673  * struct sixghz_super_to_subdomains
674  * @reg_6ghz_super_dmn_id: 6G super domain id.
675  * @reg_domain_6g_id_ap_lpi: 6G domain id for LPI AP.
676  * @reg_domain_6g_id_ap_sp: 6G domain id for SP AP.
677  * @reg_domain_6g_id_ap_vlp: 6G domain id for VLP AP.
678  * @reg_domain_6g_id_client_lpi: 6G domain id for clients of the LPI AP.
679  * @reg_domain_6g_id_client_sp: 6G domain id for clients of the SP AP.
680  * @reg_domain_6g_id_client_vlp: 6G domain id for clients of the VLP AP.
681  */
682 struct sixghz_super_to_subdomains {
683 	uint16_t reg_6ghz_super_dmn_id;
684 	uint8_t reg_domain_6g_id_ap_lpi;
685 	uint8_t reg_domain_6g_id_ap_sp;
686 	uint8_t reg_domain_6g_id_ap_vlp;
687 	uint8_t reg_domain_6g_id_client_lpi[REG_MAX_CLIENT_TYPE];
688 	uint8_t reg_domain_6g_id_client_sp[REG_MAX_CLIENT_TYPE];
689 	uint8_t reg_domain_6g_id_client_vlp[REG_MAX_CLIENT_TYPE];
690 };
691 #endif
692 #endif
693 
694 QDF_STATUS reg_get_num_countries(int *num_countries);
695 
696 QDF_STATUS reg_get_num_reg_dmn_pairs(int *num_reg_dmn);
697 
698 /**
699  * reg_etsi13_regdmn () - Checks if the reg domain is ETSI13 or not
700  * @reg_dmn: reg domain
701  *
702  * Return: true or false
703  */
704 bool reg_etsi13_regdmn(uint8_t reg_dmn);
705 
706 /**
707  * reg_fcc_regdmn () - Checks if the reg domain is FCC3/FCC8/FCC15/FCC16 or not
708  * @reg_dmn: reg domain
709  *
710  * Return: true or false
711  */
712 bool reg_fcc_regdmn(uint8_t reg_dmn);
713 
714 #ifdef WLAN_REG_PARTIAL_OFFLOAD
715 QDF_STATUS reg_get_default_country(uint16_t *default_country);
716 
717 /**
718  * reg_en302_502_regdmn() - Check if the reg domain is en302_502 applicable.
719  * @reg_dmn: Regulatory domain pair ID.
720  *
721  * Return: True if EN302_502 applicable, else false.
722  */
723 bool reg_en302_502_regdmn(uint16_t reg_dmn);
724 #endif
725 #endif
726