linux/drivers/net/wireless/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 <mb@bu3sch.de>
   7
   8  This program is free software; you can redistribute it and/or modify
   9  it under the terms of the GNU General Public License as published by
  10  the Free Software Foundation; either version 2 of the License, or
  11  (at your option) any later version.
  12
  13  This program is distributed in the hope that it will be useful,
  14  but WITHOUT ANY WARRANTY; without even the implied warranty of
  15  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  16  GNU General Public License for more details.
  17
  18  You should have received a copy of the GNU General Public License
  19  along with this program; see the file COPYING.  If not, write to
  20  the Free Software Foundation, Inc., 51 Franklin Steet, Fifth Floor,
  21  Boston, MA 02110-1301, USA.
  22
  23*/
  24
  25#include "b43.h"
  26#include "tables_nphy.h"
  27#include "phy_common.h"
  28#include "phy_n.h"
  29
  30static const u8 b43_ntab_adjustpower0[] = {
  31        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  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};
  48
  49static const u8 b43_ntab_adjustpower1[] = {
  50        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  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};
  67
  68static const u16 b43_ntab_bdi[] = {
  69        0x0070, 0x0126, 0x012C, 0x0246, 0x048D, 0x04D2,
  70};
  71
  72static const u32 b43_ntab_channelest[] = {
  73        0x44444444, 0x44444444, 0x44444444, 0x44444444,
  74        0x44444444, 0x44444444, 0x44444444, 0x44444444,
  75        0x10101010, 0x10101010, 0x10101010, 0x10101010,
  76        0x10101010, 0x10101010, 0x10101010, 0x10101010,
  77        0x44444444, 0x44444444, 0x44444444, 0x44444444,
  78        0x44444444, 0x44444444, 0x44444444, 0x44444444,
  79        0x10101010, 0x10101010, 0x10101010, 0x10101010,
  80        0x10101010, 0x10101010, 0x10101010, 0x10101010,
  81        0x44444444, 0x44444444, 0x44444444, 0x44444444,
  82        0x44444444, 0x44444444, 0x44444444, 0x44444444,
  83        0x44444444, 0x44444444, 0x44444444, 0x44444444,
  84        0x44444444, 0x44444444, 0x44444444, 0x44444444,
  85        0x10101010, 0x10101010, 0x10101010, 0x10101010,
  86        0x10101010, 0x10101010, 0x10101010, 0x10101010,
  87        0x10101010, 0x10101010, 0x10101010, 0x10101010,
  88        0x10101010, 0x10101010, 0x10101010, 0x10101010,
  89        0x44444444, 0x44444444, 0x44444444, 0x44444444,
  90        0x44444444, 0x44444444, 0x44444444, 0x44444444,
  91        0x44444444, 0x44444444, 0x44444444, 0x44444444,
  92        0x44444444, 0x44444444, 0x44444444, 0x44444444,
  93        0x10101010, 0x10101010, 0x10101010, 0x10101010,
  94        0x10101010, 0x10101010, 0x10101010, 0x10101010,
  95        0x10101010, 0x10101010, 0x10101010, 0x10101010,
  96        0x10101010, 0x10101010, 0x10101010, 0x10101010,
  97};
  98
  99static const u8 b43_ntab_estimatepowerlt0[] = {
 100        0x50, 0x4F, 0x4E, 0x4D, 0x4C, 0x4B, 0x4A, 0x49,
 101        0x48, 0x47, 0x46, 0x45, 0x44, 0x43, 0x42, 0x41,
 102        0x40, 0x3F, 0x3E, 0x3D, 0x3C, 0x3B, 0x3A, 0x39,
 103        0x38, 0x37, 0x36, 0x35, 0x34, 0x33, 0x32, 0x31,
 104        0x30, 0x2F, 0x2E, 0x2D, 0x2C, 0x2B, 0x2A, 0x29,
 105        0x28, 0x27, 0x26, 0x25, 0x24, 0x23, 0x22, 0x21,
 106        0x20, 0x1F, 0x1E, 0x1D, 0x1C, 0x1B, 0x1A, 0x19,
 107        0x18, 0x17, 0x16, 0x15, 0x14, 0x13, 0x12, 0x11,
 108};
 109
 110static const u8 b43_ntab_estimatepowerlt1[] = {
 111        0x50, 0x4F, 0x4E, 0x4D, 0x4C, 0x4B, 0x4A, 0x49,
 112        0x48, 0x47, 0x46, 0x45, 0x44, 0x43, 0x42, 0x41,
 113        0x40, 0x3F, 0x3E, 0x3D, 0x3C, 0x3B, 0x3A, 0x39,
 114        0x38, 0x37, 0x36, 0x35, 0x34, 0x33, 0x32, 0x31,
 115        0x30, 0x2F, 0x2E, 0x2D, 0x2C, 0x2B, 0x2A, 0x29,
 116        0x28, 0x27, 0x26, 0x25, 0x24, 0x23, 0x22, 0x21,
 117        0x20, 0x1F, 0x1E, 0x1D, 0x1C, 0x1B, 0x1A, 0x19,
 118        0x18, 0x17, 0x16, 0x15, 0x14, 0x13, 0x12, 0x11,
 119};
 120
 121static const u8 b43_ntab_framelookup[] = {
 122        0x02, 0x04, 0x14, 0x14, 0x03, 0x05, 0x16, 0x16,
 123        0x0A, 0x0C, 0x1C, 0x1C, 0x0B, 0x0D, 0x1E, 0x1E,
 124        0x06, 0x08, 0x18, 0x18, 0x07, 0x09, 0x1A, 0x1A,
 125        0x0E, 0x10, 0x20, 0x28, 0x0F, 0x11, 0x22, 0x2A,
 126};
 127
 128static const u32 b43_ntab_framestruct[] = {
 129        0x08004A04, 0x00100000, 0x01000A05, 0x00100020,
 130        0x09804506, 0x00100030, 0x09804507, 0x00100030,
 131        0x00000000, 0x00000000, 0x00000000, 0x00000000,
 132        0x00000000, 0x00000000, 0x00000000, 0x00000000,
 133        0x08004A0C, 0x00100004, 0x01000A0D, 0x00100024,
 134        0x0980450E, 0x00100034, 0x0980450F, 0x00100034,
 135        0x00000000, 0x00000000, 0x00000000, 0x00000000,
 136        0x00000000, 0x00000000, 0x00000000, 0x00000000,
 137        0x00000A04, 0x00100000, 0x11008A05, 0x00100020,
 138        0x1980C506, 0x00100030, 0x21810506, 0x00100030,
 139        0x21810506, 0x00100030, 0x01800504, 0x00100030,
 140        0x11808505, 0x00100030, 0x29814507, 0x01100030,
 141        0x00000A04, 0x00100000, 0x11008A05, 0x00100020,
 142        0x21810506, 0x00100030, 0x21810506, 0x00100030,
 143        0x29814507, 0x01100030, 0x00000000, 0x00000000,
 144        0x00000000, 0x00000000, 0x00000000, 0x00000000,
 145        0x00000A0C, 0x00100008, 0x11008A0D, 0x00100028,
 146        0x1980C50E, 0x00100038, 0x2181050E, 0x00100038,
 147        0x2181050E, 0x00100038, 0x0180050C, 0x00100038,
 148        0x1180850D, 0x00100038, 0x2981450F, 0x01100038,
 149        0x00000A0C, 0x00100008, 0x11008A0D, 0x00100028,
 150        0x2181050E, 0x00100038, 0x2181050E, 0x00100038,
 151        0x2981450F, 0x01100038, 0x00000000, 0x00000000,
 152        0x00000000, 0x00000000, 0x00000000, 0x00000000,
 153        0x08004A04, 0x00100000, 0x01000A05, 0x00100020,
 154        0x1980C506, 0x00100030, 0x1980C506, 0x00100030,
 155        0x11808504, 0x00100030, 0x3981CA05, 0x00100030,
 156        0x29814507, 0x01100030, 0x00000000, 0x00000000,
 157        0x10008A04, 0x00100000, 0x3981CA05, 0x00100030,
 158        0x1980C506, 0x00100030, 0x29814507, 0x01100030,
 159        0x00000000, 0x00000000, 0x00000000, 0x00000000,
 160        0x00000000, 0x00000000, 0x00000000, 0x00000000,
 161        0x08004A0C, 0x00100008, 0x01000A0D, 0x00100028,
 162        0x1980C50E, 0x00100038, 0x1980C50E, 0x00100038,
 163        0x1180850C, 0x00100038, 0x3981CA0D, 0x00100038,
 164        0x2981450F, 0x01100038, 0x00000000, 0x00000000,
 165        0x10008A0C, 0x00100008, 0x3981CA0D, 0x00100038,
 166        0x1980C50E, 0x00100038, 0x2981450F, 0x01100038,
 167        0x00000000, 0x00000000, 0x00000000, 0x00000000,
 168        0x00000000, 0x00000000, 0x00000000, 0x00000000,
 169        0x40021404, 0x00100000, 0x02001405, 0x00100040,
 170        0x0B004A06, 0x01900060, 0x13008A06, 0x01900060,
 171        0x13008A06, 0x01900060, 0x43020A04, 0x00100060,
 172        0x1B00CA05, 0x00100060, 0x23010A07, 0x01500060,
 173        0x40021404, 0x00100000, 0x1A00D405, 0x00100040,
 174        0x13008A06, 0x01900060, 0x13008A06, 0x01900060,
 175        0x23010A07, 0x01500060, 0x00000000, 0x00000000,
 176        0x00000000, 0x00000000, 0x00000000, 0x00000000,
 177        0x4002140C, 0x00100010, 0x0200140D, 0x00100050,
 178        0x0B004A0E, 0x01900070, 0x13008A0E, 0x01900070,
 179        0x13008A0E, 0x01900070, 0x43020A0C, 0x00100070,
 180        0x1B00CA0D, 0x00100070, 0x23010A0F, 0x01500070,
 181        0x4002140C, 0x00100010, 0x1A00D40D, 0x00100050,
 182        0x13008A0E, 0x01900070, 0x13008A0E, 0x01900070,
 183        0x23010A0F, 0x01500070, 0x00000000, 0x00000000,
 184        0x00000000, 0x00000000, 0x00000000, 0x00000000,
 185        0x50029404, 0x00100000, 0x32019405, 0x00100040,
 186        0x0B004A06, 0x01900060, 0x0B004A06, 0x01900060,
 187        0x5B02CA04, 0x00100060, 0x3B01D405, 0x00100060,
 188        0x23010A07, 0x01500060, 0x00000000, 0x00000000,
 189        0x5802D404, 0x00100000, 0x3B01D405, 0x00100060,
 190        0x0B004A06, 0x01900060, 0x23010A07, 0x01500060,
 191        0x00000000, 0x00000000, 0x00000000, 0x00000000,
 192        0x00000000, 0x00000000, 0x00000000, 0x00000000,
 193        0x5002940C, 0x00100010, 0x3201940D, 0x00100050,
 194        0x0B004A0E, 0x01900070, 0x0B004A0E, 0x01900070,
 195        0x5B02CA0C, 0x00100070, 0x3B01D40D, 0x00100070,
 196        0x23010A0F, 0x01500070, 0x00000000, 0x00000000,
 197        0x5802D40C, 0x00100010, 0x3B01D40D, 0x00100070,
 198        0x0B004A0E, 0x01900070, 0x23010A0F, 0x01500070,
 199        0x00000000, 0x00000000, 0x00000000, 0x00000000,
 200        0x00000000, 0x00000000, 0x00000000, 0x00000000,
 201        0x40021404, 0x000F4800, 0x62031405, 0x00100040,
 202        0x53028A06, 0x01900060, 0x53028A07, 0x01900060,
 203        0x00000000, 0x00000000, 0x00000000, 0x00000000,
 204        0x00000000, 0x00000000, 0x00000000, 0x00000000,
 205        0x4002140C, 0x000F4808, 0x6203140D, 0x00100048,
 206        0x53028A0E, 0x01900068, 0x53028A0F, 0x01900068,
 207        0x00000000, 0x00000000, 0x00000000, 0x00000000,
 208        0x00000000, 0x00000000, 0x00000000, 0x00000000,
 209        0x00000A0C, 0x00100004, 0x11008A0D, 0x00100024,
 210        0x1980C50E, 0x00100034, 0x2181050E, 0x00100034,
 211        0x2181050E, 0x00100034, 0x0180050C, 0x00100038,
 212        0x1180850D, 0x00100038, 0x1181850D, 0x00100038,
 213        0x2981450F, 0x01100038, 0x00000000, 0x00000000,
 214        0x00000000, 0x00000000, 0x00000000, 0x00000000,
 215        0x00000000, 0x00000000, 0x00000000, 0x00000000,
 216        0x00000000, 0x00000000, 0x00000000, 0x00000000,
 217        0x00000A0C, 0x00100008, 0x11008A0D, 0x00100028,
 218        0x2181050E, 0x00100038, 0x2181050E, 0x00100038,
 219        0x1181850D, 0x00100038, 0x2981450F, 0x01100038,
 220        0x00000000, 0x00000000, 0x00000000, 0x00000000,
 221        0x00000000, 0x00000000, 0x00000000, 0x00000000,
 222        0x00000000, 0x00000000, 0x00000000, 0x00000000,
 223        0x00000000, 0x00000000, 0x00000000, 0x00000000,
 224        0x00000000, 0x00000000, 0x00000000, 0x00000000,
 225        0x08004A04, 0x00100000, 0x01000A05, 0x00100020,
 226        0x0180C506, 0x00100030, 0x0180C506, 0x00100030,
 227        0x2180C50C, 0x00100030, 0x49820A0D, 0x0016A130,
 228        0x41824A0D, 0x0016A130, 0x2981450F, 0x01100030,
 229        0x00000000, 0x00000000, 0x00000000, 0x00000000,
 230        0x00000000, 0x00000000, 0x00000000, 0x00000000,
 231        0x00000000, 0x00000000, 0x00000000, 0x00000000,
 232        0x00000000, 0x00000000, 0x00000000, 0x00000000,
 233        0x2000CA0C, 0x00100000, 0x49820A0D, 0x0016A130,
 234        0x1980C50E, 0x00100030, 0x41824A0D, 0x0016A130,
 235        0x2981450F, 0x01100030, 0x00000000, 0x00000000,
 236        0x00000000, 0x00000000, 0x00000000, 0x00000000,
 237        0x00000000, 0x00000000, 0x00000000, 0x00000000,
 238        0x00000000, 0x00000000, 0x00000000, 0x00000000,
 239        0x00000000, 0x00000000, 0x00000000, 0x00000000,
 240        0x00000000, 0x00000000, 0x00000000, 0x00000000,
 241        0x4002140C, 0x00100008, 0x0200140D, 0x00100048,
 242        0x0B004A0E, 0x01900068, 0x13008A0E, 0x01900068,
 243        0x13008A0E, 0x01900068, 0x43020A0C, 0x00100070,
 244        0x1B00CA0D, 0x00100070, 0x1B014A0D, 0x00100070,
 245        0x23010A0F, 0x01500070, 0x00000000, 0x00000000,
 246        0x00000000, 0x00000000, 0x00000000, 0x00000000,
 247        0x00000000, 0x00000000, 0x00000000, 0x00000000,
 248        0x00000000, 0x00000000, 0x00000000, 0x00000000,
 249        0x4002140C, 0x00100010, 0x1A00D40D, 0x00100050,
 250        0x13008A0E, 0x01900070, 0x13008A0E, 0x01900070,
 251        0x1B014A0D, 0x00100070, 0x23010A0F, 0x01500070,
 252        0x00000000, 0x00000000, 0x00000000, 0x00000000,
 253        0x00000000, 0x00000000, 0x00000000, 0x00000000,
 254        0x00000000, 0x00000000, 0x00000000, 0x00000000,
 255        0x00000000, 0x00000000, 0x00000000, 0x00000000,
 256        0x00000000, 0x00000000, 0x00000000, 0x00000000,
 257        0x50029404, 0x00100000, 0x32019405, 0x00100040,
 258        0x03004A06, 0x01900060, 0x03004A06, 0x01900060,
 259        0x6B030A0C, 0x00100060, 0x4B02140D, 0x0016A160,
 260        0x4302540D, 0x0016A160, 0x23010A0F, 0x01500060,
 261        0x00000000, 0x00000000, 0x00000000, 0x00000000,
 262        0x00000000, 0x00000000, 0x00000000, 0x00000000,
 263        0x00000000, 0x00000000, 0x00000000, 0x00000000,
 264        0x00000000, 0x00000000, 0x00000000, 0x00000000,
 265        0x6B03140C, 0x00100060, 0x4B02140D, 0x0016A160,
 266        0x0B004A0E, 0x01900060, 0x4302540D, 0x0016A160,
 267        0x23010A0F, 0x01500060, 0x00000000, 0x00000000,
 268        0x00000000, 0x00000000, 0x00000000, 0x00000000,
 269        0x00000000, 0x00000000, 0x00000000, 0x00000000,
 270        0x00000000, 0x00000000, 0x00000000, 0x00000000,
 271        0x00000000, 0x00000000, 0x00000000, 0x00000000,
 272        0x00000000, 0x00000000, 0x00000000, 0x00000000,
 273        0x40021404, 0x00100000, 0x1A00D405, 0x00100040,
 274        0x53028A06, 0x01900060, 0x5B02CA06, 0x01900060,
 275        0x5B02CA06, 0x01900060, 0x43020A04, 0x00100060,
 276        0x1B00CA05, 0x00100060, 0x53028A07, 0x0190C060,
 277        0x00000000, 0x00000000, 0x00000000, 0x00000000,
 278        0x00000000, 0x00000000, 0x00000000, 0x00000000,
 279        0x00000000, 0x00000000, 0x00000000, 0x00000000,
 280        0x00000000, 0x00000000, 0x00000000, 0x00000000,
 281        0x4002140C, 0x00100010, 0x1A00D40D, 0x00100050,
 282        0x53028A0E, 0x01900070, 0x5B02CA0E, 0x01900070,
 283        0x5B02CA0E, 0x01900070, 0x43020A0C, 0x00100070,
 284        0x1B00CA0D, 0x00100070, 0x53028A0F, 0x0190C070,
 285        0x00000000, 0x00000000, 0x00000000, 0x00000000,
 286        0x00000000, 0x00000000, 0x00000000, 0x00000000,
 287        0x00000000, 0x00000000, 0x00000000, 0x00000000,
 288        0x00000000, 0x00000000, 0x00000000, 0x00000000,
 289        0x40021404, 0x00100000, 0x1A00D405, 0x00100040,
 290        0x5B02CA06, 0x01900060, 0x5B02CA06, 0x01900060,
 291        0x53028A07, 0x0190C060, 0x00000000, 0x00000000,
 292        0x00000000, 0x00000000, 0x00000000, 0x00000000,
 293        0x00000000, 0x00000000, 0x00000000, 0x00000000,
 294        0x00000000, 0x00000000, 0x00000000, 0x00000000,
 295        0x00000000, 0x00000000, 0x00000000, 0x00000000,
 296        0x00000000, 0x00000000, 0x00000000, 0x00000000,
 297        0x4002140C, 0x00100010, 0x1A00D40D, 0x00100050,
 298        0x5B02CA0E, 0x01900070, 0x5B02CA0E, 0x01900070,
 299        0x53028A0F, 0x0190C070, 0x00000000, 0x00000000,
 300        0x00000000, 0x00000000, 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};
 338
 339static const u32 b43_ntab_gainctl0[] = {
 340        0x03CC2B44, 0x03CC2B42, 0x03CC2B40, 0x03CC2B3E,
 341        0x03CC2B3D, 0x03CC2B3B, 0x03C82B44, 0x03C82B42,
 342        0x03C82B40, 0x03C82B3E, 0x03C82B3D, 0x03C82B3B,
 343        0x03C82B39, 0x03C82B38, 0x03C82B36, 0x03C82B34,
 344        0x03C42B44, 0x03C42B42, 0x03C42B40, 0x03C42B3E,
 345        0x03C42B3D, 0x03C42B3B, 0x03C42B39, 0x03C42B38,
 346        0x03C42B36, 0x03C42B34, 0x03C42B33, 0x03C42B32,
 347        0x03C42B30, 0x03C42B2F, 0x03C42B2D, 0x03C02B44,
 348        0x03C02B42, 0x03C02B40, 0x03C02B3E, 0x03C02B3D,
 349        0x03C02B3B, 0x03C02B39, 0x03C02B38, 0x03C02B36,
 350        0x03C02B34, 0x03B02B44, 0x03B02B42, 0x03B02B40,
 351        0x03B02B3E, 0x03B02B3D, 0x03B02B3B, 0x03B02B39,
 352        0x03B02B38, 0x03B02B36, 0x03B02B34, 0x03B02B33,
 353        0x03B02B32, 0x03B02B30, 0x03B02B2F, 0x03B02B2D,
 354        0x03A02B44, 0x03A02B42, 0x03A02B40, 0x03A02B3E,
 355        0x03A02B3D, 0x03A02B3B, 0x03A02B39, 0x03A02B38,
 356        0x03A02B36, 0x03A02B34, 0x03902B44, 0x03902B42,
 357        0x03902B40, 0x03902B3E, 0x03902B3D, 0x03902B3B,
 358        0x03902B39, 0x03902B38, 0x03902B36, 0x03902B34,
 359        0x03902B33, 0x03902B32, 0x03902B30, 0x03802B44,
 360        0x03802B42, 0x03802B40, 0x03802B3E, 0x03802B3D,
 361        0x03802B3B, 0x03802B39, 0x03802B38, 0x03802B36,
 362        0x03802B34, 0x03802B33, 0x03802B32, 0x03802B30,
 363        0x03802B2F, 0x03802B2D, 0x03802B2C, 0x03802B2B,
 364        0x03802B2A, 0x03802B29, 0x03802B27, 0x03802B26,
 365        0x03802B25, 0x03802B24, 0x03802B23, 0x03802B22,
 366        0x03802B21, 0x03802B20, 0x03802B1F, 0x03802B1E,
 367        0x03802B1E, 0x03802B1D, 0x03802B1C, 0x03802B1B,
 368        0x03802B1A, 0x03802B1A, 0x03802B19, 0x03802B18,
 369        0x03802B18, 0x03802B18, 0x03802B18, 0x03802B18,
 370        0x03802B18, 0x03802B18, 0x03802B18, 0x03802B18,
 371        0x03802B18, 0x03802B18, 0x03802B18, 0x00002B00,
 372};
 373
 374static const u32 b43_ntab_gainctl1[] = {
 375        0x03CC2B44, 0x03CC2B42, 0x03CC2B40, 0x03CC2B3E,
 376        0x03CC2B3D, 0x03CC2B3B, 0x03C82B44, 0x03C82B42,
 377        0x03C82B40, 0x03C82B3E, 0x03C82B3D, 0x03C82B3B,
 378        0x03C82B39, 0x03C82B38, 0x03C82B36, 0x03C82B34,
 379        0x03C42B44, 0x03C42B42, 0x03C42B40, 0x03C42B3E,
 380        0x03C42B3D, 0x03C42B3B, 0x03C42B39, 0x03C42B38,
 381        0x03C42B36, 0x03C42B34, 0x03C42B33, 0x03C42B32,
 382        0x03C42B30, 0x03C42B2F, 0x03C42B2D, 0x03C02B44,
 383        0x03C02B42, 0x03C02B40, 0x03C02B3E, 0x03C02B3D,
 384        0x03C02B3B, 0x03C02B39, 0x03C02B38, 0x03C02B36,
 385        0x03C02B34, 0x03B02B44, 0x03B02B42, 0x03B02B40,
 386        0x03B02B3E, 0x03B02B3D, 0x03B02B3B, 0x03B02B39,
 387        0x03B02B38, 0x03B02B36, 0x03B02B34, 0x03B02B33,
 388        0x03B02B32, 0x03B02B30, 0x03B02B2F, 0x03B02B2D,
 389        0x03A02B44, 0x03A02B42, 0x03A02B40, 0x03A02B3E,
 390        0x03A02B3D, 0x03A02B3B, 0x03A02B39, 0x03A02B38,
 391        0x03A02B36, 0x03A02B34, 0x03902B44, 0x03902B42,
 392        0x03902B40, 0x03902B3E, 0x03902B3D, 0x03902B3B,
 393        0x03902B39, 0x03902B38, 0x03902B36, 0x03902B34,
 394        0x03902B33, 0x03902B32, 0x03902B30, 0x03802B44,
 395        0x03802B42, 0x03802B40, 0x03802B3E, 0x03802B3D,
 396        0x03802B3B, 0x03802B39, 0x03802B38, 0x03802B36,
 397        0x03802B34, 0x03802B33, 0x03802B32, 0x03802B30,
 398        0x03802B2F, 0x03802B2D, 0x03802B2C, 0x03802B2B,
 399        0x03802B2A, 0x03802B29, 0x03802B27, 0x03802B26,
 400        0x03802B25, 0x03802B24, 0x03802B23, 0x03802B22,
 401        0x03802B21, 0x03802B20, 0x03802B1F, 0x03802B1E,
 402        0x03802B1E, 0x03802B1D, 0x03802B1C, 0x03802B1B,
 403        0x03802B1A, 0x03802B1A, 0x03802B19, 0x03802B18,
 404        0x03802B18, 0x03802B18, 0x03802B18, 0x03802B18,
 405        0x03802B18, 0x03802B18, 0x03802B18, 0x03802B18,
 406        0x03802B18, 0x03802B18, 0x03802B18, 0x00002B00,
 407};
 408
 409static const u32 b43_ntab_intlevel[] = {
 410        0x00802070, 0x0671188D, 0x0A60192C, 0x0A300E46,
 411        0x00C1188D, 0x080024D2, 0x00000070,
 412};
 413
 414static const u32 b43_ntab_iqlt0[] = {
 415        0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F,
 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};
 448
 449static const u32 b43_ntab_iqlt1[] = {
 450        0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F,
 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};
 483
 484static const u16 b43_ntab_loftlt0[] = {
 485        0x0000, 0x0101, 0x0002, 0x0103, 0x0000, 0x0101,
 486        0x0002, 0x0103, 0x0000, 0x0101, 0x0002, 0x0103,
 487        0x0000, 0x0101, 0x0002, 0x0103, 0x0000, 0x0101,
 488        0x0002, 0x0103, 0x0000, 0x0101, 0x0002, 0x0103,
 489        0x0000, 0x0101, 0x0002, 0x0103, 0x0000, 0x0101,
 490        0x0002, 0x0103, 0x0000, 0x0101, 0x0002, 0x0103,
 491        0x0000, 0x0101, 0x0002, 0x0103, 0x0000, 0x0101,
 492        0x0002, 0x0103, 0x0000, 0x0101, 0x0002, 0x0103,
 493        0x0000, 0x0101, 0x0002, 0x0103, 0x0000, 0x0101,
 494        0x0002, 0x0103, 0x0000, 0x0101, 0x0002, 0x0103,
 495        0x0000, 0x0101, 0x0002, 0x0103, 0x0000, 0x0101,
 496        0x0002, 0x0103, 0x0000, 0x0101, 0x0002, 0x0103,
 497        0x0000, 0x0101, 0x0002, 0x0103, 0x0000, 0x0101,
 498        0x0002, 0x0103, 0x0000, 0x0101, 0x0002, 0x0103,
 499        0x0000, 0x0101, 0x0002, 0x0103, 0x0000, 0x0101,
 500        0x0002, 0x0103, 0x0000, 0x0101, 0x0002, 0x0103,
 501        0x0000, 0x0101, 0x0002, 0x0103, 0x0000, 0x0101,
 502        0x0002, 0x0103, 0x0000, 0x0101, 0x0002, 0x0103,
 503        0x0000, 0x0101, 0x0002, 0x0103, 0x0000, 0x0101,
 504        0x0002, 0x0103, 0x0000, 0x0101, 0x0002, 0x0103,
 505        0x0000, 0x0101, 0x0002, 0x0103, 0x0000, 0x0101,
 506        0x0002, 0x0103,
 507};
 508
 509static const u16 b43_ntab_loftlt1[] = {
 510        0x0000, 0x0101, 0x0002, 0x0103, 0x0000, 0x0101,
 511        0x0002, 0x0103, 0x0000, 0x0101, 0x0002, 0x0103,
 512        0x0000, 0x0101, 0x0002, 0x0103, 0x0000, 0x0101,
 513        0x0002, 0x0103, 0x0000, 0x0101, 0x0002, 0x0103,
 514        0x0000, 0x0101, 0x0002, 0x0103, 0x0000, 0x0101,
 515        0x0002, 0x0103, 0x0000, 0x0101, 0x0002, 0x0103,
 516        0x0000, 0x0101, 0x0002, 0x0103, 0x0000, 0x0101,
 517        0x0002, 0x0103, 0x0000, 0x0101, 0x0002, 0x0103,
 518        0x0000, 0x0101, 0x0002, 0x0103, 0x0000, 0x0101,
 519        0x0002, 0x0103, 0x0000, 0x0101, 0x0002, 0x0103,
 520        0x0000, 0x0101, 0x0002, 0x0103, 0x0000, 0x0101,
 521        0x0002, 0x0103, 0x0000, 0x0101, 0x0002, 0x0103,
 522        0x0000, 0x0101, 0x0002, 0x0103, 0x0000, 0x0101,
 523        0x0002, 0x0103, 0x0000, 0x0101, 0x0002, 0x0103,
 524        0x0000, 0x0101, 0x0002, 0x0103, 0x0000, 0x0101,
 525        0x0002, 0x0103, 0x0000, 0x0101, 0x0002, 0x0103,
 526        0x0000, 0x0101, 0x0002, 0x0103, 0x0000, 0x0101,
 527        0x0002, 0x0103, 0x0000, 0x0101, 0x0002, 0x0103,
 528        0x0000, 0x0101, 0x0002, 0x0103, 0x0000, 0x0101,
 529        0x0002, 0x0103, 0x0000, 0x0101, 0x0002, 0x0103,
 530        0x0000, 0x0101, 0x0002, 0x0103, 0x0000, 0x0101,
 531        0x0002, 0x0103,
 532};
 533
 534static const u8 b43_ntab_mcs[] = {
 535        0x00, 0x08, 0x0A, 0x10, 0x12, 0x19, 0x1A, 0x1C,
 536        0x40, 0x48, 0x4A, 0x50, 0x52, 0x59, 0x5A, 0x5C,
 537        0x80, 0x88, 0x8A, 0x90, 0x92, 0x99, 0x9A, 0x9C,
 538        0xC0, 0xC8, 0xCA, 0xD0, 0xD2, 0xD9, 0xDA, 0xDC,
 539        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 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, 0x01, 0x02, 0x04, 0x08, 0x09, 0x0A, 0x0C,
 544        0x10, 0x11, 0x12, 0x14, 0x18, 0x19, 0x1A, 0x1C,
 545        0x20, 0x21, 0x22, 0x24, 0x40, 0x41, 0x42, 0x44,
 546        0x48, 0x49, 0x4A, 0x4C, 0x50, 0x51, 0x52, 0x54,
 547        0x58, 0x59, 0x5A, 0x5C, 0x60, 0x61, 0x62, 0x64,
 548        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 549        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 550        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 551};
 552
 553static const u32 b43_ntab_noisevar10[] = {
 554        0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
 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};
 619
 620static const u32 b43_ntab_noisevar11[] = {
 621        0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
 622        0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
 623        0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
 624        0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
 625        0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
 626        0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
 627        0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
 628        0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
 629        0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
 630        0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
 631        0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
 632        0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
 633        0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
 634        0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
 635        0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
 636        0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
 637        0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
 638        0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
 639        0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
 640        0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
 641        0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
 642        0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
 643        0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
 644        0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
 645        0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
 646        0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
 647        0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
 648        0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
 649        0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
 650        0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
 651        0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
 652        0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
 653        0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
 654        0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
 655        0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
 656        0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
 657        0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
 658        0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
 659        0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
 660        0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
 661        0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
 662        0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
 663        0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
 664        0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
 665        0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
 666        0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
 667        0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
 668        0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
 669        0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
 670        0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
 671        0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
 672        0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
 673        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};
 686
 687static const u16 b43_ntab_pilot[] = {
 688        0xFF08, 0xFF08, 0xFF08, 0xFF08, 0xFF08, 0xFF08,
 689        0xFF08, 0xFF08, 0x80D5, 0x80D5, 0x80D5, 0x80D5,
 690        0x80D5, 0x80D5, 0x80D5, 0x80D5, 0xFF0A, 0xFF82,
 691        0xFFA0, 0xFF28, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
 692        0xFF82, 0xFFA0, 0xFF28, 0xFF0A, 0xFFFF, 0xFFFF,
 693        0xFFFF, 0xFFFF, 0xF83F, 0xFA1F, 0xFA97, 0xFAB5,
 694        0xF2BD, 0xF0BF, 0xFFFF, 0xFFFF, 0xF017, 0xF815,
 695        0xF215, 0xF095, 0xF035, 0xF01D, 0xFFFF, 0xFFFF,
 696        0xFF08, 0xFF02, 0xFF80, 0xFF20, 0xFF08, 0xFF02,
 697        0xFF80, 0xFF20, 0xF01F, 0xF817, 0xFA15, 0xF295,
 698        0xF0B5, 0xF03D, 0xFFFF, 0xFFFF, 0xF82A, 0xFA0A,
 699        0xFA82, 0xFAA0, 0xF2A8, 0xF0AA, 0xFFFF, 0xFFFF,
 700        0xF002, 0xF800, 0xF200, 0xF080, 0xF020, 0xF008,
 701        0xFFFF, 0xFFFF, 0xF00A, 0xF802, 0xFA00, 0xF280,
 702        0xF0A0, 0xF028, 0xFFFF, 0xFFFF,
 703};
 704
 705static const u32 b43_ntab_pilotlt[] = {
 706        0x76540123, 0x62407351, 0x76543201, 0x76540213,
 707        0x76540123, 0x76430521,
 708};
 709
 710static const u32 b43_ntab_tdi20a0[] = {
 711        0x00091226, 0x000A1429, 0x000B56AD, 0x000C58B0,
 712        0x000D5AB3, 0x000E9CB6, 0x000F9EBA, 0x0000C13D,
 713        0x00020301, 0x00030504, 0x00040708, 0x0005090B,
 714        0x00064B8E, 0x00095291, 0x000A5494, 0x000B9718,
 715        0x000C9927, 0x000D9B2A, 0x000EDD2E, 0x000FDF31,
 716        0x000101B4, 0x000243B7, 0x000345BB, 0x000447BE,
 717        0x00058982, 0x00068C05, 0x00099309, 0x000A950C,
 718        0x000BD78F, 0x000CD992, 0x000DDB96, 0x000F1D99,
 719        0x00005FA8, 0x0001422C, 0x0002842F, 0x00038632,
 720        0x00048835, 0x0005CA38, 0x0006CCBC, 0x0009D3BF,
 721        0x000B1603, 0x000C1806, 0x000D1A0A, 0x000E1C0D,
 722        0x000F5E10, 0x00008093, 0x00018297, 0x0002C49A,
 723        0x0003C680, 0x0004C880, 0x00060B00, 0x00070D00,
 724        0x00000000, 0x00000000, 0x00000000,
 725};
 726
 727static const u32 b43_ntab_tdi20a1[] = {
 728        0x00014B26, 0x00028D29, 0x000393AD, 0x00049630,
 729        0x0005D833, 0x0006DA36, 0x00099C3A, 0x000A9E3D,
 730        0x000BC081, 0x000CC284, 0x000DC488, 0x000F068B,
 731        0x0000488E, 0x00018B91, 0x0002D214, 0x0003D418,
 732        0x0004D6A7, 0x000618AA, 0x00071AAE, 0x0009DCB1,
 733        0x000B1EB4, 0x000C0137, 0x000D033B, 0x000E053E,
 734        0x000F4702, 0x00008905, 0x00020C09, 0x0003128C,
 735        0x0004148F, 0x00051712, 0x00065916, 0x00091B19,
 736        0x000A1D28, 0x000B5F2C, 0x000C41AF, 0x000D43B2,
 737        0x000E85B5, 0x000F87B8, 0x0000C9BC, 0x00024CBF,
 738        0x00035303, 0x00045506, 0x0005978A, 0x0006998D,
 739        0x00095B90, 0x000A5D93, 0x000B9F97, 0x000C821A,
 740        0x000D8400, 0x000EC600, 0x000FC800, 0x00010A00,
 741        0x00000000, 0x00000000, 0x00000000,
 742};
 743
 744static const u32 b43_ntab_tdi40a0[] = {
 745        0x0011A346, 0x00136CCF, 0x0014F5D9, 0x001641E2,
 746        0x0017CB6B, 0x00195475, 0x001B2383, 0x001CAD0C,
 747        0x001E7616, 0x0000821F, 0x00020BA8, 0x0003D4B2,
 748        0x00056447, 0x00072DD0, 0x0008B6DA, 0x000A02E3,
 749        0x000B8C6C, 0x000D15F6, 0x0011E484, 0x0013AE0D,
 750        0x00153717, 0x00168320, 0x00180CA9, 0x00199633,
 751        0x001B6548, 0x001CEED1, 0x001EB7DB, 0x0000C3E4,
 752        0x00024D6D, 0x000416F7, 0x0005A585, 0x00076F0F,
 753        0x0008F818, 0x000A4421, 0x000BCDAB, 0x000D9734,
 754        0x00122649, 0x0013EFD2, 0x001578DC, 0x0016C4E5,
 755        0x00184E6E, 0x001A17F8, 0x001BA686, 0x001D3010,
 756        0x001EF999, 0x00010522, 0x00028EAC, 0x00045835,
 757        0x0005E74A, 0x0007B0D3, 0x00093A5D, 0x000A85E6,
 758        0x000C0F6F, 0x000DD8F9, 0x00126787, 0x00143111,
 759        0x0015BA9A, 0x00170623, 0x00188FAD, 0x001A5936,
 760        0x001BE84B, 0x001DB1D4, 0x001F3B5E, 0x000146E7,
 761        0x00031070, 0x000499FA, 0x00062888, 0x0007F212,
 762        0x00097B9B, 0x000AC7A4, 0x000C50AE, 0x000E1A37,
 763        0x0012A94C, 0x001472D5, 0x0015FC5F, 0x00174868,
 764        0x0018D171, 0x001A9AFB, 0x001C2989, 0x001DF313,
 765        0x001F7C9C, 0x000188A5, 0x000351AF, 0x0004DB38,
 766        0x0006AA4D, 0x000833D7, 0x0009BD60, 0x000B0969,
 767        0x000C9273, 0x000E5BFC, 0x00132A8A, 0x0014B414,
 768        0x00163D9D, 0x001789A6, 0x001912B0, 0x001ADC39,
 769        0x001C6BCE, 0x001E34D8, 0x001FBE61, 0x0001CA6A,
 770        0x00039374, 0x00051CFD, 0x0006EC0B, 0x00087515,
 771        0x0009FE9E, 0x000B4AA7, 0x000CD3B1, 0x000E9D3A,
 772        0x00000000, 0x00000000,
 773};
 774
 775static const u32 b43_ntab_tdi40a1[] = {
 776        0x001EDB36, 0x000129CA, 0x0002B353, 0x00047CDD,
 777        0x0005C8E6, 0x000791EF, 0x00091BF9, 0x000AAA07,
 778        0x000C3391, 0x000DFD1A, 0x00120923, 0x0013D22D,
 779        0x00155C37, 0x0016EACB, 0x00187454, 0x001A3DDE,
 780        0x001B89E7, 0x001D12F0, 0x001F1CFA, 0x00016B88,
 781        0x00033492, 0x0004BE1B, 0x00060A24, 0x0007D32E,
 782        0x00095D38, 0x000AEC4C, 0x000C7555, 0x000E3EDF,
 783        0x00124AE8, 0x001413F1, 0x0015A37B, 0x00172C89,
 784        0x0018B593, 0x001A419C, 0x001BCB25, 0x001D942F,
 785        0x001F63B9, 0x0001AD4D, 0x00037657, 0x0004C260,
 786        0x00068BE9, 0x000814F3, 0x0009A47C, 0x000B2D8A,
 787        0x000CB694, 0x000E429D, 0x00128C26, 0x001455B0,
 788        0x0015E4BA, 0x00176E4E, 0x0018F758, 0x001A8361,
 789        0x001C0CEA, 0x001DD674, 0x001FA57D, 0x0001EE8B,
 790        0x0003B795, 0x0005039E, 0x0006CD27, 0x000856B1,
 791        0x0009E5C6, 0x000B6F4F, 0x000CF859, 0x000E8462,
 792        0x00130DEB, 0x00149775, 0x00162603, 0x0017AF8C,
 793        0x00193896, 0x001AC49F, 0x001C4E28, 0x001E17B2,
 794        0x0000A6C7, 0x00023050, 0x0003F9DA, 0x00054563,
 795        0x00070EEC, 0x00089876, 0x000A2704, 0x000BB08D,
 796        0x000D3A17, 0x001185A0, 0x00134F29, 0x0014D8B3,
 797        0x001667C8, 0x0017F151, 0x00197ADB, 0x001B0664,
 798        0x001C8FED, 0x001E5977, 0x0000E805, 0x0002718F,
 799        0x00043B18, 0x000586A1, 0x0007502B, 0x0008D9B4,
 800        0x000A68C9, 0x000BF252, 0x000DBBDC, 0x0011C7E5,
 801        0x001390EE, 0x00151A78, 0x0016A906, 0x00183290,
 802        0x0019BC19, 0x001B4822, 0x001CD12C, 0x001E9AB5,
 803        0x00000000, 0x00000000,
 804};
 805
 806static const u32 b43_ntab_tdtrn[] = {
 807        0x061C061C, 0x0050EE68, 0xF592FE36, 0xFE5212F6,
 808        0x00000C38, 0xFE5212F6, 0xF592FE36, 0x0050EE68,
 809        0x061C061C, 0xEE680050, 0xFE36F592, 0x12F6FE52,
 810        0x0C380000, 0x12F6FE52, 0xFE36F592, 0xEE680050,
 811        0x061C061C, 0x0050EE68, 0xF592FE36, 0xFE5212F6,
 812        0x00000C38, 0xFE5212F6, 0xF592FE36, 0x0050EE68,
 813        0x061C061C, 0xEE680050, 0xFE36F592, 0x12F6FE52,
 814        0x0C380000, 0x12F6FE52, 0xFE36F592, 0xEE680050,
 815        0x05E305E3, 0x004DEF0C, 0xF5F3FE47, 0xFE611246,
 816        0x00000BC7, 0xFE611246, 0xF5F3FE47, 0x004DEF0C,
 817        0x05E305E3, 0xEF0C004D, 0xFE47F5F3, 0x1246FE61,
 818        0x0BC70000, 0x1246FE61, 0xFE47F5F3, 0xEF0C004D,
 819        0x05E305E3, 0x004DEF0C, 0xF5F3FE47, 0xFE611246,
 820        0x00000BC7, 0xFE611246, 0xF5F3FE47, 0x004DEF0C,
 821        0x05E305E3, 0xEF0C004D, 0xFE47F5F3, 0x1246FE61,
 822        0x0BC70000, 0x1246FE61, 0xFE47F5F3, 0xEF0C004D,
 823        0xFA58FA58, 0xF895043B, 0xFF4C09C0, 0xFBC6FFA8,
 824        0xFB84F384, 0x0798F6F9, 0x05760122, 0x058409F6,
 825        0x0B500000, 0x05B7F542, 0x08860432, 0x06DDFEE7,
 826        0xFB84F384, 0xF9D90664, 0xF7E8025C, 0x00FFF7BD,
 827        0x05A805A8, 0xF7BD00FF, 0x025CF7E8, 0x0664F9D9,
 828        0xF384FB84, 0xFEE706DD, 0x04320886, 0xF54205B7,
 829        0x00000B50, 0x09F60584, 0x01220576, 0xF6F90798,
 830        0xF384FB84, 0xFFA8FBC6, 0x09C0FF4C, 0x043BF895,
 831        0x02D402D4, 0x07DE0270, 0xFC96079C, 0xF90AFE94,
 832        0xFE00FF2C, 0x02D4065D, 0x092A0096, 0x0014FBB8,
 833        0xFD2CFD2C, 0x076AFB3C, 0x0096F752, 0xF991FD87,
 834        0xFB2C0200, 0xFEB8F960, 0x08E0FC96, 0x049802A8,
 835        0xFD2CFD2C, 0x02A80498, 0xFC9608E0, 0xF960FEB8,
 836        0x0200FB2C, 0xFD87F991, 0xF7520096, 0xFB3C076A,
 837        0xFD2CFD2C, 0xFBB80014, 0x0096092A, 0x065D02D4,
 838        0xFF2CFE00, 0xFE94F90A, 0x079CFC96, 0x027007DE,
 839        0x02D402D4, 0x027007DE, 0x079CFC96, 0xFE94F90A,
 840        0xFF2CFE00, 0x065D02D4, 0x0096092A, 0xFBB80014,
 841        0xFD2CFD2C, 0xFB3C076A, 0xF7520096, 0xFD87F991,
 842        0x0200FB2C, 0xF960FEB8, 0xFC9608E0, 0x02A80498,
 843        0xFD2CFD2C, 0x049802A8, 0x08E0FC96, 0xFEB8F960,
 844        0xFB2C0200, 0xF991FD87, 0x0096F752, 0x076AFB3C,
 845        0xFD2CFD2C, 0x0014FBB8, 0x092A0096, 0x02D4065D,
 846        0xFE00FF2C, 0xF90AFE94, 0xFC96079C, 0x07DE0270,
 847        0x00000000, 0x00000000, 0x00000000, 0x00000000,
 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        0x062A0000, 0xFEFA0759, 0x08B80908, 0xF396FC2D,
 872        0xF9D6045C, 0xFC4EF608, 0xF748F596, 0x07B207BF,
 873        0x062A062A, 0xF84EF841, 0xF748F596, 0x03B209F8,
 874        0xF9D6045C, 0x0C6A03D3, 0x08B80908, 0x0106F8A7,
 875        0x062A0000, 0xFEFAF8A7, 0x08B8F6F8, 0xF39603D3,
 876        0xF9D6FBA4, 0xFC4E09F8, 0xF7480A6A, 0x07B2F841,
 877        0x062AF9D6, 0xF84E07BF, 0xF7480A6A, 0x03B2F608,
 878        0xF9D6FBA4, 0x0C6AFC2D, 0x08B8F6F8, 0x01060759,
 879        0x062A0000, 0xFEFA0759, 0x08B80908, 0xF396FC2D,
 880        0xF9D6045C, 0xFC4EF608, 0xF748F596, 0x07B207BF,
 881        0x062A062A, 0xF84EF841, 0xF748F596, 0x03B209F8,
 882        0xF9D6045C, 0x0C6A03D3, 0x08B80908, 0x0106F8A7,
 883        0x062A0000, 0xFEFAF8A7, 0x08B8F6F8, 0xF39603D3,
 884        0xF9D6FBA4, 0xFC4E09F8, 0xF7480A6A, 0x07B2F841,
 885        0x062AF9D6, 0xF84E07BF, 0xF7480A6A, 0x03B2F608,
 886        0xF9D6FBA4, 0x0C6AFC2D, 0x08B8F6F8, 0x01060759,
 887        0x061C061C, 0xFF30009D, 0xFFB21141, 0xFD87FB54,
 888        0xF65DFE59, 0x02EEF99E, 0x0166F03C, 0xFFF809B6,
 889        0x000008A4, 0x000AF42B, 0x00EFF577, 0xFA840BF2,
 890        0xFC02FF51, 0x08260F67, 0xFFF0036F, 0x0842F9C3,
 891        0x00000000, 0x063DF7BE, 0xFC910010, 0xF099F7DA,
 892        0x00AF03FE, 0xF40E057C, 0x0A89FF11, 0x0BD5FFF6,
 893        0xF75C0000, 0xF64A0008, 0x0FC4FE9A, 0x0662FD12,
 894        0x01A709A3, 0x04AC0279, 0xEEBF004E, 0xFF6300D0,
 895        0xF9E4F9E4, 0x00D0FF63, 0x004EEEBF, 0x027904AC,
 896        0x09A301A7, 0xFD120662, 0xFE9A0FC4, 0x0008F64A,
 897        0x0000F75C, 0xFFF60BD5, 0xFF110A89, 0x057CF40E,
 898        0x03FE00AF, 0xF7DAF099, 0x0010FC91, 0xF7BE063D,
 899        0x00000000, 0xF9C30842, 0x036FFFF0, 0x0F670826,
 900        0xFF51FC02, 0x0BF2FA84, 0xF57700EF, 0xF42B000A,
 901        0x08A40000, 0x09B6FFF8, 0xF03C0166, 0xF99E02EE,
 902        0xFE59F65D, 0xFB54FD87, 0x1141FFB2, 0x009DFF30,
 903        0x05E30000, 0xFF060705, 0x085408A0, 0xF425FC59,
 904        0xFA1D042A, 0xFC78F67A, 0xF7ACF60E, 0x075A0766,
 905        0x05E305E3, 0xF8A6F89A, 0xF7ACF60E, 0x03880986,
 906        0xFA1D042A, 0x0BDB03A7, 0x085408A0, 0x00FAF8FB,
 907        0x05E30000, 0xFF06F8FB, 0x0854F760, 0xF42503A7,
 908        0xFA1DFBD6, 0xFC780986, 0xF7AC09F2, 0x075AF89A,
 909        0x05E3FA1D, 0xF8A60766, 0xF7AC09F2, 0x0388F67A,
 910        0xFA1DFBD6, 0x0BDBFC59, 0x0854F760, 0x00FA0705,
 911        0x05E30000, 0xFF060705, 0x085408A0, 0xF425FC59,
 912        0xFA1D042A, 0xFC78F67A, 0xF7ACF60E, 0x075A0766,
 913        0x05E305E3, 0xF8A6F89A, 0xF7ACF60E, 0x03880986,
 914        0xFA1D042A, 0x0BDB03A7, 0x085408A0, 0x00FAF8FB,
 915        0x05E30000, 0xFF06F8FB, 0x0854F760, 0xF42503A7,
 916        0xFA1DFBD6, 0xFC780986, 0xF7AC09F2, 0x075AF89A,
 917        0x05E3FA1D, 0xF8A60766, 0xF7AC09F2, 0x0388F67A,
 918        0xFA1DFBD6, 0x0BDBFC59, 0x0854F760, 0x00FA0705,
 919        0xFA58FA58, 0xF8F0FE00, 0x0448073D, 0xFDC9FE46,
 920        0xF9910258, 0x089D0407, 0xFD5CF71A, 0x02AFFDE0,
 921        0x083E0496, 0xFF5A0740, 0xFF7AFD97, 0x00FE01F1,
 922        0x0009082E, 0xFA94FF75, 0xFECDF8EA, 0xFFB0F693,
 923        0xFD2CFA58, 0x0433FF16, 0xFBA405DD, 0xFA610341,
 924        0x06A606CB, 0x0039FD2D, 0x0677FA97, 0x01FA05E0,
 925        0xF896003E, 0x075A068B, 0x012CFC3E, 0xFA23F98D,
 926        0xFC7CFD43, 0xFF90FC0D, 0x01C10982, 0x00C601D6,
 927        0xFD2CFD2C, 0x01D600C6, 0x098201C1, 0xFC0DFF90,
 928        0xFD43FC7C, 0xF98DFA23, 0xFC3E012C, 0x068B075A,
 929        0x003EF896, 0x05E001FA, 0xFA970677, 0xFD2D0039,
 930        0x06CB06A6, 0x0341FA61, 0x05DDFBA4, 0xFF160433,
 931        0xFA58FD2C, 0xF693FFB0, 0xF8EAFECD, 0xFF75FA94,
 932        0x082E0009, 0x01F100FE, 0xFD97FF7A, 0x0740FF5A,
 933        0x0496083E, 0xFDE002AF, 0xF71AFD5C, 0x0407089D,
 934        0x0258F991, 0xFE46FDC9, 0x073D0448, 0xFE00F8F0,
 935        0xFD2CFD2C, 0xFCE00500, 0xFC09FDDC, 0xFE680157,
 936        0x04C70571, 0xFC3AFF21, 0xFCD70228, 0x056D0277,
 937        0x0200FE00, 0x0022F927, 0xFE3C032B, 0xFC44FF3C,
 938        0x03E9FBDB, 0x04570313, 0x04C9FF5C, 0x000D03B8,
 939        0xFA580000, 0xFBE900D2, 0xF9D0FE0B, 0x0125FDF9,
 940        0x042501BF, 0x0328FA2B, 0xFFA902F0, 0xFA250157,
 941        0x0200FE00, 0x03740438, 0xFF0405FD, 0x030CFE52,
 942        0x0037FB39, 0xFF6904C5, 0x04F8FD23, 0xFD31FC1B,
 943        0xFD2CFD2C, 0xFC1BFD31, 0xFD2304F8, 0x04C5FF69,
 944        0xFB390037, 0xFE52030C, 0x05FDFF04, 0x04380374,
 945        0xFE000200, 0x0157FA25, 0x02F0FFA9, 0xFA2B0328,
 946        0x01BF0425, 0xFDF90125, 0xFE0BF9D0, 0x00D2FBE9,
 947        0x0000FA58, 0x03B8000D, 0xFF5C04C9, 0x03130457,
 948        0xFBDB03E9, 0xFF3CFC44, 0x032BFE3C, 0xF9270022,
 949        0xFE000200, 0x0277056D, 0x0228FCD7, 0xFF21FC3A,
 950        0x057104C7, 0x0157FE68, 0xFDDCFC09, 0x0500FCE0,
 951        0xFD2CFD2C, 0x0500FCE0, 0xFDDCFC09, 0x0157FE68,
 952        0x057104C7, 0xFF21FC3A, 0x0228FCD7, 0x0277056D,
 953        0xFE000200, 0xF9270022, 0x032BFE3C, 0xFF3CFC44,
 954        0xFBDB03E9, 0x03130457, 0xFF5C04C9, 0x03B8000D,
 955        0x0000FA58, 0x00D2FBE9, 0xFE0BF9D0, 0xFDF90125,
 956        0x01BF0425, 0xFA2B0328, 0x02F0FFA9, 0x0157FA25,
 957        0xFE000200, 0x04380374, 0x05FDFF04, 0xFE52030C,
 958        0xFB390037, 0x04C5FF69, 0xFD2304F8, 0xFC1BFD31,
 959        0xFD2CFD2C, 0xFD31FC1B, 0x04F8FD23, 0xFF6904C5,
 960        0x0037FB39, 0x030CFE52, 0xFF0405FD, 0x03740438,
 961        0x0200FE00, 0xFA250157, 0xFFA902F0, 0x0328FA2B,
 962        0x042501BF, 0x0125FDF9, 0xF9D0FE0B, 0xFBE900D2,
 963        0xFA580000, 0x000D03B8, 0x04C9FF5C, 0x04570313,
 964        0x03E9FBDB, 0xFC44FF3C, 0xFE3C032B, 0x0022F927,
 965        0x0200FE00, 0x056D0277, 0xFCD70228, 0xFC3AFF21,
 966        0x04C70571, 0xFE680157, 0xFC09FDDC, 0xFCE00500,
 967        0x05A80000, 0xFF1006BE, 0x0800084A, 0xF49CFC7E,
 968        0xFA580400, 0xFC9CF6DA, 0xF800F672, 0x0710071C,
 969        0x05A805A8, 0xF8F0F8E4, 0xF800F672, 0x03640926,
 970        0xFA580400, 0x0B640382, 0x0800084A, 0x00F0F942,
 971        0x05A80000, 0xFF10F942, 0x0800F7B6, 0xF49C0382,
 972        0xFA58FC00, 0xFC9C0926, 0xF800098E, 0x0710F8E4,
 973        0x05A8FA58, 0xF8F0071C, 0xF800098E, 0x0364F6DA,
 974        0xFA58FC00, 0x0B64FC7E, 0x0800F7B6, 0x00F006BE,
 975        0x05A80000, 0xFF1006BE, 0x0800084A, 0xF49CFC7E,
 976        0xFA580400, 0xFC9CF6DA, 0xF800F672, 0x0710071C,
 977        0x05A805A8, 0xF8F0F8E4, 0xF800F672, 0x03640926,
 978        0xFA580400, 0x0B640382, 0x0800084A, 0x00F0F942,
 979        0x05A80000, 0xFF10F942, 0x0800F7B6, 0xF49C0382,
 980        0xFA58FC00, 0xFC9C0926, 0xF800098E, 0x0710F8E4,
 981        0x05A8FA58, 0xF8F0071C, 0xF800098E, 0x0364F6DA,
 982        0xFA58FC00, 0x0B64FC7E, 0x0800F7B6, 0x00F006BE,
 983};
 984
 985static const u32 b43_ntab_tmap[] = {
 986        0x8A88AA80, 0x8AAAAA8A, 0x8A8A8AA8, 0x00000888,
 987        0x88000000, 0x8A8A88AA, 0x8AA88888, 0x8888A8A8,
 988        0xF1111110, 0x11111111, 0x11F11111, 0x00000111,
 989        0x11000000, 0x1111F111, 0x11111111, 0x111111F1,
 990        0x8A88AA80, 0x8AAAAA8A, 0x8A8A8AA8, 0x000AA888,
 991        0x88880000, 0x8A8A88AA, 0x8AA88888, 0x8888A8A8,
 992        0xA1111110, 0x11111111, 0x11C11111, 0x00000111,
 993        0x11000000, 0x1111A111, 0x11111111, 0x111111A1,
 994        0xA2222220, 0x22222222, 0x22C22222, 0x00000222,
 995        0x22000000, 0x2222A222, 0x22222222, 0x222222A2,
 996        0xF1111110, 0x11111111, 0x11F11111, 0x00011111,
 997        0x11110000, 0x1111F111, 0x11111111, 0x111111F1,
 998        0xA8AA88A0, 0xA88888A8, 0xA8A8A88A, 0x00088AAA,
 999        0xAAAA0000, 0xA8A8AA88, 0xA88AAAAA, 0xAAAA8A8A,
1000        0xAAA8AAA0, 0x8AAA8AAA, 0xAA8A8A8A, 0x000AAA88,
1001        0x8AAA0000, 0xAAA8A888, 0x8AA88A8A, 0x8A88A888,
1002        0x08080A00, 0x0A08080A, 0x080A0A08, 0x00080808,
1003        0x080A0000, 0x080A0808, 0x080A0808, 0x0A0A0A08,
1004        0xA0A0A0A0, 0x80A0A080, 0x8080A0A0, 0x00008080,
1005        0x80A00000, 0x80A080A0, 0xA080A0A0, 0x8080A0A0,
1006        0x00000000, 0x00000000, 0x00000000, 0x00000000,
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        0x99999000, 0x9B9B99BB, 0x9BB99999, 0x9999B9B9,
1019        0x9B99BB90, 0x9BBBBB9B, 0x9B9B9BB9, 0x00000999,
1020        0x88000000, 0x8A8A88AA, 0x8AA88888, 0x8888A8A8,
1021        0x8A88AA80, 0x8AAAAA8A, 0x8A8A8AA8, 0x00AAA888,
1022        0x22000000, 0x2222B222, 0x22222222, 0x222222B2,
1023        0xB2222220, 0x22222222, 0x22D22222, 0x00000222,
1024        0x11000000, 0x1111A111, 0x11111111, 0x111111A1,
1025        0xA1111110, 0x11111111, 0x11C11111, 0x00000111,
1026        0x33000000, 0x3333B333, 0x33333333, 0x333333B3,
1027        0xB3333330, 0x33333333, 0x33D33333, 0x00000333,
1028        0x22000000, 0x2222A222, 0x22222222, 0x222222A2,
1029        0xA2222220, 0x22222222, 0x22C22222, 0x00000222,
1030        0x99B99B00, 0x9B9B99BB, 0x9BB99999, 0x9999B9B9,
1031        0x9B99BB99, 0x9BBBBB9B, 0x9B9B9BB9, 0x00000999,
1032        0x88000000, 0x8A8A88AA, 0x8AA88888, 0x8888A8A8,
1033        0x8A88AA88, 0x8AAAAA8A, 0x8A8A8AA8, 0x08AAA888,
1034        0x22222200, 0x2222F222, 0x22222222, 0x222222F2,
1035        0x22222222, 0x22222222, 0x22F22222, 0x00000222,
1036        0x11000000, 0x1111F111, 0x11111111, 0x11111111,
1037        0xF1111111, 0x11111111, 0x11F11111, 0x01111111,
1038        0xBB9BB900, 0xB9B9BB99, 0xB99BBBBB, 0xBBBB9B9B,
1039        0xB9BB99BB, 0xB99999B9, 0xB9B9B99B, 0x00000BBB,
1040        0xAA000000, 0xA8A8AA88, 0xA88AAAAA, 0xAAAA8A8A,
1041        0xA8AA88AA, 0xA88888A8, 0xA8A8A88A, 0x0A888AAA,
1042        0xAA000000, 0xA8A8AA88, 0xA88AAAAA, 0xAAAA8A8A,
1043        0xA8AA88A0, 0xA88888A8, 0xA8A8A88A, 0x00000AAA,
1044        0x88000000, 0x8A8A88AA, 0x8AA88888, 0x8888A8A8,
1045        0x8A88AA80, 0x8AAAAA8A, 0x8A8A8AA8, 0x00000888,
1046        0xBBBBBB00, 0x999BBBBB, 0x9BB99B9B, 0xB9B9B9BB,
1047        0xB9B99BBB, 0xB9B9B9BB, 0xB9BB9B99, 0x00000999,
1048        0x8A000000, 0xAA88A888, 0xA88888AA, 0xA88A8A88,
1049        0xA88AA88A, 0x88A8AAAA, 0xA8AA8AAA, 0x0888A88A,
1050        0x0B0B0B00, 0x090B0B0B, 0x0B090B0B, 0x0909090B,
1051        0x09090B0B, 0x09090B0B, 0x09090B09, 0x00000909,
1052        0x0A000000, 0x0A080808, 0x080A080A, 0x080A0A08,
1053        0x080A080A, 0x0808080A, 0x0A0A0A08, 0x0808080A,
1054        0xB0B0B000, 0x9090B0B0, 0x90B09090, 0xB0B0B090,
1055        0xB0B090B0, 0x90B0B0B0, 0xB0B09090, 0x00000090,
1056        0x80000000, 0xA080A080, 0xA08080A0, 0xA0808080,
1057        0xA080A080, 0x80A0A0A0, 0xA0A080A0, 0x00A0A0A0,
1058        0x22000000, 0x2222F222, 0x22222222, 0x222222F2,
1059        0xF2222220, 0x22222222, 0x22F22222, 0x00000222,
1060        0x11000000, 0x1111F111, 0x11111111, 0x111111F1,
1061        0xF1111110, 0x11111111, 0x11F11111, 0x00000111,
1062        0x33000000, 0x3333F333, 0x33333333, 0x333333F3,
1063        0xF3333330, 0x33333333, 0x33F33333, 0x00000333,
1064        0x22000000, 0x2222F222, 0x22222222, 0x222222F2,
1065        0xF2222220, 0x22222222, 0x22F22222, 0x00000222,
1066        0x99000000, 0x9B9B99BB, 0x9BB99999, 0x9999B9B9,
1067        0x9B99BB90, 0x9BBBBB9B, 0x9B9B9BB9, 0x00000999,
1068        0x88000000, 0x8A8A88AA, 0x8AA88888, 0x8888A8A8,
1069        0x8A88AA80, 0x8AAAAA8A, 0x8A8A8AA8, 0x00000888,
1070        0x88888000, 0x8A8A88AA, 0x8AA88888, 0x8888A8A8,
1071        0x8A88AA80, 0x8AAAAA8A, 0x8A8A8AA8, 0x00000888,
1072        0x88000000, 0x8A8A88AA, 0x8AA88888, 0x8888A8A8,
1073        0x8A88AA80, 0x8AAAAA8A, 0x8A8A8AA8, 0x00AAA888,
1074        0x88A88A00, 0x8A8A88AA, 0x8AA88888, 0x8888A8A8,
1075        0x8A88AA88, 0x8AAAAA8A, 0x8A8A8AA8, 0x00000888,
1076        0x88000000, 0x8A8A88AA, 0x8AA88888, 0x8888A8A8,
1077        0x8A88AA88, 0x8AAAAA8A, 0x8A8A8AA8, 0x08AAA888,
1078        0x11000000, 0x1111A111, 0x11111111, 0x111111A1,
1079        0xA1111110, 0x11111111, 0x11C11111, 0x00000111,
1080        0x11000000, 0x1111A111, 0x11111111, 0x111111A1,
1081        0xA1111110, 0x11111111, 0x11C11111, 0x00000111,
1082        0x88000000, 0x8A8A88AA, 0x8AA88888, 0x8888A8A8,
1083        0x8A88AA80, 0x8AAAAA8A, 0x8A8A8AA8, 0x00000888,
1084        0x88000000, 0x8A8A88AA, 0x8AA88888, 0x8888A8A8,
1085        0x8A88AA80, 0x8AAAAA8A, 0x8A8A8AA8, 0x00000888,
1086        0x00000000, 0x00000000, 0x00000000, 0x00000000,
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};
1099
1100const u32 b43_ntab_tx_gain_rev0_1_2[] = {
1101        0x03cc2b44, 0x03cc2b42, 0x03cc2a44, 0x03cc2a42,
1102        0x03cc2944, 0x03c82b44, 0x03c82b42, 0x03c82a44,
1103        0x03c82a42, 0x03c82944, 0x03c82942, 0x03c82844,
1104        0x03c82842, 0x03c42b44, 0x03c42b42, 0x03c42a44,
1105        0x03c42a42, 0x03c42944, 0x03c42942, 0x03c42844,
1106        0x03c42842, 0x03c42744, 0x03c42742, 0x03c42644,
1107        0x03c42642, 0x03c42544, 0x03c42542, 0x03c42444,
1108        0x03c42442, 0x03c02b44, 0x03c02b42, 0x03c02a44,
1109        0x03c02a42, 0x03c02944, 0x03c02942, 0x03c02844,
1110        0x03c02842, 0x03c02744, 0x03c02742, 0x03b02b44,
1111        0x03b02b42, 0x03b02a44, 0x03b02a42, 0x03b02944,
1112        0x03b02942, 0x03b02844, 0x03b02842, 0x03b02744,
1113        0x03b02742, 0x03b02644, 0x03b02642, 0x03b02544,
1114        0x03b02542, 0x03a02b44, 0x03a02b42, 0x03a02a44,
1115        0x03a02a42, 0x03a02944, 0x03a02942, 0x03a02844,
1116        0x03a02842, 0x03a02744, 0x03a02742, 0x03902b44,
1117        0x03902b42, 0x03902a44, 0x03902a42, 0x03902944,
1118        0x03902942, 0x03902844, 0x03902842, 0x03902744,
1119        0x03902742, 0x03902644, 0x03902642, 0x03902544,
1120        0x03902542, 0x03802b44, 0x03802b42, 0x03802a44,
1121        0x03802a42, 0x03802944, 0x03802942, 0x03802844,
1122        0x03802842, 0x03802744, 0x03802742, 0x03802644,
1123        0x03802642, 0x03802544, 0x03802542, 0x03802444,
1124        0x03802442, 0x03802344, 0x03802342, 0x03802244,
1125        0x03802242, 0x03802144, 0x03802142, 0x03802044,
1126        0x03802042, 0x03801f44, 0x03801f42, 0x03801e44,
1127        0x03801e42, 0x03801d44, 0x03801d42, 0x03801c44,
1128        0x03801c42, 0x03801b44, 0x03801b42, 0x03801a44,
1129        0x03801a42, 0x03801944, 0x03801942, 0x03801844,
1130        0x03801842, 0x03801744, 0x03801742, 0x03801644,
1131        0x03801642, 0x03801544, 0x03801542, 0x03801444,
1132        0x03801442, 0x03801344, 0x03801342, 0x00002b00,
1133};
1134
1135const u32 b43_ntab_tx_gain_rev3plus_2ghz[] = {
1136        0x1f410044, 0x1f410042, 0x1f410040, 0x1f41003e,
1137        0x1f41003c, 0x1f41003b, 0x1f410039, 0x1f410037,
1138        0x1e410044, 0x1e410042, 0x1e410040, 0x1e41003e,
1139        0x1e41003c, 0x1e41003b, 0x1e410039, 0x1e410037,
1140        0x1d410044, 0x1d410042, 0x1d410040, 0x1d41003e,
1141        0x1d41003c, 0x1d41003b, 0x1d410039, 0x1d410037,
1142        0x1c410044, 0x1c410042, 0x1c410040, 0x1c41003e,
1143        0x1c41003c, 0x1c41003b, 0x1c410039, 0x1c410037,
1144        0x1b410044, 0x1b410042, 0x1b410040, 0x1b41003e,
1145        0x1b41003c, 0x1b41003b, 0x1b410039, 0x1b410037,
1146        0x1a410044, 0x1a410042, 0x1a410040, 0x1a41003e,
1147        0x1a41003c, 0x1a41003b, 0x1a410039, 0x1a410037,
1148        0x19410044, 0x19410042, 0x19410040, 0x1941003e,
1149        0x1941003c, 0x1941003b, 0x19410039, 0x19410037,
1150        0x18410044, 0x18410042, 0x18410040, 0x1841003e,
1151        0x1841003c, 0x1841003b, 0x18410039, 0x18410037,
1152        0x17410044, 0x17410042, 0x17410040, 0x1741003e,
1153        0x1741003c, 0x1741003b, 0x17410039, 0x17410037,
1154        0x16410044, 0x16410042, 0x16410040, 0x1641003e,
1155        0x1641003c, 0x1641003b, 0x16410039, 0x16410037,
1156        0x15410044, 0x15410042, 0x15410040, 0x1541003e,
1157        0x1541003c, 0x1541003b, 0x15410039, 0x15410037,
1158        0x14410044, 0x14410042, 0x14410040, 0x1441003e,
1159        0x1441003c, 0x1441003b, 0x14410039, 0x14410037,
1160        0x13410044, 0x13410042, 0x13410040, 0x1341003e,
1161        0x1341003c, 0x1341003b, 0x13410039, 0x13410037,
1162        0x12410044, 0x12410042, 0x12410040, 0x1241003e,
1163        0x1241003c, 0x1241003b, 0x12410039, 0x12410037,
1164        0x11410044, 0x11410042, 0x11410040, 0x1141003e,
1165        0x1141003c, 0x1141003b, 0x11410039, 0x11410037,
1166        0x10410044, 0x10410042, 0x10410040, 0x1041003e,
1167        0x1041003c, 0x1041003b, 0x10410039, 0x10410037,
1168};
1169
1170const u32 b43_ntab_tx_gain_rev3_5ghz[] = {
1171        0xcff70044, 0xcff70042, 0xcff70040, 0xcff7003e,
1172        0xcff7003c, 0xcff7003b, 0xcff70039, 0xcff70037,
1173        0xcef70044, 0xcef70042, 0xcef70040, 0xcef7003e,
1174        0xcef7003c, 0xcef7003b, 0xcef70039, 0xcef70037,
1175        0xcdf70044, 0xcdf70042, 0xcdf70040, 0xcdf7003e,
1176        0xcdf7003c, 0xcdf7003b, 0xcdf70039, 0xcdf70037,
1177        0xccf70044, 0xccf70042, 0xccf70040, 0xccf7003e,
1178        0xccf7003c, 0xccf7003b, 0xccf70039, 0xccf70037,
1179        0xcbf70044, 0xcbf70042, 0xcbf70040, 0xcbf7003e,
1180        0xcbf7003c, 0xcbf7003b, 0xcbf70039, 0xcbf70037,
1181        0xcaf70044, 0xcaf70042, 0xcaf70040, 0xcaf7003e,
1182        0xcaf7003c, 0xcaf7003b, 0xcaf70039, 0xcaf70037,
1183        0xc9f70044, 0xc9f70042, 0xc9f70040, 0xc9f7003e,
1184        0xc9f7003c, 0xc9f7003b, 0xc9f70039, 0xc9f70037,
1185        0xc8f70044, 0xc8f70042, 0xc8f70040, 0xc8f7003e,
1186        0xc8f7003c, 0xc8f7003b, 0xc8f70039, 0xc8f70037,
1187        0xc7f70044, 0xc7f70042, 0xc7f70040, 0xc7f7003e,
1188        0xc7f7003c, 0xc7f7003b, 0xc7f70039, 0xc7f70037,
1189        0xc6f70044, 0xc6f70042, 0xc6f70040, 0xc6f7003e,
1190        0xc6f7003c, 0xc6f7003b, 0xc6f70039, 0xc6f70037,
1191        0xc5f70044, 0xc5f70042, 0xc5f70040, 0xc5f7003e,
1192        0xc5f7003c, 0xc5f7003b, 0xc5f70039, 0xc5f70037,
1193        0xc4f70044, 0xc4f70042, 0xc4f70040, 0xc4f7003e,
1194        0xc4f7003c, 0xc4f7003b, 0xc4f70039, 0xc4f70037,
1195        0xc3f70044, 0xc3f70042, 0xc3f70040, 0xc3f7003e,
1196        0xc3f7003c, 0xc3f7003b, 0xc3f70039, 0xc3f70037,
1197        0xc2f70044, 0xc2f70042, 0xc2f70040, 0xc2f7003e,
1198        0xc2f7003c, 0xc2f7003b, 0xc2f70039, 0xc2f70037,
1199        0xc1f70044, 0xc1f70042, 0xc1f70040, 0xc1f7003e,
1200        0xc1f7003c, 0xc1f7003b, 0xc1f70039, 0xc1f70037,
1201        0xc0f70044, 0xc0f70042, 0xc0f70040, 0xc0f7003e,
1202        0xc0f7003c, 0xc0f7003b, 0xc0f70039, 0xc0f70037,
1203};
1204
1205const u32 b43_ntab_tx_gain_rev4_5ghz[] = {
1206        0x2ff20044, 0x2ff20042, 0x2ff20040, 0x2ff2003e,
1207        0x2ff2003c, 0x2ff2003b, 0x2ff20039, 0x2ff20037,
1208        0x2ef20044, 0x2ef20042, 0x2ef20040, 0x2ef2003e,
1209        0x2ef2003c, 0x2ef2003b, 0x2ef20039, 0x2ef20037,
1210        0x2df20044, 0x2df20042, 0x2df20040, 0x2df2003e,
1211        0x2df2003c, 0x2df2003b, 0x2df20039, 0x2df20037,
1212        0x2cf20044, 0x2cf20042, 0x2cf20040, 0x2cf2003e,
1213        0x2cf2003c, 0x2cf2003b, 0x2cf20039, 0x2cf20037,
1214        0x2bf20044, 0x2bf20042, 0x2bf20040, 0x2bf2003e,
1215        0x2bf2003c, 0x2bf2003b, 0x2bf20039, 0x2bf20037,
1216        0x2af20044, 0x2af20042, 0x2af20040, 0x2af2003e,
1217        0x2af2003c, 0x2af2003b, 0x2af20039, 0x2af20037,
1218        0x29f20044, 0x29f20042, 0x29f20040, 0x29f2003e,
1219        0x29f2003c, 0x29f2003b, 0x29f20039, 0x29f20037,
1220        0x28f20044, 0x28f20042, 0x28f20040, 0x28f2003e,
1221        0x28f2003c, 0x28f2003b, 0x28f20039, 0x28f20037,
1222        0x27f20044, 0x27f20042, 0x27f20040, 0x27f2003e,
1223        0x27f2003c, 0x27f2003b, 0x27f20039, 0x27f20037,
1224        0x26f20044, 0x26f20042, 0x26f20040, 0x26f2003e,
1225        0x26f2003c, 0x26f2003b, 0x26f20039, 0x26f20037,
1226        0x25f20044, 0x25f20042, 0x25f20040, 0x25f2003e,
1227        0x25f2003c, 0x25f2003b, 0x25f20039, 0x25f20037,
1228        0x24f20044, 0x24f20042, 0x24f20040, 0x24f2003e,
1229        0x24f2003c, 0x24f2003b, 0x24f20039, 0x24f20038,
1230        0x23f20041, 0x23f20040, 0x23f2003f, 0x23f2003e,
1231        0x23f2003c, 0x23f2003b, 0x23f20039, 0x23f20037,
1232        0x22f20044, 0x22f20042, 0x22f20040, 0x22f2003e,
1233        0x22f2003c, 0x22f2003b, 0x22f20039, 0x22f20037,
1234        0x21f20044, 0x21f20042, 0x21f20040, 0x21f2003e,
1235        0x21f2003c, 0x21f2003b, 0x21f20039, 0x21f20037,
1236        0x20d20043, 0x20d20041, 0x20d2003e, 0x20d2003c,
1237        0x20d2003a, 0x20d20038, 0x20d20036, 0x20d20034,
1238};
1239
1240const u32 b43_ntab_tx_gain_rev5plus_5ghz[] = {
1241        0x0f62004a, 0x0f620048, 0x0f620046, 0x0f620044,
1242        0x0f620042, 0x0f620040, 0x0f62003e, 0x0f62003c,
1243        0x0e620044, 0x0e620042, 0x0e620040, 0x0e62003e,
1244        0x0e62003c, 0x0e62003d, 0x0e62003b, 0x0e62003a,
1245        0x0d620043, 0x0d620041, 0x0d620040, 0x0d62003e,
1246        0x0d62003d, 0x0d62003c, 0x0d62003b, 0x0d62003a,
1247        0x0c620041, 0x0c620040, 0x0c62003f, 0x0c62003e,
1248        0x0c62003c, 0x0c62003b, 0x0c620039, 0x0c620037,
1249        0x0b620046, 0x0b620044, 0x0b620042, 0x0b620040,
1250        0x0b62003e, 0x0b62003c, 0x0b62003b, 0x0b62003a,
1251        0x0a620041, 0x0a620040, 0x0a62003e, 0x0a62003c,
1252        0x0a62003b, 0x0a62003a, 0x0a620039, 0x0a620038,
1253        0x0962003e, 0x0962003d, 0x0962003c, 0x0962003b,
1254        0x09620039, 0x09620037, 0x09620035, 0x09620033,
1255        0x08620044, 0x08620042, 0x08620040, 0x0862003e,
1256        0x0862003c, 0x0862003b, 0x0862003a, 0x08620039,
1257        0x07620043, 0x07620042, 0x07620040, 0x0762003f,
1258        0x0762003d, 0x0762003b, 0x0762003a, 0x07620039,
1259        0x0662003e, 0x0662003d, 0x0662003c, 0x0662003b,
1260        0x06620039, 0x06620037, 0x06620035, 0x06620033,
1261        0x05620046, 0x05620044, 0x05620042, 0x05620040,
1262        0x0562003e, 0x0562003c, 0x0562003b, 0x05620039,
1263        0x04620044, 0x04620042, 0x04620040, 0x0462003e,
1264        0x0462003c, 0x0462003b, 0x04620039, 0x04620038,
1265        0x0362003c, 0x0362003b, 0x0362003a, 0x03620039,
1266        0x03620038, 0x03620037, 0x03620035, 0x03620033,
1267        0x0262004c, 0x0262004a, 0x02620048, 0x02620047,
1268        0x02620046, 0x02620044, 0x02620043, 0x02620042,
1269        0x0162004a, 0x01620048, 0x01620046, 0x01620044,
1270        0x01620043, 0x01620042, 0x01620041, 0x01620040,
1271        0x00620042, 0x00620040, 0x0062003e, 0x0062003c,
1272        0x0062003b, 0x00620039, 0x00620037, 0x00620035,
1273};
1274
1275const u32 txpwrctrl_tx_gain_ipa[] = {
1276        0x5ff7002d, 0x5ff7002b, 0x5ff7002a, 0x5ff70029,
1277        0x5ff70028, 0x5ff70027, 0x5ff70026, 0x5ff70025,
1278        0x5ef7002d, 0x5ef7002b, 0x5ef7002a, 0x5ef70029,
1279        0x5ef70028, 0x5ef70027, 0x5ef70026, 0x5ef70025,
1280        0x5df7002d, 0x5df7002b, 0x5df7002a, 0x5df70029,
1281        0x5df70028, 0x5df70027, 0x5df70026, 0x5df70025,
1282        0x5cf7002d, 0x5cf7002b, 0x5cf7002a, 0x5cf70029,
1283        0x5cf70028, 0x5cf70027, 0x5cf70026, 0x5cf70025,
1284        0x5bf7002d, 0x5bf7002b, 0x5bf7002a, 0x5bf70029,
1285        0x5bf70028, 0x5bf70027, 0x5bf70026, 0x5bf70025,
1286        0x5af7002d, 0x5af7002b, 0x5af7002a, 0x5af70029,
1287        0x5af70028, 0x5af70027, 0x5af70026, 0x5af70025,
1288        0x59f7002d, 0x59f7002b, 0x59f7002a, 0x59f70029,
1289        0x59f70028, 0x59f70027, 0x59f70026, 0x59f70025,
1290        0x58f7002d, 0x58f7002b, 0x58f7002a, 0x58f70029,
1291        0x58f70028, 0x58f70027, 0x58f70026, 0x58f70025,
1292        0x57f7002d, 0x57f7002b, 0x57f7002a, 0x57f70029,
1293        0x57f70028, 0x57f70027, 0x57f70026, 0x57f70025,
1294        0x56f7002d, 0x56f7002b, 0x56f7002a, 0x56f70029,
1295        0x56f70028, 0x56f70027, 0x56f70026, 0x56f70025,
1296        0x55f7002d, 0x55f7002b, 0x55f7002a, 0x55f70029,
1297        0x55f70028, 0x55f70027, 0x55f70026, 0x55f70025,
1298        0x54f7002d, 0x54f7002b, 0x54f7002a, 0x54f70029,
1299        0x54f70028, 0x54f70027, 0x54f70026, 0x54f70025,
1300        0x53f7002d, 0x53f7002b, 0x53f7002a, 0x53f70029,
1301        0x53f70028, 0x53f70027, 0x53f70026, 0x53f70025,
1302        0x52f7002d, 0x52f7002b, 0x52f7002a, 0x52f70029,
1303        0x52f70028, 0x52f70027, 0x52f70026, 0x52f70025,
1304        0x51f7002d, 0x51f7002b, 0x51f7002a, 0x51f70029,
1305        0x51f70028, 0x51f70027, 0x51f70026, 0x51f70025,
1306        0x50f7002d, 0x50f7002b, 0x50f7002a, 0x50f70029,
1307        0x50f70028, 0x50f70027, 0x50f70026, 0x50f70025,
1308};
1309
1310const u32 txpwrctrl_tx_gain_ipa_rev5[] = {
1311        0x1ff7002d, 0x1ff7002b, 0x1ff7002a, 0x1ff70029,
1312        0x1ff70028, 0x1ff70027, 0x1ff70026, 0x1ff70025,
1313        0x1ef7002d, 0x1ef7002b, 0x1ef7002a, 0x1ef70029,
1314        0x1ef70028, 0x1ef70027, 0x1ef70026, 0x1ef70025,
1315        0x1df7002d, 0x1df7002b, 0x1df7002a, 0x1df70029,
1316        0x1df70028, 0x1df70027, 0x1df70026, 0x1df70025,
1317        0x1cf7002d, 0x1cf7002b, 0x1cf7002a, 0x1cf70029,
1318        0x1cf70028, 0x1cf70027, 0x1cf70026, 0x1cf70025,
1319        0x1bf7002d, 0x1bf7002b, 0x1bf7002a, 0x1bf70029,
1320        0x1bf70028, 0x1bf70027, 0x1bf70026, 0x1bf70025,
1321        0x1af7002d, 0x1af7002b, 0x1af7002a, 0x1af70029,
1322        0x1af70028, 0x1af70027, 0x1af70026, 0x1af70025,
1323        0x19f7002d, 0x19f7002b, 0x19f7002a, 0x19f70029,
1324        0x19f70028, 0x19f70027, 0x19f70026, 0x19f70025,
1325        0x18f7002d, 0x18f7002b, 0x18f7002a, 0x18f70029,
1326        0x18f70028, 0x18f70027, 0x18f70026, 0x18f70025,
1327        0x17f7002d, 0x17f7002b, 0x17f7002a, 0x17f70029,
1328        0x17f70028, 0x17f70027, 0x17f70026, 0x17f70025,
1329        0x16f7002d, 0x16f7002b, 0x16f7002a, 0x16f70029,
1330        0x16f70028, 0x16f70027, 0x16f70026, 0x16f70025,
1331        0x15f7002d, 0x15f7002b, 0x15f7002a, 0x15f70029,
1332        0x15f70028, 0x15f70027, 0x15f70026, 0x15f70025,
1333        0x14f7002d, 0x14f7002b, 0x14f7002a, 0x14f70029,
1334        0x14f70028, 0x14f70027, 0x14f70026, 0x14f70025,
1335        0x13f7002d, 0x13f7002b, 0x13f7002a, 0x13f70029,
1336        0x13f70028, 0x13f70027, 0x13f70026, 0x13f70025,
1337        0x12f7002d, 0x12f7002b, 0x12f7002a, 0x12f70029,
1338        0x12f70028, 0x12f70027, 0x12f70026, 0x12f70025,
1339        0x11f7002d, 0x11f7002b, 0x11f7002a, 0x11f70029,
1340        0x11f70028, 0x11f70027, 0x11f70026, 0x11f70025,
1341        0x10f7002d, 0x10f7002b, 0x10f7002a, 0x10f70029,
1342        0x10f70028, 0x10f70027, 0x10f70026, 0x10f70025,
1343};
1344
1345const u32 txpwrctrl_tx_gain_ipa_rev6[] = {
1346        0x0ff7002d, 0x0ff7002b, 0x0ff7002a, 0x0ff70029,
1347        0x0ff70028, 0x0ff70027, 0x0ff70026, 0x0ff70025,
1348        0x0ef7002d, 0x0ef7002b, 0x0ef7002a, 0x0ef70029,
1349        0x0ef70028, 0x0ef70027, 0x0ef70026, 0x0ef70025,
1350        0x0df7002d, 0x0df7002b, 0x0df7002a, 0x0df70029,
1351        0x0df70028, 0x0df70027, 0x0df70026, 0x0df70025,
1352        0x0cf7002d, 0x0cf7002b, 0x0cf7002a, 0x0cf70029,
1353        0x0cf70028, 0x0cf70027, 0x0cf70026, 0x0cf70025,
1354        0x0bf7002d, 0x0bf7002b, 0x0bf7002a, 0x0bf70029,
1355        0x0bf70028, 0x0bf70027, 0x0bf70026, 0x0bf70025,
1356        0x0af7002d, 0x0af7002b, 0x0af7002a, 0x0af70029,
1357        0x0af70028, 0x0af70027, 0x0af70026, 0x0af70025,
1358        0x09f7002d, 0x09f7002b, 0x09f7002a, 0x09f70029,
1359        0x09f70028, 0x09f70027, 0x09f70026, 0x09f70025,
1360        0x08f7002d, 0x08f7002b, 0x08f7002a, 0x08f70029,
1361        0x08f70028, 0x08f70027, 0x08f70026, 0x08f70025,
1362        0x07f7002d, 0x07f7002b, 0x07f7002a, 0x07f70029,
1363        0x07f70028, 0x07f70027, 0x07f70026, 0x07f70025,
1364        0x06f7002d, 0x06f7002b, 0x06f7002a, 0x06f70029,
1365        0x06f70028, 0x06f70027, 0x06f70026, 0x06f70025,
1366        0x05f7002d, 0x05f7002b, 0x05f7002a, 0x05f70029,
1367        0x05f70028, 0x05f70027, 0x05f70026, 0x05f70025,
1368        0x04f7002d, 0x04f7002b, 0x04f7002a, 0x04f70029,
1369        0x04f70028, 0x04f70027, 0x04f70026, 0x04f70025,
1370        0x03f7002d, 0x03f7002b, 0x03f7002a, 0x03f70029,
1371        0x03f70028, 0x03f70027, 0x03f70026, 0x03f70025,
1372        0x02f7002d, 0x02f7002b, 0x02f7002a, 0x02f70029,
1373        0x02f70028, 0x02f70027, 0x02f70026, 0x02f70025,
1374        0x01f7002d, 0x01f7002b, 0x01f7002a, 0x01f70029,
1375        0x01f70028, 0x01f70027, 0x01f70026, 0x01f70025,
1376        0x00f7002d, 0x00f7002b, 0x00f7002a, 0x00f70029,
1377        0x00f70028, 0x00f70027, 0x00f70026, 0x00f70025,
1378};
1379
1380const u32 txpwrctrl_tx_gain_ipa_5g[] = {
1381        0x7ff70035, 0x7ff70033, 0x7ff70032, 0x7ff70031,
1382        0x7ff7002f, 0x7ff7002e, 0x7ff7002d, 0x7ff7002b,
1383        0x7ff7002a, 0x7ff70029, 0x7ff70028, 0x7ff70027,
1384        0x7ff70026, 0x7ff70024, 0x7ff70023, 0x7ff70022,
1385        0x7ef70028, 0x7ef70027, 0x7ef70026, 0x7ef70025,
1386        0x7ef70024, 0x7ef70023, 0x7df70028, 0x7df70027,
1387        0x7df70026, 0x7df70025, 0x7df70024, 0x7df70023,
1388        0x7df70022, 0x7cf70029, 0x7cf70028, 0x7cf70027,
1389        0x7cf70026, 0x7cf70025, 0x7cf70023, 0x7cf70022,
1390        0x7bf70029, 0x7bf70028, 0x7bf70026, 0x7bf70025,
1391        0x7bf70024, 0x7bf70023, 0x7bf70022, 0x7bf70021,
1392        0x7af70029, 0x7af70028, 0x7af70027, 0x7af70026,
1393        0x7af70025, 0x7af70024, 0x7af70023, 0x7af70022,
1394        0x79f70029, 0x79f70028, 0x79f70027, 0x79f70026,
1395        0x79f70025, 0x79f70024, 0x79f70023, 0x79f70022,
1396        0x78f70029, 0x78f70028, 0x78f70027, 0x78f70026,
1397        0x78f70025, 0x78f70024, 0x78f70023, 0x78f70022,
1398        0x77f70029, 0x77f70028, 0x77f70027, 0x77f70026,
1399        0x77f70025, 0x77f70024, 0x77f70023, 0x77f70022,
1400        0x76f70029, 0x76f70028, 0x76f70027, 0x76f70026,
1401        0x76f70024, 0x76f70023, 0x76f70022, 0x76f70021,
1402        0x75f70029, 0x75f70028, 0x75f70027, 0x75f70026,
1403        0x75f70025, 0x75f70024, 0x75f70023, 0x74f70029,
1404        0x74f70028, 0x74f70026, 0x74f70025, 0x74f70024,
1405        0x74f70023, 0x74f70022, 0x73f70029, 0x73f70027,
1406        0x73f70026, 0x73f70025, 0x73f70024, 0x73f70023,
1407        0x73f70022, 0x72f70028, 0x72f70027, 0x72f70026,
1408        0x72f70025, 0x72f70024, 0x72f70023, 0x72f70022,
1409        0x71f70028, 0x71f70027, 0x71f70026, 0x71f70025,
1410        0x71f70024, 0x71f70023, 0x70f70028, 0x70f70027,
1411        0x70f70026, 0x70f70024, 0x70f70023, 0x70f70022,
1412        0x70f70021, 0x70f70020, 0x70f70020, 0x70f7001f,
1413};
1414
1415const u16 tbl_iqcal_gainparams[2][9][8] = {
1416        {
1417                { 0x000, 0, 0, 2, 0x69, 0x69, 0x69, 0x69 },
1418                { 0x700, 7, 0, 0, 0x69, 0x69, 0x69, 0x69 },
1419                { 0x710, 7, 1, 0, 0x68, 0x68, 0x68, 0x68 },
1420                { 0x720, 7, 2, 0, 0x67, 0x67, 0x67, 0x67 },
1421                { 0x730, 7, 3, 0, 0x66, 0x66, 0x66, 0x66 },
1422                { 0x740, 7, 4, 0, 0x65, 0x65, 0x65, 0x65 },
1423                { 0x741, 7, 4, 1, 0x65, 0x65, 0x65, 0x65 },
1424                { 0x742, 7, 4, 2, 0x65, 0x65, 0x65, 0x65 },
1425                { 0x743, 7, 4, 3, 0x65, 0x65, 0x65, 0x65 }
1426        },
1427        {
1428                { 0x000, 7, 0, 0, 0x79, 0x79, 0x79, 0x79 },
1429                { 0x700, 7, 0, 0, 0x79, 0x79, 0x79, 0x79 },
1430                { 0x710, 7, 1, 0, 0x79, 0x79, 0x79, 0x79 },
1431                { 0x720, 7, 2, 0, 0x78, 0x78, 0x78, 0x78 },
1432                { 0x730, 7, 3, 0, 0x78, 0x78, 0x78, 0x78 },
1433                { 0x740, 7, 4, 0, 0x78, 0x78, 0x78, 0x78 },
1434                { 0x741, 7, 4, 1, 0x78, 0x78, 0x78, 0x78 },
1435                { 0x742, 7, 4, 2, 0x78, 0x78, 0x78, 0x78 },
1436                { 0x743, 7, 4, 3, 0x78, 0x78, 0x78, 0x78 }
1437        }
1438};
1439
1440const struct nphy_txiqcal_ladder ladder_lo[] = {
1441        { 3, 0 },
1442        { 4, 0 },
1443        { 6, 0 },
1444        { 9, 0 },
1445        { 13, 0 },
1446        { 18, 0 },
1447        { 25, 0 },
1448        { 25, 1 },
1449        { 25, 2 },
1450        { 25, 3 },
1451        { 25, 4 },
1452        { 25, 5 },
1453        { 25, 6 },
1454        { 25, 7 },
1455        { 35, 7 },
1456        { 50, 7 },
1457        { 71, 7 },
1458        { 100, 7 }
1459};
1460
1461const struct nphy_txiqcal_ladder ladder_iq[] = {
1462        { 3, 0 },
1463        { 4, 0 },
1464        { 6, 0 },
1465        { 9, 0 },
1466        { 13, 0 },
1467        { 18, 0 },
1468        { 25, 0 },
1469        { 35, 0 },
1470        { 50, 0 },
1471        { 71, 0 },
1472        { 100, 0 },
1473        { 100, 1 },
1474        { 100, 2 },
1475        { 100, 3 },
1476        { 100, 4 },
1477        { 100, 5 },
1478        { 100, 6 },
1479        { 100, 7 }
1480};
1481
1482const u16 loscale[] = {
1483        256, 256, 271, 271,
1484        287, 256, 256, 271,
1485        271, 287, 287, 304,
1486        304, 256, 256, 271,
1487        271, 287, 287, 304,
1488        304, 322, 322, 341,
1489        341, 362, 362, 383,
1490        383, 256, 256, 271,
1491        271, 287, 287, 304,
1492        304, 322, 322, 256,
1493        256, 271, 271, 287,
1494        287, 304, 304, 322,
1495        322, 341, 341, 362,
1496        362, 256, 256, 271,
1497        271, 287, 287, 304,
1498        304, 322, 322, 256,
1499        256, 271, 271, 287,
1500        287, 304, 304, 322,
1501        322, 341, 341, 362,
1502        362, 256, 256, 271,
1503        271, 287, 287, 304,
1504        304, 322, 322, 341,
1505        341, 362, 362, 383,
1506        383, 406, 406, 430,
1507        430, 455, 455, 482,
1508        482, 511, 511, 541,
1509        541, 573, 573, 607,
1510        607, 643, 643, 681,
1511        681, 722, 722, 764,
1512        764, 810, 810, 858,
1513        858, 908, 908, 962,
1514        962, 1019, 1019, 256
1515};
1516
1517const u16 tbl_tx_iqlo_cal_loft_ladder_40[] = {
1518        0x0200, 0x0300, 0x0400, 0x0700,
1519        0x0900, 0x0c00, 0x1200, 0x1201,
1520        0x1202, 0x1203, 0x1204, 0x1205,
1521        0x1206, 0x1207, 0x1907, 0x2307,
1522        0x3207, 0x4707
1523};
1524
1525const u16 tbl_tx_iqlo_cal_loft_ladder_20[] = {
1526        0x0300, 0x0500, 0x0700, 0x0900,
1527        0x0d00, 0x1100, 0x1900, 0x1901,
1528        0x1902, 0x1903, 0x1904, 0x1905,
1529        0x1906, 0x1907, 0x2407, 0x3207,
1530        0x4607, 0x6407
1531};
1532
1533const u16 tbl_tx_iqlo_cal_iqimb_ladder_40[] = {
1534        0x0100, 0x0200, 0x0400, 0x0700,
1535        0x0900, 0x0c00, 0x1200, 0x1900,
1536        0x2300, 0x3200, 0x4700, 0x4701,
1537        0x4702, 0x4703, 0x4704, 0x4705,
1538        0x4706, 0x4707
1539};
1540
1541const u16 tbl_tx_iqlo_cal_iqimb_ladder_20[] = {
1542        0x0200, 0x0300, 0x0600, 0x0900,
1543        0x0d00, 0x1100, 0x1900, 0x2400,
1544        0x3200, 0x4600, 0x6400, 0x6401,
1545        0x6402, 0x6403, 0x6404, 0x6405,
1546        0x6406, 0x6407
1547};
1548
1549const u16 tbl_tx_iqlo_cal_startcoefs_nphyrev3[B43_NTAB_TX_IQLO_CAL_STARTCOEFS_REV3] = { };
1550
1551const u16 tbl_tx_iqlo_cal_startcoefs[B43_NTAB_TX_IQLO_CAL_STARTCOEFS] = { };
1552
1553const u16 tbl_tx_iqlo_cal_cmds_recal_nphyrev3[] = {
1554        0x8423, 0x8323, 0x8073, 0x8256,
1555        0x8045, 0x8223, 0x9423, 0x9323,
1556        0x9073, 0x9256, 0x9045, 0x9223
1557};
1558
1559const u16 tbl_tx_iqlo_cal_cmds_recal[] = {
1560        0x8101, 0x8253, 0x8053, 0x8234,
1561        0x8034, 0x9101, 0x9253, 0x9053,
1562        0x9234, 0x9034
1563};
1564
1565const u16 tbl_tx_iqlo_cal_cmds_fullcal[] = {
1566        0x8123, 0x8264, 0x8086, 0x8245,
1567        0x8056, 0x9123, 0x9264, 0x9086,
1568        0x9245, 0x9056
1569};
1570
1571const u16 tbl_tx_iqlo_cal_cmds_fullcal_nphyrev3[] = {
1572        0x8434, 0x8334, 0x8084, 0x8267,
1573        0x8056, 0x8234, 0x9434, 0x9334,
1574        0x9084, 0x9267, 0x9056, 0x9234
1575};
1576
1577const s16 tbl_tx_filter_coef_rev4[7][15] = {
1578        {  -377,   137,  -407,   208, -1527,
1579            956,    93,   186,    93,   230,
1580            -44,   230,    20,  -191,   201 },
1581        {   -77,    20,   -98,    49,   -93,
1582             60,    56,   111,    56,    26,
1583             -5,    26,    34,   -32,    34 },
1584        {  -360,   164,  -376,   164, -1533,
1585            576,   308,  -314,   308,   121,
1586            -73,   121,    91,   124,    91 },
1587        {  -295,   200,  -363,   142, -1391,
1588            826,   151,   301,   151,   151,
1589            301,   151,   602,  -752,   602 },
1590        {   -92,    58,   -96,    49,  -104,
1591             44,    17,    35,    17,    12,
1592             25,    12,    13,    27,    13 },
1593        {  -375,   136,  -399,   209, -1479,
1594            949,   130,   260,   130,   230,
1595            -44,   230,   201,  -191,   201 },
1596        { 0xed9,  0xc8, 0xe95,  0x8e, 0xa91,
1597          0x33a,  0x97, 0x12d,  0x97,  0x97,
1598          0x12d,  0x97, 0x25a, 0xd10, 0x25a }
1599};
1600
1601/* addr0,  addr1,  bmask,  shift */
1602const struct nphy_rf_control_override_rev2 tbl_rf_control_override_rev2[] = {
1603        { 0x78, 0x78, 0x0038,  3 }, /* for field == 0x0002 (fls == 2) */
1604        { 0x7A, 0x7D, 0x0001,  0 }, /* for field == 0x0004 (fls == 3) */
1605        { 0x7A, 0x7D, 0x0002,  1 }, /* for field == 0x0008 (fls == 4) */
1606        { 0x7A, 0x7D, 0x0004,  2 }, /* for field == 0x0010 (fls == 5) */
1607        { 0x7A, 0x7D, 0x0030,  4 }, /* for field == 0x0020 (fls == 6) */
1608        { 0x7A, 0x7D, 0x00C0,  6 }, /* for field == 0x0040 (fls == 7) */
1609        { 0x7A, 0x7D, 0x0100,  8 }, /* for field == 0x0080 (fls == 8) */
1610        { 0x7A, 0x7D, 0x0200,  9 }, /* for field == 0x0100 (fls == 9) */
1611        { 0x78, 0x78, 0x0004,  2 }, /* for field == 0x0200 (fls == 10) */
1612        { 0x7B, 0x7E, 0x01FF,  0 }, /* for field == 0x0400 (fls == 11) */
1613        { 0x7C, 0x7F, 0x01FF,  0 }, /* for field == 0x0800 (fls == 12) */
1614        { 0x78, 0x78, 0x0100,  8 }, /* for field == 0x1000 (fls == 13) */
1615        { 0x78, 0x78, 0x0200,  9 }, /* for field == 0x2000 (fls == 14) */
1616        { 0x78, 0x78, 0xF000, 12 }  /* for field == 0x4000 (fls == 15) */
1617};
1618
1619/* val_mask, val_shift, en_addr0, val_addr0, en_addr1, val_addr1 */
1620const struct nphy_rf_control_override_rev3 tbl_rf_control_override_rev3[] = {
1621        { 0x8000, 15, 0xE5, 0xF9, 0xE6, 0xFB }, /* field == 0x0001 (fls 1) */
1622        { 0x0001,  0, 0xE7, 0x7A, 0xEC, 0x7D }, /* field == 0x0002 (fls 2) */
1623        { 0x0002,  1, 0xE7, 0x7A, 0xEC, 0x7D }, /* field == 0x0004 (fls 3) */
1624        { 0x0004,  2, 0xE7, 0x7A, 0xEC, 0x7D }, /* field == 0x0008 (fls 4) */
1625        { 0x0016,  4, 0xE7, 0x7A, 0xEC, 0x7D }, /* field == 0x0010 (fls 5) */
1626        { 0x0020,  5, 0xE7, 0x7A, 0xEC, 0x7D }, /* field == 0x0020 (fls 6) */
1627        { 0x0040,  6, 0xE7, 0x7A, 0xEC, 0x7D }, /* field == 0x0040 (fls 7) */
1628        { 0x0080,  6, 0xE7, 0x7A, 0xEC, 0x7D }, /* field == 0x0080 (fls 8) */
1629        { 0x0100,  7, 0xE7, 0x7A, 0xEC, 0x7D }, /* field == 0x0100 (fls 9) */
1630        { 0x0007,  0, 0xE7, 0xF8, 0xEC, 0xFA }, /* field == 0x0200 (fls 10) */
1631        { 0x0070,  4, 0xE7, 0xF8, 0xEC, 0xFA }, /* field == 0x0400 (fls 11) */
1632        { 0xE000, 13, 0xE7, 0x7A, 0xEC, 0x7D }, /* field == 0x0800 (fls 12) */
1633        { 0xFFFF,  0, 0xE7, 0x7B, 0xEC, 0x7E }, /* field == 0x1000 (fls 13) */
1634        { 0xFFFF,  0, 0xE7, 0x7C, 0xEC, 0x7F }, /* field == 0x2000 (fls 14) */
1635        { 0x00C0,  6, 0xE7, 0xF9, 0xEC, 0xFB }  /* field == 0x4000 (fls 15) */
1636};
1637
1638static inline void assert_ntab_array_sizes(void)
1639{
1640#undef check
1641#define check(table, size)      \
1642        BUILD_BUG_ON(ARRAY_SIZE(b43_ntab_##table) != B43_NTAB_##size##_SIZE)
1643
1644        check(adjustpower0, C0_ADJPLT);
1645        check(adjustpower1, C1_ADJPLT);
1646        check(bdi, BDI);
1647        check(channelest, CHANEST);
1648        check(estimatepowerlt0, C0_ESTPLT);
1649        check(estimatepowerlt1, C1_ESTPLT);
1650        check(framelookup, FRAMELT);
1651        check(framestruct, FRAMESTRUCT);
1652        check(gainctl0, C0_GAINCTL);
1653        check(gainctl1, C1_GAINCTL);
1654        check(intlevel, INTLEVEL);
1655        check(iqlt0, C0_IQLT);
1656        check(iqlt1, C1_IQLT);
1657        check(loftlt0, C0_LOFEEDTH);
1658        check(loftlt1, C1_LOFEEDTH);
1659        check(mcs, MCS);
1660        check(noisevar10, NOISEVAR10);
1661        check(noisevar11, NOISEVAR11);
1662        check(pilot, PILOT);
1663        check(pilotlt, PILOTLT);
1664        check(tdi20a0, TDI20A0);
1665        check(tdi20a1, TDI20A1);
1666        check(tdi40a0, TDI40A0);
1667        check(tdi40a1, TDI40A1);
1668        check(tdtrn, TDTRN);
1669        check(tmap, TMAP);
1670
1671#undef check
1672}
1673
1674u32 b43_ntab_read(struct b43_wldev *dev, u32 offset)
1675{
1676        u32 type, value;
1677
1678        type = offset & B43_NTAB_TYPEMASK;
1679        offset &= ~B43_NTAB_TYPEMASK;
1680        B43_WARN_ON(offset > 0xFFFF);
1681
1682        switch (type) {
1683        case B43_NTAB_8BIT:
1684                b43_phy_write(dev, B43_NPHY_TABLE_ADDR, offset);
1685                value = b43_phy_read(dev, B43_NPHY_TABLE_DATALO) & 0xFF;
1686                break;
1687        case B43_NTAB_16BIT:
1688                b43_phy_write(dev, B43_NPHY_TABLE_ADDR, offset);
1689                value = b43_phy_read(dev, B43_NPHY_TABLE_DATALO);
1690                break;
1691        case B43_NTAB_32BIT:
1692                b43_phy_write(dev, B43_NPHY_TABLE_ADDR, offset);
1693                value = b43_phy_read(dev, B43_NPHY_TABLE_DATAHI);
1694                value <<= 16;
1695                value |= b43_phy_read(dev, B43_NPHY_TABLE_DATALO);
1696                break;
1697        default:
1698                B43_WARN_ON(1);
1699                value = 0;
1700        }
1701
1702        return value;
1703}
1704
1705void b43_ntab_read_bulk(struct b43_wldev *dev, u32 offset,
1706                         unsigned int nr_elements, void *_data)
1707{
1708        u32 type;
1709        u8 *data = _data;
1710        unsigned int i;
1711
1712        type = offset & B43_NTAB_TYPEMASK;
1713        offset &= ~B43_NTAB_TYPEMASK;
1714        B43_WARN_ON(offset > 0xFFFF);
1715
1716        b43_phy_write(dev, B43_NPHY_TABLE_ADDR, offset);
1717
1718        for (i = 0; i < nr_elements; i++) {
1719                switch (type) {
1720                case B43_NTAB_8BIT:
1721                        *data = b43_phy_read(dev, B43_NPHY_TABLE_DATALO) & 0xFF;
1722                        data++;
1723                        break;
1724                case B43_NTAB_16BIT:
1725                        *((u16 *)data) = b43_phy_read(dev, B43_NPHY_TABLE_DATALO);
1726                        data += 2;
1727                        break;
1728                case B43_NTAB_32BIT:
1729                        *((u32 *)data) = b43_phy_read(dev, B43_NPHY_TABLE_DATAHI);
1730                        *((u32 *)data) <<= 16;
1731                        *((u32 *)data) |= b43_phy_read(dev, B43_NPHY_TABLE_DATALO);
1732                        data += 4;
1733                        break;
1734                default:
1735                        B43_WARN_ON(1);
1736                }
1737        }
1738}
1739
1740void b43_ntab_write(struct b43_wldev *dev, u32 offset, u32 value)
1741{
1742        u32 type;
1743
1744        type = offset & B43_NTAB_TYPEMASK;
1745        offset &= 0xFFFF;
1746
1747        switch (type) {
1748        case B43_NTAB_8BIT:
1749                B43_WARN_ON(value & ~0xFF);
1750                b43_phy_write(dev, B43_NPHY_TABLE_ADDR, offset);
1751                b43_phy_write(dev, B43_NPHY_TABLE_DATALO, value);
1752                break;
1753        case B43_NTAB_16BIT:
1754                B43_WARN_ON(value & ~0xFFFF);
1755                b43_phy_write(dev, B43_NPHY_TABLE_ADDR, offset);
1756                b43_phy_write(dev, B43_NPHY_TABLE_DATALO, value);
1757                break;
1758        case B43_NTAB_32BIT:
1759                b43_phy_write(dev, B43_NPHY_TABLE_ADDR, offset);
1760                b43_phy_write(dev, B43_NPHY_TABLE_DATAHI, value >> 16);
1761                b43_phy_write(dev, B43_NPHY_TABLE_DATALO, value & 0xFFFF);
1762                break;
1763        default:
1764                B43_WARN_ON(1);
1765        }
1766
1767        return;
1768
1769        /* Some compiletime assertions... */
1770        assert_ntab_array_sizes();
1771}
1772
1773void b43_ntab_write_bulk(struct b43_wldev *dev, u32 offset,
1774                          unsigned int nr_elements, const void *_data)
1775{
1776        u32 type, value;
1777        const u8 *data = _data;
1778        unsigned int i;
1779
1780        type = offset & B43_NTAB_TYPEMASK;
1781        offset &= ~B43_NTAB_TYPEMASK;
1782        B43_WARN_ON(offset > 0xFFFF);
1783
1784        b43_phy_write(dev, B43_NPHY_TABLE_ADDR, offset);
1785
1786        for (i = 0; i < nr_elements; i++) {
1787                switch (type) {
1788                case B43_NTAB_8BIT:
1789                        value = *data;
1790                        data++;
1791                        B43_WARN_ON(value & ~0xFF);
1792                        b43_phy_write(dev, B43_NPHY_TABLE_DATALO, value);
1793                        break;
1794                case B43_NTAB_16BIT:
1795                        value = *((u16 *)data);
1796                        data += 2;
1797                        B43_WARN_ON(value & ~0xFFFF);
1798                        b43_phy_write(dev, B43_NPHY_TABLE_DATALO, value);
1799                        break;
1800                case B43_NTAB_32BIT:
1801                        value = *((u32 *)data);
1802                        data += 4;
1803                        b43_phy_write(dev, B43_NPHY_TABLE_DATAHI, value >> 16);
1804                        b43_phy_write(dev, B43_NPHY_TABLE_DATALO,
1805                                        value & 0xFFFF);
1806                        break;
1807                default:
1808                        B43_WARN_ON(1);
1809                }
1810        }
1811}
1812
1813#define ntab_upload(dev, offset, data) do { \
1814                b43_ntab_write_bulk(dev, offset, offset##_SIZE, data);  \
1815        } while (0)
1816
1817void b43_nphy_rev0_1_2_tables_init(struct b43_wldev *dev)
1818{
1819        /* Static tables */
1820        ntab_upload(dev, B43_NTAB_FRAMESTRUCT, b43_ntab_framestruct);
1821        ntab_upload(dev, B43_NTAB_FRAMELT, b43_ntab_framelookup);
1822        ntab_upload(dev, B43_NTAB_TMAP, b43_ntab_tmap);
1823        ntab_upload(dev, B43_NTAB_TDTRN, b43_ntab_tdtrn);
1824        ntab_upload(dev, B43_NTAB_INTLEVEL, b43_ntab_intlevel);
1825        ntab_upload(dev, B43_NTAB_PILOT, b43_ntab_pilot);
1826        ntab_upload(dev, B43_NTAB_TDI20A0, b43_ntab_tdi20a0);
1827        ntab_upload(dev, B43_NTAB_TDI20A1, b43_ntab_tdi20a1);
1828        ntab_upload(dev, B43_NTAB_TDI40A0, b43_ntab_tdi40a0);
1829        ntab_upload(dev, B43_NTAB_TDI40A1, b43_ntab_tdi40a1);
1830        ntab_upload(dev, B43_NTAB_CHANEST, b43_ntab_channelest);
1831        ntab_upload(dev, B43_NTAB_MCS, b43_ntab_mcs);
1832        ntab_upload(dev, B43_NTAB_NOISEVAR10, b43_ntab_noisevar10);
1833        ntab_upload(dev, B43_NTAB_NOISEVAR11, b43_ntab_noisevar11);
1834
1835        /* Volatile tables */
1836        ntab_upload(dev, B43_NTAB_BDI, b43_ntab_bdi);
1837        ntab_upload(dev, B43_NTAB_PILOTLT, b43_ntab_pilotlt);
1838        ntab_upload(dev, B43_NTAB_C0_GAINCTL, b43_ntab_gainctl0);
1839        ntab_upload(dev, B43_NTAB_C1_GAINCTL, b43_ntab_gainctl1);
1840        ntab_upload(dev, B43_NTAB_C0_ESTPLT, b43_ntab_estimatepowerlt0);
1841        ntab_upload(dev, B43_NTAB_C1_ESTPLT, b43_ntab_estimatepowerlt1);
1842        ntab_upload(dev, B43_NTAB_C0_ADJPLT, b43_ntab_adjustpower0);
1843        ntab_upload(dev, B43_NTAB_C1_ADJPLT, b43_ntab_adjustpower1);
1844        ntab_upload(dev, B43_NTAB_C0_IQLT, b43_ntab_iqlt0);
1845        ntab_upload(dev, B43_NTAB_C1_IQLT, b43_ntab_iqlt1);
1846        ntab_upload(dev, B43_NTAB_C0_LOFEEDTH, b43_ntab_loftlt0);
1847        ntab_upload(dev, B43_NTAB_C1_LOFEEDTH, b43_ntab_loftlt1);
1848}
1849
1850void b43_nphy_rev3plus_tables_init(struct b43_wldev *dev)
1851{
1852        /* Static tables */
1853        /* TODO */
1854
1855        /* Volatile tables */
1856        /* TODO */
1857}
1858