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