1 /* 2 3 Broadcom B43 wireless driver 4 IEEE 802.11n PHY data tables 5 6 Copyright (c) 2008 Michael Buesch <m@bues.ch> 7 Copyright (c) 2010 Rafał Miłecki <zajec5@gmail.com> 8 9 This program is free software; you can redistribute it and/or modify 10 it under the terms of the GNU General Public License as published by 11 the Free Software Foundation; either version 2 of the License, or 12 (at your option) any later version. 13 14 This program is distributed in the hope that it will be useful, 15 but WITHOUT ANY WARRANTY; without even the implied warranty of 16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 GNU General Public License for more details. 18 19 You should have received a copy of the GNU General Public License 20 along with this program; see the file COPYING. If not, write to 21 the Free Software Foundation, Inc., 51 Franklin Steet, Fifth Floor, 22 Boston, MA 02110-1301, USA. 23 24 */ 25 26 #include <sys/cdefs.h> 27 __FBSDID("$FreeBSD$"); 28 29 /* 30 * The Broadcom Wireless LAN controller driver. 31 */ 32 33 #include "opt_wlan.h" 34 #include "opt_bwn.h" 35 36 #include <sys/param.h> 37 #include <sys/systm.h> 38 #include <sys/kernel.h> 39 #include <sys/malloc.h> 40 #include <sys/module.h> 41 #include <sys/endian.h> 42 #include <sys/errno.h> 43 #include <sys/firmware.h> 44 #include <sys/lock.h> 45 #include <sys/mutex.h> 46 #include <machine/bus.h> 47 #include <machine/resource.h> 48 #include <sys/bus.h> 49 #include <sys/rman.h> 50 #include <sys/socket.h> 51 #include <sys/sockio.h> 52 53 #include <net/ethernet.h> 54 #include <net/if.h> 55 #include <net/if_var.h> 56 #include <net/if_arp.h> 57 #include <net/if_dl.h> 58 #include <net/if_llc.h> 59 #include <net/if_media.h> 60 #include <net/if_types.h> 61 62 #include <dev/pci/pcivar.h> 63 #include <dev/pci/pcireg.h> 64 65 #include <net80211/ieee80211_var.h> 66 #include <net80211/ieee80211_radiotap.h> 67 #include <net80211/ieee80211_regdomain.h> 68 #include <net80211/ieee80211_phy.h> 69 #include <net80211/ieee80211_ratectl.h> 70 71 #include <dev/bhnd/bhnd.h> 72 #include <dev/bhnd/bhnd_ids.h> 73 74 #include <dev/bwn/if_bwnreg.h> 75 #include <dev/bwn/if_bwnvar.h> 76 #include <dev/bwn/if_bwn_debug.h> 77 78 #include <gnu/dev/bwn/phy_n/if_bwn_phy_n_regs.h> 79 #include <gnu/dev/bwn/phy_n/if_bwn_phy_n_ppr.h> 80 #include <gnu/dev/bwn/phy_n/if_bwn_phy_n_tables.h> 81 #include <gnu/dev/bwn/phy_n/if_bwn_phy_n_core.h> 82 83 #include "bhnd_nvram_map.h" 84 85 static const uint8_t bwn_ntab_adjustpower0[] = { 86 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 87 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 88 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 89 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 90 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 91 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 92 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 93 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 94 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 95 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 96 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 97 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 98 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 99 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 100 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 101 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 102 }; 103 104 static const uint8_t bwn_ntab_adjustpower1[] = { 105 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 106 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 107 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 108 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 109 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 110 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 111 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 112 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 113 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 114 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 115 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 116 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 117 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 118 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 119 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 120 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 121 }; 122 123 static const uint16_t bwn_ntab_bdi[] = { 124 0x0070, 0x0126, 0x012C, 0x0246, 0x048D, 0x04D2, 125 }; 126 127 static const uint32_t bwn_ntab_channelest[] = { 128 0x44444444, 0x44444444, 0x44444444, 0x44444444, 129 0x44444444, 0x44444444, 0x44444444, 0x44444444, 130 0x10101010, 0x10101010, 0x10101010, 0x10101010, 131 0x10101010, 0x10101010, 0x10101010, 0x10101010, 132 0x44444444, 0x44444444, 0x44444444, 0x44444444, 133 0x44444444, 0x44444444, 0x44444444, 0x44444444, 134 0x10101010, 0x10101010, 0x10101010, 0x10101010, 135 0x10101010, 0x10101010, 0x10101010, 0x10101010, 136 0x44444444, 0x44444444, 0x44444444, 0x44444444, 137 0x44444444, 0x44444444, 0x44444444, 0x44444444, 138 0x44444444, 0x44444444, 0x44444444, 0x44444444, 139 0x44444444, 0x44444444, 0x44444444, 0x44444444, 140 0x10101010, 0x10101010, 0x10101010, 0x10101010, 141 0x10101010, 0x10101010, 0x10101010, 0x10101010, 142 0x10101010, 0x10101010, 0x10101010, 0x10101010, 143 0x10101010, 0x10101010, 0x10101010, 0x10101010, 144 0x44444444, 0x44444444, 0x44444444, 0x44444444, 145 0x44444444, 0x44444444, 0x44444444, 0x44444444, 146 0x44444444, 0x44444444, 0x44444444, 0x44444444, 147 0x44444444, 0x44444444, 0x44444444, 0x44444444, 148 0x10101010, 0x10101010, 0x10101010, 0x10101010, 149 0x10101010, 0x10101010, 0x10101010, 0x10101010, 150 0x10101010, 0x10101010, 0x10101010, 0x10101010, 151 0x10101010, 0x10101010, 0x10101010, 0x10101010, 152 }; 153 154 static const uint8_t bwn_ntab_estimatepowerlt0[] = { 155 0x50, 0x4F, 0x4E, 0x4D, 0x4C, 0x4B, 0x4A, 0x49, 156 0x48, 0x47, 0x46, 0x45, 0x44, 0x43, 0x42, 0x41, 157 0x40, 0x3F, 0x3E, 0x3D, 0x3C, 0x3B, 0x3A, 0x39, 158 0x38, 0x37, 0x36, 0x35, 0x34, 0x33, 0x32, 0x31, 159 0x30, 0x2F, 0x2E, 0x2D, 0x2C, 0x2B, 0x2A, 0x29, 160 0x28, 0x27, 0x26, 0x25, 0x24, 0x23, 0x22, 0x21, 161 0x20, 0x1F, 0x1E, 0x1D, 0x1C, 0x1B, 0x1A, 0x19, 162 0x18, 0x17, 0x16, 0x15, 0x14, 0x13, 0x12, 0x11, 163 }; 164 165 static const uint8_t bwn_ntab_estimatepowerlt1[] = { 166 0x50, 0x4F, 0x4E, 0x4D, 0x4C, 0x4B, 0x4A, 0x49, 167 0x48, 0x47, 0x46, 0x45, 0x44, 0x43, 0x42, 0x41, 168 0x40, 0x3F, 0x3E, 0x3D, 0x3C, 0x3B, 0x3A, 0x39, 169 0x38, 0x37, 0x36, 0x35, 0x34, 0x33, 0x32, 0x31, 170 0x30, 0x2F, 0x2E, 0x2D, 0x2C, 0x2B, 0x2A, 0x29, 171 0x28, 0x27, 0x26, 0x25, 0x24, 0x23, 0x22, 0x21, 172 0x20, 0x1F, 0x1E, 0x1D, 0x1C, 0x1B, 0x1A, 0x19, 173 0x18, 0x17, 0x16, 0x15, 0x14, 0x13, 0x12, 0x11, 174 }; 175 176 static const uint8_t bwn_ntab_framelookup[] = { 177 0x02, 0x04, 0x14, 0x14, 0x03, 0x05, 0x16, 0x16, 178 0x0A, 0x0C, 0x1C, 0x1C, 0x0B, 0x0D, 0x1E, 0x1E, 179 0x06, 0x08, 0x18, 0x18, 0x07, 0x09, 0x1A, 0x1A, 180 0x0E, 0x10, 0x20, 0x28, 0x0F, 0x11, 0x22, 0x2A, 181 }; 182 183 static const uint32_t bwn_ntab_framestruct[] = { 184 0x08004A04, 0x00100000, 0x01000A05, 0x00100020, 185 0x09804506, 0x00100030, 0x09804507, 0x00100030, 186 0x00000000, 0x00000000, 0x00000000, 0x00000000, 187 0x00000000, 0x00000000, 0x00000000, 0x00000000, 188 0x08004A0C, 0x00100004, 0x01000A0D, 0x00100024, 189 0x0980450E, 0x00100034, 0x0980450F, 0x00100034, 190 0x00000000, 0x00000000, 0x00000000, 0x00000000, 191 0x00000000, 0x00000000, 0x00000000, 0x00000000, 192 0x00000A04, 0x00100000, 0x11008A05, 0x00100020, 193 0x1980C506, 0x00100030, 0x21810506, 0x00100030, 194 0x21810506, 0x00100030, 0x01800504, 0x00100030, 195 0x11808505, 0x00100030, 0x29814507, 0x01100030, 196 0x00000A04, 0x00100000, 0x11008A05, 0x00100020, 197 0x21810506, 0x00100030, 0x21810506, 0x00100030, 198 0x29814507, 0x01100030, 0x00000000, 0x00000000, 199 0x00000000, 0x00000000, 0x00000000, 0x00000000, 200 0x00000A0C, 0x00100008, 0x11008A0D, 0x00100028, 201 0x1980C50E, 0x00100038, 0x2181050E, 0x00100038, 202 0x2181050E, 0x00100038, 0x0180050C, 0x00100038, 203 0x1180850D, 0x00100038, 0x2981450F, 0x01100038, 204 0x00000A0C, 0x00100008, 0x11008A0D, 0x00100028, 205 0x2181050E, 0x00100038, 0x2181050E, 0x00100038, 206 0x2981450F, 0x01100038, 0x00000000, 0x00000000, 207 0x00000000, 0x00000000, 0x00000000, 0x00000000, 208 0x08004A04, 0x00100000, 0x01000A05, 0x00100020, 209 0x1980C506, 0x00100030, 0x1980C506, 0x00100030, 210 0x11808504, 0x00100030, 0x3981CA05, 0x00100030, 211 0x29814507, 0x01100030, 0x00000000, 0x00000000, 212 0x10008A04, 0x00100000, 0x3981CA05, 0x00100030, 213 0x1980C506, 0x00100030, 0x29814507, 0x01100030, 214 0x00000000, 0x00000000, 0x00000000, 0x00000000, 215 0x00000000, 0x00000000, 0x00000000, 0x00000000, 216 0x08004A0C, 0x00100008, 0x01000A0D, 0x00100028, 217 0x1980C50E, 0x00100038, 0x1980C50E, 0x00100038, 218 0x1180850C, 0x00100038, 0x3981CA0D, 0x00100038, 219 0x2981450F, 0x01100038, 0x00000000, 0x00000000, 220 0x10008A0C, 0x00100008, 0x3981CA0D, 0x00100038, 221 0x1980C50E, 0x00100038, 0x2981450F, 0x01100038, 222 0x00000000, 0x00000000, 0x00000000, 0x00000000, 223 0x00000000, 0x00000000, 0x00000000, 0x00000000, 224 0x40021404, 0x00100000, 0x02001405, 0x00100040, 225 0x0B004A06, 0x01900060, 0x13008A06, 0x01900060, 226 0x13008A06, 0x01900060, 0x43020A04, 0x00100060, 227 0x1B00CA05, 0x00100060, 0x23010A07, 0x01500060, 228 0x40021404, 0x00100000, 0x1A00D405, 0x00100040, 229 0x13008A06, 0x01900060, 0x13008A06, 0x01900060, 230 0x23010A07, 0x01500060, 0x00000000, 0x00000000, 231 0x00000000, 0x00000000, 0x00000000, 0x00000000, 232 0x4002140C, 0x00100010, 0x0200140D, 0x00100050, 233 0x0B004A0E, 0x01900070, 0x13008A0E, 0x01900070, 234 0x13008A0E, 0x01900070, 0x43020A0C, 0x00100070, 235 0x1B00CA0D, 0x00100070, 0x23010A0F, 0x01500070, 236 0x4002140C, 0x00100010, 0x1A00D40D, 0x00100050, 237 0x13008A0E, 0x01900070, 0x13008A0E, 0x01900070, 238 0x23010A0F, 0x01500070, 0x00000000, 0x00000000, 239 0x00000000, 0x00000000, 0x00000000, 0x00000000, 240 0x50029404, 0x00100000, 0x32019405, 0x00100040, 241 0x0B004A06, 0x01900060, 0x0B004A06, 0x01900060, 242 0x5B02CA04, 0x00100060, 0x3B01D405, 0x00100060, 243 0x23010A07, 0x01500060, 0x00000000, 0x00000000, 244 0x5802D404, 0x00100000, 0x3B01D405, 0x00100060, 245 0x0B004A06, 0x01900060, 0x23010A07, 0x01500060, 246 0x00000000, 0x00000000, 0x00000000, 0x00000000, 247 0x00000000, 0x00000000, 0x00000000, 0x00000000, 248 0x5002940C, 0x00100010, 0x3201940D, 0x00100050, 249 0x0B004A0E, 0x01900070, 0x0B004A0E, 0x01900070, 250 0x5B02CA0C, 0x00100070, 0x3B01D40D, 0x00100070, 251 0x23010A0F, 0x01500070, 0x00000000, 0x00000000, 252 0x5802D40C, 0x00100010, 0x3B01D40D, 0x00100070, 253 0x0B004A0E, 0x01900070, 0x23010A0F, 0x01500070, 254 0x00000000, 0x00000000, 0x00000000, 0x00000000, 255 0x00000000, 0x00000000, 0x00000000, 0x00000000, 256 0x40021404, 0x000F4800, 0x62031405, 0x00100040, 257 0x53028A06, 0x01900060, 0x53028A07, 0x01900060, 258 0x00000000, 0x00000000, 0x00000000, 0x00000000, 259 0x00000000, 0x00000000, 0x00000000, 0x00000000, 260 0x4002140C, 0x000F4808, 0x6203140D, 0x00100048, 261 0x53028A0E, 0x01900068, 0x53028A0F, 0x01900068, 262 0x00000000, 0x00000000, 0x00000000, 0x00000000, 263 0x00000000, 0x00000000, 0x00000000, 0x00000000, 264 0x00000A0C, 0x00100004, 0x11008A0D, 0x00100024, 265 0x1980C50E, 0x00100034, 0x2181050E, 0x00100034, 266 0x2181050E, 0x00100034, 0x0180050C, 0x00100038, 267 0x1180850D, 0x00100038, 0x1181850D, 0x00100038, 268 0x2981450F, 0x01100038, 0x00000000, 0x00000000, 269 0x00000000, 0x00000000, 0x00000000, 0x00000000, 270 0x00000000, 0x00000000, 0x00000000, 0x00000000, 271 0x00000000, 0x00000000, 0x00000000, 0x00000000, 272 0x00000A0C, 0x00100008, 0x11008A0D, 0x00100028, 273 0x2181050E, 0x00100038, 0x2181050E, 0x00100038, 274 0x1181850D, 0x00100038, 0x2981450F, 0x01100038, 275 0x00000000, 0x00000000, 0x00000000, 0x00000000, 276 0x00000000, 0x00000000, 0x00000000, 0x00000000, 277 0x00000000, 0x00000000, 0x00000000, 0x00000000, 278 0x00000000, 0x00000000, 0x00000000, 0x00000000, 279 0x00000000, 0x00000000, 0x00000000, 0x00000000, 280 0x08004A04, 0x00100000, 0x01000A05, 0x00100020, 281 0x0180C506, 0x00100030, 0x0180C506, 0x00100030, 282 0x2180C50C, 0x00100030, 0x49820A0D, 0x0016A130, 283 0x41824A0D, 0x0016A130, 0x2981450F, 0x01100030, 284 0x00000000, 0x00000000, 0x00000000, 0x00000000, 285 0x00000000, 0x00000000, 0x00000000, 0x00000000, 286 0x00000000, 0x00000000, 0x00000000, 0x00000000, 287 0x00000000, 0x00000000, 0x00000000, 0x00000000, 288 0x2000CA0C, 0x00100000, 0x49820A0D, 0x0016A130, 289 0x1980C50E, 0x00100030, 0x41824A0D, 0x0016A130, 290 0x2981450F, 0x01100030, 0x00000000, 0x00000000, 291 0x00000000, 0x00000000, 0x00000000, 0x00000000, 292 0x00000000, 0x00000000, 0x00000000, 0x00000000, 293 0x00000000, 0x00000000, 0x00000000, 0x00000000, 294 0x00000000, 0x00000000, 0x00000000, 0x00000000, 295 0x00000000, 0x00000000, 0x00000000, 0x00000000, 296 0x4002140C, 0x00100008, 0x0200140D, 0x00100048, 297 0x0B004A0E, 0x01900068, 0x13008A0E, 0x01900068, 298 0x13008A0E, 0x01900068, 0x43020A0C, 0x00100070, 299 0x1B00CA0D, 0x00100070, 0x1B014A0D, 0x00100070, 300 0x23010A0F, 0x01500070, 0x00000000, 0x00000000, 301 0x00000000, 0x00000000, 0x00000000, 0x00000000, 302 0x00000000, 0x00000000, 0x00000000, 0x00000000, 303 0x00000000, 0x00000000, 0x00000000, 0x00000000, 304 0x4002140C, 0x00100010, 0x1A00D40D, 0x00100050, 305 0x13008A0E, 0x01900070, 0x13008A0E, 0x01900070, 306 0x1B014A0D, 0x00100070, 0x23010A0F, 0x01500070, 307 0x00000000, 0x00000000, 0x00000000, 0x00000000, 308 0x00000000, 0x00000000, 0x00000000, 0x00000000, 309 0x00000000, 0x00000000, 0x00000000, 0x00000000, 310 0x00000000, 0x00000000, 0x00000000, 0x00000000, 311 0x00000000, 0x00000000, 0x00000000, 0x00000000, 312 0x50029404, 0x00100000, 0x32019405, 0x00100040, 313 0x03004A06, 0x01900060, 0x03004A06, 0x01900060, 314 0x6B030A0C, 0x00100060, 0x4B02140D, 0x0016A160, 315 0x4302540D, 0x0016A160, 0x23010A0F, 0x01500060, 316 0x00000000, 0x00000000, 0x00000000, 0x00000000, 317 0x00000000, 0x00000000, 0x00000000, 0x00000000, 318 0x00000000, 0x00000000, 0x00000000, 0x00000000, 319 0x00000000, 0x00000000, 0x00000000, 0x00000000, 320 0x6B03140C, 0x00100060, 0x4B02140D, 0x0016A160, 321 0x0B004A0E, 0x01900060, 0x4302540D, 0x0016A160, 322 0x23010A0F, 0x01500060, 0x00000000, 0x00000000, 323 0x00000000, 0x00000000, 0x00000000, 0x00000000, 324 0x00000000, 0x00000000, 0x00000000, 0x00000000, 325 0x00000000, 0x00000000, 0x00000000, 0x00000000, 326 0x00000000, 0x00000000, 0x00000000, 0x00000000, 327 0x00000000, 0x00000000, 0x00000000, 0x00000000, 328 0x40021404, 0x00100000, 0x1A00D405, 0x00100040, 329 0x53028A06, 0x01900060, 0x5B02CA06, 0x01900060, 330 0x5B02CA06, 0x01900060, 0x43020A04, 0x00100060, 331 0x1B00CA05, 0x00100060, 0x53028A07, 0x0190C060, 332 0x00000000, 0x00000000, 0x00000000, 0x00000000, 333 0x00000000, 0x00000000, 0x00000000, 0x00000000, 334 0x00000000, 0x00000000, 0x00000000, 0x00000000, 335 0x00000000, 0x00000000, 0x00000000, 0x00000000, 336 0x4002140C, 0x00100010, 0x1A00D40D, 0x00100050, 337 0x53028A0E, 0x01900070, 0x5B02CA0E, 0x01900070, 338 0x5B02CA0E, 0x01900070, 0x43020A0C, 0x00100070, 339 0x1B00CA0D, 0x00100070, 0x53028A0F, 0x0190C070, 340 0x00000000, 0x00000000, 0x00000000, 0x00000000, 341 0x00000000, 0x00000000, 0x00000000, 0x00000000, 342 0x00000000, 0x00000000, 0x00000000, 0x00000000, 343 0x00000000, 0x00000000, 0x00000000, 0x00000000, 344 0x40021404, 0x00100000, 0x1A00D405, 0x00100040, 345 0x5B02CA06, 0x01900060, 0x5B02CA06, 0x01900060, 346 0x53028A07, 0x0190C060, 0x00000000, 0x00000000, 347 0x00000000, 0x00000000, 0x00000000, 0x00000000, 348 0x00000000, 0x00000000, 0x00000000, 0x00000000, 349 0x00000000, 0x00000000, 0x00000000, 0x00000000, 350 0x00000000, 0x00000000, 0x00000000, 0x00000000, 351 0x00000000, 0x00000000, 0x00000000, 0x00000000, 352 0x4002140C, 0x00100010, 0x1A00D40D, 0x00100050, 353 0x5B02CA0E, 0x01900070, 0x5B02CA0E, 0x01900070, 354 0x53028A0F, 0x0190C070, 0x00000000, 0x00000000, 355 0x00000000, 0x00000000, 0x00000000, 0x00000000, 356 0x00000000, 0x00000000, 0x00000000, 0x00000000, 357 0x00000000, 0x00000000, 0x00000000, 0x00000000, 358 0x00000000, 0x00000000, 0x00000000, 0x00000000, 359 0x00000000, 0x00000000, 0x00000000, 0x00000000, 360 0x00000000, 0x00000000, 0x00000000, 0x00000000, 361 0x00000000, 0x00000000, 0x00000000, 0x00000000, 362 0x00000000, 0x00000000, 0x00000000, 0x00000000, 363 0x00000000, 0x00000000, 0x00000000, 0x00000000, 364 0x00000000, 0x00000000, 0x00000000, 0x00000000, 365 0x00000000, 0x00000000, 0x00000000, 0x00000000, 366 0x00000000, 0x00000000, 0x00000000, 0x00000000, 367 0x00000000, 0x00000000, 0x00000000, 0x00000000, 368 0x00000000, 0x00000000, 0x00000000, 0x00000000, 369 0x00000000, 0x00000000, 0x00000000, 0x00000000, 370 0x00000000, 0x00000000, 0x00000000, 0x00000000, 371 0x00000000, 0x00000000, 0x00000000, 0x00000000, 372 0x00000000, 0x00000000, 0x00000000, 0x00000000, 373 0x00000000, 0x00000000, 0x00000000, 0x00000000, 374 0x00000000, 0x00000000, 0x00000000, 0x00000000, 375 0x00000000, 0x00000000, 0x00000000, 0x00000000, 376 0x00000000, 0x00000000, 0x00000000, 0x00000000, 377 0x00000000, 0x00000000, 0x00000000, 0x00000000, 378 0x00000000, 0x00000000, 0x00000000, 0x00000000, 379 0x00000000, 0x00000000, 0x00000000, 0x00000000, 380 0x00000000, 0x00000000, 0x00000000, 0x00000000, 381 0x00000000, 0x00000000, 0x00000000, 0x00000000, 382 0x00000000, 0x00000000, 0x00000000, 0x00000000, 383 0x00000000, 0x00000000, 0x00000000, 0x00000000, 384 0x00000000, 0x00000000, 0x00000000, 0x00000000, 385 0x00000000, 0x00000000, 0x00000000, 0x00000000, 386 0x00000000, 0x00000000, 0x00000000, 0x00000000, 387 0x00000000, 0x00000000, 0x00000000, 0x00000000, 388 0x00000000, 0x00000000, 0x00000000, 0x00000000, 389 0x00000000, 0x00000000, 0x00000000, 0x00000000, 390 0x00000000, 0x00000000, 0x00000000, 0x00000000, 391 0x00000000, 0x00000000, 0x00000000, 0x00000000, 392 }; 393 394 static const uint32_t bwn_ntab_gainctl0[] = { 395 0x03CC2B44, 0x03CC2B42, 0x03CC2B40, 0x03CC2B3E, 396 0x03CC2B3D, 0x03CC2B3B, 0x03C82B44, 0x03C82B42, 397 0x03C82B40, 0x03C82B3E, 0x03C82B3D, 0x03C82B3B, 398 0x03C82B39, 0x03C82B38, 0x03C82B36, 0x03C82B34, 399 0x03C42B44, 0x03C42B42, 0x03C42B40, 0x03C42B3E, 400 0x03C42B3D, 0x03C42B3B, 0x03C42B39, 0x03C42B38, 401 0x03C42B36, 0x03C42B34, 0x03C42B33, 0x03C42B32, 402 0x03C42B30, 0x03C42B2F, 0x03C42B2D, 0x03C02B44, 403 0x03C02B42, 0x03C02B40, 0x03C02B3E, 0x03C02B3D, 404 0x03C02B3B, 0x03C02B39, 0x03C02B38, 0x03C02B36, 405 0x03C02B34, 0x03B02B44, 0x03B02B42, 0x03B02B40, 406 0x03B02B3E, 0x03B02B3D, 0x03B02B3B, 0x03B02B39, 407 0x03B02B38, 0x03B02B36, 0x03B02B34, 0x03B02B33, 408 0x03B02B32, 0x03B02B30, 0x03B02B2F, 0x03B02B2D, 409 0x03A02B44, 0x03A02B42, 0x03A02B40, 0x03A02B3E, 410 0x03A02B3D, 0x03A02B3B, 0x03A02B39, 0x03A02B38, 411 0x03A02B36, 0x03A02B34, 0x03902B44, 0x03902B42, 412 0x03902B40, 0x03902B3E, 0x03902B3D, 0x03902B3B, 413 0x03902B39, 0x03902B38, 0x03902B36, 0x03902B34, 414 0x03902B33, 0x03902B32, 0x03902B30, 0x03802B44, 415 0x03802B42, 0x03802B40, 0x03802B3E, 0x03802B3D, 416 0x03802B3B, 0x03802B39, 0x03802B38, 0x03802B36, 417 0x03802B34, 0x03802B33, 0x03802B32, 0x03802B30, 418 0x03802B2F, 0x03802B2D, 0x03802B2C, 0x03802B2B, 419 0x03802B2A, 0x03802B29, 0x03802B27, 0x03802B26, 420 0x03802B25, 0x03802B24, 0x03802B23, 0x03802B22, 421 0x03802B21, 0x03802B20, 0x03802B1F, 0x03802B1E, 422 0x03802B1E, 0x03802B1D, 0x03802B1C, 0x03802B1B, 423 0x03802B1A, 0x03802B1A, 0x03802B19, 0x03802B18, 424 0x03802B18, 0x03802B18, 0x03802B18, 0x03802B18, 425 0x03802B18, 0x03802B18, 0x03802B18, 0x03802B18, 426 0x03802B18, 0x03802B18, 0x03802B18, 0x00002B00, 427 }; 428 429 static const uint32_t bwn_ntab_gainctl1[] = { 430 0x03CC2B44, 0x03CC2B42, 0x03CC2B40, 0x03CC2B3E, 431 0x03CC2B3D, 0x03CC2B3B, 0x03C82B44, 0x03C82B42, 432 0x03C82B40, 0x03C82B3E, 0x03C82B3D, 0x03C82B3B, 433 0x03C82B39, 0x03C82B38, 0x03C82B36, 0x03C82B34, 434 0x03C42B44, 0x03C42B42, 0x03C42B40, 0x03C42B3E, 435 0x03C42B3D, 0x03C42B3B, 0x03C42B39, 0x03C42B38, 436 0x03C42B36, 0x03C42B34, 0x03C42B33, 0x03C42B32, 437 0x03C42B30, 0x03C42B2F, 0x03C42B2D, 0x03C02B44, 438 0x03C02B42, 0x03C02B40, 0x03C02B3E, 0x03C02B3D, 439 0x03C02B3B, 0x03C02B39, 0x03C02B38, 0x03C02B36, 440 0x03C02B34, 0x03B02B44, 0x03B02B42, 0x03B02B40, 441 0x03B02B3E, 0x03B02B3D, 0x03B02B3B, 0x03B02B39, 442 0x03B02B38, 0x03B02B36, 0x03B02B34, 0x03B02B33, 443 0x03B02B32, 0x03B02B30, 0x03B02B2F, 0x03B02B2D, 444 0x03A02B44, 0x03A02B42, 0x03A02B40, 0x03A02B3E, 445 0x03A02B3D, 0x03A02B3B, 0x03A02B39, 0x03A02B38, 446 0x03A02B36, 0x03A02B34, 0x03902B44, 0x03902B42, 447 0x03902B40, 0x03902B3E, 0x03902B3D, 0x03902B3B, 448 0x03902B39, 0x03902B38, 0x03902B36, 0x03902B34, 449 0x03902B33, 0x03902B32, 0x03902B30, 0x03802B44, 450 0x03802B42, 0x03802B40, 0x03802B3E, 0x03802B3D, 451 0x03802B3B, 0x03802B39, 0x03802B38, 0x03802B36, 452 0x03802B34, 0x03802B33, 0x03802B32, 0x03802B30, 453 0x03802B2F, 0x03802B2D, 0x03802B2C, 0x03802B2B, 454 0x03802B2A, 0x03802B29, 0x03802B27, 0x03802B26, 455 0x03802B25, 0x03802B24, 0x03802B23, 0x03802B22, 456 0x03802B21, 0x03802B20, 0x03802B1F, 0x03802B1E, 457 0x03802B1E, 0x03802B1D, 0x03802B1C, 0x03802B1B, 458 0x03802B1A, 0x03802B1A, 0x03802B19, 0x03802B18, 459 0x03802B18, 0x03802B18, 0x03802B18, 0x03802B18, 460 0x03802B18, 0x03802B18, 0x03802B18, 0x03802B18, 461 0x03802B18, 0x03802B18, 0x03802B18, 0x00002B00, 462 }; 463 464 static const uint32_t bwn_ntab_intlevel[] = { 465 0x00802070, 0x0671188D, 0x0A60192C, 0x0A300E46, 466 0x00C1188D, 0x080024D2, 0x00000070, 467 }; 468 469 static const uint32_t bwn_ntab_iqlt0[] = { 470 0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F, 471 0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F, 472 0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F, 473 0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F, 474 0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F, 475 0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F, 476 0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F, 477 0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F, 478 0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F, 479 0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F, 480 0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F, 481 0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F, 482 0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F, 483 0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F, 484 0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F, 485 0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F, 486 0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F, 487 0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F, 488 0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F, 489 0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F, 490 0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F, 491 0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F, 492 0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F, 493 0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F, 494 0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F, 495 0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F, 496 0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F, 497 0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F, 498 0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F, 499 0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F, 500 0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F, 501 0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F, 502 }; 503 504 static const uint32_t bwn_ntab_iqlt1[] = { 505 0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F, 506 0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F, 507 0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F, 508 0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F, 509 0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F, 510 0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F, 511 0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F, 512 0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F, 513 0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F, 514 0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F, 515 0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F, 516 0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F, 517 0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F, 518 0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F, 519 0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F, 520 0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F, 521 0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F, 522 0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F, 523 0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F, 524 0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F, 525 0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F, 526 0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F, 527 0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F, 528 0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F, 529 0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F, 530 0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F, 531 0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F, 532 0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F, 533 0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F, 534 0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F, 535 0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F, 536 0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F, 537 }; 538 539 static const uint16_t bwn_ntab_loftlt0[] = { 540 0x0000, 0x0101, 0x0002, 0x0103, 0x0000, 0x0101, 541 0x0002, 0x0103, 0x0000, 0x0101, 0x0002, 0x0103, 542 0x0000, 0x0101, 0x0002, 0x0103, 0x0000, 0x0101, 543 0x0002, 0x0103, 0x0000, 0x0101, 0x0002, 0x0103, 544 0x0000, 0x0101, 0x0002, 0x0103, 0x0000, 0x0101, 545 0x0002, 0x0103, 0x0000, 0x0101, 0x0002, 0x0103, 546 0x0000, 0x0101, 0x0002, 0x0103, 0x0000, 0x0101, 547 0x0002, 0x0103, 0x0000, 0x0101, 0x0002, 0x0103, 548 0x0000, 0x0101, 0x0002, 0x0103, 0x0000, 0x0101, 549 0x0002, 0x0103, 0x0000, 0x0101, 0x0002, 0x0103, 550 0x0000, 0x0101, 0x0002, 0x0103, 0x0000, 0x0101, 551 0x0002, 0x0103, 0x0000, 0x0101, 0x0002, 0x0103, 552 0x0000, 0x0101, 0x0002, 0x0103, 0x0000, 0x0101, 553 0x0002, 0x0103, 0x0000, 0x0101, 0x0002, 0x0103, 554 0x0000, 0x0101, 0x0002, 0x0103, 0x0000, 0x0101, 555 0x0002, 0x0103, 0x0000, 0x0101, 0x0002, 0x0103, 556 0x0000, 0x0101, 0x0002, 0x0103, 0x0000, 0x0101, 557 0x0002, 0x0103, 0x0000, 0x0101, 0x0002, 0x0103, 558 0x0000, 0x0101, 0x0002, 0x0103, 0x0000, 0x0101, 559 0x0002, 0x0103, 0x0000, 0x0101, 0x0002, 0x0103, 560 0x0000, 0x0101, 0x0002, 0x0103, 0x0000, 0x0101, 561 0x0002, 0x0103, 562 }; 563 564 static const uint16_t bwn_ntab_loftlt1[] = { 565 0x0000, 0x0101, 0x0002, 0x0103, 0x0000, 0x0101, 566 0x0002, 0x0103, 0x0000, 0x0101, 0x0002, 0x0103, 567 0x0000, 0x0101, 0x0002, 0x0103, 0x0000, 0x0101, 568 0x0002, 0x0103, 0x0000, 0x0101, 0x0002, 0x0103, 569 0x0000, 0x0101, 0x0002, 0x0103, 0x0000, 0x0101, 570 0x0002, 0x0103, 0x0000, 0x0101, 0x0002, 0x0103, 571 0x0000, 0x0101, 0x0002, 0x0103, 0x0000, 0x0101, 572 0x0002, 0x0103, 0x0000, 0x0101, 0x0002, 0x0103, 573 0x0000, 0x0101, 0x0002, 0x0103, 0x0000, 0x0101, 574 0x0002, 0x0103, 0x0000, 0x0101, 0x0002, 0x0103, 575 0x0000, 0x0101, 0x0002, 0x0103, 0x0000, 0x0101, 576 0x0002, 0x0103, 0x0000, 0x0101, 0x0002, 0x0103, 577 0x0000, 0x0101, 0x0002, 0x0103, 0x0000, 0x0101, 578 0x0002, 0x0103, 0x0000, 0x0101, 0x0002, 0x0103, 579 0x0000, 0x0101, 0x0002, 0x0103, 0x0000, 0x0101, 580 0x0002, 0x0103, 0x0000, 0x0101, 0x0002, 0x0103, 581 0x0000, 0x0101, 0x0002, 0x0103, 0x0000, 0x0101, 582 0x0002, 0x0103, 0x0000, 0x0101, 0x0002, 0x0103, 583 0x0000, 0x0101, 0x0002, 0x0103, 0x0000, 0x0101, 584 0x0002, 0x0103, 0x0000, 0x0101, 0x0002, 0x0103, 585 0x0000, 0x0101, 0x0002, 0x0103, 0x0000, 0x0101, 586 0x0002, 0x0103, 587 }; 588 589 static const uint8_t bwn_ntab_mcs[] = { 590 0x00, 0x08, 0x0A, 0x10, 0x12, 0x19, 0x1A, 0x1C, 591 0x40, 0x48, 0x4A, 0x50, 0x52, 0x59, 0x5A, 0x5C, 592 0x80, 0x88, 0x8A, 0x90, 0x92, 0x99, 0x9A, 0x9C, 593 0xC0, 0xC8, 0xCA, 0xD0, 0xD2, 0xD9, 0xDA, 0xDC, 594 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 595 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 596 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 597 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 598 0x00, 0x01, 0x02, 0x04, 0x08, 0x09, 0x0A, 0x0C, 599 0x10, 0x11, 0x12, 0x14, 0x18, 0x19, 0x1A, 0x1C, 600 0x20, 0x21, 0x22, 0x24, 0x40, 0x41, 0x42, 0x44, 601 0x48, 0x49, 0x4A, 0x4C, 0x50, 0x51, 0x52, 0x54, 602 0x58, 0x59, 0x5A, 0x5C, 0x60, 0x61, 0x62, 0x64, 603 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 604 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 605 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 606 }; 607 608 static const uint32_t bwn_ntab_noisevar10[] = { 609 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D, 610 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D, 611 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D, 612 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D, 613 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D, 614 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D, 615 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D, 616 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D, 617 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D, 618 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D, 619 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D, 620 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D, 621 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D, 622 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D, 623 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D, 624 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D, 625 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D, 626 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D, 627 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D, 628 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D, 629 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D, 630 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D, 631 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D, 632 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D, 633 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D, 634 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D, 635 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D, 636 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D, 637 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D, 638 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D, 639 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D, 640 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D, 641 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D, 642 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D, 643 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D, 644 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D, 645 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D, 646 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D, 647 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D, 648 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D, 649 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D, 650 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D, 651 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D, 652 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D, 653 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D, 654 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D, 655 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D, 656 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D, 657 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D, 658 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D, 659 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D, 660 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D, 661 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D, 662 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D, 663 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D, 664 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D, 665 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D, 666 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D, 667 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D, 668 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D, 669 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D, 670 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D, 671 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D, 672 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D, 673 }; 674 675 static const uint32_t bwn_ntab_noisevar11[] = { 676 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D, 677 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D, 678 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D, 679 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D, 680 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D, 681 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D, 682 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D, 683 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D, 684 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D, 685 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D, 686 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D, 687 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D, 688 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D, 689 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D, 690 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D, 691 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D, 692 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D, 693 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D, 694 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D, 695 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D, 696 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D, 697 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D, 698 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D, 699 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D, 700 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D, 701 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D, 702 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D, 703 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D, 704 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D, 705 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D, 706 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D, 707 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D, 708 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D, 709 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D, 710 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D, 711 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D, 712 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D, 713 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D, 714 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D, 715 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D, 716 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D, 717 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D, 718 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D, 719 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D, 720 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D, 721 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D, 722 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D, 723 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D, 724 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D, 725 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D, 726 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D, 727 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D, 728 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D, 729 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D, 730 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D, 731 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D, 732 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D, 733 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D, 734 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D, 735 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D, 736 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D, 737 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D, 738 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D, 739 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D, 740 }; 741 742 static const uint16_t bwn_ntab_pilot[] = { 743 0xFF08, 0xFF08, 0xFF08, 0xFF08, 0xFF08, 0xFF08, 744 0xFF08, 0xFF08, 0x80D5, 0x80D5, 0x80D5, 0x80D5, 745 0x80D5, 0x80D5, 0x80D5, 0x80D5, 0xFF0A, 0xFF82, 746 0xFFA0, 0xFF28, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 747 0xFF82, 0xFFA0, 0xFF28, 0xFF0A, 0xFFFF, 0xFFFF, 748 0xFFFF, 0xFFFF, 0xF83F, 0xFA1F, 0xFA97, 0xFAB5, 749 0xF2BD, 0xF0BF, 0xFFFF, 0xFFFF, 0xF017, 0xF815, 750 0xF215, 0xF095, 0xF035, 0xF01D, 0xFFFF, 0xFFFF, 751 0xFF08, 0xFF02, 0xFF80, 0xFF20, 0xFF08, 0xFF02, 752 0xFF80, 0xFF20, 0xF01F, 0xF817, 0xFA15, 0xF295, 753 0xF0B5, 0xF03D, 0xFFFF, 0xFFFF, 0xF82A, 0xFA0A, 754 0xFA82, 0xFAA0, 0xF2A8, 0xF0AA, 0xFFFF, 0xFFFF, 755 0xF002, 0xF800, 0xF200, 0xF080, 0xF020, 0xF008, 756 0xFFFF, 0xFFFF, 0xF00A, 0xF802, 0xFA00, 0xF280, 757 0xF0A0, 0xF028, 0xFFFF, 0xFFFF, 758 }; 759 760 static const uint32_t bwn_ntab_pilotlt[] = { 761 0x76540123, 0x62407351, 0x76543201, 0x76540213, 762 0x76540123, 0x76430521, 763 }; 764 765 static const uint32_t bwn_ntab_tdi20a0[] = { 766 0x00091226, 0x000A1429, 0x000B56AD, 0x000C58B0, 767 0x000D5AB3, 0x000E9CB6, 0x000F9EBA, 0x0000C13D, 768 0x00020301, 0x00030504, 0x00040708, 0x0005090B, 769 0x00064B8E, 0x00095291, 0x000A5494, 0x000B9718, 770 0x000C9927, 0x000D9B2A, 0x000EDD2E, 0x000FDF31, 771 0x000101B4, 0x000243B7, 0x000345BB, 0x000447BE, 772 0x00058982, 0x00068C05, 0x00099309, 0x000A950C, 773 0x000BD78F, 0x000CD992, 0x000DDB96, 0x000F1D99, 774 0x00005FA8, 0x0001422C, 0x0002842F, 0x00038632, 775 0x00048835, 0x0005CA38, 0x0006CCBC, 0x0009D3BF, 776 0x000B1603, 0x000C1806, 0x000D1A0A, 0x000E1C0D, 777 0x000F5E10, 0x00008093, 0x00018297, 0x0002C49A, 778 0x0003C680, 0x0004C880, 0x00060B00, 0x00070D00, 779 0x00000000, 0x00000000, 0x00000000, 780 }; 781 782 static const uint32_t bwn_ntab_tdi20a1[] = { 783 0x00014B26, 0x00028D29, 0x000393AD, 0x00049630, 784 0x0005D833, 0x0006DA36, 0x00099C3A, 0x000A9E3D, 785 0x000BC081, 0x000CC284, 0x000DC488, 0x000F068B, 786 0x0000488E, 0x00018B91, 0x0002D214, 0x0003D418, 787 0x0004D6A7, 0x000618AA, 0x00071AAE, 0x0009DCB1, 788 0x000B1EB4, 0x000C0137, 0x000D033B, 0x000E053E, 789 0x000F4702, 0x00008905, 0x00020C09, 0x0003128C, 790 0x0004148F, 0x00051712, 0x00065916, 0x00091B19, 791 0x000A1D28, 0x000B5F2C, 0x000C41AF, 0x000D43B2, 792 0x000E85B5, 0x000F87B8, 0x0000C9BC, 0x00024CBF, 793 0x00035303, 0x00045506, 0x0005978A, 0x0006998D, 794 0x00095B90, 0x000A5D93, 0x000B9F97, 0x000C821A, 795 0x000D8400, 0x000EC600, 0x000FC800, 0x00010A00, 796 0x00000000, 0x00000000, 0x00000000, 797 }; 798 799 static const uint32_t bwn_ntab_tdi40a0[] = { 800 0x0011A346, 0x00136CCF, 0x0014F5D9, 0x001641E2, 801 0x0017CB6B, 0x00195475, 0x001B2383, 0x001CAD0C, 802 0x001E7616, 0x0000821F, 0x00020BA8, 0x0003D4B2, 803 0x00056447, 0x00072DD0, 0x0008B6DA, 0x000A02E3, 804 0x000B8C6C, 0x000D15F6, 0x0011E484, 0x0013AE0D, 805 0x00153717, 0x00168320, 0x00180CA9, 0x00199633, 806 0x001B6548, 0x001CEED1, 0x001EB7DB, 0x0000C3E4, 807 0x00024D6D, 0x000416F7, 0x0005A585, 0x00076F0F, 808 0x0008F818, 0x000A4421, 0x000BCDAB, 0x000D9734, 809 0x00122649, 0x0013EFD2, 0x001578DC, 0x0016C4E5, 810 0x00184E6E, 0x001A17F8, 0x001BA686, 0x001D3010, 811 0x001EF999, 0x00010522, 0x00028EAC, 0x00045835, 812 0x0005E74A, 0x0007B0D3, 0x00093A5D, 0x000A85E6, 813 0x000C0F6F, 0x000DD8F9, 0x00126787, 0x00143111, 814 0x0015BA9A, 0x00170623, 0x00188FAD, 0x001A5936, 815 0x001BE84B, 0x001DB1D4, 0x001F3B5E, 0x000146E7, 816 0x00031070, 0x000499FA, 0x00062888, 0x0007F212, 817 0x00097B9B, 0x000AC7A4, 0x000C50AE, 0x000E1A37, 818 0x0012A94C, 0x001472D5, 0x0015FC5F, 0x00174868, 819 0x0018D171, 0x001A9AFB, 0x001C2989, 0x001DF313, 820 0x001F7C9C, 0x000188A5, 0x000351AF, 0x0004DB38, 821 0x0006AA4D, 0x000833D7, 0x0009BD60, 0x000B0969, 822 0x000C9273, 0x000E5BFC, 0x00132A8A, 0x0014B414, 823 0x00163D9D, 0x001789A6, 0x001912B0, 0x001ADC39, 824 0x001C6BCE, 0x001E34D8, 0x001FBE61, 0x0001CA6A, 825 0x00039374, 0x00051CFD, 0x0006EC0B, 0x00087515, 826 0x0009FE9E, 0x000B4AA7, 0x000CD3B1, 0x000E9D3A, 827 0x00000000, 0x00000000, 828 }; 829 830 static const uint32_t bwn_ntab_tdi40a1[] = { 831 0x001EDB36, 0x000129CA, 0x0002B353, 0x00047CDD, 832 0x0005C8E6, 0x000791EF, 0x00091BF9, 0x000AAA07, 833 0x000C3391, 0x000DFD1A, 0x00120923, 0x0013D22D, 834 0x00155C37, 0x0016EACB, 0x00187454, 0x001A3DDE, 835 0x001B89E7, 0x001D12F0, 0x001F1CFA, 0x00016B88, 836 0x00033492, 0x0004BE1B, 0x00060A24, 0x0007D32E, 837 0x00095D38, 0x000AEC4C, 0x000C7555, 0x000E3EDF, 838 0x00124AE8, 0x001413F1, 0x0015A37B, 0x00172C89, 839 0x0018B593, 0x001A419C, 0x001BCB25, 0x001D942F, 840 0x001F63B9, 0x0001AD4D, 0x00037657, 0x0004C260, 841 0x00068BE9, 0x000814F3, 0x0009A47C, 0x000B2D8A, 842 0x000CB694, 0x000E429D, 0x00128C26, 0x001455B0, 843 0x0015E4BA, 0x00176E4E, 0x0018F758, 0x001A8361, 844 0x001C0CEA, 0x001DD674, 0x001FA57D, 0x0001EE8B, 845 0x0003B795, 0x0005039E, 0x0006CD27, 0x000856B1, 846 0x0009E5C6, 0x000B6F4F, 0x000CF859, 0x000E8462, 847 0x00130DEB, 0x00149775, 0x00162603, 0x0017AF8C, 848 0x00193896, 0x001AC49F, 0x001C4E28, 0x001E17B2, 849 0x0000A6C7, 0x00023050, 0x0003F9DA, 0x00054563, 850 0x00070EEC, 0x00089876, 0x000A2704, 0x000BB08D, 851 0x000D3A17, 0x001185A0, 0x00134F29, 0x0014D8B3, 852 0x001667C8, 0x0017F151, 0x00197ADB, 0x001B0664, 853 0x001C8FED, 0x001E5977, 0x0000E805, 0x0002718F, 854 0x00043B18, 0x000586A1, 0x0007502B, 0x0008D9B4, 855 0x000A68C9, 0x000BF252, 0x000DBBDC, 0x0011C7E5, 856 0x001390EE, 0x00151A78, 0x0016A906, 0x00183290, 857 0x0019BC19, 0x001B4822, 0x001CD12C, 0x001E9AB5, 858 0x00000000, 0x00000000, 859 }; 860 861 static const uint32_t bwn_ntab_tdtrn[] = { 862 0x061C061C, 0x0050EE68, 0xF592FE36, 0xFE5212F6, 863 0x00000C38, 0xFE5212F6, 0xF592FE36, 0x0050EE68, 864 0x061C061C, 0xEE680050, 0xFE36F592, 0x12F6FE52, 865 0x0C380000, 0x12F6FE52, 0xFE36F592, 0xEE680050, 866 0x061C061C, 0x0050EE68, 0xF592FE36, 0xFE5212F6, 867 0x00000C38, 0xFE5212F6, 0xF592FE36, 0x0050EE68, 868 0x061C061C, 0xEE680050, 0xFE36F592, 0x12F6FE52, 869 0x0C380000, 0x12F6FE52, 0xFE36F592, 0xEE680050, 870 0x05E305E3, 0x004DEF0C, 0xF5F3FE47, 0xFE611246, 871 0x00000BC7, 0xFE611246, 0xF5F3FE47, 0x004DEF0C, 872 0x05E305E3, 0xEF0C004D, 0xFE47F5F3, 0x1246FE61, 873 0x0BC70000, 0x1246FE61, 0xFE47F5F3, 0xEF0C004D, 874 0x05E305E3, 0x004DEF0C, 0xF5F3FE47, 0xFE611246, 875 0x00000BC7, 0xFE611246, 0xF5F3FE47, 0x004DEF0C, 876 0x05E305E3, 0xEF0C004D, 0xFE47F5F3, 0x1246FE61, 877 0x0BC70000, 0x1246FE61, 0xFE47F5F3, 0xEF0C004D, 878 0xFA58FA58, 0xF895043B, 0xFF4C09C0, 0xFBC6FFA8, 879 0xFB84F384, 0x0798F6F9, 0x05760122, 0x058409F6, 880 0x0B500000, 0x05B7F542, 0x08860432, 0x06DDFEE7, 881 0xFB84F384, 0xF9D90664, 0xF7E8025C, 0x00FFF7BD, 882 0x05A805A8, 0xF7BD00FF, 0x025CF7E8, 0x0664F9D9, 883 0xF384FB84, 0xFEE706DD, 0x04320886, 0xF54205B7, 884 0x00000B50, 0x09F60584, 0x01220576, 0xF6F90798, 885 0xF384FB84, 0xFFA8FBC6, 0x09C0FF4C, 0x043BF895, 886 0x02D402D4, 0x07DE0270, 0xFC96079C, 0xF90AFE94, 887 0xFE00FF2C, 0x02D4065D, 0x092A0096, 0x0014FBB8, 888 0xFD2CFD2C, 0x076AFB3C, 0x0096F752, 0xF991FD87, 889 0xFB2C0200, 0xFEB8F960, 0x08E0FC96, 0x049802A8, 890 0xFD2CFD2C, 0x02A80498, 0xFC9608E0, 0xF960FEB8, 891 0x0200FB2C, 0xFD87F991, 0xF7520096, 0xFB3C076A, 892 0xFD2CFD2C, 0xFBB80014, 0x0096092A, 0x065D02D4, 893 0xFF2CFE00, 0xFE94F90A, 0x079CFC96, 0x027007DE, 894 0x02D402D4, 0x027007DE, 0x079CFC96, 0xFE94F90A, 895 0xFF2CFE00, 0x065D02D4, 0x0096092A, 0xFBB80014, 896 0xFD2CFD2C, 0xFB3C076A, 0xF7520096, 0xFD87F991, 897 0x0200FB2C, 0xF960FEB8, 0xFC9608E0, 0x02A80498, 898 0xFD2CFD2C, 0x049802A8, 0x08E0FC96, 0xFEB8F960, 899 0xFB2C0200, 0xF991FD87, 0x0096F752, 0x076AFB3C, 900 0xFD2CFD2C, 0x0014FBB8, 0x092A0096, 0x02D4065D, 901 0xFE00FF2C, 0xF90AFE94, 0xFC96079C, 0x07DE0270, 902 0x00000000, 0x00000000, 0x00000000, 0x00000000, 903 0x00000000, 0x00000000, 0x00000000, 0x00000000, 904 0x00000000, 0x00000000, 0x00000000, 0x00000000, 905 0x00000000, 0x00000000, 0x00000000, 0x00000000, 906 0x00000000, 0x00000000, 0x00000000, 0x00000000, 907 0x00000000, 0x00000000, 0x00000000, 0x00000000, 908 0x00000000, 0x00000000, 0x00000000, 0x00000000, 909 0x00000000, 0x00000000, 0x00000000, 0x00000000, 910 0x00000000, 0x00000000, 0x00000000, 0x00000000, 911 0x00000000, 0x00000000, 0x00000000, 0x00000000, 912 0x00000000, 0x00000000, 0x00000000, 0x00000000, 913 0x00000000, 0x00000000, 0x00000000, 0x00000000, 914 0x00000000, 0x00000000, 0x00000000, 0x00000000, 915 0x00000000, 0x00000000, 0x00000000, 0x00000000, 916 0x00000000, 0x00000000, 0x00000000, 0x00000000, 917 0x00000000, 0x00000000, 0x00000000, 0x00000000, 918 0x00000000, 0x00000000, 0x00000000, 0x00000000, 919 0x00000000, 0x00000000, 0x00000000, 0x00000000, 920 0x00000000, 0x00000000, 0x00000000, 0x00000000, 921 0x00000000, 0x00000000, 0x00000000, 0x00000000, 922 0x00000000, 0x00000000, 0x00000000, 0x00000000, 923 0x00000000, 0x00000000, 0x00000000, 0x00000000, 924 0x00000000, 0x00000000, 0x00000000, 0x00000000, 925 0x00000000, 0x00000000, 0x00000000, 0x00000000, 926 0x062A0000, 0xFEFA0759, 0x08B80908, 0xF396FC2D, 927 0xF9D6045C, 0xFC4EF608, 0xF748F596, 0x07B207BF, 928 0x062A062A, 0xF84EF841, 0xF748F596, 0x03B209F8, 929 0xF9D6045C, 0x0C6A03D3, 0x08B80908, 0x0106F8A7, 930 0x062A0000, 0xFEFAF8A7, 0x08B8F6F8, 0xF39603D3, 931 0xF9D6FBA4, 0xFC4E09F8, 0xF7480A6A, 0x07B2F841, 932 0x062AF9D6, 0xF84E07BF, 0xF7480A6A, 0x03B2F608, 933 0xF9D6FBA4, 0x0C6AFC2D, 0x08B8F6F8, 0x01060759, 934 0x062A0000, 0xFEFA0759, 0x08B80908, 0xF396FC2D, 935 0xF9D6045C, 0xFC4EF608, 0xF748F596, 0x07B207BF, 936 0x062A062A, 0xF84EF841, 0xF748F596, 0x03B209F8, 937 0xF9D6045C, 0x0C6A03D3, 0x08B80908, 0x0106F8A7, 938 0x062A0000, 0xFEFAF8A7, 0x08B8F6F8, 0xF39603D3, 939 0xF9D6FBA4, 0xFC4E09F8, 0xF7480A6A, 0x07B2F841, 940 0x062AF9D6, 0xF84E07BF, 0xF7480A6A, 0x03B2F608, 941 0xF9D6FBA4, 0x0C6AFC2D, 0x08B8F6F8, 0x01060759, 942 0x061C061C, 0xFF30009D, 0xFFB21141, 0xFD87FB54, 943 0xF65DFE59, 0x02EEF99E, 0x0166F03C, 0xFFF809B6, 944 0x000008A4, 0x000AF42B, 0x00EFF577, 0xFA840BF2, 945 0xFC02FF51, 0x08260F67, 0xFFF0036F, 0x0842F9C3, 946 0x00000000, 0x063DF7BE, 0xFC910010, 0xF099F7DA, 947 0x00AF03FE, 0xF40E057C, 0x0A89FF11, 0x0BD5FFF6, 948 0xF75C0000, 0xF64A0008, 0x0FC4FE9A, 0x0662FD12, 949 0x01A709A3, 0x04AC0279, 0xEEBF004E, 0xFF6300D0, 950 0xF9E4F9E4, 0x00D0FF63, 0x004EEEBF, 0x027904AC, 951 0x09A301A7, 0xFD120662, 0xFE9A0FC4, 0x0008F64A, 952 0x0000F75C, 0xFFF60BD5, 0xFF110A89, 0x057CF40E, 953 0x03FE00AF, 0xF7DAF099, 0x0010FC91, 0xF7BE063D, 954 0x00000000, 0xF9C30842, 0x036FFFF0, 0x0F670826, 955 0xFF51FC02, 0x0BF2FA84, 0xF57700EF, 0xF42B000A, 956 0x08A40000, 0x09B6FFF8, 0xF03C0166, 0xF99E02EE, 957 0xFE59F65D, 0xFB54FD87, 0x1141FFB2, 0x009DFF30, 958 0x05E30000, 0xFF060705, 0x085408A0, 0xF425FC59, 959 0xFA1D042A, 0xFC78F67A, 0xF7ACF60E, 0x075A0766, 960 0x05E305E3, 0xF8A6F89A, 0xF7ACF60E, 0x03880986, 961 0xFA1D042A, 0x0BDB03A7, 0x085408A0, 0x00FAF8FB, 962 0x05E30000, 0xFF06F8FB, 0x0854F760, 0xF42503A7, 963 0xFA1DFBD6, 0xFC780986, 0xF7AC09F2, 0x075AF89A, 964 0x05E3FA1D, 0xF8A60766, 0xF7AC09F2, 0x0388F67A, 965 0xFA1DFBD6, 0x0BDBFC59, 0x0854F760, 0x00FA0705, 966 0x05E30000, 0xFF060705, 0x085408A0, 0xF425FC59, 967 0xFA1D042A, 0xFC78F67A, 0xF7ACF60E, 0x075A0766, 968 0x05E305E3, 0xF8A6F89A, 0xF7ACF60E, 0x03880986, 969 0xFA1D042A, 0x0BDB03A7, 0x085408A0, 0x00FAF8FB, 970 0x05E30000, 0xFF06F8FB, 0x0854F760, 0xF42503A7, 971 0xFA1DFBD6, 0xFC780986, 0xF7AC09F2, 0x075AF89A, 972 0x05E3FA1D, 0xF8A60766, 0xF7AC09F2, 0x0388F67A, 973 0xFA1DFBD6, 0x0BDBFC59, 0x0854F760, 0x00FA0705, 974 0xFA58FA58, 0xF8F0FE00, 0x0448073D, 0xFDC9FE46, 975 0xF9910258, 0x089D0407, 0xFD5CF71A, 0x02AFFDE0, 976 0x083E0496, 0xFF5A0740, 0xFF7AFD97, 0x00FE01F1, 977 0x0009082E, 0xFA94FF75, 0xFECDF8EA, 0xFFB0F693, 978 0xFD2CFA58, 0x0433FF16, 0xFBA405DD, 0xFA610341, 979 0x06A606CB, 0x0039FD2D, 0x0677FA97, 0x01FA05E0, 980 0xF896003E, 0x075A068B, 0x012CFC3E, 0xFA23F98D, 981 0xFC7CFD43, 0xFF90FC0D, 0x01C10982, 0x00C601D6, 982 0xFD2CFD2C, 0x01D600C6, 0x098201C1, 0xFC0DFF90, 983 0xFD43FC7C, 0xF98DFA23, 0xFC3E012C, 0x068B075A, 984 0x003EF896, 0x05E001FA, 0xFA970677, 0xFD2D0039, 985 0x06CB06A6, 0x0341FA61, 0x05DDFBA4, 0xFF160433, 986 0xFA58FD2C, 0xF693FFB0, 0xF8EAFECD, 0xFF75FA94, 987 0x082E0009, 0x01F100FE, 0xFD97FF7A, 0x0740FF5A, 988 0x0496083E, 0xFDE002AF, 0xF71AFD5C, 0x0407089D, 989 0x0258F991, 0xFE46FDC9, 0x073D0448, 0xFE00F8F0, 990 0xFD2CFD2C, 0xFCE00500, 0xFC09FDDC, 0xFE680157, 991 0x04C70571, 0xFC3AFF21, 0xFCD70228, 0x056D0277, 992 0x0200FE00, 0x0022F927, 0xFE3C032B, 0xFC44FF3C, 993 0x03E9FBDB, 0x04570313, 0x04C9FF5C, 0x000D03B8, 994 0xFA580000, 0xFBE900D2, 0xF9D0FE0B, 0x0125FDF9, 995 0x042501BF, 0x0328FA2B, 0xFFA902F0, 0xFA250157, 996 0x0200FE00, 0x03740438, 0xFF0405FD, 0x030CFE52, 997 0x0037FB39, 0xFF6904C5, 0x04F8FD23, 0xFD31FC1B, 998 0xFD2CFD2C, 0xFC1BFD31, 0xFD2304F8, 0x04C5FF69, 999 0xFB390037, 0xFE52030C, 0x05FDFF04, 0x04380374, 1000 0xFE000200, 0x0157FA25, 0x02F0FFA9, 0xFA2B0328, 1001 0x01BF0425, 0xFDF90125, 0xFE0BF9D0, 0x00D2FBE9, 1002 0x0000FA58, 0x03B8000D, 0xFF5C04C9, 0x03130457, 1003 0xFBDB03E9, 0xFF3CFC44, 0x032BFE3C, 0xF9270022, 1004 0xFE000200, 0x0277056D, 0x0228FCD7, 0xFF21FC3A, 1005 0x057104C7, 0x0157FE68, 0xFDDCFC09, 0x0500FCE0, 1006 0xFD2CFD2C, 0x0500FCE0, 0xFDDCFC09, 0x0157FE68, 1007 0x057104C7, 0xFF21FC3A, 0x0228FCD7, 0x0277056D, 1008 0xFE000200, 0xF9270022, 0x032BFE3C, 0xFF3CFC44, 1009 0xFBDB03E9, 0x03130457, 0xFF5C04C9, 0x03B8000D, 1010 0x0000FA58, 0x00D2FBE9, 0xFE0BF9D0, 0xFDF90125, 1011 0x01BF0425, 0xFA2B0328, 0x02F0FFA9, 0x0157FA25, 1012 0xFE000200, 0x04380374, 0x05FDFF04, 0xFE52030C, 1013 0xFB390037, 0x04C5FF69, 0xFD2304F8, 0xFC1BFD31, 1014 0xFD2CFD2C, 0xFD31FC1B, 0x04F8FD23, 0xFF6904C5, 1015 0x0037FB39, 0x030CFE52, 0xFF0405FD, 0x03740438, 1016 0x0200FE00, 0xFA250157, 0xFFA902F0, 0x0328FA2B, 1017 0x042501BF, 0x0125FDF9, 0xF9D0FE0B, 0xFBE900D2, 1018 0xFA580000, 0x000D03B8, 0x04C9FF5C, 0x04570313, 1019 0x03E9FBDB, 0xFC44FF3C, 0xFE3C032B, 0x0022F927, 1020 0x0200FE00, 0x056D0277, 0xFCD70228, 0xFC3AFF21, 1021 0x04C70571, 0xFE680157, 0xFC09FDDC, 0xFCE00500, 1022 0x05A80000, 0xFF1006BE, 0x0800084A, 0xF49CFC7E, 1023 0xFA580400, 0xFC9CF6DA, 0xF800F672, 0x0710071C, 1024 0x05A805A8, 0xF8F0F8E4, 0xF800F672, 0x03640926, 1025 0xFA580400, 0x0B640382, 0x0800084A, 0x00F0F942, 1026 0x05A80000, 0xFF10F942, 0x0800F7B6, 0xF49C0382, 1027 0xFA58FC00, 0xFC9C0926, 0xF800098E, 0x0710F8E4, 1028 0x05A8FA58, 0xF8F0071C, 0xF800098E, 0x0364F6DA, 1029 0xFA58FC00, 0x0B64FC7E, 0x0800F7B6, 0x00F006BE, 1030 0x05A80000, 0xFF1006BE, 0x0800084A, 0xF49CFC7E, 1031 0xFA580400, 0xFC9CF6DA, 0xF800F672, 0x0710071C, 1032 0x05A805A8, 0xF8F0F8E4, 0xF800F672, 0x03640926, 1033 0xFA580400, 0x0B640382, 0x0800084A, 0x00F0F942, 1034 0x05A80000, 0xFF10F942, 0x0800F7B6, 0xF49C0382, 1035 0xFA58FC00, 0xFC9C0926, 0xF800098E, 0x0710F8E4, 1036 0x05A8FA58, 0xF8F0071C, 0xF800098E, 0x0364F6DA, 1037 0xFA58FC00, 0x0B64FC7E, 0x0800F7B6, 0x00F006BE, 1038 }; 1039 1040 static const uint32_t bwn_ntab_tmap[] = { 1041 0x8A88AA80, 0x8AAAAA8A, 0x8A8A8AA8, 0x00000888, 1042 0x88000000, 0x8A8A88AA, 0x8AA88888, 0x8888A8A8, 1043 0xF1111110, 0x11111111, 0x11F11111, 0x00000111, 1044 0x11000000, 0x1111F111, 0x11111111, 0x111111F1, 1045 0x8A88AA80, 0x8AAAAA8A, 0x8A8A8AA8, 0x000AA888, 1046 0x88880000, 0x8A8A88AA, 0x8AA88888, 0x8888A8A8, 1047 0xA1111110, 0x11111111, 0x11C11111, 0x00000111, 1048 0x11000000, 0x1111A111, 0x11111111, 0x111111A1, 1049 0xA2222220, 0x22222222, 0x22C22222, 0x00000222, 1050 0x22000000, 0x2222A222, 0x22222222, 0x222222A2, 1051 0xF1111110, 0x11111111, 0x11F11111, 0x00011111, 1052 0x11110000, 0x1111F111, 0x11111111, 0x111111F1, 1053 0xA8AA88A0, 0xA88888A8, 0xA8A8A88A, 0x00088AAA, 1054 0xAAAA0000, 0xA8A8AA88, 0xA88AAAAA, 0xAAAA8A8A, 1055 0xAAA8AAA0, 0x8AAA8AAA, 0xAA8A8A8A, 0x000AAA88, 1056 0x8AAA0000, 0xAAA8A888, 0x8AA88A8A, 0x8A88A888, 1057 0x08080A00, 0x0A08080A, 0x080A0A08, 0x00080808, 1058 0x080A0000, 0x080A0808, 0x080A0808, 0x0A0A0A08, 1059 0xA0A0A0A0, 0x80A0A080, 0x8080A0A0, 0x00008080, 1060 0x80A00000, 0x80A080A0, 0xA080A0A0, 0x8080A0A0, 1061 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1062 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1063 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1064 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1065 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1066 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1067 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1068 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1069 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1070 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1071 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1072 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1073 0x99999000, 0x9B9B99BB, 0x9BB99999, 0x9999B9B9, 1074 0x9B99BB90, 0x9BBBBB9B, 0x9B9B9BB9, 0x00000999, 1075 0x88000000, 0x8A8A88AA, 0x8AA88888, 0x8888A8A8, 1076 0x8A88AA80, 0x8AAAAA8A, 0x8A8A8AA8, 0x00AAA888, 1077 0x22000000, 0x2222B222, 0x22222222, 0x222222B2, 1078 0xB2222220, 0x22222222, 0x22D22222, 0x00000222, 1079 0x11000000, 0x1111A111, 0x11111111, 0x111111A1, 1080 0xA1111110, 0x11111111, 0x11C11111, 0x00000111, 1081 0x33000000, 0x3333B333, 0x33333333, 0x333333B3, 1082 0xB3333330, 0x33333333, 0x33D33333, 0x00000333, 1083 0x22000000, 0x2222A222, 0x22222222, 0x222222A2, 1084 0xA2222220, 0x22222222, 0x22C22222, 0x00000222, 1085 0x99B99B00, 0x9B9B99BB, 0x9BB99999, 0x9999B9B9, 1086 0x9B99BB99, 0x9BBBBB9B, 0x9B9B9BB9, 0x00000999, 1087 0x88000000, 0x8A8A88AA, 0x8AA88888, 0x8888A8A8, 1088 0x8A88AA88, 0x8AAAAA8A, 0x8A8A8AA8, 0x08AAA888, 1089 0x22222200, 0x2222F222, 0x22222222, 0x222222F2, 1090 0x22222222, 0x22222222, 0x22F22222, 0x00000222, 1091 0x11000000, 0x1111F111, 0x11111111, 0x11111111, 1092 0xF1111111, 0x11111111, 0x11F11111, 0x01111111, 1093 0xBB9BB900, 0xB9B9BB99, 0xB99BBBBB, 0xBBBB9B9B, 1094 0xB9BB99BB, 0xB99999B9, 0xB9B9B99B, 0x00000BBB, 1095 0xAA000000, 0xA8A8AA88, 0xA88AAAAA, 0xAAAA8A8A, 1096 0xA8AA88AA, 0xA88888A8, 0xA8A8A88A, 0x0A888AAA, 1097 0xAA000000, 0xA8A8AA88, 0xA88AAAAA, 0xAAAA8A8A, 1098 0xA8AA88A0, 0xA88888A8, 0xA8A8A88A, 0x00000AAA, 1099 0x88000000, 0x8A8A88AA, 0x8AA88888, 0x8888A8A8, 1100 0x8A88AA80, 0x8AAAAA8A, 0x8A8A8AA8, 0x00000888, 1101 0xBBBBBB00, 0x999BBBBB, 0x9BB99B9B, 0xB9B9B9BB, 1102 0xB9B99BBB, 0xB9B9B9BB, 0xB9BB9B99, 0x00000999, 1103 0x8A000000, 0xAA88A888, 0xA88888AA, 0xA88A8A88, 1104 0xA88AA88A, 0x88A8AAAA, 0xA8AA8AAA, 0x0888A88A, 1105 0x0B0B0B00, 0x090B0B0B, 0x0B090B0B, 0x0909090B, 1106 0x09090B0B, 0x09090B0B, 0x09090B09, 0x00000909, 1107 0x0A000000, 0x0A080808, 0x080A080A, 0x080A0A08, 1108 0x080A080A, 0x0808080A, 0x0A0A0A08, 0x0808080A, 1109 0xB0B0B000, 0x9090B0B0, 0x90B09090, 0xB0B0B090, 1110 0xB0B090B0, 0x90B0B0B0, 0xB0B09090, 0x00000090, 1111 0x80000000, 0xA080A080, 0xA08080A0, 0xA0808080, 1112 0xA080A080, 0x80A0A0A0, 0xA0A080A0, 0x00A0A0A0, 1113 0x22000000, 0x2222F222, 0x22222222, 0x222222F2, 1114 0xF2222220, 0x22222222, 0x22F22222, 0x00000222, 1115 0x11000000, 0x1111F111, 0x11111111, 0x111111F1, 1116 0xF1111110, 0x11111111, 0x11F11111, 0x00000111, 1117 0x33000000, 0x3333F333, 0x33333333, 0x333333F3, 1118 0xF3333330, 0x33333333, 0x33F33333, 0x00000333, 1119 0x22000000, 0x2222F222, 0x22222222, 0x222222F2, 1120 0xF2222220, 0x22222222, 0x22F22222, 0x00000222, 1121 0x99000000, 0x9B9B99BB, 0x9BB99999, 0x9999B9B9, 1122 0x9B99BB90, 0x9BBBBB9B, 0x9B9B9BB9, 0x00000999, 1123 0x88000000, 0x8A8A88AA, 0x8AA88888, 0x8888A8A8, 1124 0x8A88AA80, 0x8AAAAA8A, 0x8A8A8AA8, 0x00000888, 1125 0x88888000, 0x8A8A88AA, 0x8AA88888, 0x8888A8A8, 1126 0x8A88AA80, 0x8AAAAA8A, 0x8A8A8AA8, 0x00000888, 1127 0x88000000, 0x8A8A88AA, 0x8AA88888, 0x8888A8A8, 1128 0x8A88AA80, 0x8AAAAA8A, 0x8A8A8AA8, 0x00AAA888, 1129 0x88A88A00, 0x8A8A88AA, 0x8AA88888, 0x8888A8A8, 1130 0x8A88AA88, 0x8AAAAA8A, 0x8A8A8AA8, 0x00000888, 1131 0x88000000, 0x8A8A88AA, 0x8AA88888, 0x8888A8A8, 1132 0x8A88AA88, 0x8AAAAA8A, 0x8A8A8AA8, 0x08AAA888, 1133 0x11000000, 0x1111A111, 0x11111111, 0x111111A1, 1134 0xA1111110, 0x11111111, 0x11C11111, 0x00000111, 1135 0x11000000, 0x1111A111, 0x11111111, 0x111111A1, 1136 0xA1111110, 0x11111111, 0x11C11111, 0x00000111, 1137 0x88000000, 0x8A8A88AA, 0x8AA88888, 0x8888A8A8, 1138 0x8A88AA80, 0x8AAAAA8A, 0x8A8A8AA8, 0x00000888, 1139 0x88000000, 0x8A8A88AA, 0x8AA88888, 0x8888A8A8, 1140 0x8A88AA80, 0x8AAAAA8A, 0x8A8A8AA8, 0x00000888, 1141 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1142 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1143 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1144 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1145 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1146 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1147 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1148 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1149 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1150 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1151 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1152 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1153 }; 1154 1155 /* static tables, PHY revision >= 3 */ 1156 static const uint32_t bwn_ntab_framestruct_r3[] = { 1157 0x08004a04, 0x00100000, 0x01000a05, 0x00100020, 1158 0x09804506, 0x00100030, 0x09804507, 0x00100030, 1159 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1160 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1161 0x08004a0c, 0x00100004, 0x01000a0d, 0x00100024, 1162 0x0980450e, 0x00100034, 0x0980450f, 0x00100034, 1163 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1164 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1165 0x00000a04, 0x00100000, 0x11008a05, 0x00100020, 1166 0x1980c506, 0x00100030, 0x21810506, 0x00100030, 1167 0x21810506, 0x00100030, 0x01800504, 0x00100030, 1168 0x11808505, 0x00100030, 0x29814507, 0x01100030, 1169 0x00000a04, 0x00100000, 0x11008a05, 0x00100020, 1170 0x21810506, 0x00100030, 0x21810506, 0x00100030, 1171 0x29814507, 0x01100030, 0x00000000, 0x00000000, 1172 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1173 0x00000a0c, 0x00100008, 0x11008a0d, 0x00100028, 1174 0x1980c50e, 0x00100038, 0x2181050e, 0x00100038, 1175 0x2181050e, 0x00100038, 0x0180050c, 0x00100038, 1176 0x1180850d, 0x00100038, 0x2981450f, 0x01100038, 1177 0x00000a0c, 0x00100008, 0x11008a0d, 0x00100028, 1178 0x2181050e, 0x00100038, 0x2181050e, 0x00100038, 1179 0x2981450f, 0x01100038, 0x00000000, 0x00000000, 1180 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1181 0x08004a04, 0x00100000, 0x01000a05, 0x00100020, 1182 0x1980c506, 0x00100030, 0x1980c506, 0x00100030, 1183 0x11808504, 0x00100030, 0x3981ca05, 0x00100030, 1184 0x29814507, 0x01100030, 0x00000000, 0x00000000, 1185 0x10008a04, 0x00100000, 0x3981ca05, 0x00100030, 1186 0x1980c506, 0x00100030, 0x29814507, 0x01100030, 1187 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1188 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1189 0x08004a0c, 0x00100008, 0x01000a0d, 0x00100028, 1190 0x1980c50e, 0x00100038, 0x1980c50e, 0x00100038, 1191 0x1180850c, 0x00100038, 0x3981ca0d, 0x00100038, 1192 0x2981450f, 0x01100038, 0x00000000, 0x00000000, 1193 0x10008a0c, 0x00100008, 0x3981ca0d, 0x00100038, 1194 0x1980c50e, 0x00100038, 0x2981450f, 0x01100038, 1195 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1196 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1197 0x40021404, 0x00100000, 0x02001405, 0x00100040, 1198 0x0b004a06, 0x01900060, 0x13008a06, 0x01900060, 1199 0x13008a06, 0x01900060, 0x43020a04, 0x00100060, 1200 0x1b00ca05, 0x00100060, 0x23010a07, 0x01500060, 1201 0x40021404, 0x00100000, 0x1a00d405, 0x00100040, 1202 0x13008a06, 0x01900060, 0x13008a06, 0x01900060, 1203 0x23010a07, 0x01500060, 0x00000000, 0x00000000, 1204 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1205 0x4002140c, 0x00100010, 0x0200140d, 0x00100050, 1206 0x0b004a0e, 0x01900070, 0x13008a0e, 0x01900070, 1207 0x13008a0e, 0x01900070, 0x43020a0c, 0x00100070, 1208 0x1b00ca0d, 0x00100070, 0x23010a0f, 0x01500070, 1209 0x4002140c, 0x00100010, 0x1a00d40d, 0x00100050, 1210 0x13008a0e, 0x01900070, 0x13008a0e, 0x01900070, 1211 0x23010a0f, 0x01500070, 0x00000000, 0x00000000, 1212 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1213 0x50029404, 0x00100000, 0x32019405, 0x00100040, 1214 0x0b004a06, 0x01900060, 0x0b004a06, 0x01900060, 1215 0x5b02ca04, 0x00100060, 0x3b01d405, 0x00100060, 1216 0x23010a07, 0x01500060, 0x00000000, 0x00000000, 1217 0x5802d404, 0x00100000, 0x3b01d405, 0x00100060, 1218 0x0b004a06, 0x01900060, 0x23010a07, 0x01500060, 1219 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1220 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1221 0x5002940c, 0x00100010, 0x3201940d, 0x00100050, 1222 0x0b004a0e, 0x01900070, 0x0b004a0e, 0x01900070, 1223 0x5b02ca0c, 0x00100070, 0x3b01d40d, 0x00100070, 1224 0x23010a0f, 0x01500070, 0x00000000, 0x00000000, 1225 0x5802d40c, 0x00100010, 0x3b01d40d, 0x00100070, 1226 0x0b004a0e, 0x01900070, 0x23010a0f, 0x01500070, 1227 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1228 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1229 0x40021404, 0x000f4800, 0x62031405, 0x00100040, 1230 0x53028a06, 0x01900060, 0x53028a07, 0x01900060, 1231 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1232 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1233 0x4002140c, 0x000f4808, 0x6203140d, 0x00100048, 1234 0x53028a0e, 0x01900068, 0x53028a0f, 0x01900068, 1235 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1236 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1237 0x00000a0c, 0x00100004, 0x11008a0d, 0x00100024, 1238 0x1980c50e, 0x00100034, 0x2181050e, 0x00100034, 1239 0x2181050e, 0x00100034, 0x0180050c, 0x00100038, 1240 0x1180850d, 0x00100038, 0x1181850d, 0x00100038, 1241 0x2981450f, 0x01100038, 0x00000000, 0x00000000, 1242 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1243 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1244 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1245 0x00000a0c, 0x00100008, 0x11008a0d, 0x00100028, 1246 0x2181050e, 0x00100038, 0x2181050e, 0x00100038, 1247 0x1181850d, 0x00100038, 0x2981450f, 0x01100038, 1248 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1249 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1250 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1251 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1252 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1253 0x08004a04, 0x00100000, 0x01000a05, 0x00100020, 1254 0x0180c506, 0x00100030, 0x0180c506, 0x00100030, 1255 0x2180c50c, 0x00100030, 0x49820a0d, 0x0016a130, 1256 0x41824a0d, 0x0016a130, 0x2981450f, 0x01100030, 1257 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1258 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1259 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1260 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1261 0x2000ca0c, 0x00100000, 0x49820a0d, 0x0016a130, 1262 0x1980c50e, 0x00100030, 0x41824a0d, 0x0016a130, 1263 0x2981450f, 0x01100030, 0x00000000, 0x00000000, 1264 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1265 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1266 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1267 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1268 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1269 0x4002140c, 0x00100008, 0x0200140d, 0x00100048, 1270 0x0b004a0e, 0x01900068, 0x13008a0e, 0x01900068, 1271 0x13008a0e, 0x01900068, 0x43020a0c, 0x00100070, 1272 0x1b00ca0d, 0x00100070, 0x1b014a0d, 0x00100070, 1273 0x23010a0f, 0x01500070, 0x00000000, 0x00000000, 1274 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1275 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1276 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1277 0x4002140c, 0x00100010, 0x1a00d40d, 0x00100050, 1278 0x13008a0e, 0x01900070, 0x13008a0e, 0x01900070, 1279 0x1b014a0d, 0x00100070, 0x23010a0f, 0x01500070, 1280 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1281 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1282 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1283 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1284 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1285 0x50029404, 0x00100000, 0x32019405, 0x00100040, 1286 0x03004a06, 0x01900060, 0x03004a06, 0x01900060, 1287 0x6b030a0c, 0x00100060, 0x4b02140d, 0x0016a160, 1288 0x4302540d, 0x0016a160, 0x23010a0f, 0x01500060, 1289 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1290 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1291 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1292 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1293 0x6b03140c, 0x00100060, 0x4b02140d, 0x0016a160, 1294 0x0b004a0e, 0x01900060, 0x4302540d, 0x0016a160, 1295 0x23010a0f, 0x01500060, 0x00000000, 0x00000000, 1296 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1297 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1298 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1299 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1300 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1301 0x40021404, 0x00100000, 0x1a00d405, 0x00100040, 1302 0x53028a06, 0x01900060, 0x5b02ca06, 0x01900060, 1303 0x5b02ca06, 0x01900060, 0x43020a04, 0x00100060, 1304 0x1b00ca05, 0x00100060, 0x53028a07, 0x0190c060, 1305 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1306 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1307 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1308 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1309 0x4002140c, 0x00100010, 0x1a00d40d, 0x00100050, 1310 0x53028a0e, 0x01900070, 0x5b02ca0e, 0x01900070, 1311 0x5b02ca0e, 0x01900070, 0x43020a0c, 0x00100070, 1312 0x1b00ca0d, 0x00100070, 0x53028a0f, 0x0190c070, 1313 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1314 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1315 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1316 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1317 0x40021404, 0x00100000, 0x1a00d405, 0x00100040, 1318 0x5b02ca06, 0x01900060, 0x5b02ca06, 0x01900060, 1319 0x53028a07, 0x0190c060, 0x00000000, 0x00000000, 1320 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1321 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1322 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1323 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1324 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1325 0x4002140c, 0x00100010, 0x1a00d40d, 0x00100050, 1326 0x5b02ca0e, 0x01900070, 0x5b02ca0e, 0x01900070, 1327 0x53028a0f, 0x0190c070, 0x00000000, 0x00000000, 1328 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1329 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1330 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1331 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1332 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1333 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1334 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1335 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1336 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1337 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1338 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1339 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1340 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1341 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1342 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1343 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1344 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1345 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1346 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1347 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1348 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1349 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1350 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1351 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1352 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1353 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1354 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1355 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1356 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1357 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1358 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1359 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1360 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1361 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1362 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1363 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1364 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1365 }; 1366 1367 static const uint16_t bwn_ntab_pilot_r3[] = { 1368 0xff08, 0xff08, 0xff08, 0xff08, 0xff08, 0xff08, 1369 0xff08, 0xff08, 0x80d5, 0x80d5, 0x80d5, 0x80d5, 1370 0x80d5, 0x80d5, 0x80d5, 0x80d5, 0xff0a, 0xff82, 1371 0xffa0, 0xff28, 0xffff, 0xffff, 0xffff, 0xffff, 1372 0xff82, 0xffa0, 0xff28, 0xff0a, 0xffff, 0xffff, 1373 0xffff, 0xffff, 0xf83f, 0xfa1f, 0xfa97, 0xfab5, 1374 0xf2bd, 0xf0bf, 0xffff, 0xffff, 0xf017, 0xf815, 1375 0xf215, 0xf095, 0xf035, 0xf01d, 0xffff, 0xffff, 1376 0xff08, 0xff02, 0xff80, 0xff20, 0xff08, 0xff02, 1377 0xff80, 0xff20, 0xf01f, 0xf817, 0xfa15, 0xf295, 1378 0xf0b5, 0xf03d, 0xffff, 0xffff, 0xf82a, 0xfa0a, 1379 0xfa82, 0xfaa0, 0xf2a8, 0xf0aa, 0xffff, 0xffff, 1380 0xf002, 0xf800, 0xf200, 0xf080, 0xf020, 0xf008, 1381 0xffff, 0xffff, 0xf00a, 0xf802, 0xfa00, 0xf280, 1382 0xf0a0, 0xf028, 0xffff, 0xffff, 1383 }; 1384 1385 static const uint32_t bwn_ntab_tmap_r3[] = { 1386 0x8a88aa80, 0x8aaaaa8a, 0x8a8a8aa8, 0x00000888, 1387 0x88000000, 0x8a8a88aa, 0x8aa88888, 0x8888a8a8, 1388 0xf1111110, 0x11111111, 0x11f11111, 0x00000111, 1389 0x11000000, 0x1111f111, 0x11111111, 0x111111f1, 1390 0x8a88aa80, 0x8aaaaa8a, 0x8a8a8aa8, 0x000aa888, 1391 0x88880000, 0x8a8a88aa, 0x8aa88888, 0x8888a8a8, 1392 0xa1111110, 0x11111111, 0x11c11111, 0x00000111, 1393 0x11000000, 0x1111a111, 0x11111111, 0x111111a1, 1394 0xa2222220, 0x22222222, 0x22c22222, 0x00000222, 1395 0x22000000, 0x2222a222, 0x22222222, 0x222222a2, 1396 0xf1111110, 0x11111111, 0x11f11111, 0x00011111, 1397 0x11110000, 0x1111f111, 0x11111111, 0x111111f1, 1398 0xa8aa88a0, 0xa88888a8, 0xa8a8a88a, 0x00088aaa, 1399 0xaaaa0000, 0xa8a8aa88, 0xa88aaaaa, 0xaaaa8a8a, 1400 0xaaa8aaa0, 0x8aaa8aaa, 0xaa8a8a8a, 0x000aaa88, 1401 0x8aaa0000, 0xaaa8a888, 0x8aa88a8a, 0x8a88a888, 1402 0x08080a00, 0x0a08080a, 0x080a0a08, 0x00080808, 1403 0x080a0000, 0x080a0808, 0x080a0808, 0x0a0a0a08, 1404 0xa0a0a0a0, 0x80a0a080, 0x8080a0a0, 0x00008080, 1405 0x80a00000, 0x80a080a0, 0xa080a0a0, 0x8080a0a0, 1406 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1407 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1408 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1409 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1410 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1411 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1412 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1413 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1414 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1415 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1416 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1417 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1418 0x99999000, 0x9b9b99bb, 0x9bb99999, 0x9999b9b9, 1419 0x9b99bb90, 0x9bbbbb9b, 0x9b9b9bb9, 0x00000999, 1420 0x88000000, 0x8a8a88aa, 0x8aa88888, 0x8888a8a8, 1421 0x8a88aa80, 0x8aaaaa8a, 0x8a8a8aa8, 0x00aaa888, 1422 0x22000000, 0x2222b222, 0x22222222, 0x222222b2, 1423 0xb2222220, 0x22222222, 0x22d22222, 0x00000222, 1424 0x11000000, 0x1111a111, 0x11111111, 0x111111a1, 1425 0xa1111110, 0x11111111, 0x11c11111, 0x00000111, 1426 0x33000000, 0x3333b333, 0x33333333, 0x333333b3, 1427 0xb3333330, 0x33333333, 0x33d33333, 0x00000333, 1428 0x22000000, 0x2222a222, 0x22222222, 0x222222a2, 1429 0xa2222220, 0x22222222, 0x22c22222, 0x00000222, 1430 0x99b99b00, 0x9b9b99bb, 0x9bb99999, 0x9999b9b9, 1431 0x9b99bb99, 0x9bbbbb9b, 0x9b9b9bb9, 0x00000999, 1432 0x88000000, 0x8a8a88aa, 0x8aa88888, 0x8888a8a8, 1433 0x8a88aa88, 0x8aaaaa8a, 0x8a8a8aa8, 0x08aaa888, 1434 0x22222200, 0x2222f222, 0x22222222, 0x222222f2, 1435 0x22222222, 0x22222222, 0x22f22222, 0x00000222, 1436 0x11000000, 0x1111f111, 0x11111111, 0x11111111, 1437 0xf1111111, 0x11111111, 0x11f11111, 0x01111111, 1438 0xbb9bb900, 0xb9b9bb99, 0xb99bbbbb, 0xbbbb9b9b, 1439 0xb9bb99bb, 0xb99999b9, 0xb9b9b99b, 0x00000bbb, 1440 0xaa000000, 0xa8a8aa88, 0xa88aaaaa, 0xaaaa8a8a, 1441 0xa8aa88aa, 0xa88888a8, 0xa8a8a88a, 0x0a888aaa, 1442 0xaa000000, 0xa8a8aa88, 0xa88aaaaa, 0xaaaa8a8a, 1443 0xa8aa88a0, 0xa88888a8, 0xa8a8a88a, 0x00000aaa, 1444 0x88000000, 0x8a8a88aa, 0x8aa88888, 0x8888a8a8, 1445 0x8a88aa80, 0x8aaaaa8a, 0x8a8a8aa8, 0x00000888, 1446 0xbbbbbb00, 0x999bbbbb, 0x9bb99b9b, 0xb9b9b9bb, 1447 0xb9b99bbb, 0xb9b9b9bb, 0xb9bb9b99, 0x00000999, 1448 0x8a000000, 0xaa88a888, 0xa88888aa, 0xa88a8a88, 1449 0xa88aa88a, 0x88a8aaaa, 0xa8aa8aaa, 0x0888a88a, 1450 0x0b0b0b00, 0x090b0b0b, 0x0b090b0b, 0x0909090b, 1451 0x09090b0b, 0x09090b0b, 0x09090b09, 0x00000909, 1452 0x0a000000, 0x0a080808, 0x080a080a, 0x080a0a08, 1453 0x080a080a, 0x0808080a, 0x0a0a0a08, 0x0808080a, 1454 0xb0b0b000, 0x9090b0b0, 0x90b09090, 0xb0b0b090, 1455 0xb0b090b0, 0x90b0b0b0, 0xb0b09090, 0x00000090, 1456 0x80000000, 0xa080a080, 0xa08080a0, 0xa0808080, 1457 0xa080a080, 0x80a0a0a0, 0xa0a080a0, 0x00a0a0a0, 1458 0x22000000, 0x2222f222, 0x22222222, 0x222222f2, 1459 0xf2222220, 0x22222222, 0x22f22222, 0x00000222, 1460 0x11000000, 0x1111f111, 0x11111111, 0x111111f1, 1461 0xf1111110, 0x11111111, 0x11f11111, 0x00000111, 1462 0x33000000, 0x3333f333, 0x33333333, 0x333333f3, 1463 0xf3333330, 0x33333333, 0x33f33333, 0x00000333, 1464 0x22000000, 0x2222f222, 0x22222222, 0x222222f2, 1465 0xf2222220, 0x22222222, 0x22f22222, 0x00000222, 1466 0x99000000, 0x9b9b99bb, 0x9bb99999, 0x9999b9b9, 1467 0x9b99bb90, 0x9bbbbb9b, 0x9b9b9bb9, 0x00000999, 1468 0x88000000, 0x8a8a88aa, 0x8aa88888, 0x8888a8a8, 1469 0x8a88aa80, 0x8aaaaa8a, 0x8a8a8aa8, 0x00000888, 1470 0x88888000, 0x8a8a88aa, 0x8aa88888, 0x8888a8a8, 1471 0x8a88aa80, 0x8aaaaa8a, 0x8a8a8aa8, 0x00000888, 1472 0x88000000, 0x8a8a88aa, 0x8aa88888, 0x8888a8a8, 1473 0x8a88aa80, 0x8aaaaa8a, 0x8a8a8aa8, 0x00aaa888, 1474 0x88a88a00, 0x8a8a88aa, 0x8aa88888, 0x8888a8a8, 1475 0x8a88aa88, 0x8aaaaa8a, 0x8a8a8aa8, 0x00000888, 1476 0x88000000, 0x8a8a88aa, 0x8aa88888, 0x8888a8a8, 1477 0x8a88aa88, 0x8aaaaa8a, 0x8a8a8aa8, 0x08aaa888, 1478 0x11000000, 0x1111a111, 0x11111111, 0x111111a1, 1479 0xa1111110, 0x11111111, 0x11c11111, 0x00000111, 1480 0x11000000, 0x1111a111, 0x11111111, 0x111111a1, 1481 0xa1111110, 0x11111111, 0x11c11111, 0x00000111, 1482 0x88000000, 0x8a8a88aa, 0x8aa88888, 0x8888a8a8, 1483 0x8a88aa80, 0x8aaaaa8a, 0x8a8a8aa8, 0x00000888, 1484 0x88000000, 0x8a8a88aa, 0x8aa88888, 0x8888a8a8, 1485 0x8a88aa80, 0x8aaaaa8a, 0x8a8a8aa8, 0x00000888, 1486 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1487 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1488 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1489 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1490 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1491 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1492 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1493 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1494 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1495 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1496 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1497 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1498 }; 1499 1500 static const uint32_t bwn_ntab_intlevel_r3[] = { 1501 0x00802070, 0x0671188d, 0x0a60192c, 0x0a300e46, 1502 0x00c1188d, 0x080024d2, 0x00000070, 1503 }; 1504 1505 static const uint32_t bwn_ntab_tdtrn_r3[] = { 1506 0x061c061c, 0x0050ee68, 0xf592fe36, 0xfe5212f6, 1507 0x00000c38, 0xfe5212f6, 0xf592fe36, 0x0050ee68, 1508 0x061c061c, 0xee680050, 0xfe36f592, 0x12f6fe52, 1509 0x0c380000, 0x12f6fe52, 0xfe36f592, 0xee680050, 1510 0x061c061c, 0x0050ee68, 0xf592fe36, 0xfe5212f6, 1511 0x00000c38, 0xfe5212f6, 0xf592fe36, 0x0050ee68, 1512 0x061c061c, 0xee680050, 0xfe36f592, 0x12f6fe52, 1513 0x0c380000, 0x12f6fe52, 0xfe36f592, 0xee680050, 1514 0x05e305e3, 0x004def0c, 0xf5f3fe47, 0xfe611246, 1515 0x00000bc7, 0xfe611246, 0xf5f3fe47, 0x004def0c, 1516 0x05e305e3, 0xef0c004d, 0xfe47f5f3, 0x1246fe61, 1517 0x0bc70000, 0x1246fe61, 0xfe47f5f3, 0xef0c004d, 1518 0x05e305e3, 0x004def0c, 0xf5f3fe47, 0xfe611246, 1519 0x00000bc7, 0xfe611246, 0xf5f3fe47, 0x004def0c, 1520 0x05e305e3, 0xef0c004d, 0xfe47f5f3, 0x1246fe61, 1521 0x0bc70000, 0x1246fe61, 0xfe47f5f3, 0xef0c004d, 1522 0xfa58fa58, 0xf895043b, 0xff4c09c0, 0xfbc6ffa8, 1523 0xfb84f384, 0x0798f6f9, 0x05760122, 0x058409f6, 1524 0x0b500000, 0x05b7f542, 0x08860432, 0x06ddfee7, 1525 0xfb84f384, 0xf9d90664, 0xf7e8025c, 0x00fff7bd, 1526 0x05a805a8, 0xf7bd00ff, 0x025cf7e8, 0x0664f9d9, 1527 0xf384fb84, 0xfee706dd, 0x04320886, 0xf54205b7, 1528 0x00000b50, 0x09f60584, 0x01220576, 0xf6f90798, 1529 0xf384fb84, 0xffa8fbc6, 0x09c0ff4c, 0x043bf895, 1530 0x02d402d4, 0x07de0270, 0xfc96079c, 0xf90afe94, 1531 0xfe00ff2c, 0x02d4065d, 0x092a0096, 0x0014fbb8, 1532 0xfd2cfd2c, 0x076afb3c, 0x0096f752, 0xf991fd87, 1533 0xfb2c0200, 0xfeb8f960, 0x08e0fc96, 0x049802a8, 1534 0xfd2cfd2c, 0x02a80498, 0xfc9608e0, 0xf960feb8, 1535 0x0200fb2c, 0xfd87f991, 0xf7520096, 0xfb3c076a, 1536 0xfd2cfd2c, 0xfbb80014, 0x0096092a, 0x065d02d4, 1537 0xff2cfe00, 0xfe94f90a, 0x079cfc96, 0x027007de, 1538 0x02d402d4, 0x027007de, 0x079cfc96, 0xfe94f90a, 1539 0xff2cfe00, 0x065d02d4, 0x0096092a, 0xfbb80014, 1540 0xfd2cfd2c, 0xfb3c076a, 0xf7520096, 0xfd87f991, 1541 0x0200fb2c, 0xf960feb8, 0xfc9608e0, 0x02a80498, 1542 0xfd2cfd2c, 0x049802a8, 0x08e0fc96, 0xfeb8f960, 1543 0xfb2c0200, 0xf991fd87, 0x0096f752, 0x076afb3c, 1544 0xfd2cfd2c, 0x0014fbb8, 0x092a0096, 0x02d4065d, 1545 0xfe00ff2c, 0xf90afe94, 0xfc96079c, 0x07de0270, 1546 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1547 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1548 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1549 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1550 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1551 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1552 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1553 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1554 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1555 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1556 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1557 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1558 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1559 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1560 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1561 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1562 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1563 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1564 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1565 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1566 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1567 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1568 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1569 0x00000000, 0x00000000, 0x00000000, 0x00000000, 1570 0x062a0000, 0xfefa0759, 0x08b80908, 0xf396fc2d, 1571 0xf9d6045c, 0xfc4ef608, 0xf748f596, 0x07b207bf, 1572 0x062a062a, 0xf84ef841, 0xf748f596, 0x03b209f8, 1573 0xf9d6045c, 0x0c6a03d3, 0x08b80908, 0x0106f8a7, 1574 0x062a0000, 0xfefaf8a7, 0x08b8f6f8, 0xf39603d3, 1575 0xf9d6fba4, 0xfc4e09f8, 0xf7480a6a, 0x07b2f841, 1576 0x062af9d6, 0xf84e07bf, 0xf7480a6a, 0x03b2f608, 1577 0xf9d6fba4, 0x0c6afc2d, 0x08b8f6f8, 0x01060759, 1578 0x062a0000, 0xfefa0759, 0x08b80908, 0xf396fc2d, 1579 0xf9d6045c, 0xfc4ef608, 0xf748f596, 0x07b207bf, 1580 0x062a062a, 0xf84ef841, 0xf748f596, 0x03b209f8, 1581 0xf9d6045c, 0x0c6a03d3, 0x08b80908, 0x0106f8a7, 1582 0x062a0000, 0xfefaf8a7, 0x08b8f6f8, 0xf39603d3, 1583 0xf9d6fba4, 0xfc4e09f8, 0xf7480a6a, 0x07b2f841, 1584 0x062af9d6, 0xf84e07bf, 0xf7480a6a, 0x03b2f608, 1585 0xf9d6fba4, 0x0c6afc2d, 0x08b8f6f8, 0x01060759, 1586 0x061c061c, 0xff30009d, 0xffb21141, 0xfd87fb54, 1587 0xf65dfe59, 0x02eef99e, 0x0166f03c, 0xfff809b6, 1588 0x000008a4, 0x000af42b, 0x00eff577, 0xfa840bf2, 1589 0xfc02ff51, 0x08260f67, 0xfff0036f, 0x0842f9c3, 1590 0x00000000, 0x063df7be, 0xfc910010, 0xf099f7da, 1591 0x00af03fe, 0xf40e057c, 0x0a89ff11, 0x0bd5fff6, 1592 0xf75c0000, 0xf64a0008, 0x0fc4fe9a, 0x0662fd12, 1593 0x01a709a3, 0x04ac0279, 0xeebf004e, 0xff6300d0, 1594 0xf9e4f9e4, 0x00d0ff63, 0x004eeebf, 0x027904ac, 1595 0x09a301a7, 0xfd120662, 0xfe9a0fc4, 0x0008f64a, 1596 0x0000f75c, 0xfff60bd5, 0xff110a89, 0x057cf40e, 1597 0x03fe00af, 0xf7daf099, 0x0010fc91, 0xf7be063d, 1598 0x00000000, 0xf9c30842, 0x036ffff0, 0x0f670826, 1599 0xff51fc02, 0x0bf2fa84, 0xf57700ef, 0xf42b000a, 1600 0x08a40000, 0x09b6fff8, 0xf03c0166, 0xf99e02ee, 1601 0xfe59f65d, 0xfb54fd87, 0x1141ffb2, 0x009dff30, 1602 0x05e30000, 0xff060705, 0x085408a0, 0xf425fc59, 1603 0xfa1d042a, 0xfc78f67a, 0xf7acf60e, 0x075a0766, 1604 0x05e305e3, 0xf8a6f89a, 0xf7acf60e, 0x03880986, 1605 0xfa1d042a, 0x0bdb03a7, 0x085408a0, 0x00faf8fb, 1606 0x05e30000, 0xff06f8fb, 0x0854f760, 0xf42503a7, 1607 0xfa1dfbd6, 0xfc780986, 0xf7ac09f2, 0x075af89a, 1608 0x05e3fa1d, 0xf8a60766, 0xf7ac09f2, 0x0388f67a, 1609 0xfa1dfbd6, 0x0bdbfc59, 0x0854f760, 0x00fa0705, 1610 0x05e30000, 0xff060705, 0x085408a0, 0xf425fc59, 1611 0xfa1d042a, 0xfc78f67a, 0xf7acf60e, 0x075a0766, 1612 0x05e305e3, 0xf8a6f89a, 0xf7acf60e, 0x03880986, 1613 0xfa1d042a, 0x0bdb03a7, 0x085408a0, 0x00faf8fb, 1614 0x05e30000, 0xff06f8fb, 0x0854f760, 0xf42503a7, 1615 0xfa1dfbd6, 0xfc780986, 0xf7ac09f2, 0x075af89a, 1616 0x05e3fa1d, 0xf8a60766, 0xf7ac09f2, 0x0388f67a, 1617 0xfa1dfbd6, 0x0bdbfc59, 0x0854f760, 0x00fa0705, 1618 0xfa58fa58, 0xf8f0fe00, 0x0448073d, 0xfdc9fe46, 1619 0xf9910258, 0x089d0407, 0xfd5cf71a, 0x02affde0, 1620 0x083e0496, 0xff5a0740, 0xff7afd97, 0x00fe01f1, 1621 0x0009082e, 0xfa94ff75, 0xfecdf8ea, 0xffb0f693, 1622 0xfd2cfa58, 0x0433ff16, 0xfba405dd, 0xfa610341, 1623 0x06a606cb, 0x0039fd2d, 0x0677fa97, 0x01fa05e0, 1624 0xf896003e, 0x075a068b, 0x012cfc3e, 0xfa23f98d, 1625 0xfc7cfd43, 0xff90fc0d, 0x01c10982, 0x00c601d6, 1626 0xfd2cfd2c, 0x01d600c6, 0x098201c1, 0xfc0dff90, 1627 0xfd43fc7c, 0xf98dfa23, 0xfc3e012c, 0x068b075a, 1628 0x003ef896, 0x05e001fa, 0xfa970677, 0xfd2d0039, 1629 0x06cb06a6, 0x0341fa61, 0x05ddfba4, 0xff160433, 1630 0xfa58fd2c, 0xf693ffb0, 0xf8eafecd, 0xff75fa94, 1631 0x082e0009, 0x01f100fe, 0xfd97ff7a, 0x0740ff5a, 1632 0x0496083e, 0xfde002af, 0xf71afd5c, 0x0407089d, 1633 0x0258f991, 0xfe46fdc9, 0x073d0448, 0xfe00f8f0, 1634 0xfd2cfd2c, 0xfce00500, 0xfc09fddc, 0xfe680157, 1635 0x04c70571, 0xfc3aff21, 0xfcd70228, 0x056d0277, 1636 0x0200fe00, 0x0022f927, 0xfe3c032b, 0xfc44ff3c, 1637 0x03e9fbdb, 0x04570313, 0x04c9ff5c, 0x000d03b8, 1638 0xfa580000, 0xfbe900d2, 0xf9d0fe0b, 0x0125fdf9, 1639 0x042501bf, 0x0328fa2b, 0xffa902f0, 0xfa250157, 1640 0x0200fe00, 0x03740438, 0xff0405fd, 0x030cfe52, 1641 0x0037fb39, 0xff6904c5, 0x04f8fd23, 0xfd31fc1b, 1642 0xfd2cfd2c, 0xfc1bfd31, 0xfd2304f8, 0x04c5ff69, 1643 0xfb390037, 0xfe52030c, 0x05fdff04, 0x04380374, 1644 0xfe000200, 0x0157fa25, 0x02f0ffa9, 0xfa2b0328, 1645 0x01bf0425, 0xfdf90125, 0xfe0bf9d0, 0x00d2fbe9, 1646 0x0000fa58, 0x03b8000d, 0xff5c04c9, 0x03130457, 1647 0xfbdb03e9, 0xff3cfc44, 0x032bfe3c, 0xf9270022, 1648 0xfe000200, 0x0277056d, 0x0228fcd7, 0xff21fc3a, 1649 0x057104c7, 0x0157fe68, 0xfddcfc09, 0x0500fce0, 1650 0xfd2cfd2c, 0x0500fce0, 0xfddcfc09, 0x0157fe68, 1651 0x057104c7, 0xff21fc3a, 0x0228fcd7, 0x0277056d, 1652 0xfe000200, 0xf9270022, 0x032bfe3c, 0xff3cfc44, 1653 0xfbdb03e9, 0x03130457, 0xff5c04c9, 0x03b8000d, 1654 0x0000fa58, 0x00d2fbe9, 0xfe0bf9d0, 0xfdf90125, 1655 0x01bf0425, 0xfa2b0328, 0x02f0ffa9, 0x0157fa25, 1656 0xfe000200, 0x04380374, 0x05fdff04, 0xfe52030c, 1657 0xfb390037, 0x04c5ff69, 0xfd2304f8, 0xfc1bfd31, 1658 0xfd2cfd2c, 0xfd31fc1b, 0x04f8fd23, 0xff6904c5, 1659 0x0037fb39, 0x030cfe52, 0xff0405fd, 0x03740438, 1660 0x0200fe00, 0xfa250157, 0xffa902f0, 0x0328fa2b, 1661 0x042501bf, 0x0125fdf9, 0xf9d0fe0b, 0xfbe900d2, 1662 0xfa580000, 0x000d03b8, 0x04c9ff5c, 0x04570313, 1663 0x03e9fbdb, 0xfc44ff3c, 0xfe3c032b, 0x0022f927, 1664 0x0200fe00, 0x056d0277, 0xfcd70228, 0xfc3aff21, 1665 0x04c70571, 0xfe680157, 0xfc09fddc, 0xfce00500, 1666 0x05a80000, 0xff1006be, 0x0800084a, 0xf49cfc7e, 1667 0xfa580400, 0xfc9cf6da, 0xf800f672, 0x0710071c, 1668 0x05a805a8, 0xf8f0f8e4, 0xf800f672, 0x03640926, 1669 0xfa580400, 0x0b640382, 0x0800084a, 0x00f0f942, 1670 0x05a80000, 0xff10f942, 0x0800f7b6, 0xf49c0382, 1671 0xfa58fc00, 0xfc9c0926, 0xf800098e, 0x0710f8e4, 1672 0x05a8fa58, 0xf8f0071c, 0xf800098e, 0x0364f6da, 1673 0xfa58fc00, 0x0b64fc7e, 0x0800f7b6, 0x00f006be, 1674 0x05a80000, 0xff1006be, 0x0800084a, 0xf49cfc7e, 1675 0xfa580400, 0xfc9cf6da, 0xf800f672, 0x0710071c, 1676 0x05a805a8, 0xf8f0f8e4, 0xf800f672, 0x03640926, 1677 0xfa580400, 0x0b640382, 0x0800084a, 0x00f0f942, 1678 0x05a80000, 0xff10f942, 0x0800f7b6, 0xf49c0382, 1679 0xfa58fc00, 0xfc9c0926, 0xf800098e, 0x0710f8e4, 1680 0x05a8fa58, 0xf8f0071c, 0xf800098e, 0x0364f6da, 1681 0xfa58fc00, 0x0b64fc7e, 0x0800f7b6, 0x00f006be, 1682 }; 1683 1684 static const uint32_t bwn_ntab_noisevar_r3[] = { 1685 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, 1686 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, 1687 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, 1688 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, 1689 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, 1690 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, 1691 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, 1692 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, 1693 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, 1694 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, 1695 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, 1696 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, 1697 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, 1698 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, 1699 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, 1700 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, 1701 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, 1702 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, 1703 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, 1704 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, 1705 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, 1706 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, 1707 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, 1708 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, 1709 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, 1710 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, 1711 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, 1712 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, 1713 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, 1714 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, 1715 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, 1716 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, 1717 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, 1718 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, 1719 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, 1720 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, 1721 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, 1722 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, 1723 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, 1724 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, 1725 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, 1726 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, 1727 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, 1728 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, 1729 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, 1730 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, 1731 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, 1732 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, 1733 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, 1734 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, 1735 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, 1736 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, 1737 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, 1738 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, 1739 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, 1740 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, 1741 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, 1742 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, 1743 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, 1744 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, 1745 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, 1746 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, 1747 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, 1748 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, 1749 }; 1750 1751 static const uint16_t bwn_ntab_mcs_r3[] = { 1752 0x0000, 0x0008, 0x000a, 0x0010, 0x0012, 0x0019, 1753 0x001a, 0x001c, 0x0080, 0x0088, 0x008a, 0x0090, 1754 0x0092, 0x0099, 0x009a, 0x009c, 0x0100, 0x0108, 1755 0x010a, 0x0110, 0x0112, 0x0119, 0x011a, 0x011c, 1756 0x0180, 0x0188, 0x018a, 0x0190, 0x0192, 0x0199, 1757 0x019a, 0x019c, 0x0000, 0x0098, 0x00a0, 0x00a8, 1758 0x009a, 0x00a2, 0x00aa, 0x0120, 0x0128, 0x0128, 1759 0x0130, 0x0138, 0x0138, 0x0140, 0x0122, 0x012a, 1760 0x012a, 0x0132, 0x013a, 0x013a, 0x0142, 0x01a8, 1761 0x01b0, 0x01b8, 0x01b0, 0x01b8, 0x01c0, 0x01c8, 1762 0x01c0, 0x01c8, 0x01d0, 0x01d0, 0x01d8, 0x01aa, 1763 0x01b2, 0x01ba, 0x01b2, 0x01ba, 0x01c2, 0x01ca, 1764 0x01c2, 0x01ca, 0x01d2, 0x01d2, 0x01da, 0x0001, 1765 0x0002, 0x0004, 0x0009, 0x000c, 0x0011, 0x0014, 1766 0x0018, 0x0020, 0x0021, 0x0022, 0x0024, 0x0081, 1767 0x0082, 0x0084, 0x0089, 0x008c, 0x0091, 0x0094, 1768 0x0098, 0x00a0, 0x00a1, 0x00a2, 0x00a4, 0x0007, 1769 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 1770 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 1771 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 1772 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 1773 0x0007, 0x0007, 1774 }; 1775 1776 static const uint32_t bwn_ntab_tdi20a0_r3[] = { 1777 0x00091226, 0x000a1429, 0x000b56ad, 0x000c58b0, 1778 0x000d5ab3, 0x000e9cb6, 0x000f9eba, 0x0000c13d, 1779 0x00020301, 0x00030504, 0x00040708, 0x0005090b, 1780 0x00064b8e, 0x00095291, 0x000a5494, 0x000b9718, 1781 0x000c9927, 0x000d9b2a, 0x000edd2e, 0x000fdf31, 1782 0x000101b4, 0x000243b7, 0x000345bb, 0x000447be, 1783 0x00058982, 0x00068c05, 0x00099309, 0x000a950c, 1784 0x000bd78f, 0x000cd992, 0x000ddb96, 0x000f1d99, 1785 0x00005fa8, 0x0001422c, 0x0002842f, 0x00038632, 1786 0x00048835, 0x0005ca38, 0x0006ccbc, 0x0009d3bf, 1787 0x000b1603, 0x000c1806, 0x000d1a0a, 0x000e1c0d, 1788 0x000f5e10, 0x00008093, 0x00018297, 0x0002c49a, 1789 0x0003c680, 0x0004c880, 0x00060b00, 0x00070d00, 1790 0x00000000, 0x00000000, 0x00000000, 1791 }; 1792 1793 static const uint32_t bwn_ntab_tdi20a1_r3[] = { 1794 0x00014b26, 0x00028d29, 0x000393ad, 0x00049630, 1795 0x0005d833, 0x0006da36, 0x00099c3a, 0x000a9e3d, 1796 0x000bc081, 0x000cc284, 0x000dc488, 0x000f068b, 1797 0x0000488e, 0x00018b91, 0x0002d214, 0x0003d418, 1798 0x0004d6a7, 0x000618aa, 0x00071aae, 0x0009dcb1, 1799 0x000b1eb4, 0x000c0137, 0x000d033b, 0x000e053e, 1800 0x000f4702, 0x00008905, 0x00020c09, 0x0003128c, 1801 0x0004148f, 0x00051712, 0x00065916, 0x00091b19, 1802 0x000a1d28, 0x000b5f2c, 0x000c41af, 0x000d43b2, 1803 0x000e85b5, 0x000f87b8, 0x0000c9bc, 0x00024cbf, 1804 0x00035303, 0x00045506, 0x0005978a, 0x0006998d, 1805 0x00095b90, 0x000a5d93, 0x000b9f97, 0x000c821a, 1806 0x000d8400, 0x000ec600, 0x000fc800, 0x00010a00, 1807 0x00000000, 0x00000000, 0x00000000, 1808 }; 1809 1810 static const uint32_t bwn_ntab_tdi40a0_r3[] = { 1811 0x0011a346, 0x00136ccf, 0x0014f5d9, 0x001641e2, 1812 0x0017cb6b, 0x00195475, 0x001b2383, 0x001cad0c, 1813 0x001e7616, 0x0000821f, 0x00020ba8, 0x0003d4b2, 1814 0x00056447, 0x00072dd0, 0x0008b6da, 0x000a02e3, 1815 0x000b8c6c, 0x000d15f6, 0x0011e484, 0x0013ae0d, 1816 0x00153717, 0x00168320, 0x00180ca9, 0x00199633, 1817 0x001b6548, 0x001ceed1, 0x001eb7db, 0x0000c3e4, 1818 0x00024d6d, 0x000416f7, 0x0005a585, 0x00076f0f, 1819 0x0008f818, 0x000a4421, 0x000bcdab, 0x000d9734, 1820 0x00122649, 0x0013efd2, 0x001578dc, 0x0016c4e5, 1821 0x00184e6e, 0x001a17f8, 0x001ba686, 0x001d3010, 1822 0x001ef999, 0x00010522, 0x00028eac, 0x00045835, 1823 0x0005e74a, 0x0007b0d3, 0x00093a5d, 0x000a85e6, 1824 0x000c0f6f, 0x000dd8f9, 0x00126787, 0x00143111, 1825 0x0015ba9a, 0x00170623, 0x00188fad, 0x001a5936, 1826 0x001be84b, 0x001db1d4, 0x001f3b5e, 0x000146e7, 1827 0x00031070, 0x000499fa, 0x00062888, 0x0007f212, 1828 0x00097b9b, 0x000ac7a4, 0x000c50ae, 0x000e1a37, 1829 0x0012a94c, 0x001472d5, 0x0015fc5f, 0x00174868, 1830 0x0018d171, 0x001a9afb, 0x001c2989, 0x001df313, 1831 0x001f7c9c, 0x000188a5, 0x000351af, 0x0004db38, 1832 0x0006aa4d, 0x000833d7, 0x0009bd60, 0x000b0969, 1833 0x000c9273, 0x000e5bfc, 0x00132a8a, 0x0014b414, 1834 0x00163d9d, 0x001789a6, 0x001912b0, 0x001adc39, 1835 0x001c6bce, 0x001e34d8, 0x001fbe61, 0x0001ca6a, 1836 0x00039374, 0x00051cfd, 0x0006ec0b, 0x00087515, 1837 0x0009fe9e, 0x000b4aa7, 0x000cd3b1, 0x000e9d3a, 1838 0x00000000, 0x00000000, 1839 }; 1840 1841 static const uint32_t bwn_ntab_tdi40a1_r3[] = { 1842 0x001edb36, 0x000129ca, 0x0002b353, 0x00047cdd, 1843 0x0005c8e6, 0x000791ef, 0x00091bf9, 0x000aaa07, 1844 0x000c3391, 0x000dfd1a, 0x00120923, 0x0013d22d, 1845 0x00155c37, 0x0016eacb, 0x00187454, 0x001a3dde, 1846 0x001b89e7, 0x001d12f0, 0x001f1cfa, 0x00016b88, 1847 0x00033492, 0x0004be1b, 0x00060a24, 0x0007d32e, 1848 0x00095d38, 0x000aec4c, 0x000c7555, 0x000e3edf, 1849 0x00124ae8, 0x001413f1, 0x0015a37b, 0x00172c89, 1850 0x0018b593, 0x001a419c, 0x001bcb25, 0x001d942f, 1851 0x001f63b9, 0x0001ad4d, 0x00037657, 0x0004c260, 1852 0x00068be9, 0x000814f3, 0x0009a47c, 0x000b2d8a, 1853 0x000cb694, 0x000e429d, 0x00128c26, 0x001455b0, 1854 0x0015e4ba, 0x00176e4e, 0x0018f758, 0x001a8361, 1855 0x001c0cea, 0x001dd674, 0x001fa57d, 0x0001ee8b, 1856 0x0003b795, 0x0005039e, 0x0006cd27, 0x000856b1, 1857 0x0009e5c6, 0x000b6f4f, 0x000cf859, 0x000e8462, 1858 0x00130deb, 0x00149775, 0x00162603, 0x0017af8c, 1859 0x00193896, 0x001ac49f, 0x001c4e28, 0x001e17b2, 1860 0x0000a6c7, 0x00023050, 0x0003f9da, 0x00054563, 1861 0x00070eec, 0x00089876, 0x000a2704, 0x000bb08d, 1862 0x000d3a17, 0x001185a0, 0x00134f29, 0x0014d8b3, 1863 0x001667c8, 0x0017f151, 0x00197adb, 0x001b0664, 1864 0x001c8fed, 0x001e5977, 0x0000e805, 0x0002718f, 1865 0x00043b18, 0x000586a1, 0x0007502b, 0x0008d9b4, 1866 0x000a68c9, 0x000bf252, 0x000dbbdc, 0x0011c7e5, 1867 0x001390ee, 0x00151a78, 0x0016a906, 0x00183290, 1868 0x0019bc19, 0x001b4822, 0x001cd12c, 0x001e9ab5, 1869 0x00000000, 0x00000000, 1870 }; 1871 1872 static const uint32_t bwn_ntab_pilotlt_r3[] = { 1873 0x76540213, 0x62407351, 0x76543210, 0x76540213, 1874 0x76540213, 0x76430521, 1875 }; 1876 1877 static const uint32_t bwn_ntab_channelest_r3[] = { 1878 0x44444444, 0x44444444, 0x44444444, 0x44444444, 1879 0x44444444, 0x44444444, 0x44444444, 0x44444444, 1880 0x10101010, 0x10101010, 0x10101010, 0x10101010, 1881 0x10101010, 0x10101010, 0x10101010, 0x10101010, 1882 0x44444444, 0x44444444, 0x44444444, 0x44444444, 1883 0x44444444, 0x44444444, 0x44444444, 0x44444444, 1884 0x10101010, 0x10101010, 0x10101010, 0x10101010, 1885 0x10101010, 0x10101010, 0x10101010, 0x10101010, 1886 0x44444444, 0x44444444, 0x44444444, 0x44444444, 1887 0x44444444, 0x44444444, 0x44444444, 0x44444444, 1888 0x44444444, 0x44444444, 0x44444444, 0x44444444, 1889 0x44444444, 0x44444444, 0x44444444, 0x44444444, 1890 0x10101010, 0x10101010, 0x10101010, 0x10101010, 1891 0x10101010, 0x10101010, 0x10101010, 0x10101010, 1892 0x10101010, 0x10101010, 0x10101010, 0x10101010, 1893 0x10101010, 0x10101010, 0x10101010, 0x10101010, 1894 0x44444444, 0x44444444, 0x44444444, 0x44444444, 1895 0x44444444, 0x44444444, 0x44444444, 0x44444444, 1896 0x44444444, 0x44444444, 0x44444444, 0x44444444, 1897 0x44444444, 0x44444444, 0x44444444, 0x44444444, 1898 0x10101010, 0x10101010, 0x10101010, 0x10101010, 1899 0x10101010, 0x10101010, 0x10101010, 0x10101010, 1900 0x10101010, 0x10101010, 0x10101010, 0x10101010, 1901 0x10101010, 0x10101010, 0x10101010, 0x10101010, 1902 }; 1903 1904 static const uint8_t bwn_ntab_framelookup_r3[] = { 1905 0x02, 0x04, 0x14, 0x14, 0x03, 0x05, 0x16, 0x16, 1906 0x0a, 0x0c, 0x1c, 0x1c, 0x0b, 0x0d, 0x1e, 0x1e, 1907 0x06, 0x08, 0x18, 0x18, 0x07, 0x09, 0x1a, 0x1a, 1908 0x0e, 0x10, 0x20, 0x28, 0x0f, 0x11, 0x22, 0x2a, 1909 }; 1910 1911 static const uint8_t bwn_ntab_estimatepowerlt0_r3[] = { 1912 0x55, 0x54, 0x54, 0x53, 0x52, 0x52, 0x51, 0x51, 1913 0x50, 0x4f, 0x4f, 0x4e, 0x4e, 0x4d, 0x4c, 0x4c, 1914 0x4b, 0x4a, 0x49, 0x49, 0x48, 0x47, 0x46, 0x46, 1915 0x45, 0x44, 0x43, 0x42, 0x41, 0x40, 0x40, 0x3f, 1916 0x3e, 0x3d, 0x3c, 0x3a, 0x39, 0x38, 0x37, 0x36, 1917 0x35, 0x33, 0x32, 0x31, 0x2f, 0x2e, 0x2c, 0x2b, 1918 0x29, 0x27, 0x25, 0x23, 0x21, 0x1f, 0x1d, 0x1a, 1919 0x18, 0x15, 0x12, 0x0e, 0x0b, 0x07, 0x02, 0xfd, 1920 }; 1921 1922 static const uint8_t bwn_ntab_estimatepowerlt1_r3[] = { 1923 0x55, 0x54, 0x54, 0x53, 0x52, 0x52, 0x51, 0x51, 1924 0x50, 0x4f, 0x4f, 0x4e, 0x4e, 0x4d, 0x4c, 0x4c, 1925 0x4b, 0x4a, 0x49, 0x49, 0x48, 0x47, 0x46, 0x46, 1926 0x45, 0x44, 0x43, 0x42, 0x41, 0x40, 0x40, 0x3f, 1927 0x3e, 0x3d, 0x3c, 0x3a, 0x39, 0x38, 0x37, 0x36, 1928 0x35, 0x33, 0x32, 0x31, 0x2f, 0x2e, 0x2c, 0x2b, 1929 0x29, 0x27, 0x25, 0x23, 0x21, 0x1f, 0x1d, 0x1a, 1930 0x18, 0x15, 0x12, 0x0e, 0x0b, 0x07, 0x02, 0xfd, 1931 }; 1932 1933 static const uint8_t bwn_ntab_adjustpower0_r3[] = { 1934 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1935 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1936 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1937 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1938 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1939 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1940 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1941 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1942 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1943 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1944 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1945 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1946 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1947 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1948 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1949 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1950 }; 1951 1952 static const uint8_t bwn_ntab_adjustpower1_r3[] = { 1953 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1954 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1955 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1956 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1957 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1958 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1959 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1960 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1961 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1962 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1963 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1964 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1965 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1966 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1967 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1968 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1969 }; 1970 1971 static const uint32_t bwn_ntab_gainctl0_r3[] = { 1972 0x5bf70044, 0x5bf70042, 0x5bf70040, 0x5bf7003e, 1973 0x5bf7003c, 0x5bf7003b, 0x5bf70039, 0x5bf70037, 1974 0x5bf70036, 0x5bf70034, 0x5bf70033, 0x5bf70031, 1975 0x5bf70030, 0x5ba70044, 0x5ba70042, 0x5ba70040, 1976 0x5ba7003e, 0x5ba7003c, 0x5ba7003b, 0x5ba70039, 1977 0x5ba70037, 0x5ba70036, 0x5ba70034, 0x5ba70033, 1978 0x5b770044, 0x5b770042, 0x5b770040, 0x5b77003e, 1979 0x5b77003c, 0x5b77003b, 0x5b770039, 0x5b770037, 1980 0x5b770036, 0x5b770034, 0x5b770033, 0x5b770031, 1981 0x5b770030, 0x5b77002f, 0x5b77002d, 0x5b77002c, 1982 0x5b470044, 0x5b470042, 0x5b470040, 0x5b47003e, 1983 0x5b47003c, 0x5b47003b, 0x5b470039, 0x5b470037, 1984 0x5b470036, 0x5b470034, 0x5b470033, 0x5b470031, 1985 0x5b470030, 0x5b47002f, 0x5b47002d, 0x5b47002c, 1986 0x5b47002b, 0x5b47002a, 0x5b270044, 0x5b270042, 1987 0x5b270040, 0x5b27003e, 0x5b27003c, 0x5b27003b, 1988 0x5b270039, 0x5b270037, 0x5b270036, 0x5b270034, 1989 0x5b270033, 0x5b270031, 0x5b270030, 0x5b27002f, 1990 0x5b170044, 0x5b170042, 0x5b170040, 0x5b17003e, 1991 0x5b17003c, 0x5b17003b, 0x5b170039, 0x5b170037, 1992 0x5b170036, 0x5b170034, 0x5b170033, 0x5b170031, 1993 0x5b170030, 0x5b17002f, 0x5b17002d, 0x5b17002c, 1994 0x5b17002b, 0x5b17002a, 0x5b170028, 0x5b170027, 1995 0x5b170026, 0x5b170025, 0x5b170024, 0x5b170023, 1996 0x5b070044, 0x5b070042, 0x5b070040, 0x5b07003e, 1997 0x5b07003c, 0x5b07003b, 0x5b070039, 0x5b070037, 1998 0x5b070036, 0x5b070034, 0x5b070033, 0x5b070031, 1999 0x5b070030, 0x5b07002f, 0x5b07002d, 0x5b07002c, 2000 0x5b07002b, 0x5b07002a, 0x5b070028, 0x5b070027, 2001 0x5b070026, 0x5b070025, 0x5b070024, 0x5b070023, 2002 0x5b070022, 0x5b070021, 0x5b070020, 0x5b07001f, 2003 0x5b07001e, 0x5b07001d, 0x5b07001d, 0x5b07001c, 2004 }; 2005 2006 static const uint32_t bwn_ntab_gainctl1_r3[] = { 2007 0x5bf70044, 0x5bf70042, 0x5bf70040, 0x5bf7003e, 2008 0x5bf7003c, 0x5bf7003b, 0x5bf70039, 0x5bf70037, 2009 0x5bf70036, 0x5bf70034, 0x5bf70033, 0x5bf70031, 2010 0x5bf70030, 0x5ba70044, 0x5ba70042, 0x5ba70040, 2011 0x5ba7003e, 0x5ba7003c, 0x5ba7003b, 0x5ba70039, 2012 0x5ba70037, 0x5ba70036, 0x5ba70034, 0x5ba70033, 2013 0x5b770044, 0x5b770042, 0x5b770040, 0x5b77003e, 2014 0x5b77003c, 0x5b77003b, 0x5b770039, 0x5b770037, 2015 0x5b770036, 0x5b770034, 0x5b770033, 0x5b770031, 2016 0x5b770030, 0x5b77002f, 0x5b77002d, 0x5b77002c, 2017 0x5b470044, 0x5b470042, 0x5b470040, 0x5b47003e, 2018 0x5b47003c, 0x5b47003b, 0x5b470039, 0x5b470037, 2019 0x5b470036, 0x5b470034, 0x5b470033, 0x5b470031, 2020 0x5b470030, 0x5b47002f, 0x5b47002d, 0x5b47002c, 2021 0x5b47002b, 0x5b47002a, 0x5b270044, 0x5b270042, 2022 0x5b270040, 0x5b27003e, 0x5b27003c, 0x5b27003b, 2023 0x5b270039, 0x5b270037, 0x5b270036, 0x5b270034, 2024 0x5b270033, 0x5b270031, 0x5b270030, 0x5b27002f, 2025 0x5b170044, 0x5b170042, 0x5b170040, 0x5b17003e, 2026 0x5b17003c, 0x5b17003b, 0x5b170039, 0x5b170037, 2027 0x5b170036, 0x5b170034, 0x5b170033, 0x5b170031, 2028 0x5b170030, 0x5b17002f, 0x5b17002d, 0x5b17002c, 2029 0x5b17002b, 0x5b17002a, 0x5b170028, 0x5b170027, 2030 0x5b170026, 0x5b170025, 0x5b170024, 0x5b170023, 2031 0x5b070044, 0x5b070042, 0x5b070040, 0x5b07003e, 2032 0x5b07003c, 0x5b07003b, 0x5b070039, 0x5b070037, 2033 0x5b070036, 0x5b070034, 0x5b070033, 0x5b070031, 2034 0x5b070030, 0x5b07002f, 0x5b07002d, 0x5b07002c, 2035 0x5b07002b, 0x5b07002a, 0x5b070028, 0x5b070027, 2036 0x5b070026, 0x5b070025, 0x5b070024, 0x5b070023, 2037 0x5b070022, 0x5b070021, 0x5b070020, 0x5b07001f, 2038 0x5b07001e, 0x5b07001d, 0x5b07001d, 0x5b07001c, 2039 }; 2040 2041 static const uint32_t bwn_ntab_iqlt0_r3[] = { 2042 0x00000000, 0x00000000, 0x00000000, 0x00000000, 2043 0x00000000, 0x00000000, 0x00000000, 0x00000000, 2044 0x00000000, 0x00000000, 0x00000000, 0x00000000, 2045 0x00000000, 0x00000000, 0x00000000, 0x00000000, 2046 0x00000000, 0x00000000, 0x00000000, 0x00000000, 2047 0x00000000, 0x00000000, 0x00000000, 0x00000000, 2048 0x00000000, 0x00000000, 0x00000000, 0x00000000, 2049 0x00000000, 0x00000000, 0x00000000, 0x00000000, 2050 0x00000000, 0x00000000, 0x00000000, 0x00000000, 2051 0x00000000, 0x00000000, 0x00000000, 0x00000000, 2052 0x00000000, 0x00000000, 0x00000000, 0x00000000, 2053 0x00000000, 0x00000000, 0x00000000, 0x00000000, 2054 0x00000000, 0x00000000, 0x00000000, 0x00000000, 2055 0x00000000, 0x00000000, 0x00000000, 0x00000000, 2056 0x00000000, 0x00000000, 0x00000000, 0x00000000, 2057 0x00000000, 0x00000000, 0x00000000, 0x00000000, 2058 0x00000000, 0x00000000, 0x00000000, 0x00000000, 2059 0x00000000, 0x00000000, 0x00000000, 0x00000000, 2060 0x00000000, 0x00000000, 0x00000000, 0x00000000, 2061 0x00000000, 0x00000000, 0x00000000, 0x00000000, 2062 0x00000000, 0x00000000, 0x00000000, 0x00000000, 2063 0x00000000, 0x00000000, 0x00000000, 0x00000000, 2064 0x00000000, 0x00000000, 0x00000000, 0x00000000, 2065 0x00000000, 0x00000000, 0x00000000, 0x00000000, 2066 0x00000000, 0x00000000, 0x00000000, 0x00000000, 2067 0x00000000, 0x00000000, 0x00000000, 0x00000000, 2068 0x00000000, 0x00000000, 0x00000000, 0x00000000, 2069 0x00000000, 0x00000000, 0x00000000, 0x00000000, 2070 0x00000000, 0x00000000, 0x00000000, 0x00000000, 2071 0x00000000, 0x00000000, 0x00000000, 0x00000000, 2072 0x00000000, 0x00000000, 0x00000000, 0x00000000, 2073 0x00000000, 0x00000000, 0x00000000, 0x00000000, 2074 }; 2075 2076 static const uint32_t bwn_ntab_iqlt1_r3[] = { 2077 0x00000000, 0x00000000, 0x00000000, 0x00000000, 2078 0x00000000, 0x00000000, 0x00000000, 0x00000000, 2079 0x00000000, 0x00000000, 0x00000000, 0x00000000, 2080 0x00000000, 0x00000000, 0x00000000, 0x00000000, 2081 0x00000000, 0x00000000, 0x00000000, 0x00000000, 2082 0x00000000, 0x00000000, 0x00000000, 0x00000000, 2083 0x00000000, 0x00000000, 0x00000000, 0x00000000, 2084 0x00000000, 0x00000000, 0x00000000, 0x00000000, 2085 0x00000000, 0x00000000, 0x00000000, 0x00000000, 2086 0x00000000, 0x00000000, 0x00000000, 0x00000000, 2087 0x00000000, 0x00000000, 0x00000000, 0x00000000, 2088 0x00000000, 0x00000000, 0x00000000, 0x00000000, 2089 0x00000000, 0x00000000, 0x00000000, 0x00000000, 2090 0x00000000, 0x00000000, 0x00000000, 0x00000000, 2091 0x00000000, 0x00000000, 0x00000000, 0x00000000, 2092 0x00000000, 0x00000000, 0x00000000, 0x00000000, 2093 0x00000000, 0x00000000, 0x00000000, 0x00000000, 2094 0x00000000, 0x00000000, 0x00000000, 0x00000000, 2095 0x00000000, 0x00000000, 0x00000000, 0x00000000, 2096 0x00000000, 0x00000000, 0x00000000, 0x00000000, 2097 0x00000000, 0x00000000, 0x00000000, 0x00000000, 2098 0x00000000, 0x00000000, 0x00000000, 0x00000000, 2099 0x00000000, 0x00000000, 0x00000000, 0x00000000, 2100 0x00000000, 0x00000000, 0x00000000, 0x00000000, 2101 0x00000000, 0x00000000, 0x00000000, 0x00000000, 2102 0x00000000, 0x00000000, 0x00000000, 0x00000000, 2103 0x00000000, 0x00000000, 0x00000000, 0x00000000, 2104 0x00000000, 0x00000000, 0x00000000, 0x00000000, 2105 0x00000000, 0x00000000, 0x00000000, 0x00000000, 2106 0x00000000, 0x00000000, 0x00000000, 0x00000000, 2107 0x00000000, 0x00000000, 0x00000000, 0x00000000, 2108 0x00000000, 0x00000000, 0x00000000, 0x00000000, 2109 }; 2110 2111 static const uint16_t bwn_ntab_loftlt0_r3[] = { 2112 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 2113 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 2114 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 2115 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 2116 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 2117 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 2118 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 2119 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 2120 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 2121 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 2122 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 2123 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 2124 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 2125 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 2126 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 2127 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 2128 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 2129 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 2130 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 2131 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 2132 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 2133 0x0000, 0x0000, 2134 }; 2135 2136 static const uint16_t bwn_ntab_loftlt1_r3[] = { 2137 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 2138 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 2139 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 2140 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 2141 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 2142 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 2143 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 2144 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 2145 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 2146 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 2147 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 2148 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 2149 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 2150 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 2151 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 2152 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 2153 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 2154 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 2155 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 2156 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 2157 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 2158 0x0000, 0x0000, 2159 }; 2160 2161 /* volatile tables, PHY revision >= 3 */ 2162 2163 /* indexed by antswctl2g */ 2164 static const uint16_t bwn_ntab_antswctl_r3[4][32] = { 2165 { 2166 0x0082, 0x0082, 0x0211, 0x0222, 0x0328, 2167 0x0000, 0x0000, 0x0000, 0x0144, 0x0000, 2168 0x0000, 0x0000, 0x0188, 0x0000, 0x0000, 2169 0x0000, 0x0082, 0x0082, 0x0211, 0x0222, 2170 0x0328, 0x0000, 0x0000, 0x0000, 0x0144, 2171 0x0000, 0x0000, 0x0000, 0x0188, 0x0000, 2172 0x0000, 0x0000, 2173 }, 2174 { 2175 0x0022, 0x0022, 0x0011, 0x0022, 0x0022, 2176 0x0000, 0x0000, 0x0000, 0x0011, 0x0000, 2177 0x0000, 0x0000, 0x0022, 0x0000, 0x0000, 2178 0x0000, 0x0022, 0x0022, 0x0011, 0x0022, 2179 0x0022, 0x0000, 0x0000, 0x0000, 0x0011, 2180 0x0000, 0x0000, 0x0000, 0x0022, 0x0000, 2181 0x0000, 0x0000, 2182 }, 2183 { 2184 0x0088, 0x0088, 0x0044, 0x0088, 0x0088, 2185 0x0000, 0x0000, 0x0000, 0x0044, 0x0000, 2186 0x0000, 0x0000, 0x0088, 0x0000, 0x0000, 2187 0x0000, 0x0088, 0x0088, 0x0044, 0x0088, 2188 0x0088, 0x0000, 0x0000, 0x0000, 0x0044, 2189 0x0000, 0x0000, 0x0000, 0x0088, 0x0000, 2190 0x0000, 0x0000, 2191 }, 2192 { 2193 0x0022, 0x0022, 0x0011, 0x0022, 0x0000, 2194 0x0000, 0x0000, 0x0000, 0x0011, 0x0000, 2195 0x0000, 0x0000, 0x0022, 0x0000, 0x0000, 2196 0x03cc, 0x0022, 0x0022, 0x0011, 0x0022, 2197 0x0000, 0x0000, 0x0000, 0x0000, 0x0011, 2198 0x0000, 0x0000, 0x0000, 0x0022, 0x0000, 2199 0x0000, 0x03cc, 2200 } 2201 }; 2202 2203 /* static tables, PHY revision >= 7 */ 2204 2205 /* Copied from brcmsmac (5.75.11) */ 2206 static const uint32_t bwn_ntab_tmap_r7[] = { 2207 0x8a88aa80, 0x8aaaaa8a, 0x8a8a8aa8, 0x00000888, 2208 0x88000000, 0x8a8a88aa, 0x8aa88888, 0x8888a8a8, 2209 0xf1111110, 0x11111111, 0x11f11111, 0x00000111, 2210 0x11000000, 0x1111f111, 0x11111111, 0x111111f1, 2211 0x8a88aa80, 0x8aaaaa8a, 0x8a8a8aa8, 0x000aa888, 2212 0x88880000, 0x8a8a88aa, 0x8aa88888, 0x8888a8a8, 2213 0xa1111110, 0x11111111, 0x11c11111, 0x00000111, 2214 0x11000000, 0x1111a111, 0x11111111, 0x111111a1, 2215 0xa2222220, 0x22222222, 0x22c22222, 0x00000222, 2216 0x22000000, 0x2222a222, 0x22222222, 0x222222a2, 2217 0xf1111110, 0x11111111, 0x11f11111, 0x00011111, 2218 0x11110000, 0x1111f111, 0x11111111, 0x111111f1, 2219 0xa8aa88a0, 0xa88888a8, 0xa8a8a88a, 0x00088aaa, 2220 0xaaaa0000, 0xa8a8aa88, 0xa88aaaaa, 0xaaaa8a8a, 2221 0xaaa8aaa0, 0x8aaa8aaa, 0xaa8a8a8a, 0x000aaa88, 2222 0x8aaa0000, 0xaaa8a888, 0x8aa88a8a, 0x8a88a888, 2223 0x08080a00, 0x0a08080a, 0x080a0a08, 0x00080808, 2224 0x080a0000, 0x080a0808, 0x080a0808, 0x0a0a0a08, 2225 0xa0a0a0a0, 0x80a0a080, 0x8080a0a0, 0x00008080, 2226 0x80a00000, 0x80a080a0, 0xa080a0a0, 0x8080a0a0, 2227 0x00000000, 0x00000000, 0x00000000, 0x00000000, 2228 0x00000000, 0x00000000, 0x00000000, 0x00000000, 2229 0x00000000, 0x00000000, 0x00000000, 0x00000000, 2230 0x00000000, 0x00000000, 0x00000000, 0x00000000, 2231 0x00000000, 0x00000000, 0x00000000, 0x00000000, 2232 0x00000000, 0x00000000, 0x00000000, 0x00000000, 2233 0x00000000, 0x00000000, 0x00000000, 0x00000000, 2234 0x00000000, 0x00000000, 0x00000000, 0x00000000, 2235 0x00000000, 0x00000000, 0x00000000, 0x00000000, 2236 0x00000000, 0x00000000, 0x00000000, 0x00000000, 2237 0x00000000, 0x00000000, 0x00000000, 0x00000000, 2238 0x00000000, 0x00000000, 0x00000000, 0x00000000, 2239 0x99999000, 0x9b9b99bb, 0x9bb99999, 0x9999b9b9, 2240 0x9b99bb90, 0x9bbbbb9b, 0x9b9b9bb9, 0x00000999, 2241 0x88000000, 0x8a8a88aa, 0x8aa88888, 0x8888a8a8, 2242 0x8a88aa80, 0x8aaaaa8a, 0x8a8a8aa8, 0x00aaa888, 2243 0x22000000, 0x2222b222, 0x22222222, 0x222222b2, 2244 0xb2222220, 0x22222222, 0x22d22222, 0x00000222, 2245 0x11000000, 0x1111a111, 0x11111111, 0x111111a1, 2246 0xa1111110, 0x11111111, 0x11c11111, 0x00000111, 2247 0x33000000, 0x3333b333, 0x33333333, 0x333333b3, 2248 0xb3333330, 0x33333333, 0x33d33333, 0x00000333, 2249 0x22000000, 0x2222a222, 0x22222222, 0x222222a2, 2250 0xa2222220, 0x22222222, 0x22c22222, 0x00000222, 2251 0x99b99b00, 0x9b9b99bb, 0x9bb99999, 0x9999b9b9, 2252 0x9b99bb99, 0x9bbbbb9b, 0x9b9b9bb9, 0x00000999, 2253 0x88000000, 0x8a8a88aa, 0x8aa88888, 0x8888a8a8, 2254 0x8a88aa88, 0x8aaaaa8a, 0x8a8a8aa8, 0x08aaa888, 2255 0x22222200, 0x2222f222, 0x22222222, 0x222222f2, 2256 0x22222222, 0x22222222, 0x22f22222, 0x00000222, 2257 0x11000000, 0x1111f111, 0x11111111, 0x11111111, 2258 0xf1111111, 0x11111111, 0x11f11111, 0x01111111, 2259 0xbb9bb900, 0xb9b9bb99, 0xb99bbbbb, 0xbbbb9b9b, 2260 0xb9bb99bb, 0xb99999b9, 0xb9b9b99b, 0x00000bbb, 2261 0xaa000000, 0xa8a8aa88, 0xa88aaaaa, 0xaaaa8a8a, 2262 0xa8aa88aa, 0xa88888a8, 0xa8a8a88a, 0x0a888aaa, 2263 0xaa000000, 0xa8a8aa88, 0xa88aaaaa, 0xaaaa8a8a, 2264 0xa8aa88a0, 0xa88888a8, 0xa8a8a88a, 0x00000aaa, 2265 0x88000000, 0x8a8a88aa, 0x8aa88888, 0x8888a8a8, 2266 0x8a88aa80, 0x8aaaaa8a, 0x8a8a8aa8, 0x00000888, 2267 0xbbbbbb00, 0x999bbbbb, 0x9bb99b9b, 0xb9b9b9bb, 2268 0xb9b99bbb, 0xb9b9b9bb, 0xb9bb9b99, 0x00000999, 2269 0x8a000000, 0xaa88a888, 0xa88888aa, 0xa88a8a88, 2270 0xa88aa88a, 0x88a8aaaa, 0xa8aa8aaa, 0x0888a88a, 2271 0x0b0b0b00, 0x090b0b0b, 0x0b090b0b, 0x0909090b, 2272 0x09090b0b, 0x09090b0b, 0x09090b09, 0x00000909, 2273 0x0a000000, 0x0a080808, 0x080a080a, 0x080a0a08, 2274 0x080a080a, 0x0808080a, 0x0a0a0a08, 0x0808080a, 2275 0xb0b0b000, 0x9090b0b0, 0x90b09090, 0xb0b0b090, 2276 0xb0b090b0, 0x90b0b0b0, 0xb0b09090, 0x00000090, 2277 0x80000000, 0xa080a080, 0xa08080a0, 0xa0808080, 2278 0xa080a080, 0x80a0a0a0, 0xa0a080a0, 0x00a0a0a0, 2279 0x22000000, 0x2222f222, 0x22222222, 0x222222f2, 2280 0xf2222220, 0x22222222, 0x22f22222, 0x00000222, 2281 0x11000000, 0x1111f111, 0x11111111, 0x111111f1, 2282 0xf1111110, 0x11111111, 0x11f11111, 0x00000111, 2283 0x33000000, 0x3333f333, 0x33333333, 0x333333f3, 2284 0xf3333330, 0x33333333, 0x33f33333, 0x00000333, 2285 0x22000000, 0x2222f222, 0x22222222, 0x222222f2, 2286 0xf2222220, 0x22222222, 0x22f22222, 0x00000222, 2287 0x99000000, 0x9b9b99bb, 0x9bb99999, 0x9999b9b9, 2288 0x9b99bb90, 0x9bbbbb9b, 0x9b9b9bb9, 0x00000999, 2289 0x88000000, 0x8a8a88aa, 0x8aa88888, 0x8888a8a8, 2290 0x8a88aa80, 0x8aaaaa8a, 0x8a8a8aa8, 0x00000888, 2291 0x88888000, 0x8a8a88aa, 0x8aa88888, 0x8888a8a8, 2292 0x8a88aa80, 0x8aaaaa8a, 0x8a8a8aa8, 0x00000888, 2293 0x88000000, 0x8a8a88aa, 0x8aa88888, 0x8888a8a8, 2294 0x8a88aa80, 0x8aaaaa8a, 0x8a8a8aa8, 0x00aaa888, 2295 0x88a88a00, 0x8a8a88aa, 0x8aa88888, 0x8888a8a8, 2296 0x8a88aa88, 0x8aaaaa8a, 0x8a8a8aa8, 0x000aa888, 2297 0x88880000, 0x8a8a88aa, 0x8aa88888, 0x8888a8a8, 2298 0x8a88aa88, 0x8aaaaa8a, 0x8a8a8aa8, 0x08aaa888, 2299 0x11000000, 0x1111a111, 0x11111111, 0x111111a1, 2300 0xa1111110, 0x11111111, 0x11c11111, 0x00000111, 2301 0x11000000, 0x1111a111, 0x11111111, 0x111111a1, 2302 0xa1111110, 0x11111111, 0x11c11111, 0x00000111, 2303 0x88000000, 0x8a8a88aa, 0x8aa88888, 0x8888a8a8, 2304 0x8a88aa80, 0x8aaaaa8a, 0x8a8a8aa8, 0x00000888, 2305 0x88000000, 0x8a8a88aa, 0x8aa88888, 0x8888a8a8, 2306 0x8a88aa80, 0x8aaaaa8a, 0x8a8a8aa8, 0x00000888, 2307 0x00000000, 0x00000000, 0x00000000, 0x00000000, 2308 0x00000000, 0x00000000, 0x00000000, 0x00000000, 2309 0x00000000, 0x00000000, 0x00000000, 0x00000000, 2310 0x00000000, 0x00000000, 0x00000000, 0x00000000, 2311 0x00000000, 0x00000000, 0x00000000, 0x00000000, 2312 0x00000000, 0x00000000, 0x00000000, 0x00000000, 2313 0x00000000, 0x00000000, 0x00000000, 0x00000000, 2314 0x00000000, 0x00000000, 0x00000000, 0x00000000, 2315 0x00000000, 0x00000000, 0x00000000, 0x00000000, 2316 0x00000000, 0x00000000, 0x00000000, 0x00000000, 2317 0x00000000, 0x00000000, 0x00000000, 0x00000000, 2318 0x00000000, 0x00000000, 0x00000000, 0x00000000, 2319 }; 2320 2321 /* Extracted from MMIO dump of 6.30.223.141 */ 2322 static const uint32_t bwn_ntab_noisevar_r7[] = { 2323 0x020c020c, 0x0000014d, 0x020c020c, 0x0000014d, 2324 0x020c020c, 0x0000014d, 0x020c020c, 0x0000014d, 2325 0x020c020c, 0x0000014d, 0x020c020c, 0x0000014d, 2326 0x020c020c, 0x0000014d, 0x020c020c, 0x0000014d, 2327 0x020c020c, 0x0000014d, 0x020c020c, 0x0000014d, 2328 0x020c020c, 0x0000014d, 0x020c020c, 0x0000014d, 2329 0x020c020c, 0x0000014d, 0x020c020c, 0x0000014d, 2330 0x020c020c, 0x0000014d, 0x020c020c, 0x0000014d, 2331 0x020c020c, 0x0000014d, 0x020c020c, 0x0000014d, 2332 0x020c020c, 0x0000014d, 0x020c020c, 0x0000014d, 2333 0x020c020c, 0x0000014d, 0x020c020c, 0x0000014d, 2334 0x020c020c, 0x0000014d, 0x020c020c, 0x0000014d, 2335 0x020c020c, 0x0000014d, 0x020c020c, 0x0000014d, 2336 0x020c020c, 0x0000014d, 0x020c020c, 0x0000014d, 2337 0x020c020c, 0x0000014d, 0x020c020c, 0x0000014d, 2338 0x020c020c, 0x0000014d, 0x020c020c, 0x0000014d, 2339 0x020c020c, 0x0000014d, 0x020c020c, 0x0000014d, 2340 0x020c020c, 0x0000014d, 0x020c020c, 0x0000014d, 2341 0x020c020c, 0x0000014d, 0x020c020c, 0x0000014d, 2342 0x020c020c, 0x0000014d, 0x020c020c, 0x0000014d, 2343 0x020c020c, 0x0000014d, 0x020c020c, 0x0000014d, 2344 0x020c020c, 0x0000014d, 0x020c020c, 0x0000014d, 2345 0x020c020c, 0x0000014d, 0x020c020c, 0x0000014d, 2346 0x020c020c, 0x0000014d, 0x020c020c, 0x0000014d, 2347 0x020c020c, 0x0000014d, 0x020c020c, 0x0000014d, 2348 0x020c020c, 0x0000014d, 0x020c020c, 0x0000014d, 2349 0x020c020c, 0x0000014d, 0x020c020c, 0x0000014d, 2350 0x020c020c, 0x0000014d, 0x020c020c, 0x0000014d, 2351 0x020c020c, 0x0000014d, 0x020c020c, 0x0000014d, 2352 0x020c020c, 0x0000014d, 0x020c020c, 0x0000014d, 2353 0x020c020c, 0x0000014d, 0x020c020c, 0x0000014d, 2354 0x020c020c, 0x0000014d, 0x020c020c, 0x0000014d, 2355 0x020c020c, 0x0000014d, 0x020c020c, 0x0000014d, 2356 0x020c020c, 0x0000014d, 0x020c020c, 0x0000014d, 2357 0x020c020c, 0x0000014d, 0x020c020c, 0x0000014d, 2358 0x020c020c, 0x0000014d, 0x020c020c, 0x0000014d, 2359 0x020c020c, 0x0000014d, 0x020c020c, 0x0000014d, 2360 0x020c020c, 0x0000014d, 0x020c020c, 0x0000014d, 2361 0x020c020c, 0x0000014d, 0x020c020c, 0x0000014d, 2362 0x020c020c, 0x0000014d, 0x020c020c, 0x0000014d, 2363 0x020c020c, 0x0000014d, 0x020c020c, 0x0000014d, 2364 0x020c020c, 0x0000014d, 0x020c020c, 0x0000014d, 2365 0x020c020c, 0x0000014d, 0x020c020c, 0x0000014d, 2366 0x020c020c, 0x0000014d, 0x020c020c, 0x0000014d, 2367 0x020c020c, 0x0000014d, 0x020c020c, 0x0000014d, 2368 0x020c020c, 0x0000014d, 0x020c020c, 0x0000014d, 2369 0x020c020c, 0x0000014d, 0x020c020c, 0x0000014d, 2370 0x020c020c, 0x0000014d, 0x020c020c, 0x0000014d, 2371 0x020c020c, 0x0000014d, 0x020c020c, 0x0000014d, 2372 0x020c020c, 0x0000014d, 0x020c020c, 0x0000014d, 2373 0x020c020c, 0x0000014d, 0x020c020c, 0x0000014d, 2374 0x020c020c, 0x0000014d, 0x020c020c, 0x0000014d, 2375 0x020c020c, 0x0000014d, 0x020c020c, 0x0000014d, 2376 0x020c020c, 0x0000014d, 0x020c020c, 0x0000014d, 2377 0x020c020c, 0x0000014d, 0x020c020c, 0x0000014d, 2378 0x020c020c, 0x0000014d, 0x020c020c, 0x0000014d, 2379 0x020c020c, 0x0000014d, 0x020c020c, 0x0000014d, 2380 0x020c020c, 0x0000014d, 0x020c020c, 0x0000014d, 2381 0x020c020c, 0x0000014d, 0x020c020c, 0x0000014d, 2382 0x020c020c, 0x0000014d, 0x020c020c, 0x0000014d, 2383 0x020c020c, 0x0000014d, 0x020c020c, 0x0000014d, 2384 0x020c020c, 0x0000014d, 0x020c020c, 0x0000014d, 2385 0x020c020c, 0x0000014d, 0x020c020c, 0x0000014d, 2386 0x020c020c, 0x0000014d, 0x020c020c, 0x0000014d, 2387 }; 2388 2389 /************************************************** 2390 * TX gain tables 2391 **************************************************/ 2392 2393 static const uint32_t bwn_ntab_tx_gain_rev0_1_2[] = { 2394 0x03cc2b44, 0x03cc2b42, 0x03cc2a44, 0x03cc2a42, 2395 0x03cc2944, 0x03c82b44, 0x03c82b42, 0x03c82a44, 2396 0x03c82a42, 0x03c82944, 0x03c82942, 0x03c82844, 2397 0x03c82842, 0x03c42b44, 0x03c42b42, 0x03c42a44, 2398 0x03c42a42, 0x03c42944, 0x03c42942, 0x03c42844, 2399 0x03c42842, 0x03c42744, 0x03c42742, 0x03c42644, 2400 0x03c42642, 0x03c42544, 0x03c42542, 0x03c42444, 2401 0x03c42442, 0x03c02b44, 0x03c02b42, 0x03c02a44, 2402 0x03c02a42, 0x03c02944, 0x03c02942, 0x03c02844, 2403 0x03c02842, 0x03c02744, 0x03c02742, 0x03b02b44, 2404 0x03b02b42, 0x03b02a44, 0x03b02a42, 0x03b02944, 2405 0x03b02942, 0x03b02844, 0x03b02842, 0x03b02744, 2406 0x03b02742, 0x03b02644, 0x03b02642, 0x03b02544, 2407 0x03b02542, 0x03a02b44, 0x03a02b42, 0x03a02a44, 2408 0x03a02a42, 0x03a02944, 0x03a02942, 0x03a02844, 2409 0x03a02842, 0x03a02744, 0x03a02742, 0x03902b44, 2410 0x03902b42, 0x03902a44, 0x03902a42, 0x03902944, 2411 0x03902942, 0x03902844, 0x03902842, 0x03902744, 2412 0x03902742, 0x03902644, 0x03902642, 0x03902544, 2413 0x03902542, 0x03802b44, 0x03802b42, 0x03802a44, 2414 0x03802a42, 0x03802944, 0x03802942, 0x03802844, 2415 0x03802842, 0x03802744, 0x03802742, 0x03802644, 2416 0x03802642, 0x03802544, 0x03802542, 0x03802444, 2417 0x03802442, 0x03802344, 0x03802342, 0x03802244, 2418 0x03802242, 0x03802144, 0x03802142, 0x03802044, 2419 0x03802042, 0x03801f44, 0x03801f42, 0x03801e44, 2420 0x03801e42, 0x03801d44, 0x03801d42, 0x03801c44, 2421 0x03801c42, 0x03801b44, 0x03801b42, 0x03801a44, 2422 0x03801a42, 0x03801944, 0x03801942, 0x03801844, 2423 0x03801842, 0x03801744, 0x03801742, 0x03801644, 2424 0x03801642, 0x03801544, 0x03801542, 0x03801444, 2425 0x03801442, 0x03801344, 0x03801342, 0x00002b00, 2426 }; 2427 2428 /* EPA 2 GHz */ 2429 2430 static const uint32_t bwn_ntab_tx_gain_epa_rev3_2g[] = { 2431 0x1f410044, 0x1f410042, 0x1f410040, 0x1f41003e, 2432 0x1f41003c, 0x1f41003b, 0x1f410039, 0x1f410037, 2433 0x1e410044, 0x1e410042, 0x1e410040, 0x1e41003e, 2434 0x1e41003c, 0x1e41003b, 0x1e410039, 0x1e410037, 2435 0x1d410044, 0x1d410042, 0x1d410040, 0x1d41003e, 2436 0x1d41003c, 0x1d41003b, 0x1d410039, 0x1d410037, 2437 0x1c410044, 0x1c410042, 0x1c410040, 0x1c41003e, 2438 0x1c41003c, 0x1c41003b, 0x1c410039, 0x1c410037, 2439 0x1b410044, 0x1b410042, 0x1b410040, 0x1b41003e, 2440 0x1b41003c, 0x1b41003b, 0x1b410039, 0x1b410037, 2441 0x1a410044, 0x1a410042, 0x1a410040, 0x1a41003e, 2442 0x1a41003c, 0x1a41003b, 0x1a410039, 0x1a410037, 2443 0x19410044, 0x19410042, 0x19410040, 0x1941003e, 2444 0x1941003c, 0x1941003b, 0x19410039, 0x19410037, 2445 0x18410044, 0x18410042, 0x18410040, 0x1841003e, 2446 0x1841003c, 0x1841003b, 0x18410039, 0x18410037, 2447 0x17410044, 0x17410042, 0x17410040, 0x1741003e, 2448 0x1741003c, 0x1741003b, 0x17410039, 0x17410037, 2449 0x16410044, 0x16410042, 0x16410040, 0x1641003e, 2450 0x1641003c, 0x1641003b, 0x16410039, 0x16410037, 2451 0x15410044, 0x15410042, 0x15410040, 0x1541003e, 2452 0x1541003c, 0x1541003b, 0x15410039, 0x15410037, 2453 0x14410044, 0x14410042, 0x14410040, 0x1441003e, 2454 0x1441003c, 0x1441003b, 0x14410039, 0x14410037, 2455 0x13410044, 0x13410042, 0x13410040, 0x1341003e, 2456 0x1341003c, 0x1341003b, 0x13410039, 0x13410037, 2457 0x12410044, 0x12410042, 0x12410040, 0x1241003e, 2458 0x1241003c, 0x1241003b, 0x12410039, 0x12410037, 2459 0x11410044, 0x11410042, 0x11410040, 0x1141003e, 2460 0x1141003c, 0x1141003b, 0x11410039, 0x11410037, 2461 0x10410044, 0x10410042, 0x10410040, 0x1041003e, 2462 0x1041003c, 0x1041003b, 0x10410039, 0x10410037, 2463 }; 2464 2465 static const uint32_t bwn_ntab_tx_gain_epa_rev3_hi_pwr_2g[] = { 2466 0x0f410044, 0x0f410042, 0x0f410040, 0x0f41003e, 2467 0x0f41003c, 0x0f41003b, 0x0f410039, 0x0f410037, 2468 0x0e410044, 0x0e410042, 0x0e410040, 0x0e41003e, 2469 0x0e41003c, 0x0e41003b, 0x0e410039, 0x0e410037, 2470 0x0d410044, 0x0d410042, 0x0d410040, 0x0d41003e, 2471 0x0d41003c, 0x0d41003b, 0x0d410039, 0x0d410037, 2472 0x0c410044, 0x0c410042, 0x0c410040, 0x0c41003e, 2473 0x0c41003c, 0x0c41003b, 0x0c410039, 0x0c410037, 2474 0x0b410044, 0x0b410042, 0x0b410040, 0x0b41003e, 2475 0x0b41003c, 0x0b41003b, 0x0b410039, 0x0b410037, 2476 0x0a410044, 0x0a410042, 0x0a410040, 0x0a41003e, 2477 0x0a41003c, 0x0a41003b, 0x0a410039, 0x0a410037, 2478 0x09410044, 0x09410042, 0x09410040, 0x0941003e, 2479 0x0941003c, 0x0941003b, 0x09410039, 0x09410037, 2480 0x08410044, 0x08410042, 0x08410040, 0x0841003e, 2481 0x0841003c, 0x0841003b, 0x08410039, 0x08410037, 2482 0x07410044, 0x07410042, 0x07410040, 0x0741003e, 2483 0x0741003c, 0x0741003b, 0x07410039, 0x07410037, 2484 0x06410044, 0x06410042, 0x06410040, 0x0641003e, 2485 0x0641003c, 0x0641003b, 0x06410039, 0x06410037, 2486 0x05410044, 0x05410042, 0x05410040, 0x0541003e, 2487 0x0541003c, 0x0541003b, 0x05410039, 0x05410037, 2488 0x04410044, 0x04410042, 0x04410040, 0x0441003e, 2489 0x0441003c, 0x0441003b, 0x04410039, 0x04410037, 2490 0x03410044, 0x03410042, 0x03410040, 0x0341003e, 2491 0x0341003c, 0x0341003b, 0x03410039, 0x03410037, 2492 0x02410044, 0x02410042, 0x02410040, 0x0241003e, 2493 0x0241003c, 0x0241003b, 0x02410039, 0x02410037, 2494 0x01410044, 0x01410042, 0x01410040, 0x0141003e, 2495 0x0141003c, 0x0141003b, 0x01410039, 0x01410037, 2496 0x00410044, 0x00410042, 0x00410040, 0x0041003e, 2497 0x0041003c, 0x0041003b, 0x00410039, 0x00410037 2498 }; 2499 2500 /* EPA 5 GHz */ 2501 2502 static const uint32_t bwn_ntab_tx_gain_epa_rev3_5g[] = { 2503 0xcff70044, 0xcff70042, 0xcff70040, 0xcff7003e, 2504 0xcff7003c, 0xcff7003b, 0xcff70039, 0xcff70037, 2505 0xcef70044, 0xcef70042, 0xcef70040, 0xcef7003e, 2506 0xcef7003c, 0xcef7003b, 0xcef70039, 0xcef70037, 2507 0xcdf70044, 0xcdf70042, 0xcdf70040, 0xcdf7003e, 2508 0xcdf7003c, 0xcdf7003b, 0xcdf70039, 0xcdf70037, 2509 0xccf70044, 0xccf70042, 0xccf70040, 0xccf7003e, 2510 0xccf7003c, 0xccf7003b, 0xccf70039, 0xccf70037, 2511 0xcbf70044, 0xcbf70042, 0xcbf70040, 0xcbf7003e, 2512 0xcbf7003c, 0xcbf7003b, 0xcbf70039, 0xcbf70037, 2513 0xcaf70044, 0xcaf70042, 0xcaf70040, 0xcaf7003e, 2514 0xcaf7003c, 0xcaf7003b, 0xcaf70039, 0xcaf70037, 2515 0xc9f70044, 0xc9f70042, 0xc9f70040, 0xc9f7003e, 2516 0xc9f7003c, 0xc9f7003b, 0xc9f70039, 0xc9f70037, 2517 0xc8f70044, 0xc8f70042, 0xc8f70040, 0xc8f7003e, 2518 0xc8f7003c, 0xc8f7003b, 0xc8f70039, 0xc8f70037, 2519 0xc7f70044, 0xc7f70042, 0xc7f70040, 0xc7f7003e, 2520 0xc7f7003c, 0xc7f7003b, 0xc7f70039, 0xc7f70037, 2521 0xc6f70044, 0xc6f70042, 0xc6f70040, 0xc6f7003e, 2522 0xc6f7003c, 0xc6f7003b, 0xc6f70039, 0xc6f70037, 2523 0xc5f70044, 0xc5f70042, 0xc5f70040, 0xc5f7003e, 2524 0xc5f7003c, 0xc5f7003b, 0xc5f70039, 0xc5f70037, 2525 0xc4f70044, 0xc4f70042, 0xc4f70040, 0xc4f7003e, 2526 0xc4f7003c, 0xc4f7003b, 0xc4f70039, 0xc4f70037, 2527 0xc3f70044, 0xc3f70042, 0xc3f70040, 0xc3f7003e, 2528 0xc3f7003c, 0xc3f7003b, 0xc3f70039, 0xc3f70037, 2529 0xc2f70044, 0xc2f70042, 0xc2f70040, 0xc2f7003e, 2530 0xc2f7003c, 0xc2f7003b, 0xc2f70039, 0xc2f70037, 2531 0xc1f70044, 0xc1f70042, 0xc1f70040, 0xc1f7003e, 2532 0xc1f7003c, 0xc1f7003b, 0xc1f70039, 0xc1f70037, 2533 0xc0f70044, 0xc0f70042, 0xc0f70040, 0xc0f7003e, 2534 0xc0f7003c, 0xc0f7003b, 0xc0f70039, 0xc0f70037, 2535 }; 2536 2537 static const uint32_t bwn_ntab_tx_gain_epa_rev4_5g[] = { 2538 0x2ff20044, 0x2ff20042, 0x2ff20040, 0x2ff2003e, 2539 0x2ff2003c, 0x2ff2003b, 0x2ff20039, 0x2ff20037, 2540 0x2ef20044, 0x2ef20042, 0x2ef20040, 0x2ef2003e, 2541 0x2ef2003c, 0x2ef2003b, 0x2ef20039, 0x2ef20037, 2542 0x2df20044, 0x2df20042, 0x2df20040, 0x2df2003e, 2543 0x2df2003c, 0x2df2003b, 0x2df20039, 0x2df20037, 2544 0x2cf20044, 0x2cf20042, 0x2cf20040, 0x2cf2003e, 2545 0x2cf2003c, 0x2cf2003b, 0x2cf20039, 0x2cf20037, 2546 0x2bf20044, 0x2bf20042, 0x2bf20040, 0x2bf2003e, 2547 0x2bf2003c, 0x2bf2003b, 0x2bf20039, 0x2bf20037, 2548 0x2af20044, 0x2af20042, 0x2af20040, 0x2af2003e, 2549 0x2af2003c, 0x2af2003b, 0x2af20039, 0x2af20037, 2550 0x29f20044, 0x29f20042, 0x29f20040, 0x29f2003e, 2551 0x29f2003c, 0x29f2003b, 0x29f20039, 0x29f20037, 2552 0x28f20044, 0x28f20042, 0x28f20040, 0x28f2003e, 2553 0x28f2003c, 0x28f2003b, 0x28f20039, 0x28f20037, 2554 0x27f20044, 0x27f20042, 0x27f20040, 0x27f2003e, 2555 0x27f2003c, 0x27f2003b, 0x27f20039, 0x27f20037, 2556 0x26f20044, 0x26f20042, 0x26f20040, 0x26f2003e, 2557 0x26f2003c, 0x26f2003b, 0x26f20039, 0x26f20037, 2558 0x25f20044, 0x25f20042, 0x25f20040, 0x25f2003e, 2559 0x25f2003c, 0x25f2003b, 0x25f20039, 0x25f20037, 2560 0x24f20044, 0x24f20042, 0x24f20040, 0x24f2003e, 2561 0x24f2003c, 0x24f2003b, 0x24f20039, 0x24f20038, 2562 0x23f20041, 0x23f20040, 0x23f2003f, 0x23f2003e, 2563 0x23f2003c, 0x23f2003b, 0x23f20039, 0x23f20037, 2564 0x22f20044, 0x22f20042, 0x22f20040, 0x22f2003e, 2565 0x22f2003c, 0x22f2003b, 0x22f20039, 0x22f20037, 2566 0x21f20044, 0x21f20042, 0x21f20040, 0x21f2003e, 2567 0x21f2003c, 0x21f2003b, 0x21f20039, 0x21f20037, 2568 0x20d20043, 0x20d20041, 0x20d2003e, 0x20d2003c, 2569 0x20d2003a, 0x20d20038, 0x20d20036, 0x20d20034, 2570 }; 2571 2572 static const uint32_t bwn_ntab_tx_gain_epa_rev4_hi_pwr_5g[] = { 2573 0x2ff10044, 0x2ff10042, 0x2ff10040, 0x2ff1003e, 2574 0x2ff1003c, 0x2ff1003b, 0x2ff10039, 0x2ff10037, 2575 0x2ef10044, 0x2ef10042, 0x2ef10040, 0x2ef1003e, 2576 0x2ef1003c, 0x2ef1003b, 0x2ef10039, 0x2ef10037, 2577 0x2df10044, 0x2df10042, 0x2df10040, 0x2df1003e, 2578 0x2df1003c, 0x2df1003b, 0x2df10039, 0x2df10037, 2579 0x2cf10044, 0x2cf10042, 0x2cf10040, 0x2cf1003e, 2580 0x2cf1003c, 0x2cf1003b, 0x2cf10039, 0x2cf10037, 2581 0x2bf10044, 0x2bf10042, 0x2bf10040, 0x2bf1003e, 2582 0x2bf1003c, 0x2bf1003b, 0x2bf10039, 0x2bf10037, 2583 0x2af10044, 0x2af10042, 0x2af10040, 0x2af1003e, 2584 0x2af1003c, 0x2af1003b, 0x2af10039, 0x2af10037, 2585 0x29f10044, 0x29f10042, 0x29f10040, 0x29f1003e, 2586 0x29f1003c, 0x29f1003b, 0x29f10039, 0x29f10037, 2587 0x28f10044, 0x28f10042, 0x28f10040, 0x28f1003e, 2588 0x28f1003c, 0x28f1003b, 0x28f10039, 0x28f10037, 2589 0x27f10044, 0x27f10042, 0x27f10040, 0x27f1003e, 2590 0x27f1003c, 0x27f1003b, 0x27f10039, 0x27f10037, 2591 0x26f10044, 0x26f10042, 0x26f10040, 0x26f1003e, 2592 0x26f1003c, 0x26f1003b, 0x26f10039, 0x26f10037, 2593 0x25f10044, 0x25f10042, 0x25f10040, 0x25f1003e, 2594 0x25f1003c, 0x25f1003b, 0x25f10039, 0x25f10037, 2595 0x24f10044, 0x24f10042, 0x24f10040, 0x24f1003e, 2596 0x24f1003c, 0x24f1003b, 0x24f10039, 0x24f10038, 2597 0x23f10041, 0x23f10040, 0x23f1003f, 0x23f1003e, 2598 0x23f1003c, 0x23f1003b, 0x23f10039, 0x23f10037, 2599 0x22f10044, 0x22f10042, 0x22f10040, 0x22f1003e, 2600 0x22f1003c, 0x22f1003b, 0x22f10039, 0x22f10037, 2601 0x21f10044, 0x21f10042, 0x21f10040, 0x21f1003e, 2602 0x21f1003c, 0x21f1003b, 0x21f10039, 0x21f10037, 2603 0x20d10043, 0x20d10041, 0x20d1003e, 0x20d1003c, 2604 0x20d1003a, 0x20d10038, 0x20d10036, 0x20d10034 2605 }; 2606 2607 static const uint32_t bwn_ntab_tx_gain_epa_rev5_5g[] = { 2608 0x0f62004a, 0x0f620048, 0x0f620046, 0x0f620044, 2609 0x0f620042, 0x0f620040, 0x0f62003e, 0x0f62003c, 2610 0x0e620044, 0x0e620042, 0x0e620040, 0x0e62003e, 2611 0x0e62003c, 0x0e62003d, 0x0e62003b, 0x0e62003a, 2612 0x0d620043, 0x0d620041, 0x0d620040, 0x0d62003e, 2613 0x0d62003d, 0x0d62003c, 0x0d62003b, 0x0d62003a, 2614 0x0c620041, 0x0c620040, 0x0c62003f, 0x0c62003e, 2615 0x0c62003c, 0x0c62003b, 0x0c620039, 0x0c620037, 2616 0x0b620046, 0x0b620044, 0x0b620042, 0x0b620040, 2617 0x0b62003e, 0x0b62003c, 0x0b62003b, 0x0b62003a, 2618 0x0a620041, 0x0a620040, 0x0a62003e, 0x0a62003c, 2619 0x0a62003b, 0x0a62003a, 0x0a620039, 0x0a620038, 2620 0x0962003e, 0x0962003d, 0x0962003c, 0x0962003b, 2621 0x09620039, 0x09620037, 0x09620035, 0x09620033, 2622 0x08620044, 0x08620042, 0x08620040, 0x0862003e, 2623 0x0862003c, 0x0862003b, 0x0862003a, 0x08620039, 2624 0x07620043, 0x07620042, 0x07620040, 0x0762003f, 2625 0x0762003d, 0x0762003b, 0x0762003a, 0x07620039, 2626 0x0662003e, 0x0662003d, 0x0662003c, 0x0662003b, 2627 0x06620039, 0x06620037, 0x06620035, 0x06620033, 2628 0x05620046, 0x05620044, 0x05620042, 0x05620040, 2629 0x0562003e, 0x0562003c, 0x0562003b, 0x05620039, 2630 0x04620044, 0x04620042, 0x04620040, 0x0462003e, 2631 0x0462003c, 0x0462003b, 0x04620039, 0x04620038, 2632 0x0362003c, 0x0362003b, 0x0362003a, 0x03620039, 2633 0x03620038, 0x03620037, 0x03620035, 0x03620033, 2634 0x0262004c, 0x0262004a, 0x02620048, 0x02620047, 2635 0x02620046, 0x02620044, 0x02620043, 0x02620042, 2636 0x0162004a, 0x01620048, 0x01620046, 0x01620044, 2637 0x01620043, 0x01620042, 0x01620041, 0x01620040, 2638 0x00620042, 0x00620040, 0x0062003e, 0x0062003c, 2639 0x0062003b, 0x00620039, 0x00620037, 0x00620035, 2640 }; 2641 2642 /* IPA 2 GHz */ 2643 2644 static const uint32_t bwn_ntab_tx_gain_ipa_rev3_2g[] = { 2645 0x5ff7002d, 0x5ff7002b, 0x5ff7002a, 0x5ff70029, 2646 0x5ff70028, 0x5ff70027, 0x5ff70026, 0x5ff70025, 2647 0x5ef7002d, 0x5ef7002b, 0x5ef7002a, 0x5ef70029, 2648 0x5ef70028, 0x5ef70027, 0x5ef70026, 0x5ef70025, 2649 0x5df7002d, 0x5df7002b, 0x5df7002a, 0x5df70029, 2650 0x5df70028, 0x5df70027, 0x5df70026, 0x5df70025, 2651 0x5cf7002d, 0x5cf7002b, 0x5cf7002a, 0x5cf70029, 2652 0x5cf70028, 0x5cf70027, 0x5cf70026, 0x5cf70025, 2653 0x5bf7002d, 0x5bf7002b, 0x5bf7002a, 0x5bf70029, 2654 0x5bf70028, 0x5bf70027, 0x5bf70026, 0x5bf70025, 2655 0x5af7002d, 0x5af7002b, 0x5af7002a, 0x5af70029, 2656 0x5af70028, 0x5af70027, 0x5af70026, 0x5af70025, 2657 0x59f7002d, 0x59f7002b, 0x59f7002a, 0x59f70029, 2658 0x59f70028, 0x59f70027, 0x59f70026, 0x59f70025, 2659 0x58f7002d, 0x58f7002b, 0x58f7002a, 0x58f70029, 2660 0x58f70028, 0x58f70027, 0x58f70026, 0x58f70025, 2661 0x57f7002d, 0x57f7002b, 0x57f7002a, 0x57f70029, 2662 0x57f70028, 0x57f70027, 0x57f70026, 0x57f70025, 2663 0x56f7002d, 0x56f7002b, 0x56f7002a, 0x56f70029, 2664 0x56f70028, 0x56f70027, 0x56f70026, 0x56f70025, 2665 0x55f7002d, 0x55f7002b, 0x55f7002a, 0x55f70029, 2666 0x55f70028, 0x55f70027, 0x55f70026, 0x55f70025, 2667 0x54f7002d, 0x54f7002b, 0x54f7002a, 0x54f70029, 2668 0x54f70028, 0x54f70027, 0x54f70026, 0x54f70025, 2669 0x53f7002d, 0x53f7002b, 0x53f7002a, 0x53f70029, 2670 0x53f70028, 0x53f70027, 0x53f70026, 0x53f70025, 2671 0x52f7002d, 0x52f7002b, 0x52f7002a, 0x52f70029, 2672 0x52f70028, 0x52f70027, 0x52f70026, 0x52f70025, 2673 0x51f7002d, 0x51f7002b, 0x51f7002a, 0x51f70029, 2674 0x51f70028, 0x51f70027, 0x51f70026, 0x51f70025, 2675 0x50f7002d, 0x50f7002b, 0x50f7002a, 0x50f70029, 2676 0x50f70028, 0x50f70027, 0x50f70026, 0x50f70025, 2677 }; 2678 2679 static const uint32_t bwn_ntab_tx_gain_ipa_rev5_2g[] = { 2680 0x1ff7002d, 0x1ff7002b, 0x1ff7002a, 0x1ff70029, 2681 0x1ff70028, 0x1ff70027, 0x1ff70026, 0x1ff70025, 2682 0x1ef7002d, 0x1ef7002b, 0x1ef7002a, 0x1ef70029, 2683 0x1ef70028, 0x1ef70027, 0x1ef70026, 0x1ef70025, 2684 0x1df7002d, 0x1df7002b, 0x1df7002a, 0x1df70029, 2685 0x1df70028, 0x1df70027, 0x1df70026, 0x1df70025, 2686 0x1cf7002d, 0x1cf7002b, 0x1cf7002a, 0x1cf70029, 2687 0x1cf70028, 0x1cf70027, 0x1cf70026, 0x1cf70025, 2688 0x1bf7002d, 0x1bf7002b, 0x1bf7002a, 0x1bf70029, 2689 0x1bf70028, 0x1bf70027, 0x1bf70026, 0x1bf70025, 2690 0x1af7002d, 0x1af7002b, 0x1af7002a, 0x1af70029, 2691 0x1af70028, 0x1af70027, 0x1af70026, 0x1af70025, 2692 0x19f7002d, 0x19f7002b, 0x19f7002a, 0x19f70029, 2693 0x19f70028, 0x19f70027, 0x19f70026, 0x19f70025, 2694 0x18f7002d, 0x18f7002b, 0x18f7002a, 0x18f70029, 2695 0x18f70028, 0x18f70027, 0x18f70026, 0x18f70025, 2696 0x17f7002d, 0x17f7002b, 0x17f7002a, 0x17f70029, 2697 0x17f70028, 0x17f70027, 0x17f70026, 0x17f70025, 2698 0x16f7002d, 0x16f7002b, 0x16f7002a, 0x16f70029, 2699 0x16f70028, 0x16f70027, 0x16f70026, 0x16f70025, 2700 0x15f7002d, 0x15f7002b, 0x15f7002a, 0x15f70029, 2701 0x15f70028, 0x15f70027, 0x15f70026, 0x15f70025, 2702 0x14f7002d, 0x14f7002b, 0x14f7002a, 0x14f70029, 2703 0x14f70028, 0x14f70027, 0x14f70026, 0x14f70025, 2704 0x13f7002d, 0x13f7002b, 0x13f7002a, 0x13f70029, 2705 0x13f70028, 0x13f70027, 0x13f70026, 0x13f70025, 2706 0x12f7002d, 0x12f7002b, 0x12f7002a, 0x12f70029, 2707 0x12f70028, 0x12f70027, 0x12f70026, 0x12f70025, 2708 0x11f7002d, 0x11f7002b, 0x11f7002a, 0x11f70029, 2709 0x11f70028, 0x11f70027, 0x11f70026, 0x11f70025, 2710 0x10f7002d, 0x10f7002b, 0x10f7002a, 0x10f70029, 2711 0x10f70028, 0x10f70027, 0x10f70026, 0x10f70025, 2712 }; 2713 2714 static const uint32_t bwn_ntab_tx_gain_ipa_rev6_2g[] = { 2715 0x0ff7002d, 0x0ff7002b, 0x0ff7002a, 0x0ff70029, 2716 0x0ff70028, 0x0ff70027, 0x0ff70026, 0x0ff70025, 2717 0x0ef7002d, 0x0ef7002b, 0x0ef7002a, 0x0ef70029, 2718 0x0ef70028, 0x0ef70027, 0x0ef70026, 0x0ef70025, 2719 0x0df7002d, 0x0df7002b, 0x0df7002a, 0x0df70029, 2720 0x0df70028, 0x0df70027, 0x0df70026, 0x0df70025, 2721 0x0cf7002d, 0x0cf7002b, 0x0cf7002a, 0x0cf70029, 2722 0x0cf70028, 0x0cf70027, 0x0cf70026, 0x0cf70025, 2723 0x0bf7002d, 0x0bf7002b, 0x0bf7002a, 0x0bf70029, 2724 0x0bf70028, 0x0bf70027, 0x0bf70026, 0x0bf70025, 2725 0x0af7002d, 0x0af7002b, 0x0af7002a, 0x0af70029, 2726 0x0af70028, 0x0af70027, 0x0af70026, 0x0af70025, 2727 0x09f7002d, 0x09f7002b, 0x09f7002a, 0x09f70029, 2728 0x09f70028, 0x09f70027, 0x09f70026, 0x09f70025, 2729 0x08f7002d, 0x08f7002b, 0x08f7002a, 0x08f70029, 2730 0x08f70028, 0x08f70027, 0x08f70026, 0x08f70025, 2731 0x07f7002d, 0x07f7002b, 0x07f7002a, 0x07f70029, 2732 0x07f70028, 0x07f70027, 0x07f70026, 0x07f70025, 2733 0x06f7002d, 0x06f7002b, 0x06f7002a, 0x06f70029, 2734 0x06f70028, 0x06f70027, 0x06f70026, 0x06f70025, 2735 0x05f7002d, 0x05f7002b, 0x05f7002a, 0x05f70029, 2736 0x05f70028, 0x05f70027, 0x05f70026, 0x05f70025, 2737 0x04f7002d, 0x04f7002b, 0x04f7002a, 0x04f70029, 2738 0x04f70028, 0x04f70027, 0x04f70026, 0x04f70025, 2739 0x03f7002d, 0x03f7002b, 0x03f7002a, 0x03f70029, 2740 0x03f70028, 0x03f70027, 0x03f70026, 0x03f70025, 2741 0x02f7002d, 0x02f7002b, 0x02f7002a, 0x02f70029, 2742 0x02f70028, 0x02f70027, 0x02f70026, 0x02f70025, 2743 0x01f7002d, 0x01f7002b, 0x01f7002a, 0x01f70029, 2744 0x01f70028, 0x01f70027, 0x01f70026, 0x01f70025, 2745 0x00f7002d, 0x00f7002b, 0x00f7002a, 0x00f70029, 2746 0x00f70028, 0x00f70027, 0x00f70026, 0x00f70025, 2747 }; 2748 2749 /* Copied from brcmsmac (5.75.11): nphy_tpc_txgain_ipa_2g_2057rev5 */ 2750 static const uint32_t bwn_ntab_tx_gain_ipa_2057_rev5_2g[] = { 2751 0x30ff0031, 0x30e70031, 0x30e7002e, 0x30cf002e, 2752 0x30bf002e, 0x30af002e, 0x309f002f, 0x307f0033, 2753 0x307f0031, 0x307f002e, 0x3077002e, 0x306f002e, 2754 0x3067002e, 0x305f002f, 0x30570030, 0x3057002d, 2755 0x304f002e, 0x30470031, 0x3047002e, 0x3047002c, 2756 0x30470029, 0x303f002c, 0x303f0029, 0x3037002d, 2757 0x3037002a, 0x30370028, 0x302f002c, 0x302f002a, 2758 0x302f0028, 0x302f0026, 0x3027002c, 0x30270029, 2759 0x30270027, 0x30270025, 0x30270023, 0x301f002c, 2760 0x301f002a, 0x301f0028, 0x301f0025, 0x301f0024, 2761 0x301f0022, 0x301f001f, 0x3017002d, 0x3017002b, 2762 0x30170028, 0x30170026, 0x30170024, 0x30170022, 2763 0x30170020, 0x3017001e, 0x3017001d, 0x3017001b, 2764 0x3017001a, 0x30170018, 0x30170017, 0x30170015, 2765 0x300f002c, 0x300f0029, 0x300f0027, 0x300f0024, 2766 0x300f0022, 0x300f0021, 0x300f001f, 0x300f001d, 2767 0x300f001b, 0x300f001a, 0x300f0018, 0x300f0017, 2768 0x300f0016, 0x300f0015, 0x300f0115, 0x300f0215, 2769 0x300f0315, 0x300f0415, 0x300f0515, 0x300f0615, 2770 0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715, 2771 0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715, 2772 0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715, 2773 0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715, 2774 0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715, 2775 0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715, 2776 0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715, 2777 0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715, 2778 0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715, 2779 0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715, 2780 0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715, 2781 0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715, 2782 0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715, 2783 }; 2784 2785 /* Extracted from MMIO dump of 6.30.223.141 */ 2786 static const uint32_t bwn_ntab_tx_gain_ipa_2057_rev9_2g[] = { 2787 0x60ff0031, 0x60e7002c, 0x60cf002a, 0x60c70029, 2788 0x60b70029, 0x60a70029, 0x609f002a, 0x6097002b, 2789 0x6087002e, 0x60770031, 0x606f0032, 0x60670034, 2790 0x60670031, 0x605f0033, 0x605f0031, 0x60570033, 2791 0x60570030, 0x6057002d, 0x6057002b, 0x604f002d, 2792 0x604f002b, 0x604f0029, 0x604f0026, 0x60470029, 2793 0x60470027, 0x603f0029, 0x603f0027, 0x603f0025, 2794 0x60370029, 0x60370027, 0x60370024, 0x602f002a, 2795 0x602f0028, 0x602f0026, 0x602f0024, 0x6027002a, 2796 0x60270028, 0x60270026, 0x60270024, 0x60270022, 2797 0x601f002b, 0x601f0029, 0x601f0027, 0x601f0024, 2798 0x601f0022, 0x601f0020, 0x601f001f, 0x601f001d, 2799 0x60170029, 0x60170027, 0x60170025, 0x60170023, 2800 0x60170021, 0x6017001f, 0x6017001d, 0x6017001c, 2801 0x6017001a, 0x60170018, 0x60170018, 0x60170016, 2802 0x60170015, 0x600f0029, 0x600f0027, 0x600f0025, 2803 0x600f0023, 0x600f0021, 0x600f001f, 0x600f001d, 2804 0x600f001c, 0x600f001a, 0x600f0019, 0x600f0018, 2805 0x600f0016, 0x600f0015, 0x600f0115, 0x600f0215, 2806 0x600f0315, 0x600f0415, 0x600f0515, 0x600f0615, 2807 0x600f0715, 0x600f0715, 0x600f0715, 0x600f0715, 2808 0x600f0715, 0x600f0715, 0x600f0715, 0x600f0715, 2809 0x600f0715, 0x600f0715, 0x600f0715, 0x600f0715, 2810 0x600f0715, 0x600f0715, 0x600f0715, 0x600f0715, 2811 0x600f0715, 0x600f0715, 0x600f0715, 0x600f0715, 2812 0x600f0715, 0x600f0715, 0x600f0715, 0x600f0715, 2813 0x600f0715, 0x600f0715, 0x600f0715, 0x600f0715, 2814 0x600f0715, 0x600f0715, 0x600f0715, 0x600f0715, 2815 0x600f0715, 0x600f0715, 0x600f0715, 0x600f0715, 2816 0x600f0715, 0x600f0715, 0x600f0715, 0x600f0715, 2817 0x600f0715, 0x600f0715, 0x600f0715, 0x600f0715, 2818 0x600f0715, 0x600f0715, 0x600f0715, 0x600f0715, 2819 }; 2820 2821 /* Extracted from MMIO dump of 6.30.223.248 */ 2822 static const uint32_t bwn_ntab_tx_gain_ipa_2057_rev14_2g[] = { 2823 0x50df002e, 0x50cf002d, 0x50bf002c, 0x50b7002b, 2824 0x50af002a, 0x50a70029, 0x509f0029, 0x50970028, 2825 0x508f0027, 0x50870027, 0x507f0027, 0x50770027, 2826 0x506f0027, 0x50670027, 0x505f0028, 0x50570029, 2827 0x504f002b, 0x5047002e, 0x5047002b, 0x50470029, 2828 0x503f002c, 0x503f0029, 0x5037002c, 0x5037002a, 2829 0x50370028, 0x502f002d, 0x502f002b, 0x502f0028, 2830 0x502f0026, 0x5027002d, 0x5027002a, 0x50270028, 2831 0x50270026, 0x50270024, 0x501f002e, 0x501f002b, 2832 0x501f0029, 0x501f0027, 0x501f0024, 0x501f0022, 2833 0x501f0020, 0x501f001f, 0x5017002c, 0x50170029, 2834 0x50170027, 0x50170024, 0x50170022, 0x50170021, 2835 0x5017001f, 0x5017001d, 0x5017001b, 0x5017001a, 2836 0x50170018, 0x50170017, 0x50170015, 0x500f002c, 2837 0x500f002a, 0x500f0027, 0x500f0025, 0x500f0023, 2838 0x500f0022, 0x500f001f, 0x500f001e, 0x500f001c, 2839 0x500f001a, 0x500f0019, 0x500f0018, 0x500f0016, 2840 0x500f0015, 0x500f0015, 0x500f0015, 0x500f0015, 2841 0x500f0015, 0x500f0015, 0x500f0015, 0x500f0015, 2842 0x500f0015, 0x500f0015, 0x500f0015, 0x500f0015, 2843 0x500f0015, 0x500f0015, 0x500f0015, 0x500f0015, 2844 0x500f0015, 0x500f0015, 0x500f0015, 0x500f0015, 2845 0x500f0015, 0x500f0015, 0x500f0015, 0x500f0015, 2846 0x500f0015, 0x500f0015, 0x500f0015, 0x500f0015, 2847 0x500f0015, 0x500f0015, 0x500f0015, 0x500f0015, 2848 0x500f0015, 0x500f0015, 0x500f0015, 0x500f0015, 2849 0x500f0015, 0x500f0015, 0x500f0015, 0x500f0015, 2850 0x500f0015, 0x500f0015, 0x500f0015, 0x500f0015, 2851 0x500f0015, 0x500f0015, 0x500f0015, 0x500f0015, 2852 0x500f0015, 0x500f0015, 0x500f0015, 0x500f0015, 2853 0x500f0015, 0x500f0015, 0x500f0015, 0x500f0015, 2854 0x500f0015, 0x500f0015, 0x500f0015, 0x500f0015, 2855 }; 2856 2857 /* IPA 2 5Hz */ 2858 2859 static const uint32_t bwn_ntab_tx_gain_ipa_rev3_5g[] = { 2860 0x7ff70035, 0x7ff70033, 0x7ff70032, 0x7ff70031, 2861 0x7ff7002f, 0x7ff7002e, 0x7ff7002d, 0x7ff7002b, 2862 0x7ff7002a, 0x7ff70029, 0x7ff70028, 0x7ff70027, 2863 0x7ff70026, 0x7ff70024, 0x7ff70023, 0x7ff70022, 2864 0x7ef70028, 0x7ef70027, 0x7ef70026, 0x7ef70025, 2865 0x7ef70024, 0x7ef70023, 0x7df70028, 0x7df70027, 2866 0x7df70026, 0x7df70025, 0x7df70024, 0x7df70023, 2867 0x7df70022, 0x7cf70029, 0x7cf70028, 0x7cf70027, 2868 0x7cf70026, 0x7cf70025, 0x7cf70023, 0x7cf70022, 2869 0x7bf70029, 0x7bf70028, 0x7bf70026, 0x7bf70025, 2870 0x7bf70024, 0x7bf70023, 0x7bf70022, 0x7bf70021, 2871 0x7af70029, 0x7af70028, 0x7af70027, 0x7af70026, 2872 0x7af70025, 0x7af70024, 0x7af70023, 0x7af70022, 2873 0x79f70029, 0x79f70028, 0x79f70027, 0x79f70026, 2874 0x79f70025, 0x79f70024, 0x79f70023, 0x79f70022, 2875 0x78f70029, 0x78f70028, 0x78f70027, 0x78f70026, 2876 0x78f70025, 0x78f70024, 0x78f70023, 0x78f70022, 2877 0x77f70029, 0x77f70028, 0x77f70027, 0x77f70026, 2878 0x77f70025, 0x77f70024, 0x77f70023, 0x77f70022, 2879 0x76f70029, 0x76f70028, 0x76f70027, 0x76f70026, 2880 0x76f70024, 0x76f70023, 0x76f70022, 0x76f70021, 2881 0x75f70029, 0x75f70028, 0x75f70027, 0x75f70026, 2882 0x75f70025, 0x75f70024, 0x75f70023, 0x74f70029, 2883 0x74f70028, 0x74f70026, 0x74f70025, 0x74f70024, 2884 0x74f70023, 0x74f70022, 0x73f70029, 0x73f70027, 2885 0x73f70026, 0x73f70025, 0x73f70024, 0x73f70023, 2886 0x73f70022, 0x72f70028, 0x72f70027, 0x72f70026, 2887 0x72f70025, 0x72f70024, 0x72f70023, 0x72f70022, 2888 0x71f70028, 0x71f70027, 0x71f70026, 0x71f70025, 2889 0x71f70024, 0x71f70023, 0x70f70028, 0x70f70027, 2890 0x70f70026, 0x70f70024, 0x70f70023, 0x70f70022, 2891 0x70f70021, 0x70f70020, 0x70f70020, 0x70f7001f, 2892 }; 2893 2894 /* Extracted from MMIO dump of 6.30.223.141 */ 2895 static const uint32_t bwn_ntab_tx_gain_ipa_2057_rev9_5g[] = { 2896 0x7f7f0053, 0x7f7f004b, 0x7f7f0044, 0x7f7f003f, 2897 0x7f7f0039, 0x7f7f0035, 0x7f7f0032, 0x7f7f0030, 2898 0x7f7f002d, 0x7e7f0030, 0x7e7f002d, 0x7d7f0032, 2899 0x7d7f002f, 0x7d7f002c, 0x7c7f0032, 0x7c7f0030, 2900 0x7c7f002d, 0x7b7f0030, 0x7b7f002e, 0x7b7f002b, 2901 0x7a7f0032, 0x7a7f0030, 0x7a7f002d, 0x7a7f002b, 2902 0x797f0030, 0x797f002e, 0x797f002b, 0x797f0029, 2903 0x787f0030, 0x787f002d, 0x787f002b, 0x777f0032, 2904 0x777f0030, 0x777f002d, 0x777f002b, 0x767f0031, 2905 0x767f002f, 0x767f002c, 0x767f002a, 0x757f0031, 2906 0x757f002f, 0x757f002c, 0x757f002a, 0x747f0030, 2907 0x747f002d, 0x747f002b, 0x737f0032, 0x737f002f, 2908 0x737f002c, 0x737f002a, 0x727f0030, 0x727f002d, 2909 0x727f002b, 0x727f0029, 0x717f0030, 0x717f002d, 2910 0x717f002b, 0x707f0031, 0x707f002f, 0x707f002c, 2911 0x707f002a, 0x707f0027, 0x707f0025, 0x707f0023, 2912 0x707f0021, 0x707f001f, 0x707f001d, 0x707f001c, 2913 0x707f001a, 0x707f0019, 0x707f0017, 0x707f0016, 2914 0x707f0015, 0x707f0014, 0x707f0012, 0x707f0012, 2915 0x707f0011, 0x707f0010, 0x707f000f, 0x707f000e, 2916 0x707f000d, 0x707f000d, 0x707f000c, 0x707f000b, 2917 0x707f000a, 0x707f000a, 0x707f0009, 0x707f0008, 2918 0x707f0008, 0x707f0008, 0x707f0008, 0x707f0007, 2919 0x707f0007, 0x707f0006, 0x707f0006, 0x707f0006, 2920 0x707f0005, 0x707f0005, 0x707f0005, 0x707f0004, 2921 0x707f0004, 0x707f0004, 0x707f0003, 0x707f0003, 2922 0x707f0003, 0x707f0003, 0x707f0003, 0x707f0003, 2923 0x707f0003, 0x707f0003, 0x707f0003, 0x707f0003, 2924 0x707f0002, 0x707f0002, 0x707f0002, 0x707f0002, 2925 0x707f0002, 0x707f0002, 0x707f0002, 0x707f0002, 2926 0x707f0002, 0x707f0001, 0x707f0001, 0x707f0001, 2927 0x707f0001, 0x707f0001, 0x707f0001, 0x707f0001, 2928 }; 2929 2930 const int8_t bwn_ntab_papd_pga_gain_delta_ipa_2g[] = { 2931 -114, -108, -98, -91, -84, -78, -70, -62, 2932 -54, -46, -39, -31, -23, -15, -8, 0 2933 }; 2934 2935 /* Extracted from MMIO dump of 6.30.223.248 2936 * Entries: 0, 15, 17, 21, 24, 26, 27, 29, 30 were guessed 2937 */ 2938 static const int16_t bwn_ntab_rf_pwr_offset_2057_rev9_2g[] = { 2939 -133, -133, -107, -92, -81, 2940 -73, -66, -61, -56, -52, 2941 -48, -44, -41, -37, -34, 2942 -31, -28, -25, -22, -19, 2943 -17, -14, -12, -10, -9, 2944 -7, -5, -4, -3, -2, 2945 -1, 0, 2946 }; 2947 2948 /* Extracted from MMIO dump of 6.30.223.248 */ 2949 static const int16_t bwn_ntab_rf_pwr_offset_2057_rev9_5g[] = { 2950 -101, -94, -86, -79, -72, 2951 -65, -57, -50, -42, -35, 2952 -28, -21, -16, -9, -4, 2953 0, 2954 }; 2955 2956 /* Extracted from MMIO dump of 6.30.223.248 2957 * Entries: 0, 26, 28, 29, 30, 31 were guessed 2958 */ 2959 static const int16_t bwn_ntab_rf_pwr_offset_2057_rev14_2g[] = { 2960 -111, -111, -111, -84, -70, 2961 -59, -52, -45, -40, -36, 2962 -32, -29, -26, -23, -21, 2963 -18, -16, -15, -13, -11, 2964 -10, -8, -7, -6, -5, 2965 -4, -4, -3, -3, -2, 2966 -2, -1, 2967 }; 2968 2969 const uint16_t tbl_iqcal_gainparams[2][9][8] = { 2970 { 2971 { 0x000, 0, 0, 2, 0x69, 0x69, 0x69, 0x69 }, 2972 { 0x700, 7, 0, 0, 0x69, 0x69, 0x69, 0x69 }, 2973 { 0x710, 7, 1, 0, 0x68, 0x68, 0x68, 0x68 }, 2974 { 0x720, 7, 2, 0, 0x67, 0x67, 0x67, 0x67 }, 2975 { 0x730, 7, 3, 0, 0x66, 0x66, 0x66, 0x66 }, 2976 { 0x740, 7, 4, 0, 0x65, 0x65, 0x65, 0x65 }, 2977 { 0x741, 7, 4, 1, 0x65, 0x65, 0x65, 0x65 }, 2978 { 0x742, 7, 4, 2, 0x65, 0x65, 0x65, 0x65 }, 2979 { 0x743, 7, 4, 3, 0x65, 0x65, 0x65, 0x65 } 2980 }, 2981 { 2982 { 0x000, 7, 0, 0, 0x79, 0x79, 0x79, 0x79 }, 2983 { 0x700, 7, 0, 0, 0x79, 0x79, 0x79, 0x79 }, 2984 { 0x710, 7, 1, 0, 0x79, 0x79, 0x79, 0x79 }, 2985 { 0x720, 7, 2, 0, 0x78, 0x78, 0x78, 0x78 }, 2986 { 0x730, 7, 3, 0, 0x78, 0x78, 0x78, 0x78 }, 2987 { 0x740, 7, 4, 0, 0x78, 0x78, 0x78, 0x78 }, 2988 { 0x741, 7, 4, 1, 0x78, 0x78, 0x78, 0x78 }, 2989 { 0x742, 7, 4, 2, 0x78, 0x78, 0x78, 0x78 }, 2990 { 0x743, 7, 4, 3, 0x78, 0x78, 0x78, 0x78 } 2991 } 2992 }; 2993 2994 const struct bwn_nphy_txiqcal_ladder ladder_lo[] = { 2995 { 3, 0 }, 2996 { 4, 0 }, 2997 { 6, 0 }, 2998 { 9, 0 }, 2999 { 13, 0 }, 3000 { 18, 0 }, 3001 { 25, 0 }, 3002 { 25, 1 }, 3003 { 25, 2 }, 3004 { 25, 3 }, 3005 { 25, 4 }, 3006 { 25, 5 }, 3007 { 25, 6 }, 3008 { 25, 7 }, 3009 { 35, 7 }, 3010 { 50, 7 }, 3011 { 71, 7 }, 3012 { 100, 7 } 3013 }; 3014 3015 const struct bwn_nphy_txiqcal_ladder ladder_iq[] = { 3016 { 3, 0 }, 3017 { 4, 0 }, 3018 { 6, 0 }, 3019 { 9, 0 }, 3020 { 13, 0 }, 3021 { 18, 0 }, 3022 { 25, 0 }, 3023 { 35, 0 }, 3024 { 50, 0 }, 3025 { 71, 0 }, 3026 { 100, 0 }, 3027 { 100, 1 }, 3028 { 100, 2 }, 3029 { 100, 3 }, 3030 { 100, 4 }, 3031 { 100, 5 }, 3032 { 100, 6 }, 3033 { 100, 7 } 3034 }; 3035 3036 const uint16_t loscale[] = { 3037 256, 256, 271, 271, 3038 287, 256, 256, 271, 3039 271, 287, 287, 304, 3040 304, 256, 256, 271, 3041 271, 287, 287, 304, 3042 304, 322, 322, 341, 3043 341, 362, 362, 383, 3044 383, 256, 256, 271, 3045 271, 287, 287, 304, 3046 304, 322, 322, 256, 3047 256, 271, 271, 287, 3048 287, 304, 304, 322, 3049 322, 341, 341, 362, 3050 362, 256, 256, 271, 3051 271, 287, 287, 304, 3052 304, 322, 322, 256, 3053 256, 271, 271, 287, 3054 287, 304, 304, 322, 3055 322, 341, 341, 362, 3056 362, 256, 256, 271, 3057 271, 287, 287, 304, 3058 304, 322, 322, 341, 3059 341, 362, 362, 383, 3060 383, 406, 406, 430, 3061 430, 455, 455, 482, 3062 482, 511, 511, 541, 3063 541, 573, 573, 607, 3064 607, 643, 643, 681, 3065 681, 722, 722, 764, 3066 764, 810, 810, 858, 3067 858, 908, 908, 962, 3068 962, 1019, 1019, 256 3069 }; 3070 3071 const uint16_t tbl_tx_iqlo_cal_loft_ladder_40[] = { 3072 0x0200, 0x0300, 0x0400, 0x0700, 3073 0x0900, 0x0c00, 0x1200, 0x1201, 3074 0x1202, 0x1203, 0x1204, 0x1205, 3075 0x1206, 0x1207, 0x1907, 0x2307, 3076 0x3207, 0x4707 3077 }; 3078 3079 const uint16_t tbl_tx_iqlo_cal_loft_ladder_20[] = { 3080 0x0300, 0x0500, 0x0700, 0x0900, 3081 0x0d00, 0x1100, 0x1900, 0x1901, 3082 0x1902, 0x1903, 0x1904, 0x1905, 3083 0x1906, 0x1907, 0x2407, 0x3207, 3084 0x4607, 0x6407 3085 }; 3086 3087 const uint16_t tbl_tx_iqlo_cal_iqimb_ladder_40[] = { 3088 0x0100, 0x0200, 0x0400, 0x0700, 3089 0x0900, 0x0c00, 0x1200, 0x1900, 3090 0x2300, 0x3200, 0x4700, 0x4701, 3091 0x4702, 0x4703, 0x4704, 0x4705, 3092 0x4706, 0x4707 3093 }; 3094 3095 const uint16_t tbl_tx_iqlo_cal_iqimb_ladder_20[] = { 3096 0x0200, 0x0300, 0x0600, 0x0900, 3097 0x0d00, 0x1100, 0x1900, 0x2400, 3098 0x3200, 0x4600, 0x6400, 0x6401, 3099 0x6402, 0x6403, 0x6404, 0x6405, 3100 0x6406, 0x6407 3101 }; 3102 3103 const uint16_t tbl_tx_iqlo_cal_startcoefs_nphyrev3[BWN_NTAB_TX_IQLO_CAL_STARTCOEFS_REV3] = { }; 3104 3105 const uint16_t tbl_tx_iqlo_cal_startcoefs[BWN_NTAB_TX_IQLO_CAL_STARTCOEFS] = { }; 3106 3107 const uint16_t tbl_tx_iqlo_cal_cmds_recal_nphyrev3[] = { 3108 0x8423, 0x8323, 0x8073, 0x8256, 3109 0x8045, 0x8223, 0x9423, 0x9323, 3110 0x9073, 0x9256, 0x9045, 0x9223 3111 }; 3112 3113 const uint16_t tbl_tx_iqlo_cal_cmds_recal[] = { 3114 0x8101, 0x8253, 0x8053, 0x8234, 3115 0x8034, 0x9101, 0x9253, 0x9053, 3116 0x9234, 0x9034 3117 }; 3118 3119 const uint16_t tbl_tx_iqlo_cal_cmds_fullcal[] = { 3120 0x8123, 0x8264, 0x8086, 0x8245, 3121 0x8056, 0x9123, 0x9264, 0x9086, 3122 0x9245, 0x9056 3123 }; 3124 3125 const uint16_t tbl_tx_iqlo_cal_cmds_fullcal_nphyrev3[] = { 3126 0x8434, 0x8334, 0x8084, 0x8267, 3127 0x8056, 0x8234, 0x9434, 0x9334, 3128 0x9084, 0x9267, 0x9056, 0x9234 3129 }; 3130 3131 const int16_t tbl_tx_filter_coef_rev4[7][15] = { 3132 { -377, 137, -407, 208, -1527, 3133 956, 93, 186, 93, 230, 3134 -44, 230, 201, -191, 201 }, 3135 { -77, 20, -98, 49, -93, 3136 60, 56, 111, 56, 26, 3137 -5, 26, 34, -32, 34 }, 3138 { -360, 164, -376, 164, -1533, 3139 576, 308, -314, 308, 121, 3140 -73, 121, 91, 124, 91 }, 3141 { -295, 200, -363, 142, -1391, 3142 826, 151, 301, 151, 151, 3143 301, 151, 602, -752, 602 }, 3144 { -92, 58, -96, 49, -104, 3145 44, 17, 35, 17, 12, 3146 25, 12, 13, 27, 13 }, 3147 { -375, 136, -399, 209, -1479, 3148 949, 130, 260, 130, 230, 3149 -44, 230, 201, -191, 201 }, 3150 { 0xed9, 0xc8, 0xe95, 0x8e, 0xa91, 3151 0x33a, 0x97, 0x12d, 0x97, 0x97, 3152 0x12d, 0x97, 0x25a, 0xd10, 0x25a } 3153 }; 3154 3155 /* addr0, addr1, bmask, shift */ 3156 const struct bwn_nphy_rf_control_override_rev2 tbl_rf_control_override_rev2[] = { 3157 { 0x78, 0x78, 0x0038, 3 }, /* for field == 0x0002 (fls == 2) */ 3158 { 0x7A, 0x7D, 0x0001, 0 }, /* for field == 0x0004 (fls == 3) */ 3159 { 0x7A, 0x7D, 0x0002, 1 }, /* for field == 0x0008 (fls == 4) */ 3160 { 0x7A, 0x7D, 0x0004, 2 }, /* for field == 0x0010 (fls == 5) */ 3161 { 0x7A, 0x7D, 0x0030, 4 }, /* for field == 0x0020 (fls == 6) */ 3162 { 0x7A, 0x7D, 0x00C0, 6 }, /* for field == 0x0040 (fls == 7) */ 3163 { 0x7A, 0x7D, 0x0100, 8 }, /* for field == 0x0080 (fls == 8) */ 3164 { 0x7A, 0x7D, 0x0200, 9 }, /* for field == 0x0100 (fls == 9) */ 3165 { 0x78, 0x78, 0x0004, 2 }, /* for field == 0x0200 (fls == 10) */ 3166 { 0x7B, 0x7E, 0x01FF, 0 }, /* for field == 0x0400 (fls == 11) */ 3167 { 0x7C, 0x7F, 0x01FF, 0 }, /* for field == 0x0800 (fls == 12) */ 3168 { 0x78, 0x78, 0x0100, 8 }, /* for field == 0x1000 (fls == 13) */ 3169 { 0x78, 0x78, 0x0200, 9 }, /* for field == 0x2000 (fls == 14) */ 3170 { 0x78, 0x78, 0xF000, 12 } /* for field == 0x4000 (fls == 15) */ 3171 }; 3172 3173 /* val_mask, val_shift, en_addr0, val_addr0, en_addr1, val_addr1 */ 3174 const struct bwn_nphy_rf_control_override_rev3 tbl_rf_control_override_rev3[] = { 3175 { 0x8000, 15, 0xE5, 0xF9, 0xE6, 0xFB }, /* field == 0x0001 (fls 1) */ 3176 { 0x0001, 0, 0xE7, 0x7A, 0xEC, 0x7D }, /* field == 0x0002 (fls 2) */ 3177 { 0x0002, 1, 0xE7, 0x7A, 0xEC, 0x7D }, /* field == 0x0004 (fls 3) */ 3178 { 0x0004, 2, 0xE7, 0x7A, 0xEC, 0x7D }, /* field == 0x0008 (fls 4) */ 3179 { 0x0010, 4, 0xE7, 0x7A, 0xEC, 0x7D }, /* field == 0x0010 (fls 5) */ 3180 { 0x0020, 5, 0xE7, 0x7A, 0xEC, 0x7D }, /* field == 0x0020 (fls 6) */ 3181 { 0x0040, 6, 0xE7, 0x7A, 0xEC, 0x7D }, /* field == 0x0040 (fls 7) */ 3182 { 0x0080, 7, 0xE7, 0x7A, 0xEC, 0x7D }, /* field == 0x0080 (fls 8) */ 3183 { 0x0100, 8, 0xE7, 0x7A, 0xEC, 0x7D }, /* field == 0x0100 (fls 9) */ 3184 { 0x0007, 0, 0xE7, 0xF8, 0xEC, 0xFA }, /* field == 0x0200 (fls 10) */ 3185 { 0x0070, 4, 0xE7, 0xF8, 0xEC, 0xFA }, /* field == 0x0400 (fls 11) */ 3186 { 0xE000, 13, 0xE7, 0x7A, 0xEC, 0x7D }, /* field == 0x0800 (fls 12) */ 3187 { 0xFFFF, 0, 0xE7, 0x7B, 0xEC, 0x7E }, /* field == 0x1000 (fls 13) */ 3188 { 0xFFFF, 0, 0xE7, 0x7C, 0xEC, 0x7F }, /* field == 0x2000 (fls 14) */ 3189 { 0x00C0, 6, 0xE7, 0xF9, 0xEC, 0xFB } /* field == 0x4000 (fls 15) */ 3190 }; 3191 3192 /* field, val_addr_core0, val_addr_core1, val_mask, val_shift */ 3193 static const struct bwn_nphy_rf_control_override_rev7 3194 tbl_rf_control_override_rev7_over0[] = { 3195 { 0x0004, 0x07A, 0x07D, 0x0002, 1 }, 3196 { 0x0008, 0x07A, 0x07D, 0x0004, 2 }, 3197 { 0x0010, 0x07A, 0x07D, 0x0010, 4 }, 3198 { 0x0020, 0x07A, 0x07D, 0x0020, 5 }, 3199 { 0x0040, 0x07A, 0x07D, 0x0040, 6 }, 3200 { 0x0080, 0x07A, 0x07D, 0x0080, 7 }, 3201 { 0x0400, 0x0F8, 0x0FA, 0x0070, 4 }, 3202 { 0x0800, 0x07B, 0x07E, 0xFFFF, 0 }, 3203 { 0x1000, 0x07C, 0x07F, 0xFFFF, 0 }, 3204 { 0x6000, 0x348, 0x349, 0x00FF, 0 }, 3205 { 0x2000, 0x348, 0x349, 0x000F, 0 }, 3206 }; 3207 3208 /* field, val_addr_core0, val_addr_core1, val_mask, val_shift */ 3209 static const struct bwn_nphy_rf_control_override_rev7 3210 tbl_rf_control_override_rev7_over1[] = { 3211 { 0x0002, 0x340, 0x341, 0x0002, 1 }, 3212 { 0x0008, 0x340, 0x341, 0x0008, 3 }, 3213 { 0x0020, 0x340, 0x341, 0x0020, 5 }, 3214 { 0x0010, 0x340, 0x341, 0x0010, 4 }, 3215 { 0x0004, 0x340, 0x341, 0x0004, 2 }, 3216 { 0x0080, 0x340, 0x341, 0x0700, 8 }, 3217 { 0x0800, 0x340, 0x341, 0x4000, 14 }, 3218 { 0x0400, 0x340, 0x341, 0x2000, 13 }, 3219 { 0x0200, 0x340, 0x341, 0x0800, 12 }, 3220 { 0x0100, 0x340, 0x341, 0x0100, 11 }, 3221 { 0x0040, 0x340, 0x341, 0x0040, 6 }, 3222 { 0x0001, 0x340, 0x341, 0x0001, 0 }, 3223 }; 3224 3225 /* field, val_addr_core0, val_addr_core1, val_mask, val_shift */ 3226 static const struct bwn_nphy_rf_control_override_rev7 3227 tbl_rf_control_override_rev7_over2[] = { 3228 { 0x0008, 0x344, 0x345, 0x0008, 3 }, 3229 { 0x0002, 0x344, 0x345, 0x0002, 1 }, 3230 { 0x0001, 0x344, 0x345, 0x0001, 0 }, 3231 { 0x0004, 0x344, 0x345, 0x0004, 2 }, 3232 { 0x0010, 0x344, 0x345, 0x0010, 4 }, 3233 }; 3234 3235 static struct bwn_nphy_gain_ctl_workaround_entry nphy_gain_ctl_wa_phy6_radio11_ghz2 = { 3236 { 10, 14, 19, 27 }, 3237 { -5, 6, 10, 15 }, 3238 { 0xA, 0xA, 0xA, 0xA, 0xA, 0xA, 0xA, 0xA, 0xA, 0xA }, 3239 { 3, 3, 3, 3, 3, 3, 3, 3, 3, 3 }, 3240 0x427E, 3241 { 0x413F, 0x413F, 0x413F, 0x413F }, 3242 0x007E, 0x0066, 0x1074, 3243 0x18, 0x18, 0x18, 3244 0x01D0, 0x5, 3245 }; 3246 static struct bwn_nphy_gain_ctl_workaround_entry nphy_gain_ctl_workaround[2][4] = { 3247 { /* 2GHz */ 3248 { /* PHY rev 3 */ 3249 { 7, 11, 16, 23 }, 3250 { -5, 6, 10, 14 }, 3251 { 0xA, 0xA, 0xA, 0xA, 0xA, 0xA, 0xA, 0xA, 0xA, 0xA }, 3252 { 3, 3, 3, 3, 3, 3, 3, 3, 3, 3 }, 3253 0x627E, 3254 { 0x613F, 0x613F, 0x613F, 0x613F }, 3255 0x107E, 0x0066, 0x0074, 3256 0x18, 0x18, 0x18, 3257 0x020D, 0x5, 3258 }, 3259 { /* PHY rev 4 */ 3260 { 8, 12, 17, 25 }, 3261 { -5, 6, 10, 14 }, 3262 { 0xA, 0xA, 0xA, 0xA, 0xA, 0xA, 0xA, 0xA, 0xA, 0xA }, 3263 { 3, 3, 3, 3, 3, 3, 3, 3, 3, 3 }, 3264 0x527E, 3265 { 0x513F, 0x513F, 0x513F, 0x513F }, 3266 0x007E, 0x0066, 0x0074, 3267 0x18, 0x18, 0x18, 3268 0x01A1, 0x5, 3269 }, 3270 { /* PHY rev 5 */ 3271 { 9, 13, 18, 26 }, 3272 { -3, 7, 11, 16 }, 3273 { 0xA, 0xA, 0xA, 0xA, 0xA, 0xA, 0xA, 0xA, 0xA, 0xA }, 3274 { 3, 3, 3, 3, 3, 3, 3, 3, 3, 3 }, 3275 0x427E, /* invalid for external LNA! */ 3276 { 0x413F, 0x413F, 0x413F, 0x413F }, /* invalid for external LNA! */ 3277 0x1076, 0x0066, 0x0000, /* low is invalid (the last one) */ 3278 0x18, 0x18, 0x18, 3279 0x01D0, 0x9, 3280 }, 3281 { /* PHY rev 6+ */ 3282 { 8, 13, 18, 25 }, 3283 { -5, 6, 10, 14 }, 3284 { 0xA, 0xA, 0xA, 0xA, 0xA, 0xA, 0xA, 0xA, 0xA, 0xA }, 3285 { 3, 3, 3, 3, 3, 3, 3, 3, 3, 3 }, 3286 0x527E, /* invalid for external LNA! */ 3287 { 0x513F, 0x513F, 0x513F, 0x513F }, /* invalid for external LNA! */ 3288 0x007E, 0x0066, 0x0000, /* low is invalid (the last one) */ 3289 0x18, 0x18, 0x18, 3290 0x01D0, 0x5, 3291 }, 3292 }, 3293 { /* 5GHz */ 3294 { /* PHY rev 3 */ 3295 { 7, 11, 17, 23 }, 3296 { -6, 2, 6, 10 }, 3297 { 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13 }, 3298 { 6, 6, 6, 6, 6, 6, 6, 6, 6, 6 }, 3299 0x52DE, 3300 { 0x516F, 0x516F, 0x516F, 0x516F }, 3301 0x00DE, 0x00CA, 0x00CC, 3302 0x1E, 0x1E, 0x1E, 3303 0x01A1, 25, 3304 }, 3305 { /* PHY rev 4 */ 3306 { 8, 12, 18, 23 }, 3307 { -5, 2, 6, 10 }, 3308 { 0xD, 0xD, 0xD, 0xD, 0xD, 0xD, 0xD, 0xD, 0xD, 0xD }, 3309 { 4, 4, 4, 4, 4, 4, 4, 4, 4, 4 }, 3310 0x629E, 3311 { 0x614F, 0x614F, 0x614F, 0x614F }, 3312 0x029E, 0x1084, 0x0086, 3313 0x24, 0x24, 0x24, 3314 0x0107, 25, 3315 }, 3316 { /* PHY rev 5 */ 3317 { 6, 10, 16, 21 }, 3318 { -7, 0, 4, 8 }, 3319 { 0xD, 0xD, 0xD, 0xD, 0xD, 0xD, 0xD, 0xD, 0xD, 0xD }, 3320 { 4, 4, 4, 4, 4, 4, 4, 4, 4, 4 }, 3321 0x729E, 3322 { 0x714F, 0x714F, 0x714F, 0x714F }, 3323 0x029E, 0x2084, 0x2086, 3324 0x24, 0x24, 0x24, 3325 0x00A9, 25, 3326 }, 3327 { /* PHY rev 6+ */ 3328 { 6, 10, 16, 21 }, 3329 { -7, 0, 4, 8 }, 3330 { 0xD, 0xD, 0xD, 0xD, 0xD, 0xD, 0xD, 0xD, 0xD, 0xD }, 3331 { 4, 4, 4, 4, 4, 4, 4, 4, 4, 4 }, 3332 0x729E, 3333 { 0x714F, 0x714F, 0x714F, 0x714F }, 3334 0x029E, 0x2084, 0x2086, 3335 0x24, 0x24, 0x24, /* low is invalid for radio rev 11! */ 3336 0x00F0, 25, 3337 }, 3338 }, 3339 }; 3340 3341 static inline void assert_ntab_array_sizes(void) 3342 { 3343 #undef check 3344 #define check(table, size) \ 3345 CTASSERT(nitems(bwn_ntab_##table) == BWN_NTAB_##size##_SIZE) 3346 3347 check(adjustpower0, C0_ADJPLT); 3348 check(adjustpower1, C1_ADJPLT); 3349 check(bdi, BDI); 3350 check(channelest, CHANEST); 3351 check(estimatepowerlt0, C0_ESTPLT); 3352 check(estimatepowerlt1, C1_ESTPLT); 3353 check(framelookup, FRAMELT); 3354 check(framestruct, FRAMESTRUCT); 3355 check(gainctl0, C0_GAINCTL); 3356 check(gainctl1, C1_GAINCTL); 3357 check(intlevel, INTLEVEL); 3358 check(iqlt0, C0_IQLT); 3359 check(iqlt1, C1_IQLT); 3360 check(loftlt0, C0_LOFEEDTH); 3361 check(loftlt1, C1_LOFEEDTH); 3362 check(mcs, MCS); 3363 check(noisevar10, NOISEVAR10); 3364 check(noisevar11, NOISEVAR11); 3365 check(pilot, PILOT); 3366 check(pilotlt, PILOTLT); 3367 check(tdi20a0, TDI20A0); 3368 check(tdi20a1, TDI20A1); 3369 check(tdi40a0, TDI40A0); 3370 check(tdi40a1, TDI40A1); 3371 check(tdtrn, TDTRN); 3372 check(tmap, TMAP); 3373 3374 #undef check 3375 } 3376 3377 uint32_t bwn_ntab_read(struct bwn_mac *mac, uint32_t offset) 3378 { 3379 uint32_t type, value; 3380 3381 type = offset & BWN_NTAB_TYPEMASK; 3382 offset &= ~BWN_NTAB_TYPEMASK; 3383 3384 KASSERT(offset <= 0xFFFF, ("%s: invalid offset (%d)\n", 3385 __func__, offset)); 3386 3387 switch (type) { 3388 case BWN_NTAB_8BIT: 3389 BWN_PHY_WRITE(mac, BWN_NPHY_TABLE_ADDR, offset); 3390 value = BWN_PHY_READ(mac, BWN_NPHY_TABLE_DATALO) & 0xFF; 3391 break; 3392 case BWN_NTAB_16BIT: 3393 BWN_PHY_WRITE(mac, BWN_NPHY_TABLE_ADDR, offset); 3394 value = BWN_PHY_READ(mac, BWN_NPHY_TABLE_DATALO); 3395 break; 3396 case BWN_NTAB_32BIT: 3397 BWN_PHY_WRITE(mac, BWN_NPHY_TABLE_ADDR, offset); 3398 value = BWN_PHY_READ(mac, BWN_NPHY_TABLE_DATALO); 3399 value |= BWN_PHY_READ(mac, BWN_NPHY_TABLE_DATAHI) << 16; 3400 break; 3401 default: 3402 KASSERT(0, ("%s: invalid type", __func__)); 3403 value = 0; 3404 } 3405 3406 return value; 3407 } 3408 3409 void bwn_ntab_read_bulk(struct bwn_mac *mac, uint32_t offset, 3410 unsigned int nr_elements, void *_data) 3411 { 3412 struct bwn_softc *sc = mac->mac_sc; 3413 uint32_t type; 3414 uint8_t *data = _data; 3415 unsigned int i; 3416 3417 type = offset & BWN_NTAB_TYPEMASK; 3418 offset &= ~BWN_NTAB_TYPEMASK; 3419 KASSERT(offset <= 0xFFFF, ("%s: invalid offset (%d)\n", 3420 __func__, offset)); 3421 3422 BWN_PHY_WRITE(mac, BWN_NPHY_TABLE_ADDR, offset); 3423 3424 for (i = 0; i < nr_elements; i++) { 3425 /* Auto increment broken + caching issue on BCM43224? */ 3426 if (sc->sc_cid.chip_id == BHND_CHIPID_BCM43224 && 3427 bhnd_get_hwrev(sc->sc_dev) == 1) { 3428 BWN_PHY_READ(mac, BWN_NPHY_TABLE_DATALO); 3429 BWN_PHY_WRITE(mac, BWN_NPHY_TABLE_ADDR, offset + i); 3430 } 3431 3432 switch (type) { 3433 case BWN_NTAB_8BIT: 3434 *data = BWN_PHY_READ(mac, BWN_NPHY_TABLE_DATALO) & 0xFF; 3435 data++; 3436 break; 3437 case BWN_NTAB_16BIT: 3438 *((uint16_t *)data) = BWN_PHY_READ(mac, BWN_NPHY_TABLE_DATALO); 3439 data += 2; 3440 break; 3441 case BWN_NTAB_32BIT: 3442 *((uint32_t *)data) = 3443 BWN_PHY_READ(mac, BWN_NPHY_TABLE_DATALO); 3444 *((uint32_t *)data) |= 3445 BWN_PHY_READ(mac, BWN_NPHY_TABLE_DATAHI) << 16; 3446 data += 4; 3447 break; 3448 default: 3449 KASSERT(0, ("%s: called; invalid type (%d)\n", 3450 __func__, type)); 3451 } 3452 } 3453 } 3454 3455 void bwn_ntab_write(struct bwn_mac *mac, uint32_t offset, uint32_t value) 3456 { 3457 uint32_t type; 3458 #ifdef INVARIANTS 3459 uint32_t orig; 3460 #endif 3461 3462 type = offset & BWN_NTAB_TYPEMASK; 3463 #ifdef INVARIANTS 3464 orig = offset; 3465 #endif 3466 offset &= 0xFFFF; 3467 3468 switch (type) { 3469 case BWN_NTAB_8BIT: 3470 KASSERT(value <= 0xFF, ("%s: 8bit: invalid value (%d) (0x%08x)\n", 3471 __func__, value, orig)); 3472 BWN_PHY_WRITE(mac, BWN_NPHY_TABLE_ADDR, offset); 3473 BWN_PHY_WRITE(mac, BWN_NPHY_TABLE_DATALO, value); 3474 break; 3475 case BWN_NTAB_16BIT: 3476 KASSERT(value <= 0xFFFF, ("%s: 8bit: invalid value (%d) (0x%08x)\n", 3477 __func__, value, orig)); 3478 BWN_PHY_WRITE(mac, BWN_NPHY_TABLE_ADDR, offset); 3479 BWN_PHY_WRITE(mac, BWN_NPHY_TABLE_DATALO, value); 3480 break; 3481 case BWN_NTAB_32BIT: 3482 BWN_PHY_WRITE(mac, BWN_NPHY_TABLE_ADDR, offset); 3483 BWN_PHY_WRITE(mac, BWN_NPHY_TABLE_DATAHI, value >> 16); 3484 BWN_PHY_WRITE(mac, BWN_NPHY_TABLE_DATALO, value & 0xFFFF); 3485 break; 3486 default: 3487 KASSERT(0, ("%s: called; invalid type (%d)\n", 3488 __func__, type)); 3489 } 3490 3491 return; 3492 3493 /* Some compiletime assertions... */ 3494 assert_ntab_array_sizes(); 3495 } 3496 3497 void bwn_ntab_write_bulk(struct bwn_mac *mac, uint32_t offset, 3498 unsigned int nr_elements, const void *_data) 3499 { 3500 struct bwn_softc *sc = mac->mac_sc; 3501 uint32_t type, value; 3502 #ifdef INVARIANTS 3503 uint32_t orig; 3504 #endif 3505 const uint8_t *data = _data; 3506 unsigned int i; 3507 3508 type = offset & BWN_NTAB_TYPEMASK; 3509 #ifdef INVARIANTS 3510 orig = offset; 3511 #endif 3512 offset &= ~BWN_NTAB_TYPEMASK; 3513 KASSERT(offset <= 0xFFFF, ("%s: invalid offset (%d)\n", 3514 __func__, offset)); 3515 3516 BWN_PHY_WRITE(mac, BWN_NPHY_TABLE_ADDR, offset); 3517 3518 for (i = 0; i < nr_elements; i++) { 3519 /* Auto increment broken + caching issue on BCM43224? */ 3520 if ((offset >> 10) == 9 && 3521 sc->sc_cid.chip_id == BHND_CHIPID_BCM43224 && 3522 bhnd_get_hwrev(sc->sc_dev) == 1) { 3523 BWN_PHY_READ(mac, BWN_NPHY_TABLE_DATALO); 3524 BWN_PHY_WRITE(mac, BWN_NPHY_TABLE_ADDR, offset + i); 3525 } 3526 3527 switch (type) { 3528 case BWN_NTAB_8BIT: 3529 value = *data; 3530 data++; 3531 KASSERT(value <= 0xFF, ("%s: 8bit: invalid value (%d) (0x%08x)\n", 3532 __func__, value, orig)); 3533 BWN_PHY_WRITE(mac, BWN_NPHY_TABLE_DATALO, value); 3534 break; 3535 case BWN_NTAB_16BIT: 3536 value = *((const uint16_t *)data); 3537 data += 2; 3538 KASSERT(value <= 0xFFFF, ("%s: 16bit: invalid value (%d) (0x%08x)\n", 3539 __func__, value, orig)); 3540 BWN_PHY_WRITE(mac, BWN_NPHY_TABLE_DATALO, value); 3541 break; 3542 case BWN_NTAB_32BIT: 3543 value = *((const uint32_t *)data); 3544 data += 4; 3545 BWN_PHY_WRITE(mac, BWN_NPHY_TABLE_DATAHI, value >> 16); 3546 BWN_PHY_WRITE(mac, BWN_NPHY_TABLE_DATALO, 3547 value & 0xFFFF); 3548 break; 3549 default: 3550 KASSERT(0, ("%s: invalid type (%d)\n", __func__, 3551 type)); 3552 } 3553 } 3554 } 3555 3556 #define ntab_upload(mac, offset, data) do { \ 3557 bwn_ntab_write_bulk(mac, offset, nitems(data), data); \ 3558 } while (0) 3559 3560 static void bwn_nphy_tables_init_shared_lut(struct bwn_mac *mac) 3561 { 3562 ntab_upload(mac, BWN_NTAB_C0_ESTPLT_R3, bwn_ntab_estimatepowerlt0_r3); 3563 ntab_upload(mac, BWN_NTAB_C1_ESTPLT_R3, bwn_ntab_estimatepowerlt1_r3); 3564 ntab_upload(mac, BWN_NTAB_C0_ADJPLT_R3, bwn_ntab_adjustpower0_r3); 3565 ntab_upload(mac, BWN_NTAB_C1_ADJPLT_R3, bwn_ntab_adjustpower1_r3); 3566 ntab_upload(mac, BWN_NTAB_C0_GAINCTL_R3, bwn_ntab_gainctl0_r3); 3567 ntab_upload(mac, BWN_NTAB_C1_GAINCTL_R3, bwn_ntab_gainctl1_r3); 3568 ntab_upload(mac, BWN_NTAB_C0_IQLT_R3, bwn_ntab_iqlt0_r3); 3569 ntab_upload(mac, BWN_NTAB_C1_IQLT_R3, bwn_ntab_iqlt1_r3); 3570 ntab_upload(mac, BWN_NTAB_C0_LOFEEDTH_R3, bwn_ntab_loftlt0_r3); 3571 ntab_upload(mac, BWN_NTAB_C1_LOFEEDTH_R3, bwn_ntab_loftlt1_r3); 3572 } 3573 3574 static int bwn_nphy_tables_get_antswlut(struct bwn_mac *mac, uint8_t *antswlut) 3575 { 3576 struct ieee80211com *ic = &mac->mac_sc->sc_ic; 3577 struct bwn_softc *sc = mac->mac_sc; 3578 const char *antswlut_var; 3579 int error; 3580 3581 if (IEEE80211_IS_CHAN_5GHZ(ic->ic_curchan)) 3582 antswlut_var = BHND_NVAR_ANTSWCTL5G; 3583 else 3584 antswlut_var = BHND_NVAR_ANTSWCTL2G; 3585 3586 error = bhnd_nvram_getvar_uint8(sc->sc_dev, antswlut_var, antswlut); 3587 if (error) 3588 BWN_ERRPRINTF(mac->mac_sc, "NVRAM variable %s unreadable: %d", 3589 antswlut_var, error); 3590 3591 return (error); 3592 } 3593 3594 static void bwn_nphy_tables_init_rev7_volatile(struct bwn_mac *mac) 3595 { 3596 int core, error, offset, i; 3597 uint8_t antswlut; 3598 3599 const int antswlut0_offsets[] = { 0, 4, 8, }; /* Offsets for values */ 3600 const uint8_t antswlut0_values[][3] = { 3601 { 0x2, 0x12, 0x8 }, /* Core 0 */ 3602 { 0x2, 0x18, 0x2 }, /* Core 1 */ 3603 }; 3604 3605 if ((error = bwn_nphy_tables_get_antswlut(mac, &antswlut))) 3606 return; 3607 3608 switch (antswlut) { 3609 case 0: 3610 for (core = 0; core < 2; core++) { 3611 for (i = 0; i < nitems(antswlut0_values[0]); i++) { 3612 offset = core ? 0x20 : 0x00; 3613 offset += antswlut0_offsets[i]; 3614 bwn_ntab_write(mac, BWN_NTAB8(9, offset), 3615 antswlut0_values[core][i]); 3616 } 3617 } 3618 break; 3619 default: 3620 BWN_ERRPRINTF(mac->mac_sc, "Unsupported antswlut: %d\n", antswlut); 3621 break; 3622 } 3623 } 3624 3625 static void bwn_nphy_tables_init_rev16(struct bwn_mac *mac) 3626 { 3627 /* Static tables */ 3628 if (mac->mac_phy.phy_do_full_init) { 3629 ntab_upload(mac, BWN_NTAB_NOISEVAR_R7, bwn_ntab_noisevar_r7); 3630 bwn_nphy_tables_init_shared_lut(mac); 3631 } 3632 3633 /* Volatile tables */ 3634 bwn_nphy_tables_init_rev7_volatile(mac); 3635 } 3636 3637 static void bwn_nphy_tables_init_rev7(struct bwn_mac *mac) 3638 { 3639 /* Static tables */ 3640 if (mac->mac_phy.phy_do_full_init) { 3641 ntab_upload(mac, BWN_NTAB_FRAMESTRUCT_R3, bwn_ntab_framestruct_r3); 3642 ntab_upload(mac, BWN_NTAB_PILOT_R3, bwn_ntab_pilot_r3); 3643 ntab_upload(mac, BWN_NTAB_TMAP_R7, bwn_ntab_tmap_r7); 3644 ntab_upload(mac, BWN_NTAB_INTLEVEL_R3, bwn_ntab_intlevel_r3); 3645 ntab_upload(mac, BWN_NTAB_TDTRN_R3, bwn_ntab_tdtrn_r3); 3646 ntab_upload(mac, BWN_NTAB_NOISEVAR_R7, bwn_ntab_noisevar_r7); 3647 ntab_upload(mac, BWN_NTAB_MCS_R3, bwn_ntab_mcs_r3); 3648 ntab_upload(mac, BWN_NTAB_TDI20A0_R3, bwn_ntab_tdi20a0_r3); 3649 ntab_upload(mac, BWN_NTAB_TDI20A1_R3, bwn_ntab_tdi20a1_r3); 3650 ntab_upload(mac, BWN_NTAB_TDI40A0_R3, bwn_ntab_tdi40a0_r3); 3651 ntab_upload(mac, BWN_NTAB_TDI40A1_R3, bwn_ntab_tdi40a1_r3); 3652 ntab_upload(mac, BWN_NTAB_PILOTLT_R3, bwn_ntab_pilotlt_r3); 3653 ntab_upload(mac, BWN_NTAB_CHANEST_R3, bwn_ntab_channelest_r3); 3654 ntab_upload(mac, BWN_NTAB_FRAMELT_R3, bwn_ntab_framelookup_r3); 3655 bwn_nphy_tables_init_shared_lut(mac); 3656 } 3657 3658 /* Volatile tables */ 3659 bwn_nphy_tables_init_rev7_volatile(mac); 3660 } 3661 3662 static void bwn_nphy_tables_init_rev3(struct bwn_mac *mac) 3663 { 3664 int error; 3665 uint8_t antswlut; 3666 3667 if ((error = bwn_nphy_tables_get_antswlut(mac, &antswlut))) 3668 return; 3669 3670 /* Static tables */ 3671 if (mac->mac_phy.phy_do_full_init) { 3672 ntab_upload(mac, BWN_NTAB_FRAMESTRUCT_R3, bwn_ntab_framestruct_r3); 3673 ntab_upload(mac, BWN_NTAB_PILOT_R3, bwn_ntab_pilot_r3); 3674 ntab_upload(mac, BWN_NTAB_TMAP_R3, bwn_ntab_tmap_r3); 3675 ntab_upload(mac, BWN_NTAB_INTLEVEL_R3, bwn_ntab_intlevel_r3); 3676 ntab_upload(mac, BWN_NTAB_TDTRN_R3, bwn_ntab_tdtrn_r3); 3677 ntab_upload(mac, BWN_NTAB_NOISEVAR_R3, bwn_ntab_noisevar_r3); 3678 ntab_upload(mac, BWN_NTAB_MCS_R3, bwn_ntab_mcs_r3); 3679 ntab_upload(mac, BWN_NTAB_TDI20A0_R3, bwn_ntab_tdi20a0_r3); 3680 ntab_upload(mac, BWN_NTAB_TDI20A1_R3, bwn_ntab_tdi20a1_r3); 3681 ntab_upload(mac, BWN_NTAB_TDI40A0_R3, bwn_ntab_tdi40a0_r3); 3682 ntab_upload(mac, BWN_NTAB_TDI40A1_R3, bwn_ntab_tdi40a1_r3); 3683 ntab_upload(mac, BWN_NTAB_PILOTLT_R3, bwn_ntab_pilotlt_r3); 3684 ntab_upload(mac, BWN_NTAB_CHANEST_R3, bwn_ntab_channelest_r3); 3685 ntab_upload(mac, BWN_NTAB_FRAMELT_R3, bwn_ntab_framelookup_r3); 3686 bwn_nphy_tables_init_shared_lut(mac); 3687 } 3688 3689 /* Volatile tables */ 3690 if (antswlut < nitems(bwn_ntab_antswctl_r3)) 3691 ntab_upload(mac, BWN_NTAB_ANT_SW_CTL_R3, 3692 bwn_ntab_antswctl_r3[antswlut]); 3693 else 3694 KASSERT(0, ("%s: antswlut out of bounds (%d)\n", 3695 __func__, antswlut)); 3696 } 3697 3698 static void bwn_nphy_tables_init_rev0(struct bwn_mac *mac) 3699 { 3700 /* Static tables */ 3701 if (mac->mac_phy.phy_do_full_init) { 3702 ntab_upload(mac, BWN_NTAB_FRAMESTRUCT, bwn_ntab_framestruct); 3703 ntab_upload(mac, BWN_NTAB_FRAMELT, bwn_ntab_framelookup); 3704 ntab_upload(mac, BWN_NTAB_TMAP, bwn_ntab_tmap); 3705 ntab_upload(mac, BWN_NTAB_TDTRN, bwn_ntab_tdtrn); 3706 ntab_upload(mac, BWN_NTAB_INTLEVEL, bwn_ntab_intlevel); 3707 ntab_upload(mac, BWN_NTAB_PILOT, bwn_ntab_pilot); 3708 ntab_upload(mac, BWN_NTAB_TDI20A0, bwn_ntab_tdi20a0); 3709 ntab_upload(mac, BWN_NTAB_TDI20A1, bwn_ntab_tdi20a1); 3710 ntab_upload(mac, BWN_NTAB_TDI40A0, bwn_ntab_tdi40a0); 3711 ntab_upload(mac, BWN_NTAB_TDI40A1, bwn_ntab_tdi40a1); 3712 ntab_upload(mac, BWN_NTAB_CHANEST, bwn_ntab_channelest); 3713 ntab_upload(mac, BWN_NTAB_MCS, bwn_ntab_mcs); 3714 ntab_upload(mac, BWN_NTAB_NOISEVAR10, bwn_ntab_noisevar10); 3715 ntab_upload(mac, BWN_NTAB_NOISEVAR11, bwn_ntab_noisevar11); 3716 } 3717 3718 /* Volatile tables */ 3719 ntab_upload(mac, BWN_NTAB_BDI, bwn_ntab_bdi); 3720 ntab_upload(mac, BWN_NTAB_PILOTLT, bwn_ntab_pilotlt); 3721 ntab_upload(mac, BWN_NTAB_C0_GAINCTL, bwn_ntab_gainctl0); 3722 ntab_upload(mac, BWN_NTAB_C1_GAINCTL, bwn_ntab_gainctl1); 3723 ntab_upload(mac, BWN_NTAB_C0_ESTPLT, bwn_ntab_estimatepowerlt0); 3724 ntab_upload(mac, BWN_NTAB_C1_ESTPLT, bwn_ntab_estimatepowerlt1); 3725 ntab_upload(mac, BWN_NTAB_C0_ADJPLT, bwn_ntab_adjustpower0); 3726 ntab_upload(mac, BWN_NTAB_C1_ADJPLT, bwn_ntab_adjustpower1); 3727 ntab_upload(mac, BWN_NTAB_C0_IQLT, bwn_ntab_iqlt0); 3728 ntab_upload(mac, BWN_NTAB_C1_IQLT, bwn_ntab_iqlt1); 3729 ntab_upload(mac, BWN_NTAB_C0_LOFEEDTH, bwn_ntab_loftlt0); 3730 ntab_upload(mac, BWN_NTAB_C1_LOFEEDTH, bwn_ntab_loftlt1); 3731 } 3732 3733 /* http://bcm-v4.sipsolutions.net/802.11/PHY/N/InitTables */ 3734 void bwn_nphy_tables_init(struct bwn_mac *mac) 3735 { 3736 if (mac->mac_phy.rev >= 16) 3737 bwn_nphy_tables_init_rev16(mac); 3738 else if (mac->mac_phy.rev >= 7) 3739 bwn_nphy_tables_init_rev7(mac); 3740 else if (mac->mac_phy.rev >= 3) 3741 bwn_nphy_tables_init_rev3(mac); 3742 else 3743 bwn_nphy_tables_init_rev0(mac); 3744 } 3745 3746 /* http://bcm-v4.sipsolutions.net/802.11/PHY/N/GetIpaGainTbl */ 3747 static const uint32_t *bwn_nphy_get_ipa_gain_table(struct bwn_mac *mac) 3748 { 3749 struct bwn_softc *sc = mac->mac_sc; 3750 struct ieee80211com *ic = &mac->mac_sc->sc_ic; 3751 struct bwn_phy *phy = &mac->mac_phy; 3752 3753 if (IEEE80211_IS_CHAN_2GHZ(ic->ic_curchan)) { 3754 switch (phy->rev) { 3755 case 17: 3756 if (phy->rf_rev == 14) 3757 return bwn_ntab_tx_gain_ipa_2057_rev14_2g; 3758 break; 3759 case 16: 3760 if (phy->rf_rev == 9) 3761 return bwn_ntab_tx_gain_ipa_2057_rev9_2g; 3762 break; 3763 case 8: 3764 if (phy->rf_rev == 5) 3765 return bwn_ntab_tx_gain_ipa_2057_rev5_2g; 3766 break; 3767 case 6: 3768 if (sc->sc_cid.chip_id == BHND_CHIPID_BCM47162) 3769 return bwn_ntab_tx_gain_ipa_rev5_2g; 3770 return bwn_ntab_tx_gain_ipa_rev6_2g; 3771 case 5: 3772 return bwn_ntab_tx_gain_ipa_rev5_2g; 3773 case 4: 3774 case 3: 3775 return bwn_ntab_tx_gain_ipa_rev3_2g; 3776 } 3777 3778 BWN_ERRPRINTF(mac->mac_sc, 3779 "No 2GHz IPA gain table available for this device\n"); 3780 return NULL; 3781 } else { 3782 switch (phy->rev) { 3783 case 16: 3784 if (phy->rf_rev == 9) 3785 return bwn_ntab_tx_gain_ipa_2057_rev9_5g; 3786 break; 3787 case 3 ... 6: 3788 return bwn_ntab_tx_gain_ipa_rev3_5g; 3789 } 3790 3791 BWN_ERRPRINTF(mac->mac_sc, 3792 "No 5GHz IPA gain table available for this device\n"); 3793 return NULL; 3794 } 3795 } 3796 3797 const uint32_t *bwn_nphy_get_tx_gain_table(struct bwn_mac *mac) 3798 { 3799 struct ieee80211com *ic = &mac->mac_sc->sc_ic; 3800 struct bwn_softc *sc = mac->mac_sc; 3801 struct bwn_phy *phy = &mac->mac_phy; 3802 int error, is_5ghz; 3803 uint8_t extpa_gain; 3804 3805 /* XXX ideally we'd have is2, is5, etc */ 3806 is_5ghz = !! IEEE80211_IS_CHAN_5GHZ(ic->ic_curchan); 3807 3808 if (mac->mac_phy.rev < 3) 3809 return bwn_ntab_tx_gain_rev0_1_2; 3810 3811 /* rev 3+ */ 3812 if ((mac->mac_phy.phy_n->ipa2g_on && is_5ghz == 0) || 3813 (mac->mac_phy.phy_n->ipa5g_on && is_5ghz == 1)) { 3814 return bwn_nphy_get_ipa_gain_table(mac); 3815 } else if (is_5ghz == 1) { 3816 switch (phy->rev) { 3817 case 6: 3818 case 5: 3819 return bwn_ntab_tx_gain_epa_rev5_5g; 3820 case 4: 3821 error = bhnd_nvram_getvar_uint8(sc->sc_dev, 3822 BHND_NVAR_EXTPAGAIN5G, &extpa_gain); 3823 if (error) { 3824 BWN_ERRPRINTF(mac->mac_sc, "Error reading EPA " 3825 "gain configuration (%s) from NVRAM: %d\n", 3826 BHND_NVAR_EXTPAGAIN5G, error); 3827 return (NULL); 3828 } 3829 3830 return (extpa_gain == 3) ? 3831 bwn_ntab_tx_gain_epa_rev4_5g : 3832 bwn_ntab_tx_gain_epa_rev4_hi_pwr_5g; 3833 case 3: 3834 return bwn_ntab_tx_gain_epa_rev3_5g; 3835 default: 3836 BWN_ERRPRINTF(mac->mac_sc, 3837 "No 5GHz EPA gain table available for this device\n"); 3838 return NULL; 3839 } 3840 } else { 3841 switch (phy->rev) { 3842 case 6: 3843 case 5: 3844 error = bhnd_nvram_getvar_uint8(sc->sc_dev, 3845 BHND_NVAR_EXTPAGAIN2G, &extpa_gain); 3846 if (error) { 3847 BWN_ERRPRINTF(mac->mac_sc, "Error reading EPA " 3848 "gain configuration (%s) from NVRAM: %d\n", 3849 BHND_NVAR_EXTPAGAIN2G, error); 3850 return (NULL); 3851 } 3852 3853 if (extpa_gain == 3) 3854 return bwn_ntab_tx_gain_epa_rev3_hi_pwr_2g; 3855 /* fall through */ 3856 case 4: 3857 case 3: 3858 return bwn_ntab_tx_gain_epa_rev3_2g; 3859 default: 3860 BWN_ERRPRINTF(mac->mac_sc, 3861 "No 2GHz EPA gain table available for this device\n"); 3862 return NULL; 3863 } 3864 } 3865 } 3866 3867 const int16_t *bwn_ntab_get_rf_pwr_offset_table(struct bwn_mac *mac) 3868 { 3869 struct ieee80211com *ic = &mac->mac_sc->sc_ic; 3870 struct bwn_phy *phy = &mac->mac_phy; 3871 3872 if (IEEE80211_IS_CHAN_2GHZ(ic->ic_curchan)) { 3873 switch (phy->rev) { 3874 case 17: 3875 if (phy->rf_rev == 14) 3876 return bwn_ntab_rf_pwr_offset_2057_rev14_2g; 3877 break; 3878 case 16: 3879 if (phy->rf_rev == 9) 3880 return bwn_ntab_rf_pwr_offset_2057_rev9_2g; 3881 break; 3882 } 3883 3884 BWN_ERRPRINTF(mac->mac_sc, 3885 "No 2GHz RF power table available for this device\n"); 3886 return NULL; 3887 } else { 3888 switch (phy->rev) { 3889 case 16: 3890 if (phy->rf_rev == 9) 3891 return bwn_ntab_rf_pwr_offset_2057_rev9_5g; 3892 break; 3893 } 3894 3895 BWN_ERRPRINTF(mac->mac_sc, 3896 "No 5GHz RF power table available for this device\n"); 3897 return NULL; 3898 } 3899 } 3900 3901 struct bwn_nphy_gain_ctl_workaround_entry *bwn_nphy_get_gain_ctl_workaround_ent( 3902 struct bwn_mac *mac, bool ghz5, bool ext_lna) 3903 { 3904 struct ieee80211com *ic = &mac->mac_sc->sc_ic; 3905 struct bwn_softc *sc = mac->mac_sc; 3906 struct bwn_phy *phy = &mac->mac_phy; 3907 struct bwn_nphy_gain_ctl_workaround_entry *e; 3908 uint8_t phy_idx; 3909 3910 if (!ghz5 && mac->mac_phy.rev >= 6 && mac->mac_phy.rf_rev == 11) 3911 return &nphy_gain_ctl_wa_phy6_radio11_ghz2; 3912 3913 KASSERT(mac->mac_phy.rev >= 3, 3914 ("%s: called; too early phy rev (%d)\n", 3915 __func__, mac->mac_phy.rev)); 3916 if (mac->mac_phy.rev >= 6) 3917 phy_idx = 3; 3918 else if (mac->mac_phy.rev == 5) 3919 phy_idx = 2; 3920 else if (mac->mac_phy.rev == 4) 3921 phy_idx = 1; 3922 else 3923 phy_idx = 0; 3924 e = &nphy_gain_ctl_workaround[ghz5][phy_idx]; 3925 3926 /* Some workarounds to the workarounds... */ 3927 if (!ghz5) { 3928 uint8_t tr_iso; 3929 int error; 3930 3931 error = bhnd_nvram_getvar_uint8(sc->sc_dev, BHND_NVAR_TRISO2G, 3932 &tr_iso); 3933 BWN_ERRPRINTF(mac->mac_sc, "Error reading %s from NVRAM: %d\n", 3934 BHND_NVAR_TRISO2G, error); 3935 3936 if (tr_iso > 7) 3937 tr_iso = 3; 3938 3939 if (phy->rev >= 6) { 3940 static const int gain_data[] = { 0x106a, 0x106c, 0x1074, 3941 0x107c, 0x007e, 0x107e, 3942 0x207e, 0x307e, }; 3943 3944 e->cliplo_gain = gain_data[tr_iso]; 3945 } else if (phy->rev == 5) { 3946 static const int gain_data[] = { 0x0062, 0x0064, 0x006a, 3947 0x106a, 0x106c, 0x1074, 3948 0x107c, 0x207c, }; 3949 3950 e->cliplo_gain = gain_data[tr_iso]; 3951 } 3952 3953 if (phy->rev >= 5 && ext_lna) { 3954 e->rfseq_init[0] &= ~0x4000; 3955 e->rfseq_init[1] &= ~0x4000; 3956 e->rfseq_init[2] &= ~0x4000; 3957 e->rfseq_init[3] &= ~0x4000; 3958 e->init_gain &= ~0x4000; 3959 } 3960 } else { 3961 if (phy->rev >= 6) { 3962 /* XXX 40MHz HT only? No static-40MHz? */ 3963 if (phy->rf_rev == 11 && 3964 IEEE80211_IS_CHAN_HT40(ic->ic_curchan)) 3965 e->crsminu = 0x2d; 3966 } else if (phy->rev == 4 && ext_lna) { 3967 e->rfseq_init[0] &= ~0x4000; 3968 e->rfseq_init[1] &= ~0x4000; 3969 e->rfseq_init[2] &= ~0x4000; 3970 e->rfseq_init[3] &= ~0x4000; 3971 e->init_gain &= ~0x4000; 3972 e->rfseq_init[0] |= 0x1000; 3973 e->rfseq_init[1] |= 0x1000; 3974 e->rfseq_init[2] |= 0x1000; 3975 e->rfseq_init[3] |= 0x1000; 3976 e->init_gain |= 0x1000; 3977 } 3978 } 3979 3980 return e; 3981 } 3982 3983 const struct bwn_nphy_rf_control_override_rev7 * 3984 bwn_nphy_get_rf_ctl_over_rev7(struct bwn_mac *mac, uint16_t field, 3985 uint8_t override) 3986 { 3987 const struct bwn_nphy_rf_control_override_rev7 *e; 3988 uint8_t size, i; 3989 3990 switch (override) { 3991 case 0: 3992 e = tbl_rf_control_override_rev7_over0; 3993 size = nitems(tbl_rf_control_override_rev7_over0); 3994 break; 3995 case 1: 3996 e = tbl_rf_control_override_rev7_over1; 3997 size = nitems(tbl_rf_control_override_rev7_over1); 3998 break; 3999 case 2: 4000 e = tbl_rf_control_override_rev7_over2; 4001 size = nitems(tbl_rf_control_override_rev7_over2); 4002 break; 4003 default: 4004 BWN_ERRPRINTF(mac->mac_sc, "Invalid override value %d\n", override); 4005 return NULL; 4006 } 4007 4008 for (i = 0; i < size; i++) { 4009 if (e[i].field == field) 4010 return &e[i]; 4011 } 4012 4013 return NULL; 4014 } 4015