1 /****************************************************************************** 2 * 3 * Copyright(c) 2020 Realtek Corporation. 4 * 5 * This program is free software; you can redistribute it and/or modify it 6 * under the terms of version 2 of the GNU General Public License as 7 * published by the Free Software Foundation. 8 * 9 * This program is distributed in the hope that it will be useful, but WITHOUT 10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for 12 * more details. 13 * 14 *****************************************************************************/ 15 #include "phl_headers.h" 16 #include "phl_chnlplan.h" 17 18 const struct chdef_2ghz chdef2g[MAX_CHDEF_2GHZ] = { 19 {0, {0x00, 0x00}, {0x00, 0x00}}, 20 {1, {0xff, 0x1f}, {0x00, 0x18}}, 21 {2, {0xff, 0x1f}, {0x00, 0x00}}, 22 {3, {0xff, 0x07}, {0x00, 0x00}}, 23 {4, {0xff, 0x3f}, {0x00, 0x00}}, 24 {5, {0x00, 0x1e}, {0x00, 0x00}}, 25 {6, {0xff, 0x3f}, {0x00, 0x38}}, 26 }; 27 28 29 const struct chdef_5ghz chdef5g[MAX_CHDEF_5GHZ] = { 30 {0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, {0x00, 0x00}, {0x00, 0x00}, {0x00, 0x00}, 0x00, 0x00, 0x00}, 31 {1, 0x0f, 0x00, 0x00, 0x0f, 0x00, 0x0f, {0x1f, 0x07}, {0x00, 0x00}, {0x1f, 0x07}, 0x1f, 0x00, 0x00}, 32 {2, 0x0f, 0x00, 0x00, 0x0f, 0x00, 0x0f, {0xff, 0x07}, {0x00, 0x00}, {0xff, 0x07}, 0x00, 0x00, 0x00}, 33 {3, 0x0f, 0x00, 0x00, 0x0f, 0x00, 0x0f, {0xff, 0x07}, {0x00, 0x00}, {0xff, 0x07}, 0x1f, 0x00, 0x00}, 34 {4, 0x0f, 0x00, 0x00, 0x0f, 0x00, 0x0f, {0xff, 0x01}, {0x00, 0x00}, {0xff, 0x01}, 0x1f, 0x00, 0x00}, 35 {5, 0x0f, 0x00, 0x00, 0x0f, 0x00, 0x0f, {0x7f, 0x00}, {0x00, 0x00}, {0x7f, 0x00}, 0x0f, 0x00, 0x00}, 36 {6, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, {0x00, 0x00}, {0x00, 0x00}, {0x00, 0x00}, 0x1f, 0x00, 0x00}, 37 {7, 0x0f, 0x00, 0x00, 0x0f, 0x00, 0x0f, {0x00, 0x00}, {0x00, 0x00}, {0x00, 0x00}, 0x1f, 0x00, 0x00}, 38 {8, 0x0f, 0x00, 0x00, 0x0f, 0x00, 0x0f, {0x00, 0x00}, {0x00, 0x00}, {0x00, 0x00}, 0x0f, 0x00, 0x00}, 39 {9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, {0x00, 0x00}, {0x00, 0x00}, {0x00, 0x00}, 0x1f, 0x00, 0x00}, 40 {10, 0x0f, 0x00, 0x00, 0x0f, 0x00, 0x0f, {0x00, 0x00}, {0x00, 0x00}, {0x00, 0x00}, 0x00, 0x00, 0x00}, 41 {11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, {0xff, 0x07}, {0x00, 0x00}, {0xff, 0x07}, 0x00, 0x00, 0x00}, 42 {12, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x0e, {0x1f, 0x07}, {0x00, 0x00}, {0x1f, 0x07}, 0x1f, 0x00, 0x00}, 43 {13, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x0e, {0x00, 0x00}, {0x00, 0x00}, {0x00, 0x00}, 0x1f, 0x00, 0x00}, 44 {14, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, {0x00, 0x00}, {0x00, 0x00}, {0x00, 0x00}, 0x00, 0x00, 0x00}, 45 {15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, {0x00, 0x00}, {0x00, 0x00}, {0x00, 0x00}, 0x0f, 0x00, 0x00}, 46 {16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, {0xff, 0x07}, {0x00, 0x00}, {0x00, 0x00}, 0x00, 0x00, 0x00}, 47 {17, 0x0f, 0x00, 0x00, 0x0f, 0x00, 0x0f, {0x00, 0x07}, {0x00, 0x00}, {0x00, 0x07}, 0x1f, 0x00, 0x00}, 48 {18, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x0f, {0x1f, 0x07}, {0x00, 0x00}, {0x1f, 0x07}, 0x1f, 0x00, 0x00}, 49 {19, 0x0f, 0x00, 0x00, 0x0f, 0x00, 0x0f, {0x1f, 0x07}, {0x00, 0x00}, {0x1f, 0x07}, 0x00, 0x00, 0x00}, 50 {20, 0x0f, 0x00, 0x00, 0x0f, 0x00, 0x0f, {0x1f, 0x07}, {0x00, 0x00}, {0x1f, 0x07}, 0x0f, 0x00, 0x00}, 51 {21, 0x0f, 0x00, 0x00, 0x0f, 0x00, 0x0f, {0x00, 0x07}, {0x00, 0x00}, {0x00, 0x07}, 0x00, 0x00, 0x00}, 52 {22, 0x0f, 0x00, 0x00, 0x0f, 0x00, 0x0f, {0xff, 0x0f}, {0x00, 0x00}, {0xff, 0x0f}, 0x1f, 0x00, 0x00}, 53 {23, 0x0f, 0x00, 0x00, 0x0f, 0x00, 0x0f, {0xff, 0x00}, {0x00, 0x00}, {0xff, 0x00}, 0x1f, 0x00, 0x00}, 54 {24, 0x0f, 0x00, 0x00, 0x0f, 0x0f, 0x00, {0xff, 0x07}, {0xff, 0x07}, {0x00, 0x00}, 0x1f, 0x1f, 0x00}, 55 {25, 0x0f, 0x00, 0x00, 0x0f, 0x0f, 0x00, {0xff, 0x07}, {0xff, 0x07}, {0x00, 0x00}, 0x1f, 0x00, 0x00}, 56 {26, 0x0f, 0x0f, 0x00, 0x0f, 0x0f, 0x00, {0xff, 0x07}, {0xff, 0x07}, {0x00, 0x00}, 0x1f, 0x00, 0x00}, 57 {27, 0x0f, 0x00, 0x00, 0x0f, 0x0f, 0x00, {0x1f, 0x07}, {0x1f, 0x07}, {0x00, 0x00}, 0x1f, 0x00, 0x00}, 58 {28, 0x0f, 0x00, 0x00, 0x0f, 0x0f, 0x00, {0x00, 0x00}, {0x00, 0x00}, {0x00, 0x00}, 0x1f, 0x00, 0x00}, 59 {29, 0x0f, 0x0f, 0x00, 0x0f, 0x0f, 0x00, {0x00, 0x00}, {0x00, 0x00}, {0x00, 0x00}, 0x1f, 0x00, 0x00}, 60 {30, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, {0x00, 0x00}, {0x00, 0x00}, {0x00, 0x00}, 0x1f, 0x1f, 0x00}, 61 {31, 0x0f, 0x0f, 0x00, 0x0f, 0x0f, 0x00, {0xff, 0x07}, {0xff, 0x07}, {0x00, 0x00}, 0x1f, 0x1f, 0x00}, 62 {32, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x0f, {0x00, 0x00}, {0x00, 0x00}, {0x00, 0x00}, 0x1f, 0x00, 0x00}, 63 {33, 0x0f, 0x00, 0x00, 0x0f, 0x00, 0x0f, {0x1f, 0x0f}, {0x00, 0x00}, {0x1f, 0x0f}, 0x1f, 0x00, 0x00}, 64 {34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, {0x1f, 0x07}, {0x00, 0x00}, {0x1f, 0x07}, 0x1f, 0x00, 0x00}, 65 {35, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, {0x1f, 0x07}, {0x00, 0x00}, {0x1f, 0x07}, 0x00, 0x00, 0x00}, 66 {36, 0x0f, 0x0f, 0x00, 0x0f, 0x0f, 0x0f, {0xff, 0x0f}, {0xff, 0x0f}, {0xff, 0x0f}, 0x1f, 0x1f, 0x00}, 67 {37, 0x0f, 0x0f, 0x00, 0x0f, 0x0f, 0x00, {0x00, 0x00}, {0x00, 0x00}, {0x00, 0x00}, 0x00, 0x00, 0x00}, 68 {38, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x0f, {0xff, 0x0f}, {0x00, 0x00}, {0xff, 0x0f}, 0x00, 0x00, 0x00}, 69 {39, 0x0f, 0x0f, 0x00, 0x0f, 0x00, 0x0f, {0xff, 0x00}, {0x00, 0x00}, {0xff, 0x00}, 0x1f, 0x00, 0x1f}, 70 {40, 0x0f, 0x0f, 0x00, 0x0f, 0x00, 0x0f, {0x1f, 0x07}, {0x00, 0x00}, {0x1f, 0x07}, 0x1f, 0x00, 0x00}, 71 {41, 0x0f, 0x00, 0x00, 0x0f, 0x00, 0x0f, {0xff, 0x07}, {0x00, 0x00}, {0xff, 0x07}, 0x1f, 0x1f, 0x00}, 72 {42, 0x0f, 0x0f, 0x00, 0x0f, 0x00, 0x0f, {0xff, 0x07}, {0x00, 0x00}, {0xff, 0x07}, 0x1f, 0x1f, 0x00}, 73 {43, 0x0f, 0x0f, 0x00, 0x0f, 0x0f, 0x00, {0xff, 0x06}, {0xff, 0x06}, {0x00, 0x00}, 0x1f, 0x1f, 0x00}, 74 {44, 0x0f, 0x0f, 0x00, 0x0f, 0x0f, 0x00, {0x1f, 0x07}, {0x1f, 0x07}, {0x00, 0x00}, 0x1f, 0x1f, 0x00}, 75 {45, 0x0f, 0x0f, 0x00, 0x0f, 0x0f, 0x00, {0x00, 0x00}, {0x00, 0x00}, {0x00, 0x00}, 0x1f, 0x1f, 0x00}, 76 {46, 0x0f, 0x00, 0x00, 0x0f, 0x0f, 0x00, {0x00, 0x00}, {0x00, 0x00}, {0x00, 0x00}, 0x0f, 0x00, 0x00}, 77 {47, 0x0f, 0x00, 0x00, 0x0f, 0x0f, 0x00, {0xff, 0x07}, {0xff, 0x07}, {0x00, 0x00}, 0x00, 0x00, 0x00}, 78 {48, 0x0f, 0x00, 0x00, 0x0f, 0x00, 0x0f, {0xff, 0x0f}, {0x00, 0x00}, {0xff, 0x0f}, 0x00, 0x00, 0x00}, 79 {49, 0x0f, 0x00, 0x00, 0x0f, 0x00, 0x0f, {0xff, 0x01}, {0x00, 0x00}, {0xff, 0x01}, 0x00, 0x00, 0x00}, 80 {50, 0x0f, 0x00, 0x00, 0x0f, 0x00, 0x0f, {0x00, 0x0f}, {0x00, 0x00}, {0x00, 0x0f}, 0x1f, 0x00, 0x00}, 81 {51, 0x0f, 0x00, 0x00, 0x0f, 0x00, 0x0f, {0x1f, 0x00}, {0x00, 0x00}, {0x1f, 0x00}, 0x00, 0x00, 0x00}, 82 {52, 0x0f, 0x00, 0x00, 0x0f, 0x00, 0x0f, {0xff, 0x0f}, {0x00, 0x00}, {0xff, 0x0f}, 0xff, 0x00, 0x00}, 83 {53, 0x0f, 0x00, 0x00, 0x0f, 0x00, 0x0f, {0x0f, 0x00}, {0x00, 0x00}, {0x0f, 0x00}, 0x1f, 0x00, 0x00}, 84 }; 85 86 87 const struct regulatory_domain_mapping rdmap[MAX_RD_MAP_NUM] = { 88 {0x00, {REGULATION_ETSI, 2}, {REGULATION_ETSI, 49}}, 89 {0x01, {REGULATION_ETSI, 2}, {REGULATION_ETSI, 50}}, 90 {0x02, {REGULATION_ETSI, 3}, {REGULATION_ETSI, 7}}, 91 {0x03, {REGULATION_ACMA, 2}, {REGULATION_ACMA, 33}}, 92 {0x04, {REGULATION_ETSI, 2}, {REGULATION_ETSI, 51}}, 93 {0x05, {REGULATION_ETSI, 2}, {REGULATION_ETSI, 6}}, 94 {0x06, {REGULATION_ETSI, 2}, {REGULATION_ETSI, 7}}, 95 {0x07, {REGULATION_ETSI, 2}, {REGULATION_ETSI, 23}}, 96 {0x08, {REGULATION_ETSI, 2}, {REGULATION_ETSI, 21}}, 97 {0x09, {REGULATION_ETSI, 2}, {REGULATION_ETSI, 17}}, 98 {0x1b, {REGULATION_FCC, 2}, {REGULATION_FCC, 52}}, 99 {0x1c, {REGULATION_KCC, 2}, {REGULATION_KCC, 53}}, 100 {0x20, {REGULATION_WW, 1}, {REGULATION_NA, 0}}, 101 {0x21, {REGULATION_ETSI, 2}, {REGULATION_NA, 0}}, 102 {0x22, {REGULATION_FCC, 3}, {REGULATION_NA, 0}}, 103 {0x23, {REGULATION_MKK, 4}, {REGULATION_NA, 0}}, 104 {0x24, {REGULATION_ETSI, 5}, {REGULATION_NA, 0}}, 105 {0x25, {REGULATION_FCC, 3}, {REGULATION_FCC, 3}}, 106 {0x26, {REGULATION_ETSI, 1}, {REGULATION_ETSI, 2}}, 107 {0x27, {REGULATION_MKK, 4}, {REGULATION_MKK, 2}}, 108 {0x28, {REGULATION_KCC, 1}, {REGULATION_KCC, 5}}, 109 {0x29, {REGULATION_FCC, 1}, {REGULATION_FCC, 6}}, 110 {0x2a, {REGULATION_FCC, 2}, {REGULATION_NA, 0}}, 111 {0x2b, {REGULATION_IC, 2}, {REGULATION_IC, 33}}, 112 {0x2c, {REGULATION_MKK, 2}, {REGULATION_NA, 0}}, 113 {0x2d, {REGULATION_CHILE, 1}, {REGULATION_CHILE, 22}}, 114 {0x2e, {REGULATION_WW, 3}, {REGULATION_WW, 37}}, 115 {0x2f, {REGULATION_CHILE, 1}, {REGULATION_CHILE, 38}}, 116 {0x30, {REGULATION_FCC, 1}, {REGULATION_FCC, 7}}, 117 {0x31, {REGULATION_FCC, 1}, {REGULATION_FCC, 8}}, 118 {0x32, {REGULATION_FCC, 1}, {REGULATION_FCC, 9}}, 119 {0x33, {REGULATION_FCC, 1}, {REGULATION_FCC, 10}}, 120 {0x34, {REGULATION_FCC, 3}, {REGULATION_FCC, 1}}, 121 {0x35, {REGULATION_ETSI, 1}, {REGULATION_ETSI, 3}}, 122 {0x36, {REGULATION_ETSI, 1}, {REGULATION_ETSI, 4}}, 123 {0x37, {REGULATION_MKK, 4}, {REGULATION_MKK, 10}}, 124 {0x38, {REGULATION_MKK, 4}, {REGULATION_MKK, 11}}, 125 {0x39, {REGULATION_NCC, 3}, {REGULATION_NCC, 12}}, 126 {0x3a, {REGULATION_ETSI, 2}, {REGULATION_ETSI, 2}}, 127 {0x3b, {REGULATION_ACMA, 2}, {REGULATION_ACMA, 1}}, 128 {0x3c, {REGULATION_ETSI, 2}, {REGULATION_ETSI, 10}}, 129 {0x3d, {REGULATION_ETSI, 2}, {REGULATION_ETSI, 15}}, 130 {0x3e, {REGULATION_KCC, 2}, {REGULATION_KCC, 3}}, 131 {0x3f, {REGULATION_FCC, 3}, {REGULATION_FCC, 22}}, 132 {0x40, {REGULATION_NCC, 3}, {REGULATION_NCC, 13}}, 133 {0x41, {REGULATION_WW, 6}, {REGULATION_NA, 0}}, 134 {0x42, {REGULATION_ETSI, 2}, {REGULATION_ETSI, 14}}, 135 {0x43, {REGULATION_FCC, 3}, {REGULATION_FCC, 6}}, 136 {0x44, {REGULATION_NCC, 3}, {REGULATION_NCC, 9}}, 137 {0x45, {REGULATION_ACMA, 1}, {REGULATION_ACMA, 1}}, 138 {0x46, {REGULATION_FCC, 3}, {REGULATION_FCC, 15}}, 139 {0x47, {REGULATION_ETSI, 1}, {REGULATION_ETSI, 10}}, 140 {0x48, {REGULATION_ETSI, 1}, {REGULATION_ETSI, 7}}, 141 {0x49, {REGULATION_ETSI, 1}, {REGULATION_ETSI, 6}}, 142 {0x4a, {REGULATION_IC, 3}, {REGULATION_IC, 33}}, 143 {0x4b, {REGULATION_KCC, 2}, {REGULATION_KCC, 22}}, 144 {0x4c, {REGULATION_FCC, 3}, {REGULATION_FCC, 28}}, 145 {0x4d, {REGULATION_MEX, 2}, {REGULATION_MEX, 1}}, 146 {0x4e, {REGULATION_ETSI, 2}, {REGULATION_ETSI, 42}}, 147 {0x4f, {REGULATION_NA, 0}, {REGULATION_MKK, 43}}, 148 {0x50, {REGULATION_ETSI, 1}, {REGULATION_ETSI, 16}}, 149 {0x51, {REGULATION_ETSI, 1}, {REGULATION_ETSI, 9}}, 150 {0x52, {REGULATION_ETSI, 1}, {REGULATION_ETSI, 17}}, 151 {0x53, {REGULATION_NCC, 3}, {REGULATION_NCC, 18}}, 152 {0x54, {REGULATION_ETSI, 1}, {REGULATION_ETSI, 15}}, 153 {0x55, {REGULATION_FCC, 3}, {REGULATION_FCC, 1}}, 154 {0x56, {REGULATION_ETSI, 1}, {REGULATION_ETSI, 19}}, 155 {0x57, {REGULATION_FCC, 3}, {REGULATION_FCC, 20}}, 156 {0x58, {REGULATION_MKK, 2}, {REGULATION_MKK, 14}}, 157 {0x59, {REGULATION_ETSI, 1}, {REGULATION_ETSI, 21}}, 158 {0x5a, {REGULATION_NA, 0}, {REGULATION_FCC, 44}}, 159 {0x5b, {REGULATION_NA, 0}, {REGULATION_FCC, 45}}, 160 {0x5c, {REGULATION_NA, 0}, {REGULATION_FCC, 43}}, 161 {0x5d, {REGULATION_ETSI, 2}, {REGULATION_ETSI, 8}}, 162 {0x5e, {REGULATION_ETSI, 2}, {REGULATION_ETSI, 3}}, 163 {0x5f, {REGULATION_MKK, 2}, {REGULATION_MKK, 47}}, 164 {0x60, {REGULATION_FCC, 3}, {REGULATION_FCC, 9}}, 165 {0x61, {REGULATION_FCC, 2}, {REGULATION_FCC, 1}}, 166 {0x62, {REGULATION_FCC, 2}, {REGULATION_FCC, 3}}, 167 {0x63, {REGULATION_ETSI, 1}, {REGULATION_ETSI, 23}}, 168 {0x64, {REGULATION_MKK, 2}, {REGULATION_MKK, 24}}, 169 {0x65, {REGULATION_ETSI, 2}, {REGULATION_ETSI, 24}}, 170 {0x66, {REGULATION_FCC, 3}, {REGULATION_FCC, 27}}, 171 {0x67, {REGULATION_FCC, 3}, {REGULATION_FCC, 25}}, 172 {0x68, {REGULATION_FCC, 2}, {REGULATION_FCC, 27}}, 173 {0x69, {REGULATION_FCC, 2}, {REGULATION_FCC, 25}}, 174 {0x6a, {REGULATION_ETSI, 2}, {REGULATION_ETSI, 25}}, 175 {0x6b, {REGULATION_FCC, 1}, {REGULATION_FCC, 29}}, 176 {0x6c, {REGULATION_FCC, 1}, {REGULATION_FCC, 26}}, 177 {0x6d, {REGULATION_FCC, 2}, {REGULATION_FCC, 28}}, 178 {0x6e, {REGULATION_FCC, 1}, {REGULATION_FCC, 25}}, 179 {0x6f, {REGULATION_NA, 0}, {REGULATION_ETSI, 6}}, 180 {0x70, {REGULATION_NA, 0}, {REGULATION_ETSI, 30}}, 181 {0x71, {REGULATION_NA, 0}, {REGULATION_ETSI, 25}}, 182 {0x72, {REGULATION_NA, 0}, {REGULATION_ETSI, 31}}, 183 {0x73, {REGULATION_FCC, 1}, {REGULATION_FCC, 1}}, 184 {0x74, {REGULATION_FCC, 2}, {REGULATION_FCC, 19}}, 185 {0x75, {REGULATION_ETSI, 1}, {REGULATION_ETSI, 32}}, 186 {0x76, {REGULATION_FCC, 2}, {REGULATION_FCC, 22}}, 187 {0x77, {REGULATION_ETSI, 1}, {REGULATION_ETSI, 34}}, 188 {0x78, {REGULATION_FCC, 3}, {REGULATION_FCC, 35}}, 189 {0x79, {REGULATION_MKK, 2}, {REGULATION_MKK, 2}}, 190 {0x7a, {REGULATION_ETSI, 2}, {REGULATION_ETSI, 28}}, 191 {0x7b, {REGULATION_ETSI, 2}, {REGULATION_ETSI, 46}}, 192 {0x7c, {REGULATION_ETSI, 2}, {REGULATION_ETSI, 47}}, 193 {0x7d, {REGULATION_MKK, 4}, {REGULATION_MKK, 48}}, 194 {0x7e, {REGULATION_MKK, 2}, {REGULATION_MKK, 48}}, 195 {0x7f, {REGULATION_WW, 1}, {REGULATION_WW, 36}}, 196 }; 197 198 199 200