The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/gnu/dev/bwn/phy_n/if_bwn_phy_n_tables.c

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    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 }

Cache object: 45881c18191057c34e349dd7ca609b17


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.