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