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