Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wirel...
[linux-2.6.git] / drivers / net / wireless / b43 / tables_nphy.c
1 /*
2
3   Broadcom B43 wireless driver
4   IEEE 802.11n PHY and radio device data tables
5
6   Copyright (c) 2008 Michael Buesch <mb@bu3sch.de>
7
8   This program is free software; you can redistribute it and/or modify
9   it under the terms of the GNU General Public License as published by
10   the Free Software Foundation; either version 2 of the License, or
11   (at your option) any later version.
12
13   This program is distributed in the hope that it will be useful,
14   but WITHOUT ANY WARRANTY; without even the implied warranty of
15   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16   GNU General Public License for more details.
17
18   You should have received a copy of the GNU General Public License
19   along with this program; see the file COPYING.  If not, write to
20   the Free Software Foundation, Inc., 51 Franklin Steet, Fifth Floor,
21   Boston, MA 02110-1301, USA.
22
23 */
24
25 #include "b43.h"
26 #include "tables_nphy.h"
27 #include "phy_common.h"
28 #include "phy_n.h"
29
30
31 struct b2055_inittab_entry {
32         /* Value to write if we use the 5GHz band. */
33         u16 ghz5;
34         /* Value to write if we use the 2.4GHz band. */
35         u16 ghz2;
36         /* Flags */
37         u8 flags;
38 #define B2055_INITTAB_ENTRY_OK  0x01
39 #define B2055_INITTAB_UPLOAD    0x02
40 };
41 #define UPLOAD          .flags = B2055_INITTAB_ENTRY_OK | B2055_INITTAB_UPLOAD
42 #define NOUPLOAD        .flags = B2055_INITTAB_ENTRY_OK
43
44 static const struct b2055_inittab_entry b2055_inittab [] = {
45   [B2055_SP_PINPD]              = { .ghz5 = 0x0080, .ghz2 = 0x0080, NOUPLOAD, },
46   [B2055_C1_SP_RSSI]            = { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, },
47   [B2055_C1_SP_PDMISC]          = { .ghz5 = 0x0027, .ghz2 = 0x0027, NOUPLOAD, },
48   [B2055_C2_SP_RSSI]            = { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, },
49   [B2055_C2_SP_PDMISC]          = { .ghz5 = 0x0027, .ghz2 = 0x0027, NOUPLOAD, },
50   [B2055_C1_SP_RXGC1]           = { .ghz5 = 0x007F, .ghz2 = 0x007F, UPLOAD, },
51   [B2055_C1_SP_RXGC2]           = { .ghz5 = 0x0007, .ghz2 = 0x0007, UPLOAD, },
52   [B2055_C2_SP_RXGC1]           = { .ghz5 = 0x007F, .ghz2 = 0x007F, UPLOAD, },
53   [B2055_C2_SP_RXGC2]           = { .ghz5 = 0x0007, .ghz2 = 0x0007, UPLOAD, },
54   [B2055_C1_SP_LPFBWSEL]        = { .ghz5 = 0x0015, .ghz2 = 0x0015, NOUPLOAD, },
55   [B2055_C2_SP_LPFBWSEL]        = { .ghz5 = 0x0015, .ghz2 = 0x0015, NOUPLOAD, },
56   [B2055_C1_SP_TXGC1]           = { .ghz5 = 0x004F, .ghz2 = 0x004F, UPLOAD, },
57   [B2055_C1_SP_TXGC2]           = { .ghz5 = 0x0005, .ghz2 = 0x0005, UPLOAD, },
58   [B2055_C2_SP_TXGC1]           = { .ghz5 = 0x004F, .ghz2 = 0x004F, UPLOAD, },
59   [B2055_C2_SP_TXGC2]           = { .ghz5 = 0x0005, .ghz2 = 0x0005, UPLOAD, },
60   [B2055_MASTER1]               = { .ghz5 = 0x00D0, .ghz2 = 0x00D0, NOUPLOAD, },
61   [B2055_MASTER2]               = { .ghz5 = 0x0002, .ghz2 = 0x0002, NOUPLOAD, },
62   [B2055_PD_LGEN]               = { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, },
63   [B2055_PD_PLLTS]              = { .ghz5 = 0x0040, .ghz2 = 0x0040, NOUPLOAD, },
64   [B2055_C1_PD_LGBUF]           = { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, },
65   [B2055_C1_PD_TX]              = { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, },
66   [B2055_C1_PD_RXTX]            = { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, },
67   [B2055_C1_PD_RSSIMISC]        = { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, },
68   [B2055_C2_PD_LGBUF]           = { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, },
69   [B2055_C2_PD_TX]              = { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, },
70   [B2055_C2_PD_RXTX]            = { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, },
71   [B2055_C2_PD_RSSIMISC]        = { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, },
72   [B2055_PWRDET_LGEN]           = { .ghz5 = 0x00C0, .ghz2 = 0x00C0, NOUPLOAD, },
73   [B2055_C1_PWRDET_LGBUF]       = { .ghz5 = 0x00FF, .ghz2 = 0x00FF, NOUPLOAD, },
74   [B2055_C1_PWRDET_RXTX]        = { .ghz5 = 0x00C0, .ghz2 = 0x00C0, NOUPLOAD, },
75   [B2055_C2_PWRDET_LGBUF]       = { .ghz5 = 0x00FF, .ghz2 = 0x00FF, NOUPLOAD, },
76   [B2055_C2_PWRDET_RXTX]        = { .ghz5 = 0x00C0, .ghz2 = 0x00C0, NOUPLOAD, },
77   [B2055_RRCCAL_CS]             = { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, },
78   [B2055_RRCCAL_NOPTSEL]        = { .ghz5 = 0x002C, .ghz2 = 0x002C, NOUPLOAD, },
79   [B2055_CAL_MISC]              = { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, },
80   [B2055_CAL_COUT]              = { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, },
81   [B2055_CAL_COUT2]             = { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, },
82   [B2055_CAL_CVARCTL]           = { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, },
83   [B2055_CAL_RVARCTL]           = { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, },
84   [B2055_CAL_LPOCTL]            = { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, },
85   [B2055_CAL_TS]                = { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, },
86   [B2055_CAL_RCCALRTS]          = { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, },
87   [B2055_CAL_RCALRTS]           = { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, },
88   [B2055_PADDRV]                = { .ghz5 = 0x00A4, .ghz2 = 0x00A4, NOUPLOAD, },
89   [B2055_XOCTL1]                = { .ghz5 = 0x0038, .ghz2 = 0x0038, NOUPLOAD, },
90   [B2055_XOCTL2]                = { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, },
91   [B2055_XOREGUL]               = { .ghz5 = 0x0004, .ghz2 = 0x0004, UPLOAD, },
92   [B2055_XOMISC]                = { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, },
93   [B2055_PLL_LFC1]              = { .ghz5 = 0x000A, .ghz2 = 0x000A, NOUPLOAD, },
94   [B2055_PLL_CALVTH]            = { .ghz5 = 0x0087, .ghz2 = 0x0087, NOUPLOAD, },
95   [B2055_PLL_LFC2]              = { .ghz5 = 0x0009, .ghz2 = 0x0009, NOUPLOAD, },
96   [B2055_PLL_REF]               = { .ghz5 = 0x0070, .ghz2 = 0x0070, NOUPLOAD, },
97   [B2055_PLL_LFR1]              = { .ghz5 = 0x0011, .ghz2 = 0x0011, NOUPLOAD, },
98   [B2055_PLL_PFDCP]             = { .ghz5 = 0x0018, .ghz2 = 0x0018, UPLOAD, },
99   [B2055_PLL_IDAC_CPOPAMP]      = { .ghz5 = 0x0006, .ghz2 = 0x0006, NOUPLOAD, },
100   [B2055_PLL_CPREG]             = { .ghz5 = 0x0004, .ghz2 = 0x0004, UPLOAD, },
101   [B2055_PLL_RCAL]              = { .ghz5 = 0x0006, .ghz2 = 0x0006, NOUPLOAD, },
102   [B2055_RF_PLLMOD0]            = { .ghz5 = 0x009E, .ghz2 = 0x009E, NOUPLOAD, },
103   [B2055_RF_PLLMOD1]            = { .ghz5 = 0x0009, .ghz2 = 0x0009, NOUPLOAD, },
104   [B2055_RF_MMDIDAC1]           = { .ghz5 = 0x00C8, .ghz2 = 0x00C8, UPLOAD, },
105   [B2055_RF_MMDIDAC0]           = { .ghz5 = 0x0088, .ghz2 = 0x0088, NOUPLOAD, },
106   [B2055_RF_MMDSP]              = { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, },
107   [B2055_VCO_CAL1]              = { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, },
108   [B2055_VCO_CAL2]              = { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, },
109   [B2055_VCO_CAL3]              = { .ghz5 = 0x0001, .ghz2 = 0x0001, NOUPLOAD, },
110   [B2055_VCO_CAL4]              = { .ghz5 = 0x0002, .ghz2 = 0x0002, NOUPLOAD, },
111   [B2055_VCO_CAL5]              = { .ghz5 = 0x0096, .ghz2 = 0x0096, NOUPLOAD, },
112   [B2055_VCO_CAL6]              = { .ghz5 = 0x003E, .ghz2 = 0x003E, NOUPLOAD, },
113   [B2055_VCO_CAL7]              = { .ghz5 = 0x003E, .ghz2 = 0x003E, NOUPLOAD, },
114   [B2055_VCO_CAL8]              = { .ghz5 = 0x0013, .ghz2 = 0x0013, NOUPLOAD, },
115   [B2055_VCO_CAL9]              = { .ghz5 = 0x0002, .ghz2 = 0x0002, NOUPLOAD, },
116   [B2055_VCO_CAL10]             = { .ghz5 = 0x0015, .ghz2 = 0x0015, NOUPLOAD, },
117   [B2055_VCO_CAL11]             = { .ghz5 = 0x0007, .ghz2 = 0x0007, NOUPLOAD, },
118   [B2055_VCO_CAL12]             = { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, },
119   [B2055_VCO_CAL13]             = { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, },
120   [B2055_VCO_CAL14]             = { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, },
121   [B2055_VCO_CAL15]             = { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, },
122   [B2055_VCO_CAL16]             = { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, },
123   [B2055_VCO_KVCO]              = { .ghz5 = 0x0008, .ghz2 = 0x0008, NOUPLOAD, },
124   [B2055_VCO_CAPTAIL]           = { .ghz5 = 0x0008, .ghz2 = 0x0008, NOUPLOAD, },
125   [B2055_VCO_IDACVCO]           = { .ghz5 = 0x0006, .ghz2 = 0x0006, NOUPLOAD, },
126   [B2055_VCO_REG]               = { .ghz5 = 0x0084, .ghz2 = 0x0084, UPLOAD, },
127   [B2055_PLL_RFVTH]             = { .ghz5 = 0x00C3, .ghz2 = 0x00C3, NOUPLOAD, },
128   [B2055_LGBUF_CENBUF]          = { .ghz5 = 0x008F, .ghz2 = 0x008F, NOUPLOAD, },
129   [B2055_LGEN_TUNE1]            = { .ghz5 = 0x00FF, .ghz2 = 0x00FF, NOUPLOAD, },
130   [B2055_LGEN_TUNE2]            = { .ghz5 = 0x00FF, .ghz2 = 0x00FF, NOUPLOAD, },
131   [B2055_LGEN_IDAC1]            = { .ghz5 = 0x0088, .ghz2 = 0x0088, NOUPLOAD, },
132   [B2055_LGEN_IDAC2]            = { .ghz5 = 0x0088, .ghz2 = 0x0088, NOUPLOAD, },
133   [B2055_LGEN_BIASC]            = { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, },
134   [B2055_LGEN_BIASIDAC]         = { .ghz5 = 0x00CC, .ghz2 = 0x00CC, NOUPLOAD, },
135   [B2055_LGEN_RCAL]             = { .ghz5 = 0x0006, .ghz2 = 0x0006, NOUPLOAD, },
136   [B2055_LGEN_DIV]              = { .ghz5 = 0x0080, .ghz2 = 0x0080, NOUPLOAD, },
137   [B2055_LGEN_SPARE2]           = { .ghz5 = 0x0080, .ghz2 = 0x0080, NOUPLOAD, },
138   [B2055_C1_LGBUF_ATUNE]        = { .ghz5 = 0x00F8, .ghz2 = 0x00F8, NOUPLOAD, },
139   [B2055_C1_LGBUF_GTUNE]        = { .ghz5 = 0x0088, .ghz2 = 0x0088, NOUPLOAD, },
140   [B2055_C1_LGBUF_DIV]          = { .ghz5 = 0x0088, .ghz2 = 0x0088, NOUPLOAD, },
141   [B2055_C1_LGBUF_AIDAC]        = { .ghz5 = 0x0088, .ghz2 = 0x0008, UPLOAD, },
142   [B2055_C1_LGBUF_GIDAC]        = { .ghz5 = 0x0088, .ghz2 = 0x0088, NOUPLOAD, },
143   [B2055_C1_LGBUF_IDACFO]       = { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, },
144   [B2055_C1_LGBUF_SPARE]        = { .ghz5 = 0x0001, .ghz2 = 0x0001, UPLOAD, },
145   [B2055_C1_RX_RFSPC1]          = { .ghz5 = 0x008A, .ghz2 = 0x008A, NOUPLOAD, },
146   [B2055_C1_RX_RFR1]            = { .ghz5 = 0x0008, .ghz2 = 0x0008, NOUPLOAD, },
147   [B2055_C1_RX_RFR2]            = { .ghz5 = 0x0083, .ghz2 = 0x0083, NOUPLOAD, },
148   [B2055_C1_RX_RFRCAL]          = { .ghz5 = 0x0006, .ghz2 = 0x0006, NOUPLOAD, },
149   [B2055_C1_RX_BB_BLCMP]        = { .ghz5 = 0x00A0, .ghz2 = 0x00A0, NOUPLOAD, },
150   [B2055_C1_RX_BB_LPF]          = { .ghz5 = 0x000A, .ghz2 = 0x000A, NOUPLOAD, },
151   [B2055_C1_RX_BB_MIDACHP]      = { .ghz5 = 0x0087, .ghz2 = 0x0087, UPLOAD, },
152   [B2055_C1_RX_BB_VGA1IDAC]     = { .ghz5 = 0x002A, .ghz2 = 0x002A, NOUPLOAD, },
153   [B2055_C1_RX_BB_VGA2IDAC]     = { .ghz5 = 0x002A, .ghz2 = 0x002A, NOUPLOAD, },
154   [B2055_C1_RX_BB_VGA3IDAC]     = { .ghz5 = 0x002A, .ghz2 = 0x002A, NOUPLOAD, },
155   [B2055_C1_RX_BB_BUFOCTL]      = { .ghz5 = 0x002A, .ghz2 = 0x002A, NOUPLOAD, },
156   [B2055_C1_RX_BB_RCCALCTL]     = { .ghz5 = 0x0018, .ghz2 = 0x0018, NOUPLOAD, },
157   [B2055_C1_RX_BB_RSSICTL1]     = { .ghz5 = 0x006A, .ghz2 = 0x006A, UPLOAD, },
158   [B2055_C1_RX_BB_RSSICTL2]     = { .ghz5 = 0x00AB, .ghz2 = 0x00AB, UPLOAD, },
159   [B2055_C1_RX_BB_RSSICTL3]     = { .ghz5 = 0x0013, .ghz2 = 0x0013, UPLOAD, },
160   [B2055_C1_RX_BB_RSSICTL4]     = { .ghz5 = 0x00C1, .ghz2 = 0x00C1, UPLOAD, },
161   [B2055_C1_RX_BB_RSSICTL5]     = { .ghz5 = 0x00AA, .ghz2 = 0x00AA, UPLOAD, },
162   [B2055_C1_RX_BB_REG]          = { .ghz5 = 0x0087, .ghz2 = 0x0087, UPLOAD, },
163   [B2055_C1_RX_BB_SPARE1]       = { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, },
164   [B2055_C1_RX_TXBBRCAL]        = { .ghz5 = 0x0006, .ghz2 = 0x0006, NOUPLOAD, },
165   [B2055_C1_TX_RF_SPGA]         = { .ghz5 = 0x0007, .ghz2 = 0x0007, NOUPLOAD, },
166   [B2055_C1_TX_RF_SPAD]         = { .ghz5 = 0x0007, .ghz2 = 0x0007, NOUPLOAD, },
167   [B2055_C1_TX_RF_CNTPGA1]      = { .ghz5 = 0x0015, .ghz2 = 0x0015, NOUPLOAD, },
168   [B2055_C1_TX_RF_CNTPAD1]      = { .ghz5 = 0x0055, .ghz2 = 0x0055, NOUPLOAD, },
169   [B2055_C1_TX_RF_PGAIDAC]      = { .ghz5 = 0x0097, .ghz2 = 0x0097, UPLOAD, },
170   [B2055_C1_TX_PGAPADTN]        = { .ghz5 = 0x0008, .ghz2 = 0x0008, NOUPLOAD, },
171   [B2055_C1_TX_PADIDAC1]        = { .ghz5 = 0x0014, .ghz2 = 0x0014, UPLOAD, },
172   [B2055_C1_TX_PADIDAC2]        = { .ghz5 = 0x0033, .ghz2 = 0x0033, NOUPLOAD, },
173   [B2055_C1_TX_MXBGTRIM]        = { .ghz5 = 0x0088, .ghz2 = 0x0088, NOUPLOAD, },
174   [B2055_C1_TX_RF_RCAL]         = { .ghz5 = 0x0006, .ghz2 = 0x0006, NOUPLOAD, },
175   [B2055_C1_TX_RF_PADTSSI1]     = { .ghz5 = 0x0003, .ghz2 = 0x0003, UPLOAD, },
176   [B2055_C1_TX_RF_PADTSSI2]     = { .ghz5 = 0x000A, .ghz2 = 0x000A, NOUPLOAD, },
177   [B2055_C1_TX_RF_SPARE]        = { .ghz5 = 0x0003, .ghz2 = 0x0003, UPLOAD, },
178   [B2055_C1_TX_RF_IQCAL1]       = { .ghz5 = 0x002A, .ghz2 = 0x002A, NOUPLOAD, },
179   [B2055_C1_TX_RF_IQCAL2]       = { .ghz5 = 0x00A4, .ghz2 = 0x00A4, NOUPLOAD, },
180   [B2055_C1_TXBB_RCCAL]         = { .ghz5 = 0x0018, .ghz2 = 0x0018, NOUPLOAD, },
181   [B2055_C1_TXBB_LPF1]          = { .ghz5 = 0x0028, .ghz2 = 0x0028, NOUPLOAD, },
182   [B2055_C1_TX_VOSCNCL]         = { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, },
183   [B2055_C1_TX_LPF_MXGMIDAC]    = { .ghz5 = 0x004A, .ghz2 = 0x004A, NOUPLOAD, },
184   [B2055_C1_TX_BB_MXGM]         = { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, },
185   [B2055_C2_LGBUF_ATUNE]        = { .ghz5 = 0x00F8, .ghz2 = 0x00F8, NOUPLOAD, },
186   [B2055_C2_LGBUF_GTUNE]        = { .ghz5 = 0x0088, .ghz2 = 0x0088, NOUPLOAD, },
187   [B2055_C2_LGBUF_DIV]          = { .ghz5 = 0x0088, .ghz2 = 0x0088, NOUPLOAD, },
188   [B2055_C2_LGBUF_AIDAC]        = { .ghz5 = 0x0088, .ghz2 = 0x0008, UPLOAD, },
189   [B2055_C2_LGBUF_GIDAC]        = { .ghz5 = 0x0088, .ghz2 = 0x0088, NOUPLOAD, },
190   [B2055_C2_LGBUF_IDACFO]       = { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, },
191   [B2055_C2_LGBUF_SPARE]        = { .ghz5 = 0x0001, .ghz2 = 0x0001, UPLOAD, },
192   [B2055_C2_RX_RFSPC1]          = { .ghz5 = 0x008A, .ghz2 = 0x008A, NOUPLOAD, },
193   [B2055_C2_RX_RFR1]            = { .ghz5 = 0x0008, .ghz2 = 0x0008, NOUPLOAD, },
194   [B2055_C2_RX_RFR2]            = { .ghz5 = 0x0083, .ghz2 = 0x0083, NOUPLOAD, },
195   [B2055_C2_RX_RFRCAL]          = { .ghz5 = 0x0006, .ghz2 = 0x0006, NOUPLOAD, },
196   [B2055_C2_RX_BB_BLCMP]        = { .ghz5 = 0x00A0, .ghz2 = 0x00A0, NOUPLOAD, },
197   [B2055_C2_RX_BB_LPF]          = { .ghz5 = 0x000A, .ghz2 = 0x000A, NOUPLOAD, },
198   [B2055_C2_RX_BB_MIDACHP]      = { .ghz5 = 0x0087, .ghz2 = 0x0087, UPLOAD, },
199   [B2055_C2_RX_BB_VGA1IDAC]     = { .ghz5 = 0x002A, .ghz2 = 0x002A, NOUPLOAD, },
200   [B2055_C2_RX_BB_VGA2IDAC]     = { .ghz5 = 0x002A, .ghz2 = 0x002A, NOUPLOAD, },
201   [B2055_C2_RX_BB_VGA3IDAC]     = { .ghz5 = 0x002A, .ghz2 = 0x002A, NOUPLOAD, },
202   [B2055_C2_RX_BB_BUFOCTL]      = { .ghz5 = 0x002A, .ghz2 = 0x002A, NOUPLOAD, },
203   [B2055_C2_RX_BB_RCCALCTL]     = { .ghz5 = 0x0018, .ghz2 = 0x0018, NOUPLOAD, },
204   [B2055_C2_RX_BB_RSSICTL1]     = { .ghz5 = 0x006A, .ghz2 = 0x006A, UPLOAD, },
205   [B2055_C2_RX_BB_RSSICTL2]     = { .ghz5 = 0x00AB, .ghz2 = 0x00AB, UPLOAD, },
206   [B2055_C2_RX_BB_RSSICTL3]     = { .ghz5 = 0x0013, .ghz2 = 0x0013, UPLOAD, },
207   [B2055_C2_RX_BB_RSSICTL4]     = { .ghz5 = 0x00C1, .ghz2 = 0x00C1, UPLOAD, },
208   [B2055_C2_RX_BB_RSSICTL5]     = { .ghz5 = 0x00AA, .ghz2 = 0x00AA, UPLOAD, },
209   [B2055_C2_RX_BB_REG]          = { .ghz5 = 0x0087, .ghz2 = 0x0087, UPLOAD, },
210   [B2055_C2_RX_BB_SPARE1]       = { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, },
211   [B2055_C2_RX_TXBBRCAL]        = { .ghz5 = 0x0006, .ghz2 = 0x0006, NOUPLOAD, },
212   [B2055_C2_TX_RF_SPGA]         = { .ghz5 = 0x0007, .ghz2 = 0x0007, NOUPLOAD, },
213   [B2055_C2_TX_RF_SPAD]         = { .ghz5 = 0x0007, .ghz2 = 0x0007, NOUPLOAD, },
214   [B2055_C2_TX_RF_CNTPGA1]      = { .ghz5 = 0x0015, .ghz2 = 0x0015, NOUPLOAD, },
215   [B2055_C2_TX_RF_CNTPAD1]      = { .ghz5 = 0x0055, .ghz2 = 0x0055, NOUPLOAD, },
216   [B2055_C2_TX_RF_PGAIDAC]      = { .ghz5 = 0x0097, .ghz2 = 0x0097, UPLOAD, },
217   [B2055_C2_TX_PGAPADTN]        = { .ghz5 = 0x0008, .ghz2 = 0x0008, NOUPLOAD, },
218   [B2055_C2_TX_PADIDAC1]        = { .ghz5 = 0x0014, .ghz2 = 0x0014, UPLOAD, },
219   [B2055_C2_TX_PADIDAC2]        = { .ghz5 = 0x0033, .ghz2 = 0x0033, NOUPLOAD, },
220   [B2055_C2_TX_MXBGTRIM]        = { .ghz5 = 0x0088, .ghz2 = 0x0088, NOUPLOAD, },
221   [B2055_C2_TX_RF_RCAL]         = { .ghz5 = 0x0006, .ghz2 = 0x0006, NOUPLOAD, },
222   [B2055_C2_TX_RF_PADTSSI1]     = { .ghz5 = 0x0003, .ghz2 = 0x0003, UPLOAD, },
223   [B2055_C2_TX_RF_PADTSSI2]     = { .ghz5 = 0x000A, .ghz2 = 0x000A, NOUPLOAD, },
224   [B2055_C2_TX_RF_SPARE]        = { .ghz5 = 0x0003, .ghz2 = 0x0003, UPLOAD, },
225   [B2055_C2_TX_RF_IQCAL1]       = { .ghz5 = 0x002A, .ghz2 = 0x002A, NOUPLOAD, },
226   [B2055_C2_TX_RF_IQCAL2]       = { .ghz5 = 0x00A4, .ghz2 = 0x00A4, NOUPLOAD, },
227   [B2055_C2_TXBB_RCCAL]         = { .ghz5 = 0x0018, .ghz2 = 0x0018, NOUPLOAD, },
228   [B2055_C2_TXBB_LPF1]          = { .ghz5 = 0x0028, .ghz2 = 0x0028, NOUPLOAD, },
229   [B2055_C2_TX_VOSCNCL]         = { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, },
230   [B2055_C2_TX_LPF_MXGMIDAC]    = { .ghz5 = 0x004A, .ghz2 = 0x004A, NOUPLOAD, },
231   [B2055_C2_TX_BB_MXGM]         = { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, },
232   [B2055_PRG_GCHP21]            = { .ghz5 = 0x0071, .ghz2 = 0x0071, NOUPLOAD, },
233   [B2055_PRG_GCHP22]            = { .ghz5 = 0x0072, .ghz2 = 0x0072, NOUPLOAD, },
234   [B2055_PRG_GCHP23]            = { .ghz5 = 0x0073, .ghz2 = 0x0073, NOUPLOAD, },
235   [B2055_PRG_GCHP24]            = { .ghz5 = 0x0074, .ghz2 = 0x0074, NOUPLOAD, },
236   [B2055_PRG_GCHP25]            = { .ghz5 = 0x0075, .ghz2 = 0x0075, NOUPLOAD, },
237   [B2055_PRG_GCHP26]            = { .ghz5 = 0x0076, .ghz2 = 0x0076, NOUPLOAD, },
238   [B2055_PRG_GCHP27]            = { .ghz5 = 0x0077, .ghz2 = 0x0077, NOUPLOAD, },
239   [B2055_PRG_GCHP28]            = { .ghz5 = 0x0078, .ghz2 = 0x0078, NOUPLOAD, },
240   [B2055_PRG_GCHP29]            = { .ghz5 = 0x0079, .ghz2 = 0x0079, NOUPLOAD, },
241   [B2055_PRG_GCHP30]            = { .ghz5 = 0x007A, .ghz2 = 0x007A, NOUPLOAD, },
242   [0xC7]                        = { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, },
243   [0xC8]                        = { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, },
244   [0xC9]                        = { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, },
245   [0xCA]                        = { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, },
246   [0xCB]                        = { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, },
247   [0xCC]                        = { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, },
248   [B2055_C1_LNA_GAINBST]        = { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, },
249   [0xCE]                        = { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, },
250   [0xCF]                        = { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, },
251   [0xD0]                        = { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, },
252   [0xD1]                        = { .ghz5 = 0x0018, .ghz2 = 0x0018, NOUPLOAD, },
253   [B2055_C1_B0NB_RSSIVCM]       = { .ghz5 = 0x0088, .ghz2 = 0x0088, NOUPLOAD, },
254   [0xD3]                        = { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, },
255   [0xD4]                        = { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, },
256   [0xD5]                        = { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, },
257   [B2055_C1_GENSPARE2]          = { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, },
258   [0xD7]                        = { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, },
259   [0xD8]                        = { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, },
260   [B2055_C2_LNA_GAINBST]        = { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, },
261   [0xDA]                        = { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, },
262   [0xDB]                        = { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, },
263   [0xDC]                        = { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, },
264   [0xDD]                        = { .ghz5 = 0x0018, .ghz2 = 0x0018, NOUPLOAD, },
265   [B2055_C2_B0NB_RSSIVCM]       = { .ghz5 = 0x0088, .ghz2 = 0x0088, NOUPLOAD, },
266   [0xDF]                        = { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, },
267   [0xE0]                        = { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, },
268   [0xE1]                        = { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, },
269   [B2055_C2_GENSPARE2]          = { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, },
270 };
271
272
273 void b2055_upload_inittab(struct b43_wldev *dev,
274                           bool ghz5, bool ignore_uploadflag)
275 {
276         const struct b2055_inittab_entry *e;
277         unsigned int i;
278         u16 value;
279
280         for (i = 0; i < ARRAY_SIZE(b2055_inittab); i++) {
281                 e = &(b2055_inittab[i]);
282                 if (!(e->flags & B2055_INITTAB_ENTRY_OK))
283                         continue;
284                 if ((e->flags & B2055_INITTAB_UPLOAD) || ignore_uploadflag) {
285                         if (ghz5)
286                                 value = e->ghz5;
287                         else
288                                 value = e->ghz2;
289                         b43_radio_write16(dev, i, value);
290                 }
291         }
292 }
293
294
295 #define RADIOREGS(r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, \
296                   r12, r13, r14, r15, r16, r17, r18, r19, r20, r21) \
297         .radio_pll_ref          = r0,   \
298         .radio_rf_pllmod0       = r1,   \
299         .radio_rf_pllmod1       = r2,   \
300         .radio_vco_captail      = r3,   \
301         .radio_vco_cal1         = r4,   \
302         .radio_vco_cal2         = r5,   \
303         .radio_pll_lfc1         = r6,   \
304         .radio_pll_lfr1         = r7,   \
305         .radio_pll_lfc2         = r8,   \
306         .radio_lgbuf_cenbuf     = r9,   \
307         .radio_lgen_tune1       = r10,  \
308         .radio_lgen_tune2       = r11,  \
309         .radio_c1_lgbuf_atune   = r12,  \
310         .radio_c1_lgbuf_gtune   = r13,  \
311         .radio_c1_rx_rfr1       = r14,  \
312         .radio_c1_tx_pgapadtn   = r15,  \
313         .radio_c1_tx_mxbgtrim   = r16,  \
314         .radio_c2_lgbuf_atune   = r17,  \
315         .radio_c2_lgbuf_gtune   = r18,  \
316         .radio_c2_rx_rfr1       = r19,  \
317         .radio_c2_tx_pgapadtn   = r20,  \
318         .radio_c2_tx_mxbgtrim   = r21
319
320 #define PHYREGS(r0, r1, r2, r3, r4, r5) \
321         .phy_bw1a       = r0,           \
322         .phy_bw2        = r1,           \
323         .phy_bw3        = r2,           \
324         .phy_bw4        = r3,           \
325         .phy_bw5        = r4,           \
326         .phy_bw6        = r5
327
328 static const struct b43_nphy_channeltab_entry b43_nphy_channeltab[] = {
329   {     .channel                = 184,
330         .freq                   = 4920, /* MHz */
331         .unk2                   = 3280,
332         RADIOREGS(0x71, 0x01, 0xEC, 0x0F, 0xFF, 0x01, 0x04, 0x0A,
333                   0x00, 0x8F, 0xFF, 0xFF, 0xFF, 0x00, 0x0F, 0x0F,
334                   0x8F, 0xFF, 0x00, 0x0F, 0x0F, 0x8F),
335         PHYREGS(0xB407, 0xB007, 0xAC07, 0x1402, 0x1502, 0x1602),
336   },
337   {     .channel                = 186,
338         .freq                   = 4930, /* MHz */
339         .unk2                   = 3287,
340         RADIOREGS(0x71, 0x01, 0xED, 0x0F, 0xFF, 0x01, 0x04, 0x0A,
341                   0x00, 0x8F, 0xFF, 0xFF, 0xFF, 0x00, 0x0F, 0x0F,
342                   0x8F, 0xFF, 0x00, 0x0F, 0x0F, 0x8F),
343         PHYREGS(0xB807, 0xB407, 0xB007, 0x1302, 0x1402, 0x1502),
344   },
345   {     .channel                = 188,
346         .freq                   = 4940, /* MHz */
347         .unk2                   = 3293,
348         RADIOREGS(0x71, 0x01, 0xEE, 0x0F, 0xFF, 0x01, 0x04, 0x0A,
349                   0x00, 0x8F, 0xEE, 0xEE, 0xFF, 0x00, 0x0F, 0x0F,
350                   0x8F, 0xFF, 0x00, 0x0F, 0x0F, 0x8F),
351         PHYREGS(0xBC07, 0xB807, 0xB407, 0x1202, 0x1302, 0x1402),
352   },
353   {     .channel                = 190,
354         .freq                   = 4950, /* MHz */
355         .unk2                   = 3300,
356         RADIOREGS(0x71, 0x01, 0xEF, 0x0F, 0xFF, 0x01, 0x04, 0x0A,
357                   0x00, 0x8F, 0xEE, 0xEE, 0xFF, 0x00, 0x0F, 0x0F,
358                   0x8F, 0xFF, 0x00, 0x0F, 0x0F, 0x8F),
359         PHYREGS(0xC007, 0xBC07, 0xB807, 0x1102, 0x1202, 0x1302),
360   },
361   {     .channel                = 192,
362         .freq                   = 4960, /* MHz */
363         .unk2                   = 3307,
364         RADIOREGS(0x71, 0x01, 0xF0, 0x0F, 0xFF, 0x01, 0x04, 0x0A,
365                   0x00, 0x8F, 0xEE, 0xEE, 0xFF, 0x00, 0x0F, 0x0F,
366                   0x8F, 0xFF, 0x00, 0x0F, 0x0F, 0x8F),
367         PHYREGS(0xC407, 0xC007, 0xBC07, 0x0F02, 0x1102, 0x1202),
368   },
369   {     .channel                = 194,
370         .freq                   = 4970, /* MHz */
371         .unk2                   = 3313,
372         RADIOREGS(0x71, 0x01, 0xF1, 0x0F, 0xFF, 0x01, 0x04, 0x0A,
373                   0x00, 0x8F, 0xEE, 0xEE, 0xFF, 0x00, 0x0F, 0x0F,
374                   0x8F, 0xFF, 0x00, 0x0F, 0x0F, 0x8F),
375         PHYREGS(0xC807, 0xC407, 0xC007, 0x0E02, 0x0F02, 0x1102),
376   },
377   {     .channel                = 196,
378         .freq                   = 4980, /* MHz */
379         .unk2                   = 3320,
380         RADIOREGS(0x71, 0x01, 0xF2, 0x0E, 0xFF, 0x01, 0x04, 0x0A,
381                   0x00, 0x8F, 0xDD, 0xDD, 0xFF, 0x00, 0x0F, 0x0F,
382                   0x8F, 0xFF, 0x00, 0x0F, 0x0F, 0x8F),
383         PHYREGS(0xCC07, 0xC807, 0xC407, 0x0D02, 0x0E02, 0x0F02),
384   },
385   {     .channel                = 198,
386         .freq                   = 4990, /* MHz */
387         .unk2                   = 3327,
388         RADIOREGS(0x71, 0x01, 0xF3, 0x0E, 0xFF, 0x01, 0x04, 0x0A,
389                   0x00, 0x8F, 0xDD, 0xDD, 0xFF, 0x00, 0x0F, 0x0F,
390                   0x8F, 0xFF, 0x00, 0x0F, 0x0F, 0x8F),
391         PHYREGS(0xD007, 0xCC07, 0xC807, 0x0C02, 0x0D02, 0x0E02),
392   },
393   {     .channel                = 200,
394         .freq                   = 5000, /* MHz */
395         .unk2                   = 3333,
396         RADIOREGS(0x71, 0x01, 0xF4, 0x0E, 0xFF, 0x01, 0x04, 0x0A,
397                   0x00, 0x8F, 0xDD, 0xDD, 0xFF, 0x00, 0x0F, 0x0F,
398                   0x8F, 0xFF, 0x00, 0x0F, 0x0F, 0x8F),
399         PHYREGS(0xD407, 0xD007, 0xCC07, 0x0B02, 0x0C02, 0x0D02),
400   },
401   {     .channel                = 202,
402         .freq                   = 5010, /* MHz */
403         .unk2                   = 3340,
404         RADIOREGS(0x71, 0x01, 0xF5, 0x0E, 0xFF, 0x01, 0x04, 0x0A,
405                   0x00, 0x8F, 0xDD, 0xDD, 0xFF, 0x00, 0x0F, 0x0F,
406                   0x8F, 0xFF, 0x00, 0x0F, 0x0F, 0x8F),
407         PHYREGS(0xD807, 0xD407, 0xD007, 0x0A02, 0x0B02, 0x0C02),
408   },
409   {     .channel                = 204,
410         .freq                   = 5020, /* MHz */
411         .unk2                   = 3347,
412         RADIOREGS(0x71, 0x01, 0xF6, 0x0E, 0xF7, 0x01, 0x04, 0x0A,
413                   0x00, 0x8F, 0xCC, 0xCC, 0xFF, 0x00, 0x0F, 0x0F,
414                   0x8F, 0xFF, 0x00, 0x0F, 0x0F, 0x8F),
415         PHYREGS(0xDC07, 0xD807, 0xD407, 0x0902, 0x0A02, 0x0B02),
416   },
417   {     .channel                = 206,
418         .freq                   = 5030, /* MHz */
419         .unk2                   = 3353,
420         RADIOREGS(0x71, 0x01, 0xF7, 0x0E, 0xF7, 0x01, 0x04, 0x0A,
421                   0x00, 0x8F, 0xCC, 0xCC, 0xFF, 0x00, 0x0F, 0x0F,
422                   0x8F, 0xFF, 0x00, 0x0F, 0x0F, 0x8F),
423         PHYREGS(0xE007, 0xDC07, 0xD807, 0x0802, 0x0902, 0x0A02),
424   },
425   {     .channel                = 208,
426         .freq                   = 5040, /* MHz */
427         .unk2                   = 3360,
428         RADIOREGS(0x71, 0x01, 0xF8, 0x0D, 0xEF, 0x01, 0x04, 0x0A,
429                   0x00, 0x8F, 0xCC, 0xCC, 0xFF, 0x00, 0x0F, 0x0F,
430                   0x8F, 0xFF, 0x00, 0x0F, 0x0F, 0x8F),
431         PHYREGS(0xE407, 0xE007, 0xDC07, 0x0702, 0x0802, 0x0902),
432   },
433   {     .channel                = 210,
434         .freq                   = 5050, /* MHz */
435         .unk2                   = 3367,
436         RADIOREGS(0x71, 0x01, 0xF9, 0x0D, 0xEF, 0x01, 0x04, 0x0A,
437                   0x00, 0x8F, 0xCC, 0xCC, 0xFF, 0x00, 0x0F, 0x0F,
438                   0x8F, 0xFF, 0x00, 0x0F, 0x0F, 0x8F),
439         PHYREGS(0xE807, 0xE407, 0xE007, 0x0602, 0x0702, 0x0802),
440   },
441   {     .channel                = 212,
442         .freq                   = 5060, /* MHz */
443         .unk2                   = 3373,
444         RADIOREGS(0x71, 0x01, 0xFA, 0x0D, 0xE6, 0x01, 0x04, 0x0A,
445                   0x00, 0x8F, 0xBB, 0xBB, 0xFF, 0x00, 0x0E, 0x0F,
446                   0x8E, 0xFF, 0x00, 0x0E, 0x0F, 0x8E),
447         PHYREGS(0xEC07, 0xE807, 0xE407, 0x0502, 0x0602, 0x0702),
448   },
449   {     .channel                = 214,
450         .freq                   = 5070, /* MHz */
451         .unk2                   = 3380,
452         RADIOREGS(0x71, 0x01, 0xFB, 0x0D, 0xE6, 0x01, 0x04, 0x0A,
453                   0x00, 0x8F, 0xBB, 0xBB, 0xFF, 0x00, 0x0E, 0x0F,
454                   0x8E, 0xFF, 0x00, 0x0E, 0x0F, 0x8E),
455         PHYREGS(0xF007, 0xEC07, 0xE807, 0x0402, 0x0502, 0x0602),
456   },
457   {     .channel                = 216,
458         .freq                   = 5080, /* MHz */
459         .unk2                   = 3387,
460         RADIOREGS(0x71, 0x01, 0xFC, 0x0D, 0xDE, 0x01, 0x04, 0x0A,
461                   0x00, 0x8E, 0xBB, 0xBB, 0xEE, 0x00, 0x0E, 0x0F,
462                   0x8D, 0xEE, 0x00, 0x0E, 0x0F, 0x8D),
463         PHYREGS(0xF407, 0xF007, 0xEC07, 0x0302, 0x0402, 0x0502),
464   },
465   {     .channel                = 218,
466         .freq                   = 5090, /* MHz */
467         .unk2                   = 3393,
468         RADIOREGS(0x71, 0x01, 0xFD, 0x0D, 0xDE, 0x01, 0x04, 0x0A,
469                   0x00, 0x8E, 0xBB, 0xBB, 0xEE, 0x00, 0x0E, 0x0F,
470                   0x8D, 0xEE, 0x00, 0x0E, 0x0F, 0x8D),
471         PHYREGS(0xF807, 0xF407, 0xF007, 0x0202, 0x0302, 0x0402),
472   },
473   {     .channel                = 220,
474         .freq                   = 5100, /* MHz */
475         .unk2                   = 3400,
476         RADIOREGS(0x71, 0x01, 0xFE, 0x0C, 0xD6, 0x01, 0x04, 0x0A,
477                   0x00, 0x8E, 0xAA, 0xAA, 0xEE, 0x00, 0x0D, 0x0F,
478                   0x8D, 0xEE, 0x00, 0x0D, 0x0F, 0x8D),
479         PHYREGS(0xFC07, 0xF807, 0xF407, 0x0102, 0x0202, 0x0302),
480   },
481   {     .channel                = 222,
482         .freq                   = 5110, /* MHz */
483         .unk2                   = 3407,
484         RADIOREGS(0x71, 0x01, 0xFF, 0x0C, 0xD6, 0x01, 0x04, 0x0A,
485                   0x00, 0x8E, 0xAA, 0xAA, 0xEE, 0x00, 0x0D, 0x0F,
486                   0x8D, 0xEE, 0x00, 0x0D, 0x0F, 0x8D),
487         PHYREGS(0x0008, 0xFC07, 0xF807, 0x0002, 0x0102, 0x0202),
488   },
489   {     .channel                = 224,
490         .freq                   = 5120, /* MHz */
491         .unk2                   = 3413,
492         RADIOREGS(0x71, 0x02, 0x00, 0x0C, 0xCE, 0x01, 0x04, 0x0A,
493                   0x00, 0x8D, 0xAA, 0xAA, 0xDD, 0x00, 0x0D, 0x0F,
494                   0x8C, 0xDD, 0x00, 0x0D, 0x0F, 0x8C),
495         PHYREGS(0x0408, 0x0008, 0xFC07, 0xFF01, 0x0002, 0x0102),
496   },
497   {     .channel                = 226,
498         .freq                   = 5130, /* MHz */
499         .unk2                   = 3420,
500         RADIOREGS(0x71, 0x02, 0x01, 0x0C, 0xCE, 0x01, 0x04, 0x0A,
501                   0x00, 0x8D, 0xAA, 0xAA, 0xDD, 0x00, 0x0D, 0x0F,
502                   0x8C, 0xDD, 0x00, 0x0D, 0x0F, 0x8C),
503         PHYREGS(0x0808, 0x0408, 0x0008, 0xFE01, 0xFF01, 0x0002),
504   },
505   {     .channel                = 228,
506         .freq                   = 5140, /* MHz */
507         .unk2                   = 3427,
508         RADIOREGS(0x71, 0x02, 0x02, 0x0C, 0xC6, 0x01, 0x04, 0x0A,
509                   0x00, 0x8D, 0x99, 0x99, 0xDD, 0x00, 0x0C, 0x0E,
510                   0x8B, 0xDD, 0x00, 0x0C, 0x0E, 0x8B),
511         PHYREGS(0x0C08, 0x0808, 0x0408, 0xFD01, 0xFE01, 0xFF01),
512   },
513   {     .channel                = 32,
514         .freq                   = 5160, /* MHz */
515         .unk2                   = 3440,
516         RADIOREGS(0x71, 0x02, 0x04, 0x0B, 0xBE, 0x01, 0x04, 0x0A,
517                   0x00, 0x8C, 0x99, 0x99, 0xCC, 0x00, 0x0B, 0x0D,
518                   0x8A, 0xCC, 0x00, 0x0B, 0x0D, 0x8A),
519         PHYREGS(0x1408, 0x1008, 0x0C08, 0xFB01, 0xFC01, 0xFD01),
520   },
521   {     .channel                = 34,
522         .freq                   = 5170, /* MHz */
523         .unk2                   = 3447,
524         RADIOREGS(0x71, 0x02, 0x05, 0x0B, 0xBE, 0x01, 0x04, 0x0A,
525                   0x00, 0x8C, 0x99, 0x99, 0xCC, 0x00, 0x0B, 0x0D,
526                   0x8A, 0xCC, 0x00, 0x0B, 0x0D, 0x8A),
527         PHYREGS(0x1808, 0x1408, 0x1008, 0xFA01, 0xFB01, 0xFC01),
528   },
529   {     .channel                = 36,
530         .freq                   = 5180, /* MHz */
531         .unk2                   = 3453,
532         RADIOREGS(0x71, 0x02, 0x06, 0x0B, 0xB6, 0x01, 0x04, 0x0A,
533                   0x00, 0x8C, 0x88, 0x88, 0xCC, 0x00, 0x0B, 0x0C,
534                   0x89, 0xCC, 0x00, 0x0B, 0x0C, 0x89),
535         PHYREGS(0x1C08, 0x1808, 0x1408, 0xF901, 0xFA01, 0xFB01),
536   },
537   {     .channel                = 38,
538         .freq                   = 5190, /* MHz */
539         .unk2                   = 3460,
540         RADIOREGS(0x71, 0x02, 0x07, 0x0B, 0xB6, 0x01, 0x04, 0x0A,
541                   0x00, 0x8C, 0x88, 0x88, 0xCC, 0x00, 0x0B, 0x0C,
542                   0x89, 0xCC, 0x00, 0x0B, 0x0C, 0x89),
543         PHYREGS(0x2008, 0x1C08, 0x1808, 0xF801, 0xF901, 0xFA01),
544   },
545   {     .channel                = 40,
546         .freq                   = 5200, /* MHz */
547         .unk2                   = 3467,
548         RADIOREGS(0x71, 0x02, 0x08, 0x0B, 0xAF, 0x01, 0x04, 0x0A,
549                   0x00, 0x8B, 0x88, 0x88, 0xBB, 0x00, 0x0A, 0x0B,
550                   0x89, 0xBB, 0x00, 0x0A, 0x0B, 0x89),
551         PHYREGS(0x2408, 0x2008, 0x1C08, 0xF701, 0xF801, 0xF901),
552   },
553   {     .channel                = 42,
554         .freq                   = 5210, /* MHz */
555         .unk2                   = 3473,
556         RADIOREGS(0x71, 0x02, 0x09, 0x0B, 0xAF, 0x01, 0x04, 0x0A,
557                   0x00, 0x8B, 0x88, 0x88, 0xBB, 0x00, 0x0A, 0x0B,
558                   0x89, 0xBB, 0x00, 0x0A, 0x0B, 0x89),
559         PHYREGS(0x2808, 0x2408, 0x2008, 0xF601, 0xF701, 0xF801),
560   },
561   {     .channel                = 44,
562         .freq                   = 5220, /* MHz */
563         .unk2                   = 3480,
564         RADIOREGS(0x71, 0x02, 0x0A, 0x0A, 0xA7, 0x01, 0x04, 0x0A,
565                   0x00, 0x8B, 0x77, 0x77, 0xBB, 0x00, 0x09, 0x0A,
566                   0x88, 0xBB, 0x00, 0x09, 0x0A, 0x88),
567         PHYREGS(0x2C08, 0x2808, 0x2408, 0xF501, 0xF601, 0xF701),
568   },
569   {     .channel                = 46,
570         .freq                   = 5230, /* MHz */
571         .unk2                   = 3487,
572         RADIOREGS(0x71, 0x02, 0x0B, 0x0A, 0xA7, 0x01, 0x04, 0x0A,
573                   0x00, 0x8B, 0x77, 0x77, 0xBB, 0x00, 0x09, 0x0A,
574                   0x88, 0xBB, 0x00, 0x09, 0x0A, 0x88),
575         PHYREGS(0x3008, 0x2C08, 0x2808, 0xF401, 0xF501, 0xF601),
576   },
577   {     .channel                = 48,
578         .freq                   = 5240, /* MHz */
579         .unk2                   = 3493,
580         RADIOREGS(0x71, 0x02, 0x0C, 0x0A, 0xA0, 0x01, 0x04, 0x0A,
581                   0x00, 0x8A, 0x77, 0x77, 0xAA, 0x00, 0x09, 0x0A,
582                   0x87, 0xAA, 0x00, 0x09, 0x0A, 0x87),
583         PHYREGS(0x3408, 0x3008, 0x2C08, 0xF301, 0xF401, 0xF501),
584   },
585   {     .channel                = 50,
586         .freq                   = 5250, /* MHz */
587         .unk2                   = 3500,
588         RADIOREGS(0x71, 0x02, 0x0D, 0x0A, 0xA0, 0x01, 0x04, 0x0A,
589                   0x00, 0x8A, 0x77, 0x77, 0xAA, 0x00, 0x09, 0x0A,
590                   0x87, 0xAA, 0x00, 0x09, 0x0A, 0x87),
591         PHYREGS(0x3808, 0x3408, 0x3008, 0xF201, 0xF301, 0xF401),
592   },
593   {     .channel                = 52,
594         .freq                   = 5260, /* MHz */
595         .unk2                   = 3507,
596         RADIOREGS(0x71, 0x02, 0x0E, 0x0A, 0x98, 0x01, 0x04, 0x0A,
597                   0x00, 0x8A, 0x66, 0x66, 0xAA, 0x00, 0x08, 0x09,
598                   0x87, 0xAA, 0x00, 0x08, 0x09, 0x87),
599         PHYREGS(0x3C08, 0x3808, 0x3408, 0xF101, 0xF201, 0xF301),
600   },
601   {     .channel                = 54,
602         .freq                   = 5270, /* MHz */
603         .unk2                   = 3513,
604         RADIOREGS(0x71, 0x02, 0x0F, 0x0A, 0x98, 0x01, 0x04, 0x0A,
605                   0x00, 0x8A, 0x66, 0x66, 0xAA, 0x00, 0x08, 0x09,
606                   0x87, 0xAA, 0x00, 0x08, 0x09, 0x87),
607         PHYREGS(0x4008, 0x3C08, 0x3808, 0xF001, 0xF101, 0xF201),
608   },
609   {     .channel                = 56,
610         .freq                   = 5280, /* MHz */
611         .unk2                   = 3520,
612         RADIOREGS(0x71, 0x02, 0x10, 0x09, 0x91, 0x01, 0x04, 0x0A,
613                   0x00, 0x89, 0x66, 0x66, 0x99, 0x00, 0x08, 0x08,
614                   0x86, 0x99, 0x00, 0x08, 0x08, 0x86),
615         PHYREGS(0x4408, 0x4008, 0x3C08, 0xF001, 0xF001, 0xF101),
616   },
617   {     .channel                = 58,
618         .freq                   = 5290, /* MHz */
619         .unk2                   = 3527,
620         RADIOREGS(0x71, 0x02, 0x11, 0x09, 0x91, 0x01, 0x04, 0x0A,
621                   0x00, 0x89, 0x66, 0x66, 0x99, 0x00, 0x08, 0x08,
622                   0x86, 0x99, 0x00, 0x08, 0x08, 0x86),
623         PHYREGS(0x4808, 0x4408, 0x4008, 0xEF01, 0xF001, 0xF001),
624   },
625   {     .channel                = 60,
626         .freq                   = 5300, /* MHz */
627         .unk2                   = 3533,
628         RADIOREGS(0x71, 0x02, 0x12, 0x09, 0x8A, 0x01, 0x04, 0x0A,
629                   0x00, 0x89, 0x55, 0x55, 0x99, 0x00, 0x08, 0x07,
630                   0x85, 0x99, 0x00, 0x08, 0x07, 0x85),
631         PHYREGS(0x4C08, 0x4808, 0x4408, 0xEE01, 0xEF01, 0xF001),
632   },
633   {     .channel                = 62,
634         .freq                   = 5310, /* MHz */
635         .unk2                   = 3540,
636         RADIOREGS(0x71, 0x02, 0x13, 0x09, 0x8A, 0x01, 0x04, 0x0A,
637                   0x00, 0x89, 0x55, 0x55, 0x99, 0x00, 0x08, 0x07,
638                   0x85, 0x99, 0x00, 0x08, 0x07, 0x85),
639         PHYREGS(0x5008, 0x4C08, 0x4808, 0xED01, 0xEE01, 0xEF01),
640   },
641   {     .channel                = 64,
642         .freq                   = 5320, /* MHz */
643         .unk2                   = 3547,
644         RADIOREGS(0x71, 0x02, 0x14, 0x09, 0x83, 0x01, 0x04, 0x0A,
645                   0x00, 0x88, 0x55, 0x55, 0x88, 0x00, 0x07, 0x07,
646                   0x84, 0x88, 0x00, 0x07, 0x07, 0x84),
647         PHYREGS(0x5408, 0x5008, 0x4C08, 0xEC01, 0xED01, 0xEE01),
648   },
649   {     .channel                = 66,
650         .freq                   = 5330, /* MHz */
651         .unk2                   = 3553,
652         RADIOREGS(0x71, 0x02, 0x15, 0x09, 0x83, 0x01, 0x04, 0x0A,
653                   0x00, 0x88, 0x55, 0x55, 0x88, 0x00, 0x07, 0x07,
654                   0x84, 0x88, 0x00, 0x07, 0x07, 0x84),
655         PHYREGS(0x5808, 0x5408, 0x5008, 0xEB01, 0xEC01, 0xED01),
656   },
657   {     .channel                = 68,
658         .freq                   = 5340, /* MHz */
659         .unk2                   = 3560,
660         RADIOREGS(0x71, 0x02, 0x16, 0x08, 0x7C, 0x01, 0x04, 0x0A,
661                   0x00, 0x88, 0x44, 0x44, 0x88, 0x00, 0x07, 0x06,
662                   0x84, 0x88, 0x00, 0x07, 0x06, 0x84),
663         PHYREGS(0x5C08, 0x5808, 0x5408, 0xEA01, 0xEB01, 0xEC01),
664   },
665   {     .channel                = 70,
666         .freq                   = 5350, /* MHz */
667         .unk2                   = 3567,
668         RADIOREGS(0x71, 0x02, 0x17, 0x08, 0x7C, 0x01, 0x04, 0x0A,
669                   0x00, 0x88, 0x44, 0x44, 0x88, 0x00, 0x07, 0x06,
670                   0x84, 0x88, 0x00, 0x07, 0x06, 0x84),
671         PHYREGS(0x6008, 0x5C08, 0x5808, 0xE901, 0xEA01, 0xEB01),
672   },
673   {     .channel                = 72,
674         .freq                   = 5360, /* MHz */
675         .unk2                   = 3573,
676         RADIOREGS(0x71, 0x02, 0x18, 0x08, 0x75, 0x01, 0x04, 0x0A,
677                   0x00, 0x87, 0x44, 0x44, 0x77, 0x00, 0x06, 0x05,
678                   0x83, 0x77, 0x00, 0x06, 0x05, 0x83),
679         PHYREGS(0x6408, 0x6008, 0x5C08, 0xE801, 0xE901, 0xEA01),
680   },
681   {     .channel                = 74,
682         .freq                   = 5370, /* MHz */
683         .unk2                   = 3580,
684         RADIOREGS(0x71, 0x02, 0x19, 0x08, 0x75, 0x01, 0x04, 0x0A,
685                   0x00, 0x87, 0x44, 0x44, 0x77, 0x00, 0x06, 0x05,
686                   0x83, 0x77, 0x00, 0x06, 0x05, 0x83),
687         PHYREGS(0x6808, 0x6408, 0x6008, 0xE701, 0xE801, 0xE901),
688   },
689   {     .channel                = 76,
690         .freq                   = 5380, /* MHz */
691         .unk2                   = 3587,
692         RADIOREGS(0x71, 0x02, 0x1A, 0x08, 0x6E, 0x01, 0x04, 0x0A,
693                   0x00, 0x87, 0x33, 0x33, 0x77, 0x00, 0x06, 0x04,
694                   0x82, 0x77, 0x00, 0x06, 0x04, 0x82),
695         PHYREGS(0x6C08, 0x6808, 0x6408, 0xE601, 0xE701, 0xE801),
696   },
697   {     .channel                = 78,
698         .freq                   = 5390, /* MHz */
699         .unk2                   = 3593,
700         RADIOREGS(0x71, 0x02, 0x1B, 0x08, 0x6E, 0x01, 0x04, 0x0A,
701                   0x00, 0x87, 0x33, 0x33, 0x77, 0x00, 0x06, 0x04,
702                   0x82, 0x77, 0x00, 0x06, 0x04, 0x82),
703         PHYREGS(0x7008, 0x6C08, 0x6808, 0xE501, 0xE601, 0xE701),
704   },
705   {     .channel                = 80,
706         .freq                   = 5400, /* MHz */
707         .unk2                   = 3600,
708         RADIOREGS(0x71, 0x02, 0x1C, 0x07, 0x67, 0x01, 0x04, 0x0A,
709                   0x00, 0x86, 0x33, 0x33, 0x66, 0x00, 0x05, 0x04,
710                   0x81, 0x66, 0x00, 0x05, 0x04, 0x81),
711         PHYREGS(0x7408, 0x7008, 0x6C08, 0xE501, 0xE501, 0xE601),
712   },
713   {     .channel                = 82,
714         .freq                   = 5410, /* MHz */
715         .unk2                   = 3607,
716         RADIOREGS(0x71, 0x02, 0x1D, 0x07, 0x67, 0x01, 0x04, 0x0A,
717                   0x00, 0x86, 0x33, 0x33, 0x66, 0x00, 0x05, 0x04,
718                   0x81, 0x66, 0x00, 0x05, 0x04, 0x81),
719         PHYREGS(0x7808, 0x7408, 0x7008, 0xE401, 0xE501, 0xE501),
720   },
721   {     .channel                = 84,
722         .freq                   = 5420, /* MHz */
723         .unk2                   = 3613,
724         RADIOREGS(0x71, 0x02, 0x1E, 0x07, 0x61, 0x01, 0x04, 0x0A,
725                   0x00, 0x86, 0x22, 0x22, 0x66, 0x00, 0x05, 0x03,
726                   0x80, 0x66, 0x00, 0x05, 0x03, 0x80),
727         PHYREGS(0x7C08, 0x7808, 0x7408, 0xE301, 0xE401, 0xE501),
728   },
729   {     .channel                = 86,
730         .freq                   = 5430, /* MHz */
731         .unk2                   = 3620,
732         RADIOREGS(0x71, 0x02, 0x1F, 0x07, 0x61, 0x01, 0x04, 0x0A,
733                   0x00, 0x86, 0x22, 0x22, 0x66, 0x00, 0x05, 0x03,
734                   0x80, 0x66, 0x00, 0x05, 0x03, 0x80),
735         PHYREGS(0x8008, 0x7C08, 0x7808, 0xE201, 0xE301, 0xE401),
736   },
737   {     .channel                = 88,
738         .freq                   = 5440, /* MHz */
739         .unk2                   = 3627,
740         RADIOREGS(0x71, 0x02, 0x20, 0x07, 0x5A, 0x01, 0x04, 0x0A,
741                   0x00, 0x85, 0x22, 0x22, 0x55, 0x00, 0x04, 0x02,
742                   0x80, 0x55, 0x00, 0x04, 0x02, 0x80),
743         PHYREGS(0x8408, 0x8008, 0x7C08, 0xE101, 0xE201, 0xE301),
744   },
745   {     .channel                = 90,
746         .freq                   = 5450, /* MHz */
747         .unk2                   = 3633,
748         RADIOREGS(0x71, 0x02, 0x21, 0x07, 0x5A, 0x01, 0x04, 0x0A,
749                   0x00, 0x85, 0x22, 0x22, 0x55, 0x00, 0x04, 0x02,
750                   0x80, 0x55, 0x00, 0x04, 0x02, 0x80),
751         PHYREGS(0x8808, 0x8408, 0x8008, 0xE001, 0xE101, 0xE201),
752   },
753   {     .channel                = 92,
754         .freq                   = 5460, /* MHz */
755         .unk2                   = 3640,
756         RADIOREGS(0x71, 0x02, 0x22, 0x06, 0x53, 0x01, 0x04, 0x0A,
757                   0x00, 0x85, 0x11, 0x11, 0x55, 0x00, 0x04, 0x01,
758                   0x80, 0x55, 0x00, 0x04, 0x01, 0x80),
759         PHYREGS(0x8C08, 0x8808, 0x8408, 0xDF01, 0xE001, 0xE101),
760   },
761   {     .channel                = 94,
762         .freq                   = 5470, /* MHz */
763         .unk2                   = 3647,
764         RADIOREGS(0x71, 0x02, 0x23, 0x06, 0x53, 0x01, 0x04, 0x0A,
765                   0x00, 0x85, 0x11, 0x11, 0x55, 0x00, 0x04, 0x01,
766                   0x80, 0x55, 0x00, 0x04, 0x01, 0x80),
767         PHYREGS(0x9008, 0x8C08, 0x8808, 0xDE01, 0xDF01, 0xE001),
768   },
769   {     .channel                = 96,
770         .freq                   = 5480, /* MHz */
771         .unk2                   = 3653,
772         RADIOREGS(0x71, 0x02, 0x24, 0x06, 0x4D, 0x01, 0x04, 0x0A,
773                   0x00, 0x84, 0x11, 0x11, 0x44, 0x00, 0x03, 0x00,
774                   0x80, 0x44, 0x00, 0x03, 0x00, 0x80),
775         PHYREGS(0x9408, 0x9008, 0x8C08, 0xDD01, 0xDE01, 0xDF01),
776   },
777   {     .channel                = 98,
778         .freq                   = 5490, /* MHz */
779         .unk2                   = 3660,
780         RADIOREGS(0x71, 0x02, 0x25, 0x06, 0x4D, 0x01, 0x04, 0x0A,
781                   0x00, 0x84, 0x11, 0x11, 0x44, 0x00, 0x03, 0x00,
782                   0x80, 0x44, 0x00, 0x03, 0x00, 0x80),
783         PHYREGS(0x9808, 0x9408, 0x9008, 0xDD01, 0xDD01, 0xDE01),
784   },
785   {     .channel                = 100,
786         .freq                   = 5500, /* MHz */
787         .unk2                   = 3667,
788         RADIOREGS(0x71, 0x02, 0x26, 0x06, 0x47, 0x01, 0x04, 0x0A,
789                   0x00, 0x84, 0x00, 0x00, 0x44, 0x00, 0x03, 0x00,
790                   0x80, 0x44, 0x00, 0x03, 0x00, 0x80),
791         PHYREGS(0x9C08, 0x9808, 0x9408, 0xDC01, 0xDD01, 0xDD01),
792   },
793   {     .channel                = 102,
794         .freq                   = 5510, /* MHz */
795         .unk2                   = 3673,
796         RADIOREGS(0x71, 0x02, 0x27, 0x06, 0x47, 0x01, 0x04, 0x0A,
797                   0x00, 0x84, 0x00, 0x00, 0x44, 0x00, 0x03, 0x00,
798                   0x80, 0x44, 0x00, 0x03, 0x00, 0x80),
799         PHYREGS(0xA008, 0x9C08, 0x9808, 0xDB01, 0xDC01, 0xDD01),
800   },
801   {     .channel                = 104,
802         .freq                   = 5520, /* MHz */
803         .unk2                   = 3680,
804         RADIOREGS(0x71, 0x02, 0x28, 0x05, 0x40, 0x01, 0x04, 0x0A,
805                   0x00, 0x83, 0x00, 0x00, 0x33, 0x00, 0x02, 0x00,
806                   0x80, 0x33, 0x00, 0x02, 0x00, 0x80),
807         PHYREGS(0xA408, 0xA008, 0x9C08, 0xDA01, 0xDB01, 0xDC01),
808   },
809   {     .channel                = 106,
810         .freq                   = 5530, /* MHz */
811         .unk2                   = 3687,
812         RADIOREGS(0x71, 0x02, 0x29, 0x05, 0x40, 0x01, 0x04, 0x0A,
813                   0x00, 0x83, 0x00, 0x00, 0x33, 0x00, 0x02, 0x00,
814                   0x80, 0x33, 0x00, 0x02, 0x00, 0x80),
815         PHYREGS(0xA808, 0xA408, 0xA008, 0xD901, 0xDA01, 0xDB01),
816   },
817   {     .channel                = 108,
818         .freq                   = 5540, /* MHz */
819         .unk2                   = 3693,
820         RADIOREGS(0x71, 0x02, 0x2A, 0x05, 0x3A, 0x01, 0x04, 0x0A,
821                   0x00, 0x83, 0x00, 0x00, 0x33, 0x00, 0x02, 0x00,
822                   0x80, 0x33, 0x00, 0x02, 0x00, 0x80),
823         PHYREGS(0xAC08, 0xA808, 0xA408, 0xD801, 0xD901, 0xDA01),
824   },
825   {     .channel                = 110,
826         .freq                   = 5550, /* MHz */
827         .unk2                   = 3700,
828         RADIOREGS(0x71, 0x02, 0x2B, 0x05, 0x3A, 0x01, 0x04, 0x0A,
829                   0x00, 0x83, 0x00, 0x00, 0x33, 0x00, 0x02, 0x00,
830                   0x80, 0x33, 0x00, 0x02, 0x00, 0x80),
831         PHYREGS(0xB008, 0xAC08, 0xA808, 0xD701, 0xD801, 0xD901),
832   },
833   {     .channel                = 112,
834         .freq                   = 5560, /* MHz */
835         .unk2                   = 3707,
836         RADIOREGS(0x71, 0x02, 0x2C, 0x05, 0x34, 0x01, 0x04, 0x0A,
837                   0x00, 0x82, 0x00, 0x00, 0x22, 0x00, 0x01, 0x00,
838                   0x80, 0x22, 0x00, 0x01, 0x00, 0x80),
839         PHYREGS(0xB408, 0xB008, 0xAC08, 0xD701, 0xD701, 0xD801),
840   },
841   {     .channel                = 114,
842         .freq                   = 5570, /* MHz */
843         .unk2                   = 3713,
844         RADIOREGS(0x71, 0x02, 0x2D, 0x05, 0x34, 0x01, 0x04, 0x0A,
845                   0x00, 0x82, 0x00, 0x00, 0x22, 0x00, 0x01, 0x00,
846                   0x80, 0x22, 0x00, 0x01, 0x00, 0x80),
847         PHYREGS(0xB808, 0xB408, 0xB008, 0xD601, 0xD701, 0xD701),
848   },
849   {     .channel                = 116,
850         .freq                   = 5580, /* MHz */
851         .unk2                   = 3720,
852         RADIOREGS(0x71, 0x02, 0x2E, 0x04, 0x2E, 0x01, 0x04, 0x0A,
853                   0x00, 0x82, 0x00, 0x00, 0x22, 0x00, 0x01, 0x00,
854                   0x80, 0x22, 0x00, 0x01, 0x00, 0x80),
855         PHYREGS(0xBC08, 0xB808, 0xB408, 0xD501, 0xD601, 0xD701),
856   },
857   {     .channel                = 118,
858         .freq                   = 5590, /* MHz */
859         .unk2                   = 3727,
860         RADIOREGS(0x71, 0x02, 0x2F, 0x04, 0x2E, 0x01, 0x04, 0x0A,
861                   0x00, 0x82, 0x00, 0x00, 0x22, 0x00, 0x01, 0x00,
862                   0x80, 0x22, 0x00, 0x01, 0x00, 0x80),
863         PHYREGS(0xC008, 0xBC08, 0xB808, 0xD401, 0xD501, 0xD601),
864   },
865   {     .channel                = 120,
866         .freq                   = 5600, /* MHz */
867         .unk2                   = 3733,
868         RADIOREGS(0x71, 0x02, 0x30, 0x04, 0x28, 0x01, 0x04, 0x0A,
869                   0x00, 0x81, 0x00, 0x00, 0x11, 0x00, 0x01, 0x00,
870                   0x80, 0x11, 0x00, 0x01, 0x00, 0x80),
871         PHYREGS(0xC408, 0xC008, 0xBC08, 0xD301, 0xD401, 0xD501),
872   },
873   {     .channel                = 122,
874         .freq                   = 5610, /* MHz */
875         .unk2                   = 3740,
876         RADIOREGS(0x71, 0x02, 0x31, 0x04, 0x28, 0x01, 0x04, 0x0A,
877                   0x00, 0x81, 0x00, 0x00, 0x11, 0x00, 0x01, 0x00,
878                   0x80, 0x11, 0x00, 0x01, 0x00, 0x80),
879         PHYREGS(0xC808, 0xC408, 0xC008, 0xD201, 0xD301, 0xD401),
880   },
881   {     .channel                = 124,
882         .freq                   = 5620, /* MHz */
883         .unk2                   = 3747,
884         RADIOREGS(0x71, 0x02, 0x32, 0x04, 0x21, 0x01, 0x04, 0x0A,
885                   0x00, 0x81, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00,
886                   0x80, 0x11, 0x00, 0x00, 0x00, 0x80),
887         PHYREGS(0xCC08, 0xC808, 0xC408, 0xD201, 0xD201, 0xD301),
888   },
889   {     .channel                = 126,
890         .freq                   = 5630, /* MHz */
891         .unk2                   = 3753,
892         RADIOREGS(0x71, 0x02, 0x33, 0x04, 0x21, 0x01, 0x04, 0x0A,
893                   0x00, 0x81, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00,
894                   0x80, 0x11, 0x00, 0x00, 0x00, 0x80),
895         PHYREGS(0xD008, 0xCC08, 0xC808, 0xD101, 0xD201, 0xD201),
896   },
897   {     .channel                = 128,
898         .freq                   = 5640, /* MHz */
899         .unk2                   = 3760,
900         RADIOREGS(0x71, 0x02, 0x34, 0x03, 0x1C, 0x01, 0x04, 0x0A,
901                   0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
902                   0x80, 0x00, 0x00, 0x00, 0x00, 0x80),
903         PHYREGS(0xD408, 0xD008, 0xCC08, 0xD001, 0xD101, 0xD201),
904   },
905   {     .channel                = 130,
906         .freq                   = 5650, /* MHz */
907         .unk2                   = 3767,
908         RADIOREGS(0x71, 0x02, 0x35, 0x03, 0x1C, 0x01, 0x04, 0x0A,
909                   0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
910                   0x80, 0x00, 0x00, 0x00, 0x00, 0x80),
911         PHYREGS(0xD808, 0xD408, 0xD008, 0xCF01, 0xD001, 0xD101),
912   },
913   {     .channel                = 132,
914         .freq                   = 5660, /* MHz */
915         .unk2                   = 3773,
916         RADIOREGS(0x71, 0x02, 0x36, 0x03, 0x16, 0x01, 0x04, 0x0A,
917                   0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
918                   0x80, 0x00, 0x00, 0x00, 0x00, 0x80),
919         PHYREGS(0xDC08, 0xD808, 0xD408, 0xCE01, 0xCF01, 0xD001),
920   },
921   {     .channel                = 134,
922         .freq                   = 5670, /* MHz */
923         .unk2                   = 3780,
924         RADIOREGS(0x71, 0x02, 0x37, 0x03, 0x16, 0x01, 0x04, 0x0A,
925                   0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
926                   0x80, 0x00, 0x00, 0x00, 0x00, 0x80),
927         PHYREGS(0xE008, 0xDC08, 0xD808, 0xCE01, 0xCE01, 0xCF01),
928   },
929   {     .channel                = 136,
930         .freq                   = 5680, /* MHz */
931         .unk2                   = 3787,
932         RADIOREGS(0x71, 0x02, 0x38, 0x03, 0x10, 0x01, 0x04, 0x0A,
933                   0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
934                   0x80, 0x00, 0x00, 0x00, 0x00, 0x80),
935         PHYREGS(0xE408, 0xE008, 0xDC08, 0xCD01, 0xCE01, 0xCE01),
936   },
937   {     .channel                = 138,
938         .freq                   = 5690, /* MHz */
939         .unk2                   = 3793,
940         RADIOREGS(0x71, 0x02, 0x39, 0x03, 0x10, 0x01, 0x04, 0x0A,
941                   0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
942                   0x80, 0x00, 0x00, 0x00, 0x00, 0x80),
943         PHYREGS(0xE808, 0xE408, 0xE008, 0xCC01, 0xCD01, 0xCE01),
944   },
945   {     .channel                = 140,
946         .freq                   = 5700, /* MHz */
947         .unk2                   = 3800,
948         RADIOREGS(0x71, 0x02, 0x3A, 0x02, 0x0A, 0x01, 0x04, 0x0A,
949                   0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
950                   0x80, 0x00, 0x00, 0x00, 0x00, 0x80),
951         PHYREGS(0xEC08, 0xE808, 0xE408, 0xCB01, 0xCC01, 0xCD01),
952   },
953   {     .channel                = 142,
954         .freq                   = 5710, /* MHz */
955         .unk2                   = 3807,
956         RADIOREGS(0x71, 0x02, 0x3B, 0x02, 0x0A, 0x01, 0x04, 0x0A,
957                   0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
958                   0x80, 0x00, 0x00, 0x00, 0x00, 0x80),
959         PHYREGS(0xF008, 0xEC08, 0xE808, 0xCA01, 0xCB01, 0xCC01),
960   },
961   {     .channel                = 144,
962         .freq                   = 5720, /* MHz */
963         .unk2                   = 3813,
964         RADIOREGS(0x71, 0x02, 0x3C, 0x02, 0x0A, 0x01, 0x04, 0x0A,
965                   0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
966                   0x80, 0x00, 0x00, 0x00, 0x00, 0x80),
967         PHYREGS(0xF408, 0xF008, 0xEC08, 0xC901, 0xCA01, 0xCB01),
968   },
969   {     .channel                = 145,
970         .freq                   = 5725, /* MHz */
971         .unk2                   = 3817,
972         RADIOREGS(0x72, 0x04, 0x79, 0x02, 0x03, 0x01, 0x03, 0x14,
973                   0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
974                   0x80, 0x00, 0x00, 0x00, 0x00, 0x80),
975         PHYREGS(0xF608, 0xF208, 0xEE08, 0xC901, 0xCA01, 0xCB01),
976   },
977   {     .channel                = 146,
978         .freq                   = 5730, /* MHz */
979         .unk2                   = 3820,
980         RADIOREGS(0x71, 0x02, 0x3D, 0x02, 0x0A, 0x01, 0x04, 0x0A,
981                   0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
982                   0x80, 0x00, 0x00, 0x00, 0x00, 0x80),
983         PHYREGS(0xF808, 0xF408, 0xF008, 0xC901, 0xC901, 0xCA01),
984   },
985   {     .channel                = 147,
986         .freq                   = 5735, /* MHz */
987         .unk2                   = 3823,
988         RADIOREGS(0x72, 0x04, 0x7B, 0x02, 0x03, 0x01, 0x03, 0x14,
989                   0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
990                   0x80, 0x00, 0x00, 0x00, 0x00, 0x80),
991         PHYREGS(0xFA08, 0xF608, 0xF208, 0xC801, 0xC901, 0xCA01),
992   },
993   {     .channel                = 148,
994         .freq                   = 5740, /* MHz */
995         .unk2                   = 3827,
996         RADIOREGS(0x71, 0x02, 0x3E, 0x02, 0x0A, 0x01, 0x04, 0x0A,
997                   0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
998                   0x80, 0x00, 0x00, 0x00, 0x00, 0x80),
999         PHYREGS(0xFC08, 0xF808, 0xF408, 0xC801, 0xC901, 0xC901),
1000   },
1001   {     .channel                = 149,
1002         .freq                   = 5745, /* MHz */
1003         .unk2                   = 3830,
1004         RADIOREGS(0x72, 0x04, 0x7D, 0x02, 0xFE, 0x00, 0x03, 0x14,
1005                   0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1006                   0x80, 0x00, 0x00, 0x00, 0x00, 0x80),
1007         PHYREGS(0xFE08, 0xFA08, 0xF608, 0xC801, 0xC801, 0xC901),
1008   },
1009   {     .channel                = 150,
1010         .freq                   = 5750, /* MHz */
1011         .unk2                   = 3833,
1012         RADIOREGS(0x71, 0x02, 0x3F, 0x02, 0x0A, 0x01, 0x04, 0x0A,
1013                   0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1014                   0x80, 0x00, 0x00, 0x00, 0x00, 0x80),
1015         PHYREGS(0x0009, 0xFC08, 0xF808, 0xC701, 0xC801, 0xC901),
1016   },
1017   {     .channel                = 151,
1018         .freq                   = 5755, /* MHz */
1019         .unk2                   = 3837,
1020         RADIOREGS(0x72, 0x04, 0x7F, 0x02, 0xFE, 0x00, 0x03, 0x14,
1021                   0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1022                   0x80, 0x00, 0x00, 0x00, 0x00, 0x80),
1023         PHYREGS(0x0209, 0xFE08, 0xFA08, 0xC701, 0xC801, 0xC801),
1024   },
1025   {     .channel                = 152,
1026         .freq                   = 5760, /* MHz */
1027         .unk2                   = 3840,
1028         RADIOREGS(0x71, 0x02, 0x40, 0x02, 0x0A, 0x01, 0x04, 0x0A,
1029                   0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1030                   0x80, 0x00, 0x00, 0x00, 0x00, 0x80),
1031         PHYREGS(0x0409, 0x0009, 0xFC08, 0xC601, 0xC701, 0xC801),
1032   },
1033   {     .channel                = 153,
1034         .freq                   = 5765, /* MHz */
1035         .unk2                   = 3843,
1036         RADIOREGS(0x72, 0x04, 0x81, 0x02, 0xF8, 0x00, 0x03, 0x14,
1037                   0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1038                   0x80, 0x00, 0x00, 0x00, 0x00, 0x80),
1039         PHYREGS(0x0609, 0x0209, 0xFE08, 0xC601, 0xC701, 0xC801),
1040   },
1041   {     .channel                = 154,
1042         .freq                   = 5770, /* MHz */
1043         .unk2                   = 3847,
1044         RADIOREGS(0x71, 0x02, 0x41, 0x02, 0x0A, 0x01, 0x04, 0x0A,
1045                   0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1046                   0x80, 0x00, 0x00, 0x00, 0x00, 0x80),
1047         PHYREGS(0x0809, 0x0409, 0x0009, 0xC601, 0xC601, 0xC701),
1048   },
1049   {     .channel                = 155,
1050         .freq                   = 5775, /* MHz */
1051         .unk2                   = 3850,
1052         RADIOREGS(0x72, 0x04, 0x83, 0x02, 0xF8, 0x00, 0x03, 0x14,
1053                   0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1054                   0x80, 0x00, 0x00, 0x00, 0x00, 0x80),
1055         PHYREGS(0x0A09, 0x0609, 0x0209, 0xC501, 0xC601, 0xC701),
1056   },
1057   {     .channel                = 156,
1058         .freq                   = 5780, /* MHz */
1059         .unk2                   = 3853,
1060         RADIOREGS(0x71, 0x02, 0x42, 0x02, 0x0A, 0x01, 0x04, 0x0A,
1061                   0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1062                   0x80, 0x00, 0x00, 0x00, 0x00, 0x80),
1063         PHYREGS(0x0C09, 0x0809, 0x0409, 0xC501, 0xC601, 0xC601),
1064   },
1065   {     .channel                = 157,
1066         .freq                   = 5785, /* MHz */
1067         .unk2                   = 3857,
1068         RADIOREGS(0x72, 0x04, 0x85, 0x02, 0xF2, 0x00, 0x03, 0x14,
1069                   0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1070                   0x80, 0x00, 0x00, 0x00, 0x00, 0x80),
1071         PHYREGS(0x0E09, 0x0A09, 0x0609, 0xC401, 0xC501, 0xC601),
1072   },
1073   {     .channel                = 158,
1074         .freq                   = 5790, /* MHz */
1075         .unk2                   = 3860,
1076         RADIOREGS(0x71, 0x02, 0x43, 0x02, 0x0A, 0x01, 0x04, 0x0A,
1077                   0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1078                   0x80, 0x00, 0x00, 0x00, 0x00, 0x80),
1079         PHYREGS(0x1009, 0x0C09, 0x0809, 0xC401, 0xC501, 0xC601),
1080   },
1081   {     .channel                = 159,
1082         .freq                   = 5795, /* MHz */
1083         .unk2                   = 3863,
1084         RADIOREGS(0x72, 0x04, 0x87, 0x02, 0xF2, 0x00, 0x03, 0x14,
1085                   0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1086                   0x80, 0x00, 0x00, 0x00, 0x00, 0x80),
1087         PHYREGS(0x1209, 0x0E09, 0x0A09, 0xC401, 0xC401, 0xC501),
1088   },
1089   {     .channel                = 160,
1090         .freq                   = 5800, /* MHz */
1091         .unk2                   = 3867,
1092         RADIOREGS(0x71, 0x02, 0x44, 0x01, 0x0A, 0x01, 0x04, 0x0A,
1093                   0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1094                   0x80, 0x00, 0x00, 0x00, 0x00, 0x80),
1095         PHYREGS(0x1409, 0x1009, 0x0C09, 0xC301, 0xC401, 0xC501),
1096   },
1097   {     .channel                = 161,
1098         .freq                   = 5805, /* MHz */
1099         .unk2                   = 3870,
1100         RADIOREGS(0x72, 0x04, 0x89, 0x01, 0xED, 0x00, 0x03, 0x14,
1101                   0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1102                   0x80, 0x00, 0x00, 0x00, 0x00, 0x80),
1103         PHYREGS(0x1609, 0x1209, 0x0E09, 0xC301, 0xC401, 0xC401),
1104   },
1105   {     .channel                = 162,
1106         .freq                   = 5810, /* MHz */
1107         .unk2                   = 3873,
1108         RADIOREGS(0x71, 0x02, 0x45, 0x01, 0x0A, 0x01, 0x04, 0x0A,
1109                   0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1110                   0x80, 0x00, 0x00, 0x00, 0x00, 0x80),
1111         PHYREGS(0x1809, 0x1409, 0x1009, 0xC201, 0xC301, 0xC401),
1112   },
1113   {     .channel                = 163,
1114         .freq                   = 5815, /* MHz */
1115         .unk2                   = 3877,
1116         RADIOREGS(0x72, 0x04, 0x8B, 0x01, 0xED, 0x00, 0x03, 0x14,
1117                   0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1118                   0x80, 0x00, 0x00, 0x00, 0x00, 0x80),
1119         PHYREGS(0x1A09, 0x1609, 0x1209, 0xC201, 0xC301, 0xC401),
1120   },
1121   {     .channel                = 164,
1122         .freq                   = 5820, /* MHz */
1123         .unk2                   = 3880,
1124         RADIOREGS(0x71, 0x02, 0x46, 0x01, 0x0A, 0x01, 0x04, 0x0A,
1125                   0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1126                   0x80, 0x00, 0x00, 0x00, 0x00, 0x80),
1127         PHYREGS(0x1C09, 0x1809, 0x1409, 0xC201, 0xC201, 0xC301),
1128   },
1129   {     .channel                = 165,
1130         .freq                   = 5825, /* MHz */
1131         .unk2                   = 3883,
1132         RADIOREGS(0x72, 0x04, 0x8D, 0x01, 0xED, 0x00, 0x03, 0x14,
1133                   0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1134                   0x80, 0x00, 0x00, 0x00, 0x00, 0x80),
1135         PHYREGS(0x1E09, 0x1A09, 0x1609, 0xC101, 0xC201, 0xC301),
1136   },
1137   {     .channel                = 166,
1138         .freq                   = 5830, /* MHz */
1139         .unk2                   = 3887,
1140         RADIOREGS(0x71, 0x02, 0x47, 0x01, 0x0A, 0x01, 0x04, 0x0A,
1141                   0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1142                   0x80, 0x00, 0x00, 0x00, 0x00, 0x80),
1143         PHYREGS(0x2009, 0x1C09, 0x1809, 0xC101, 0xC201, 0xC201),
1144   },
1145   {     .channel                = 168,
1146         .freq                   = 5840, /* MHz */
1147         .unk2                   = 3893,
1148         RADIOREGS(0x71, 0x02, 0x48, 0x01, 0x0A, 0x01, 0x04, 0x0A,
1149                   0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1150                   0x80, 0x00, 0x00, 0x00, 0x00, 0x80),
1151         PHYREGS(0x2409, 0x2009, 0x1C09, 0xC001, 0xC101, 0xC201),
1152   },
1153   {     .channel                = 170,
1154         .freq                   = 5850, /* MHz */
1155         .unk2                   = 3900,
1156         RADIOREGS(0x71, 0x02, 0x49, 0x01, 0xE0, 0x00, 0x04, 0x0A,
1157                   0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1158                   0x80, 0x00, 0x00, 0x00, 0x00, 0x80),
1159         PHYREGS(0x2809, 0x2409, 0x2009, 0xBF01, 0xC001, 0xC101),
1160   },
1161   {     .channel                = 172,
1162         .freq                   = 5860, /* MHz */
1163         .unk2                   = 3907,
1164         RADIOREGS(0x71, 0x02, 0x4A, 0x01, 0xDE, 0x00, 0x04, 0x0A,
1165                   0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1166                   0x80, 0x00, 0x00, 0x00, 0x00, 0x80),
1167         PHYREGS(0x2C09, 0x2809, 0x2409, 0xBF01, 0xBF01, 0xC001),
1168   },
1169   {     .channel                = 174,
1170         .freq                   = 5870, /* MHz */
1171         .unk2                   = 3913,
1172         RADIOREGS(0x71, 0x02, 0x4B, 0x00, 0xDB, 0x00, 0x04, 0x0A,
1173                   0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1174                   0x80, 0x00, 0x00, 0x00, 0x00, 0x80),
1175         PHYREGS(0x3009, 0x2C09, 0x2809, 0xBE01, 0xBF01, 0xBF01),
1176   },
1177   {     .channel                = 176,
1178         .freq                   = 5880, /* MHz */
1179         .unk2                   = 3920,
1180         RADIOREGS(0x71, 0x02, 0x4C, 0x00, 0xD8, 0x00, 0x04, 0x0A,
1181                   0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1182                   0x80, 0x00, 0x00, 0x00, 0x00, 0x80),
1183         PHYREGS(0x3409, 0x3009, 0x2C09, 0xBD01, 0xBE01, 0xBF01),
1184   },
1185   {     .channel                = 178,
1186         .freq                   = 5890, /* MHz */
1187         .unk2                   = 3927,
1188         RADIOREGS(0x71, 0x02, 0x4D, 0x00, 0xD6, 0x00, 0x04, 0x0A,
1189                   0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1190                   0x80, 0x00, 0x00, 0x00, 0x00, 0x80),
1191         PHYREGS(0x3809, 0x3409, 0x3009, 0xBC01, 0xBD01, 0xBE01),
1192   },
1193   {     .channel                = 180,
1194         .freq                   = 5900, /* MHz */
1195         .unk2                   = 3933,
1196         RADIOREGS(0x71, 0x02, 0x4E, 0x00, 0xD3, 0x00, 0x04, 0x0A,
1197                   0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1198                   0x80, 0x00, 0x00, 0x00, 0x00, 0x80),
1199         PHYREGS(0x3C09, 0x3809, 0x3409, 0xBC01, 0xBC01, 0xBD01),
1200   },
1201   {     .channel                = 182,
1202         .freq                   = 5910, /* MHz */
1203         .unk2                   = 3940,
1204         RADIOREGS(0x71, 0x02, 0x4F, 0x00, 0xD6, 0x00, 0x04, 0x0A,
1205                   0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1206                   0x80, 0x00, 0x00, 0x00, 0x00, 0x80),
1207         PHYREGS(0x4009, 0x3C09, 0x3809, 0xBB01, 0xBC01, 0xBC01),
1208   },
1209   {     .channel                = 1,
1210         .freq                   = 2412, /* MHz */
1211         .unk2                   = 3216,
1212         RADIOREGS(0x73, 0x09, 0x6C, 0x0F, 0x00, 0x01, 0x07, 0x15,
1213                   0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0D, 0x0C,
1214                   0x80, 0xFF, 0x88, 0x0D, 0x0C, 0x80),
1215         PHYREGS(0xC903, 0xC503, 0xC103, 0x3A04, 0x3F04, 0x4304),
1216   },
1217   {     .channel                = 2,
1218         .freq                   = 2417, /* MHz */
1219         .unk2                   = 3223,
1220         RADIOREGS(0x73, 0x09, 0x71, 0x0F, 0x00, 0x01, 0x07, 0x15,
1221                   0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0C, 0x0B,
1222                   0x80, 0xFF, 0x88, 0x0C, 0x0B, 0x80),
1223         PHYREGS(0xCB03, 0xC703, 0xC303, 0x3804, 0x3D04, 0x4104),
1224   },
1225   {     .channel                = 3,
1226         .freq                   = 2422, /* MHz */
1227         .unk2                   = 3229,
1228         RADIOREGS(0x73, 0x09, 0x76, 0x0F, 0x00, 0x01, 0x07, 0x15,
1229                   0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0C, 0x0A,
1230                   0x80, 0xFF, 0x88, 0x0C, 0x0A, 0x80),
1231         PHYREGS(0xCD03, 0xC903, 0xC503, 0x3604, 0x3A04, 0x3F04),
1232   },
1233   {     .channel                = 4,
1234         .freq                   = 2427, /* MHz */
1235         .unk2                   = 3236,
1236         RADIOREGS(0x73, 0x09, 0x7B, 0x0F, 0x00, 0x01, 0x07, 0x15,
1237                   0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0C, 0x0A,
1238                   0x80, 0xFF, 0x88, 0x0C, 0x0A, 0x80),
1239         PHYREGS(0xCF03, 0xCB03, 0xC703, 0x3404, 0x3804, 0x3D04),
1240   },
1241   {     .channel                = 5,
1242         .freq                   = 2432, /* MHz */
1243         .unk2                   = 3243,
1244         RADIOREGS(0x73, 0x09, 0x80, 0x0F, 0x00, 0x01, 0x07, 0x15,
1245                   0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0C, 0x09,
1246                   0x80, 0xFF, 0x88, 0x0C, 0x09, 0x80),
1247         PHYREGS(0xD103, 0xCD03, 0xC903, 0x3104, 0x3604, 0x3A04),
1248   },
1249   {     .channel                = 6,
1250         .freq                   = 2437, /* MHz */
1251         .unk2                   = 3249,
1252         RADIOREGS(0x73, 0x09, 0x85, 0x0F, 0x00, 0x01, 0x07, 0x15,
1253                   0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0B, 0x08,
1254                   0x80, 0xFF, 0x88, 0x0B, 0x08, 0x80),
1255         PHYREGS(0xD303, 0xCF03, 0xCB03, 0x2F04, 0x3404, 0x3804),
1256   },
1257   {     .channel                = 7,
1258         .freq                   = 2442, /* MHz */
1259         .unk2                   = 3256,
1260         RADIOREGS(0x73, 0x09, 0x8A, 0x0F, 0x00, 0x01, 0x07, 0x15,
1261                   0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0A, 0x07,
1262                   0x80, 0xFF, 0x88, 0x0A, 0x07, 0x80),
1263         PHYREGS(0xD503, 0xD103, 0xCD03, 0x2D04, 0x3104, 0x3604),
1264   },
1265   {     .channel                = 8,
1266         .freq                   = 2447, /* MHz */
1267         .unk2                   = 3263,
1268         RADIOREGS(0x73, 0x09, 0x8F, 0x0F, 0x00, 0x01, 0x07, 0x15,
1269                   0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0A, 0x06,
1270                   0x80, 0xFF, 0x88, 0x0A, 0x06, 0x80),
1271         PHYREGS(0xD703, 0xD303, 0xCF03, 0x2B04, 0x2F04, 0x3404),
1272   },
1273   {     .channel                = 9,
1274         .freq                   = 2452, /* MHz */
1275         .unk2                   = 3269,
1276         RADIOREGS(0x73, 0x09, 0x94, 0x0F, 0x00, 0x01, 0x07, 0x15,
1277                   0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x09, 0x06,
1278                   0x80, 0xFF, 0x88, 0x09, 0x06, 0x80),
1279         PHYREGS(0xD903, 0xD503, 0xD103, 0x2904, 0x2D04, 0x3104),
1280   },
1281   {     .channel                = 10,
1282         .freq                   = 2457, /* MHz */
1283         .unk2                   = 3276,
1284         RADIOREGS(0x73, 0x09, 0x99, 0x0F, 0x00, 0x01, 0x07, 0x15,
1285                   0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x08, 0x05,
1286                   0x80, 0xFF, 0x88, 0x08, 0x05, 0x80),
1287         PHYREGS(0xDB03, 0xD703, 0xD303, 0x2704, 0x2B04, 0x2F04),
1288   },
1289   {     .channel                = 11,
1290         .freq                   = 2462, /* MHz */
1291         .unk2                   = 3283,
1292         RADIOREGS(0x73, 0x09, 0x9E, 0x0F, 0x00, 0x01, 0x07, 0x15,
1293                   0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x08, 0x04,
1294                   0x80, 0xFF, 0x88, 0x08, 0x04, 0x80),
1295         PHYREGS(0xDD03, 0xD903, 0xD503, 0x2404, 0x2904, 0x2D04),
1296   },
1297   {     .channel                = 12,
1298         .freq                   = 2467, /* MHz */
1299         .unk2                   = 3289,
1300         RADIOREGS(0x73, 0x09, 0xA3, 0x0F, 0x00, 0x01, 0x07, 0x15,
1301                   0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x08, 0x03,
1302                   0x80, 0xFF, 0x88, 0x08, 0x03, 0x80),
1303         PHYREGS(0xDF03, 0xDB03, 0xD703, 0x2204, 0x2704, 0x2B04),
1304   },
1305   {     .channel                = 13,
1306         .freq                   = 2472, /* MHz */
1307         .unk2                   = 3296,
1308         RADIOREGS(0x73, 0x09, 0xA8, 0x0F, 0x00, 0x01, 0x07, 0x15,
1309                   0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x07, 0x03,
1310                   0x80, 0xFF, 0x88, 0x07, 0x03, 0x80),
1311         PHYREGS(0xE103, 0xDD03, 0xD903, 0x2004, 0x2404, 0x2904),
1312   },
1313   {     .channel                = 14,
1314         .freq                   = 2484, /* MHz */
1315         .unk2                   = 3312,
1316         RADIOREGS(0x73, 0x09, 0xB4, 0x0F, 0xFF, 0x01, 0x07, 0x15,
1317                   0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x07, 0x01,
1318                   0x80, 0xFF, 0x88, 0x07, 0x01, 0x80),
1319         PHYREGS(0xE603, 0xE203, 0xDE03, 0x1B04, 0x1F04, 0x2404),
1320   },
1321 };
1322
1323 const struct b43_nphy_channeltab_entry *
1324 b43_nphy_get_chantabent(struct b43_wldev *dev, u8 channel)
1325 {
1326         const struct b43_nphy_channeltab_entry *e;
1327         unsigned int i;
1328
1329         for (i = 0; i < ARRAY_SIZE(b43_nphy_channeltab); i++) {
1330                 e = &(b43_nphy_channeltab[i]);
1331                 if (e->channel == channel)
1332                         return e;
1333         }
1334
1335         return NULL;
1336 }
1337
1338
1339 static const u8 b43_ntab_adjustpower0[] = {
1340         0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01,
1341         0x02, 0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x03,
1342         0x04, 0x04, 0x04, 0x04, 0x05, 0x05, 0x05, 0x05,
1343         0x06, 0x06, 0x06, 0x06, 0x07, 0x07, 0x07, 0x07,
1344         0x08, 0x08, 0x08, 0x08, 0x09, 0x09, 0x09, 0x09,
1345         0x0A, 0x0A, 0x0A, 0x0A, 0x0B, 0x0B, 0x0B, 0x0B,
1346         0x0C, 0x0C, 0x0C, 0x0C, 0x0D, 0x0D, 0x0D, 0x0D,
1347         0x0E, 0x0E, 0x0E, 0x0E, 0x0F, 0x0F, 0x0F, 0x0F,
1348         0x10, 0x10, 0x10, 0x10, 0x11, 0x11, 0x11, 0x11,
1349         0x12, 0x12, 0x12, 0x12, 0x13, 0x13, 0x13, 0x13,
1350         0x14, 0x14, 0x14, 0x14, 0x15, 0x15, 0x15, 0x15,
1351         0x16, 0x16, 0x16, 0x16, 0x17, 0x17, 0x17, 0x17,
1352         0x18, 0x18, 0x18, 0x18, 0x19, 0x19, 0x19, 0x19,
1353         0x1A, 0x1A, 0x1A, 0x1A, 0x1B, 0x1B, 0x1B, 0x1B,
1354         0x1C, 0x1C, 0x1C, 0x1C, 0x1D, 0x1D, 0x1D, 0x1D,
1355         0x1E, 0x1E, 0x1E, 0x1E, 0x1F, 0x1F, 0x1F, 0x1F,
1356 };
1357
1358 static const u8 b43_ntab_adjustpower1[] = {
1359         0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01,
1360         0x02, 0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x03,
1361         0x04, 0x04, 0x04, 0x04, 0x05, 0x05, 0x05, 0x05,
1362         0x06, 0x06, 0x06, 0x06, 0x07, 0x07, 0x07, 0x07,
1363         0x08, 0x08, 0x08, 0x08, 0x09, 0x09, 0x09, 0x09,
1364         0x0A, 0x0A, 0x0A, 0x0A, 0x0B, 0x0B, 0x0B, 0x0B,
1365         0x0C, 0x0C, 0x0C, 0x0C, 0x0D, 0x0D, 0x0D, 0x0D,
1366         0x0E, 0x0E, 0x0E, 0x0E, 0x0F, 0x0F, 0x0F, 0x0F,
1367         0x10, 0x10, 0x10, 0x10, 0x11, 0x11, 0x11, 0x11,
1368         0x12, 0x12, 0x12, 0x12, 0x13, 0x13, 0x13, 0x13,
1369         0x14, 0x14, 0x14, 0x14, 0x15, 0x15, 0x15, 0x15,
1370         0x16, 0x16, 0x16, 0x16, 0x17, 0x17, 0x17, 0x17,
1371         0x18, 0x18, 0x18, 0x18, 0x19, 0x19, 0x19, 0x19,
1372         0x1A, 0x1A, 0x1A, 0x1A, 0x1B, 0x1B, 0x1B, 0x1B,
1373         0x1C, 0x1C, 0x1C, 0x1C, 0x1D, 0x1D, 0x1D, 0x1D,
1374         0x1E, 0x1E, 0x1E, 0x1E, 0x1F, 0x1F, 0x1F, 0x1F,
1375 };
1376
1377 static const u16 b43_ntab_bdi[] = {
1378         0x0070, 0x0126, 0x012C, 0x0246, 0x048D, 0x04D2,
1379 };
1380
1381 static const u32 b43_ntab_channelest[] = {
1382         0x44444444, 0x44444444, 0x44444444, 0x44444444,
1383         0x44444444, 0x44444444, 0x44444444, 0x44444444,
1384         0x10101010, 0x10101010, 0x10101010, 0x10101010,
1385         0x10101010, 0x10101010, 0x10101010, 0x10101010,
1386         0x44444444, 0x44444444, 0x44444444, 0x44444444,
1387         0x44444444, 0x44444444, 0x44444444, 0x44444444,
1388         0x10101010, 0x10101010, 0x10101010, 0x10101010,
1389         0x10101010, 0x10101010, 0x10101010, 0x10101010,
1390         0x44444444, 0x44444444, 0x44444444, 0x44444444,
1391         0x44444444, 0x44444444, 0x44444444, 0x44444444,
1392         0x44444444, 0x44444444, 0x44444444, 0x44444444,
1393         0x44444444, 0x44444444, 0x44444444, 0x44444444,
1394         0x10101010, 0x10101010, 0x10101010, 0x10101010,
1395         0x10101010, 0x10101010, 0x10101010, 0x10101010,
1396         0x10101010, 0x10101010, 0x10101010, 0x10101010,
1397         0x10101010, 0x10101010, 0x10101010, 0x10101010,
1398         0x44444444, 0x44444444, 0x44444444, 0x44444444,
1399         0x44444444, 0x44444444, 0x44444444, 0x44444444,
1400         0x44444444, 0x44444444, 0x44444444, 0x44444444,
1401         0x44444444, 0x44444444, 0x44444444, 0x44444444,
1402         0x10101010, 0x10101010, 0x10101010, 0x10101010,
1403         0x10101010, 0x10101010, 0x10101010, 0x10101010,
1404         0x10101010, 0x10101010, 0x10101010, 0x10101010,
1405         0x10101010, 0x10101010, 0x10101010, 0x10101010,
1406 };
1407
1408 static const u8 b43_ntab_estimatepowerlt0[] = {
1409         0x50, 0x4F, 0x4E, 0x4D, 0x4C, 0x4B, 0x4A, 0x49,
1410         0x48, 0x47, 0x46, 0x45, 0x44, 0x43, 0x42, 0x41,
1411         0x40, 0x3F, 0x3E, 0x3D, 0x3C, 0x3B, 0x3A, 0x39,
1412         0x38, 0x37, 0x36, 0x35, 0x34, 0x33, 0x32, 0x31,
1413         0x30, 0x2F, 0x2E, 0x2D, 0x2C, 0x2B, 0x2A, 0x29,
1414         0x28, 0x27, 0x26, 0x25, 0x24, 0x23, 0x22, 0x21,
1415         0x20, 0x1F, 0x1E, 0x1D, 0x1C, 0x1B, 0x1A, 0x19,
1416         0x18, 0x17, 0x16, 0x15, 0x14, 0x13, 0x12, 0x11,
1417 };
1418
1419 static const u8 b43_ntab_estimatepowerlt1[] = {
1420         0x50, 0x4F, 0x4E, 0x4D, 0x4C, 0x4B, 0x4A, 0x49,
1421         0x48, 0x47, 0x46, 0x45, 0x44, 0x43, 0x42, 0x41,
1422         0x40, 0x3F, 0x3E, 0x3D, 0x3C, 0x3B, 0x3A, 0x39,
1423         0x38, 0x37, 0x36, 0x35, 0x34, 0x33, 0x32, 0x31,
1424         0x30, 0x2F, 0x2E, 0x2D, 0x2C, 0x2B, 0x2A, 0x29,
1425         0x28, 0x27, 0x26, 0x25, 0x24, 0x23, 0x22, 0x21,
1426         0x20, 0x1F, 0x1E, 0x1D, 0x1C, 0x1B, 0x1A, 0x19,
1427         0x18, 0x17, 0x16, 0x15, 0x14, 0x13, 0x12, 0x11,
1428 };
1429
1430 static const u8 b43_ntab_framelookup[] = {
1431         0x02, 0x04, 0x14, 0x14, 0x03, 0x05, 0x16, 0x16,
1432         0x0A, 0x0C, 0x1C, 0x1C, 0x0B, 0x0D, 0x1E, 0x1E,
1433         0x06, 0x08, 0x18, 0x18, 0x07, 0x09, 0x1A, 0x1A,
1434         0x0E, 0x10, 0x20, 0x28, 0x0F, 0x11, 0x22, 0x2A,
1435 };
1436
1437 static const u32 b43_ntab_framestruct[] = {
1438         0x08004A04, 0x00100000, 0x01000A05, 0x00100020,
1439         0x09804506, 0x00100030, 0x09804507, 0x00100030,
1440         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1441         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1442         0x08004A0C, 0x00100008, 0x01000A0D, 0x00100028,
1443         0x0980450E, 0x00100038, 0x0980450F, 0x00100038,
1444         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1445         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1446         0x00000A04, 0x00100000, 0x11008A05, 0x00100020,
1447         0x1980C506, 0x00100030, 0x21810506, 0x00100030,
1448         0x21810506, 0x00100030, 0x01800504, 0x00100030,
1449         0x11808505, 0x00100030, 0x29814507, 0x01100030,
1450         0x00000A04, 0x00100000, 0x11008A05, 0x00100020,
1451         0x21810506, 0x00100030, 0x21810506, 0x00100030,
1452         0x29814507, 0x01100030, 0x00000000, 0x00000000,
1453         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1454         0x00000A0C, 0x00100008, 0x11008A0D, 0x00100028,
1455         0x1980C50E, 0x00100038, 0x2181050E, 0x00100038,
1456         0x2181050E, 0x00100038, 0x0180050C, 0x00100038,
1457         0x1180850D, 0x00100038, 0x2981450F, 0x01100038,
1458         0x00000A0C, 0x00100008, 0x11008A0D, 0x00100028,
1459         0x2181050E, 0x00100038, 0x2181050E, 0x00100038,
1460         0x2981450F, 0x01100038, 0x00000000, 0x00000000,
1461         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1462         0x08004A04, 0x00100000, 0x01000A05, 0x00100020,
1463         0x1980C506, 0x00100030, 0x1980C506, 0x00100030,
1464         0x11808504, 0x00100030, 0x3981CA05, 0x00100030,
1465         0x29814507, 0x01100030, 0x00000000, 0x00000000,
1466         0x10008A04, 0x00100000, 0x3981CA05, 0x00100030,
1467         0x1980C506, 0x00100030, 0x29814507, 0x01100030,
1468         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1469         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1470         0x08004A0C, 0x00100008, 0x01000A0D, 0x00100028,
1471         0x1980C50E, 0x00100038, 0x1980C50E, 0x00100038,
1472         0x1180850C, 0x00100038, 0x3981CA0D, 0x00100038,
1473         0x2981450F, 0x01100038, 0x00000000, 0x00000000,
1474         0x10008A0C, 0x00100008, 0x3981CA0D, 0x00100038,
1475         0x1980C50E, 0x00100038, 0x2981450F, 0x01100038,
1476         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1477         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1478         0x40021404, 0x00100000, 0x02001405, 0x00100040,
1479         0x0B004A06, 0x01900060, 0x13008A06, 0x01900060,
1480         0x13008A06, 0x01900060, 0x43020A04, 0x00100060,
1481         0x1B00CA05, 0x00100060, 0x23010A07, 0x01500060,
1482         0x40021404, 0x00100000, 0x1A00D405, 0x00100040,
1483         0x13008A06, 0x01900060, 0x13008A06, 0x01900060,
1484         0x23010A07, 0x01500060, 0x00000000, 0x00000000,
1485         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1486         0x4002140C, 0x00100010, 0x0200140D, 0x00100050,
1487         0x0B004A0E, 0x01900070, 0x13008A0E, 0x01900070,
1488         0x13008A0E, 0x01900070, 0x43020A0C, 0x00100070,
1489         0x1B00CA0D, 0x00100070, 0x23010A0F, 0x01500070,
1490         0x4002140C, 0x00100010, 0x1A00D40D, 0x00100050,
1491         0x13008A0E, 0x01900070, 0x13008A0E, 0x01900070,
1492         0x23010A0F, 0x01500070, 0x00000000, 0x00000000,
1493         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1494         0x50029404, 0x00100000, 0x32019405, 0x00100040,
1495         0x0B004A06, 0x01900060, 0x0B004A06, 0x01900060,
1496         0x5B02CA04, 0x00100060, 0x3B01D405, 0x00100060,
1497         0x23010A07, 0x01500060, 0x00000000, 0x00000000,
1498         0x5802D404, 0x00100000, 0x3B01D405, 0x00100060,
1499         0x0B004A06, 0x01900060, 0x23010A07, 0x01500060,
1500         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1501         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1502         0x5002940C, 0x00100010, 0x3201940D, 0x00100050,
1503         0x0B004A0E, 0x01900070, 0x0B004A0E, 0x01900070,
1504         0x5B02CA0C, 0x00100070, 0x3B01D40D, 0x00100070,
1505         0x23010A0F, 0x01500070, 0x00000000, 0x00000000,
1506         0x5802D40C, 0x00100010, 0x3B01D40D, 0x00100070,
1507         0x0B004A0E, 0x01900070, 0x23010A0F, 0x01500070,
1508         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1509         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1510         0x40021404, 0x000F4800, 0x62031405, 0x00100040,
1511         0x53028A06, 0x01900060, 0x53028A07, 0x01900060,
1512         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1513         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1514         0x4002140C, 0x000F4810, 0x6203140D, 0x00100050,
1515         0x53028A0E, 0x01900070, 0x53028A0F, 0x01900070,
1516         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1517         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1518         0x00000A0C, 0x00100008, 0x11008A0D, 0x00100028,
1519         0x1980C50E, 0x00100038, 0x2181050E, 0x00100038,
1520         0x2181050E, 0x00100038, 0x0180050C, 0x00100038,
1521         0x1180850D, 0x00100038, 0x1181850D, 0x00100038,
1522         0x2981450F, 0x01100038, 0x00000000, 0x00000000,
1523         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1524         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1525         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1526         0x00000A0C, 0x00100008, 0x11008A0D, 0x00100028,
1527         0x2181050E, 0x00100038, 0x2181050E, 0x00100038,
1528         0x1181850D, 0x00100038, 0x2981450F, 0x01100038,
1529         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1530         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1531         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1532         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1533         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1534         0x08004A04, 0x00100000, 0x01000A05, 0x00100020,
1535         0x0180C506, 0x00100030, 0x0180C506, 0x00100030,
1536         0x2180C50C, 0x00100030, 0x49820A0D, 0x0016A130,
1537         0x41824A0D, 0x0016A130, 0x2981450F, 0x01100030,
1538         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1539         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1540         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1541         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1542         0x2000CA0C, 0x00100000, 0x49820A0D, 0x0016A130,
1543         0x1980C50E, 0x00100030, 0x41824A0D, 0x0016A130,
1544         0x2981450F, 0x01100030, 0x00000000, 0x00000000,
1545         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1546         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1547         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1548         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1549         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1550         0x4002140C, 0x00100010, 0x0200140D, 0x00100050,
1551         0x0B004A0E, 0x01900070, 0x13008A0E, 0x01900070,
1552         0x13008A0E, 0x01900070, 0x43020A0C, 0x00100070,
1553         0x1B00CA0D, 0x00100070, 0x1B014A0D, 0x00100070,
1554         0x23010A0F, 0x01500070, 0x00000000, 0x00000000,
1555         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1556         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1557         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1558         0x4002140C, 0x00100010, 0x1A00D40D, 0x00100050,
1559         0x13008A0E, 0x01900070, 0x13008A0E, 0x01900070,
1560         0x1B014A0D, 0x00100070, 0x23010A0F, 0x01500070,
1561         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1562         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1563         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1564         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1565         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1566         0x50029404, 0x00100000, 0x32019405, 0x00100040,
1567         0x03004A06, 0x01900060, 0x03004A06, 0x01900060,
1568         0x6B030A0C, 0x00100060, 0x4B02140D, 0x0016A160,
1569         0x4302540D, 0x0016A160, 0x23010A0F, 0x01500060,
1570         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1571         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1572         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1573         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1574         0x6B03140C, 0x00100060, 0x4B02140D, 0x0016A160,
1575         0x0B004A0E, 0x01900060, 0x4302540D, 0x0016A160,
1576         0x23010A0F, 0x01500060, 0x00000000, 0x00000000,
1577         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1578         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1579         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1580         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1581         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1582         0x40021404, 0x00100000, 0x1A00D405, 0x00100040,
1583         0x53028A06, 0x01900060, 0x5B02CA06, 0x01900060,
1584         0x5B02CA06, 0x01900060, 0x43020A04, 0x00100060,
1585         0x1B00CA05, 0x00100060, 0x53028A07, 0x0190C060,
1586         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1587         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1588         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1589         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1590         0x4002140C, 0x00100010, 0x1A00D40D, 0x00100050,
1591         0x53028A0E, 0x01900070, 0x5B02CA0E, 0x01900070,
1592         0x5B02CA0E, 0x01900070, 0x43020A0C, 0x00100070,
1593         0x1B00CA0D, 0x00100070, 0x53028A0F, 0x0190C070,
1594         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1595         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1596         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1597         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1598         0x40021404, 0x00100000, 0x1A00D405, 0x00100040,
1599         0x5B02CA06, 0x01900060, 0x5B02CA06, 0x01900060,
1600         0x53028A07, 0x0190C060, 0x00000000, 0x00000000,
1601         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1602         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1603         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1604         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1605         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1606         0x4002140C, 0x00100010, 0x1A00D40D, 0x00100050,
1607         0x5B02CA0E, 0x01900070, 0x5B02CA0E, 0x01900070,
1608         0x53028A0F, 0x0190C070, 0x00000000, 0x00000000,
1609         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1610         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1611         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1612         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1613         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1614         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1615         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1616         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1617         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1618         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1619         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1620         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1621         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1622         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1623         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1624         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1625         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1626         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1627         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1628         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1629         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1630         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1631         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1632         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1633         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1634         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1635         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1636         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1637         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1638         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1639         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1640         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1641         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1642         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1643         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1644         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1645         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1646 };
1647
1648 static const u32 b43_ntab_gainctl0[] = {
1649         0x007F003F, 0x007E013F, 0x007D023E, 0x007C033E,
1650         0x007B043D, 0x007A053D, 0x0079063C, 0x0078073C,
1651         0x0077083B, 0x0076093B, 0x00750A3A, 0x00740B3A,
1652         0x00730C39, 0x00720D39, 0x00710E38, 0x00700F38,
1653         0x006F0037, 0x006E0137, 0x006D0236, 0x006C0336,
1654         0x006B0435, 0x006A0535, 0x00690634, 0x00680734,
1655         0x00670833, 0x00660933, 0x00650A32, 0x00640B32,
1656         0x00630C31, 0x00620D31, 0x00610E30, 0x00600F30,
1657         0x005F002F, 0x005E012F, 0x005D022E, 0x005C032E,
1658         0x005B042D, 0x005A052D, 0x0059062C, 0x0058072C,
1659         0x0057082B, 0x0056092B, 0x00550A2A, 0x00540B2A,
1660         0x00530C29, 0x00520D29, 0x00510E28, 0x00500F28,
1661         0x004F0027, 0x004E0127, 0x004D0226, 0x004C0326,
1662         0x004B0425, 0x004A0525, 0x00490624, 0x00480724,
1663         0x00470823, 0x00460923, 0x00450A22, 0x00440B22,
1664         0x00430C21, 0x00420D21, 0x00410E20, 0x00400F20,
1665         0x003F001F, 0x003E011F, 0x003D021E, 0x003C031E,
1666         0x003B041D, 0x003A051D, 0x0039061C, 0x0038071C,
1667         0x0037081B, 0x0036091B, 0x00350A1A, 0x00340B1A,
1668         0x00330C19, 0x00320D19, 0x00310E18, 0x00300F18,
1669         0x002F0017, 0x002E0117, 0x002D0216, 0x002C0316,
1670         0x002B0415, 0x002A0515, 0x00290614, 0x00280714,
1671         0x00270813, 0x00260913, 0x00250A12, 0x00240B12,
1672         0x00230C11, 0x00220D11, 0x00210E10, 0x00200F10,
1673         0x001F000F, 0x001E010F, 0x001D020E, 0x001C030E,
1674         0x001B040D, 0x001A050D, 0x0019060C, 0x0018070C,
1675         0x0017080B, 0x0016090B, 0x00150A0A, 0x00140B0A,
1676         0x00130C09, 0x00120D09, 0x00110E08, 0x00100F08,
1677         0x000F0007, 0x000E0107, 0x000D0206, 0x000C0306,
1678         0x000B0405, 0x000A0505, 0x00090604, 0x00080704,
1679         0x00070803, 0x00060903, 0x00050A02, 0x00040B02,
1680         0x00030C01, 0x00020D01, 0x00010E00, 0x00000F00,
1681 };
1682
1683 static const u32 b43_ntab_gainctl1[] = {
1684         0x007F003F, 0x007E013F, 0x007D023E, 0x007C033E,
1685         0x007B043D, 0x007A053D, 0x0079063C, 0x0078073C,
1686         0x0077083B, 0x0076093B, 0x00750A3A, 0x00740B3A,
1687         0x00730C39, 0x00720D39, 0x00710E38, 0x00700F38,
1688         0x006F0037, 0x006E0137, 0x006D0236, 0x006C0336,
1689         0x006B0435, 0x006A0535, 0x00690634, 0x00680734,
1690         0x00670833, 0x00660933, 0x00650A32, 0x00640B32,
1691         0x00630C31, 0x00620D31, 0x00610E30, 0x00600F30,
1692         0x005F002F, 0x005E012F, 0x005D022E, 0x005C032E,
1693         0x005B042D, 0x005A052D, 0x0059062C, 0x0058072C,
1694         0x0057082B, 0x0056092B, 0x00550A2A, 0x00540B2A,
1695         0x00530C29, 0x00520D29, 0x00510E28, 0x00500F28,
1696         0x004F0027, 0x004E0127, 0x004D0226, 0x004C0326,
1697         0x004B0425, 0x004A0525, 0x00490624, 0x00480724,
1698         0x00470823, 0x00460923, 0x00450A22, 0x00440B22,
1699         0x00430C21, 0x00420D21, 0x00410E20, 0x00400F20,
1700         0x003F001F, 0x003E011F, 0x003D021E, 0x003C031E,
1701         0x003B041D, 0x003A051D, 0x0039061C, 0x0038071C,
1702         0x0037081B, 0x0036091B, 0x00350A1A, 0x00340B1A,
1703         0x00330C19, 0x00320D19, 0x00310E18, 0x00300F18,
1704         0x002F0017, 0x002E0117, 0x002D0216, 0x002C0316,
1705         0x002B0415, 0x002A0515, 0x00290614, 0x00280714,
1706         0x00270813, 0x00260913, 0x00250A12, 0x00240B12,
1707         0x00230C11, 0x00220D11, 0x00210E10, 0x00200F10,
1708         0x001F000F, 0x001E010F, 0x001D020E, 0x001C030E,
1709         0x001B040D, 0x001A050D, 0x0019060C, 0x0018070C,
1710         0x0017080B, 0x0016090B, 0x00150A0A, 0x00140B0A,
1711         0x00130C09, 0x00120D09, 0x00110E08, 0x00100F08,
1712         0x000F0007, 0x000E0107, 0x000D0206, 0x000C0306,
1713         0x000B0405, 0x000A0505, 0x00090604, 0x00080704,
1714         0x00070803, 0x00060903, 0x00050A02, 0x00040B02,
1715         0x00030C01, 0x00020D01, 0x00010E00, 0x00000F00,
1716 };
1717
1718 static const u32 b43_ntab_intlevel[] = {
1719         0x00802070, 0x0671188D, 0x0A60192C, 0x0A300E46,
1720         0x00C1188D, 0x080024D2, 0x00000070,
1721 };
1722
1723 static const u32 b43_ntab_iqlt0[] = {
1724         0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F,
1725         0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F,
1726         0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F,
1727         0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F,
1728         0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F,
1729         0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F,
1730         0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F,
1731         0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F,
1732         0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F,
1733         0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F,
1734         0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F,
1735         0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F,
1736         0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F,
1737         0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F,
1738         0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F,
1739         0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F,
1740         0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F,
1741         0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F,
1742         0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F,
1743         0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F,
1744         0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F,
1745         0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F,
1746         0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F,
1747         0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F,
1748         0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F,
1749         0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F,
1750         0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F,
1751         0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F,
1752         0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F,
1753         0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F,
1754         0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F,
1755         0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F,
1756 };
1757
1758 static const u32 b43_ntab_iqlt1[] = {
1759         0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F,
1760         0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F,
1761         0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F,
1762         0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F,
1763         0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F,
1764         0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F,
1765         0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F,
1766         0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F,
1767         0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F,
1768         0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F,
1769         0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F,
1770         0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F,
1771         0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F,
1772         0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F,
1773         0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F,
1774         0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F,
1775         0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F,
1776         0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F,
1777         0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F,
1778         0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F,
1779         0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F,
1780         0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F,
1781         0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F,
1782         0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F,
1783         0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F,
1784         0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F,
1785         0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F,
1786         0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F,
1787         0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F,
1788         0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F,
1789         0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F,
1790         0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F,
1791 };
1792
1793 static const u16 b43_ntab_loftlt0[] = {
1794         0x0000, 0x0101, 0x0002, 0x0103, 0x0000, 0x0101,
1795         0x0002, 0x0103, 0x0000, 0x0101, 0x0002, 0x0103,
1796         0x0000, 0x0101, 0x0002, 0x0103, 0x0000, 0x0101,
1797         0x0002, 0x0103, 0x0000, 0x0101, 0x0002, 0x0103,
1798         0x0000, 0x0101, 0x0002, 0x0103, 0x0000, 0x0101,
1799         0x0002, 0x0103, 0x0000, 0x0101, 0x0002, 0x0103,
1800         0x0000, 0x0101, 0x0002, 0x0103, 0x0000, 0x0101,
1801         0x0002, 0x0103, 0x0000, 0x0101, 0x0002, 0x0103,
1802         0x0000, 0x0101, 0x0002, 0x0103, 0x0000, 0x0101,
1803         0x0002, 0x0103, 0x0000, 0x0101, 0x0002, 0x0103,
1804         0x0000, 0x0101, 0x0002, 0x0103, 0x0000, 0x0101,
1805         0x0002, 0x0103, 0x0000, 0x0101, 0x0002, 0x0103,
1806         0x0000, 0x0101, 0x0002, 0x0103, 0x0000, 0x0101,
1807         0x0002, 0x0103, 0x0000, 0x0101, 0x0002, 0x0103,
1808         0x0000, 0x0101, 0x0002, 0x0103, 0x0000, 0x0101,
1809         0x0002, 0x0103, 0x0000, 0x0101, 0x0002, 0x0103,
1810         0x0000, 0x0101, 0x0002, 0x0103, 0x0000, 0x0101,
1811         0x0002, 0x0103, 0x0000, 0x0101, 0x0002, 0x0103,
1812         0x0000, 0x0101, 0x0002, 0x0103, 0x0000, 0x0101,
1813         0x0002, 0x0103, 0x0000, 0x0101, 0x0002, 0x0103,
1814         0x0000, 0x0101, 0x0002, 0x0103, 0x0000, 0x0101,
1815         0x0002, 0x0103,
1816 };
1817
1818 static const u16 b43_ntab_loftlt1[] = {
1819         0x0000, 0x0101, 0x0002, 0x0103, 0x0000, 0x0101,
1820         0x0002, 0x0103, 0x0000, 0x0101, 0x0002, 0x0103,
1821         0x0000, 0x0101, 0x0002, 0x0103, 0x0000, 0x0101,
1822         0x0002, 0x0103, 0x0000, 0x0101, 0x0002, 0x0103,
1823         0x0000, 0x0101, 0x0002, 0x0103, 0x0000, 0x0101,
1824         0x0002, 0x0103, 0x0000, 0x0101, 0x0002, 0x0103,
1825         0x0000, 0x0101, 0x0002, 0x0103, 0x0000, 0x0101,
1826         0x0002, 0x0103, 0x0000, 0x0101, 0x0002, 0x0103,
1827         0x0000, 0x0101, 0x0002, 0x0103, 0x0000, 0x0101,
1828         0x0002, 0x0103, 0x0000, 0x0101, 0x0002, 0x0103,
1829         0x0000, 0x0101, 0x0002, 0x0103, 0x0000, 0x0101,
1830         0x0002, 0x0103, 0x0000, 0x0101, 0x0002, 0x0103,
1831         0x0000, 0x0101, 0x0002, 0x0103, 0x0000, 0x0101,
1832         0x0002, 0x0103, 0x0000, 0x0101, 0x0002, 0x0103,
1833         0x0000, 0x0101, 0x0002, 0x0103, 0x0000, 0x0101,
1834         0x0002, 0x0103, 0x0000, 0x0101, 0x0002, 0x0103,
1835         0x0000, 0x0101, 0x0002, 0x0103, 0x0000, 0x0101,
1836         0x0002, 0x0103, 0x0000, 0x0101, 0x0002, 0x0103,
1837         0x0000, 0x0101, 0x0002, 0x0103, 0x0000, 0x0101,
1838         0x0002, 0x0103, 0x0000, 0x0101, 0x0002, 0x0103,
1839         0x0000, 0x0101, 0x0002, 0x0103, 0x0000, 0x0101,
1840         0x0002, 0x0103,
1841 };
1842
1843 static const u8 b43_ntab_mcs[] = {
1844         0x00, 0x08, 0x0A, 0x10, 0x12, 0x19, 0x1A, 0x1C,
1845         0x40, 0x48, 0x4A, 0x50, 0x52, 0x59, 0x5A, 0x5C,
1846         0x80, 0x88, 0x8A, 0x90, 0x92, 0x99, 0x9A, 0x9C,
1847         0xC0, 0xC8, 0xCA, 0xD0, 0xD2, 0xD9, 0xDA, 0xDC,
1848         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1849         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1850         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1851         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1852         0x00, 0x01, 0x02, 0x04, 0x08, 0x09, 0x0A, 0x0C,
1853         0x10, 0x11, 0x12, 0x14, 0x18, 0x19, 0x1A, 0x1C,
1854         0x20, 0x21, 0x22, 0x24, 0x40, 0x41, 0x42, 0x44,
1855         0x48, 0x49, 0x4A, 0x4C, 0x50, 0x51, 0x52, 0x54,
1856         0x58, 0x59, 0x5A, 0x5C, 0x60, 0x61, 0x62, 0x64,
1857         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1858         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1859         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1860 };
1861
1862 static const u32 b43_ntab_noisevar10[] = {
1863         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
1864         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
1865         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
1866         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
1867         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
1868         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
1869         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
1870         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
1871         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
1872         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
1873         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
1874         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
1875         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
1876         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
1877         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
1878         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
1879         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
1880         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
1881         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
1882         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
1883         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
1884         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
1885         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
1886         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
1887         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
1888         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
1889         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
1890         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
1891         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
1892         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
1893         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
1894         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
1895         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
1896         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
1897         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
1898         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
1899         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
1900         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
1901         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
1902         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
1903         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
1904         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
1905         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
1906         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
1907         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
1908         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
1909         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
1910         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
1911         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
1912         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
1913         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
1914         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
1915         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
1916         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
1917         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
1918         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
1919         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
1920         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
1921         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
1922         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
1923         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
1924         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
1925         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
1926         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
1927 };
1928
1929 static const u32 b43_ntab_noisevar11[] = {
1930         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
1931         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
1932         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
1933         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
1934         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
1935         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
1936         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
1937         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
1938         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
1939         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
1940         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
1941         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
1942         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
1943         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
1944         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
1945         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
1946         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
1947         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
1948         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
1949         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
1950         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
1951         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
1952         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
1953         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
1954         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
1955         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
1956         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
1957         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
1958         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
1959         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
1960         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
1961         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
1962         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
1963         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
1964         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
1965         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
1966         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
1967         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
1968         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
1969         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
1970         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
1971         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
1972         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
1973         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
1974         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
1975         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
1976         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
1977         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
1978         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
1979         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
1980         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
1981         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
1982         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
1983         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
1984         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
1985         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
1986         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
1987         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
1988         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
1989         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
1990         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
1991         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
1992         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
1993         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
1994 };
1995
1996 static const u16 b43_ntab_pilot[] = {
1997         0xFF08, 0xFF08, 0xFF08, 0xFF08, 0xFF08, 0xFF08,
1998         0xFF08, 0xFF08, 0x80D5, 0x80D5, 0x80D5, 0x80D5,
1999         0x80D5, 0x80D5, 0x80D5, 0x80D5, 0xFF0A, 0xFF82,
2000         0xFFA0, 0xFF28, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
2001         0xFF82, 0xFFA0, 0xFF28, 0xFF0A, 0xFFFF, 0xFFFF,
2002         0xFFFF, 0xFFFF, 0xF83F, 0xFA1F, 0xFA97, 0xFAB5,
2003         0xF2BD, 0xF0BF, 0xFFFF, 0xFFFF, 0xF017, 0xF815,
2004         0xF215, 0xF095, 0xF035, 0xF01D, 0xFFFF, 0xFFFF,
2005         0xFF08, 0xFF02, 0xFF80, 0xFF20, 0xFF08, 0xFF02,
2006         0xFF80, 0xFF20, 0xF01F, 0xF817, 0xFA15, 0xF295,
2007         0xF0B5, 0xF03D, 0xFFFF, 0xFFFF, 0xF82A, 0xFA0A,
2008         0xFA82, 0xFAA0, 0xF2A8, 0xF0AA, 0xFFFF, 0xFFFF,
2009         0xF002, 0xF800, 0xF200, 0xF080, 0xF020, 0xF008,
2010         0xFFFF, 0xFFFF, 0xF00A, 0xF802, 0xFA00, 0xF280,
2011         0xF0A0, 0xF028, 0xFFFF, 0xFFFF,
2012 };
2013
2014 static const u32 b43_ntab_pilotlt[] = {
2015         0x76540123, 0x62407351, 0x76543201, 0x76540213,
2016         0x76540123, 0x76430521,
2017 };
2018
2019 static const u32 b43_ntab_tdi20a0[] = {
2020         0x00091226, 0x000A1429, 0x000B56AD, 0x000C58B0,
2021         0x000D5AB3, 0x000E9CB6, 0x000F9EBA, 0x0000C13D,
2022         0x00020301, 0x00030504, 0x00040708, 0x0005090B,
2023         0x00064B8E, 0x00095291, 0x000A5494, 0x000B9718,
2024         0x000C9927, 0x000D9B2A, 0x000EDD2E, 0x000FDF31,
2025         0x000101B4, 0x000243B7, 0x000345BB, 0x000447BE,
2026         0x00058982, 0x00068C05, 0x00099309, 0x000A950C,
2027         0x000BD78F, 0x000CD992, 0x000DDB96, 0x000F1D99,
2028         0x00005FA8, 0x0001422C, 0x0002842F, 0x00038632,
2029         0x00048835, 0x0005CA38, 0x0006CCBC, 0x0009D3BF,
2030         0x000B1603, 0x000C1806, 0x000D1A0A, 0x000E1C0D,
2031         0x000F5E10, 0x00008093, 0x00018297, 0x0002C49A,
2032         0x0003C680, 0x0004C880, 0x00060B00, 0x00070D00,
2033         0x00000000, 0x00000000, 0x00000000,
2034 };
2035
2036 static const u32 b43_ntab_tdi20a1[] = {
2037         0x00014B26, 0x00028D29, 0x000393AD, 0x00049630,
2038         0x0005D833, 0x0006DA36, 0x00099C3A, 0x000A9E3D,
2039         0x000BC081, 0x000CC284, 0x000DC488, 0x000F068B,
2040         0x0000488E, 0x00018B91, 0x0002D214, 0x0003D418,
2041         0x0004D6A7, 0x000618AA, 0x00071AAE, 0x0009DCB1,
2042         0x000B1EB4, 0x000C0137, 0x000D033B, 0x000E053E,
2043         0x000F4702, 0x00008905, 0x00020C09, 0x0003128C,
2044         0x0004148F, 0x00051712, 0x00065916, 0x00091B19,
2045         0x000A1D28, 0x000B5F2C, 0x000C41AF, 0x000D43B2,
2046         0x000E85B5, 0x000F87B8, 0x0000C9BC, 0x00024CBF,
2047         0x00035303, 0x00045506, 0x0005978A, 0x0006998D,
2048         0x00095B90, 0x000A5D93, 0x000B9F97, 0x000C821A,
2049         0x000D8400, 0x000EC600, 0x000FC800, 0x00010A00,
2050         0x00000000, 0x00000000, 0x00000000,
2051 };
2052
2053 static const u32 b43_ntab_tdi40a0[] = {
2054         0x0011A346, 0x00136CCF, 0x0014F5D9, 0x001641E2,
2055         0x0017CB6B, 0x00195475, 0x001B2383, 0x001CAD0C,
2056         0x001E7616, 0x0000821F, 0x00020BA8, 0x0003D4B2,
2057         0x00056447, 0x00072DD0, 0x0008B6DA, 0x000A02E3,
2058         0x000B8C6C, 0x000D15F6, 0x0011E484, 0x0013AE0D,
2059         0x00153717, 0x00168320, 0x00180CA9, 0x00199633,
2060         0x001B6548, 0x001CEED1, 0x001EB7DB, 0x0000C3E4,
2061         0x00024D6D, 0x000416F7, 0x0005A585, 0x00076F0F,
2062         0x0008F818, 0x000A4421, 0x000BCDAB, 0x000D9734,
2063         0x00122649, 0x0013EFD2, 0x001578DC, 0x0016C4E5,
2064         0x00184E6E, 0x001A17F8, 0x001BA686, 0x001D3010,
2065         0x001EF999, 0x00010522, 0x00028EAC, 0x00045835,
2066         0x0005E74A, 0x0007B0D3, 0x00093A5D, 0x000A85E6,
2067         0x000C0F6F, 0x000DD8F9, 0x00126787, 0x00143111,
2068         0x0015BA9A, 0x00170623, 0x00188FAD, 0x001A5936,
2069         0x001BE84B, 0x001DB1D4, 0x001F3B5E, 0x000146E7,
2070         0x00031070, 0x000499FA, 0x00062888, 0x0007F212,
2071         0x00097B9B, 0x000AC7A4, 0x000C50AE, 0x000E1A37,
2072         0x0012A94C, 0x001472D5, 0x0015FC5F, 0x00174868,
2073         0x0018D171, 0x001A9AFB, 0x001C2989, 0x001DF313,
2074         0x001F7C9C, 0x000188A5, 0x000351AF, 0x0004DB38,
2075         0x0006AA4D, 0x000833D7, 0x0009BD60, 0x000B0969,
2076         0x000C9273, 0x000E5BFC, 0x00132A8A, 0x0014B414,
2077         0x00163D9D, 0x001789A6, 0x001912B0, 0x001ADC39,
2078         0x001C6BCE, 0x001E34D8, 0x001FBE61, 0x0001CA6A,
2079         0x00039374, 0x00051CFD, 0x0006EC0B, 0x00087515,
2080         0x0009FE9E, 0x000B4AA7, 0x000CD3B1, 0x000E9D3A,
2081         0x00000000, 0x00000000,
2082 };
2083
2084 static const u32 b43_ntab_tdi40a1[] = {
2085         0x001EDB36, 0x000129CA, 0x0002B353, 0x00047CDD,
2086         0x0005C8E6, 0x000791EF, 0x00091BF9, 0x000AAA07,
2087         0x000C3391, 0x000DFD1A, 0x00120923, 0x0013D22D,
2088         0x00155C37, 0x0016EACB, 0x00187454, 0x001A3DDE,
2089         0x001B89E7, 0x001D12F0, 0x001F1CFA, 0x00016B88,
2090         0x00033492, 0x0004BE1B, 0x00060A24, 0x0007D32E,
2091         0x00095D38, 0x000AEC4C, 0x000C7555, 0x000E3EDF,
2092         0x00124AE8, 0x001413F1, 0x0015A37B, 0x00172C89,
2093         0x0018B593, 0x001A419C, 0x001BCB25, 0x001D942F,
2094         0x001F63B9, 0x0001AD4D, 0x00037657, 0x0004C260,
2095         0x00068BE9, 0x000814F3, 0x0009A47C, 0x000B2D8A,
2096         0x000CB694, 0x000E429D, 0x00128C26, 0x001455B0,
2097         0x0015E4BA, 0x00176E4E, 0x0018F758, 0x001A8361,
2098         0x001C0CEA, 0x001DD674, 0x001FA57D, 0x0001EE8B,
2099         0x0003B795, 0x0005039E, 0x0006CD27, 0x000856B1,
2100         0x0009E5C6, 0x000B6F4F, 0x000CF859, 0x000E8462,
2101         0x00130DEB, 0x00149775, 0x00162603, 0x0017AF8C,
2102         0x00193896, 0x001AC49F, 0x001C4E28, 0x001E17B2,
2103         0x0000A6C7, 0x00023050, 0x0003F9DA, 0x00054563,
2104         0x00070EEC, 0x00089876, 0x000A2704, 0x000BB08D,
2105         0x000D3A17, 0x001185A0, 0x00134F29, 0x0014D8B3,
2106         0x001667C8, 0x0017F151, 0x00197ADB, 0x001B0664,
2107         0x001C8FED, 0x001E5977, 0x0000E805, 0x0002718F,
2108         0x00043B18, 0x000586A1, 0x0007502B, 0x0008D9B4,
2109         0x000A68C9, 0x000BF252, 0x000DBBDC, 0x0011C7E5,
2110         0x001390EE, 0x00151A78, 0x0016A906, 0x00183290,
2111         0x0019BC19, 0x001B4822, 0x001CD12C, 0x001E9AB5,
2112         0x00000000, 0x00000000,
2113 };
2114
2115 static const u32 b43_ntab_tdtrn[] = {
2116         0x061C061C, 0x0050EE68, 0xF592FE36, 0xFE5212F6,
2117         0x00000C38, 0xFE5212F6, 0xF592FE36, 0x0050EE68,
2118         0x061C061C, 0xEE680050, 0xFE36F592, 0x12F6FE52,
2119         0x0C380000, 0x12F6FE52, 0xFE36F592, 0xEE680050,
2120         0x061C061C, 0x0050EE68, 0xF592FE36, 0xFE5212F6,
2121         0x00000C38, 0xFE5212F6, 0xF592FE36, 0x0050EE68,
2122         0x061C061C, 0xEE680050, 0xFE36F592, 0x12F6FE52,
2123         0x0C380000, 0x12F6FE52, 0xFE36F592, 0xEE680050,
2124         0x05E305E3, 0x004DEF0C, 0xF5F3FE47, 0xFE611246,
2125         0x00000BC7, 0xFE611246, 0xF5F3FE47, 0x004DEF0C,
2126         0x05E305E3, 0xEF0C004D, 0xFE47F5F3, 0x1246FE61,
2127         0x0BC70000, 0x1246FE61, 0xFE47F5F3, 0xEF0C004D,
2128         0x05E305E3, 0x004DEF0C, 0xF5F3FE47, 0xFE611246,
2129         0x00000BC7, 0xFE611246, 0xF5F3FE47, 0x004DEF0C,
2130         0x05E305E3, 0xEF0C004D, 0xFE47F5F3, 0x1246FE61,
2131         0x0BC70000, 0x1246FE61, 0xFE47F5F3, 0xEF0C004D,
2132         0xFA58FA58, 0xF895043B, 0xFF4C09C0, 0xFBC6FFA8,
2133         0xFB84F384, 0x0798F6F9, 0x05760122, 0x058409F6,
2134         0x0B500000, 0x05B7F542, 0x08860432, 0x06DDFEE7,
2135         0xFB84F384, 0xF9D90664, 0xF7E8025C, 0x00FFF7BD,
2136         0x05A805A8, 0xF7BD00FF, 0x025CF7E8, 0x0664F9D9,
2137         0xF384FB84, 0xFEE706DD, 0x04320886, 0xF54205B7,
2138         0x00000B50, 0x09F60584, 0x01220576, 0xF6F90798,
2139         0xF384FB84, 0xFFA8FBC6, 0x09C0FF4C, 0x043BF895,
2140         0x02D402D4, 0x07DE0270, 0xFC96079C, 0xF90AFE94,
2141         0xFE00FF2C, 0x02D4065D, 0x092A0096, 0x0014FBB8,
2142         0xFD2CFD2C, 0x076AFB3C, 0x0096F752, 0xF991FD87,
2143         0xFB2C0200, 0xFEB8F960, 0x08E0FC96, 0x049802A8,
2144         0xFD2CFD2C, 0x02A80498, 0xFC9608E0, 0xF960FEB8,
2145         0x0200FB2C, 0xFD87F991, 0xF7520096, 0xFB3C076A,
2146         0xFD2CFD2C, 0xFBB80014, 0x0096092A, 0x065D02D4,
2147         0xFF2CFE00, 0xFE94F90A, 0x079CFC96, 0x027007DE,
2148         0x02D402D4, 0x027007DE, 0x079CFC96, 0xFE94F90A,
2149         0xFF2CFE00, 0x065D02D4, 0x0096092A, 0xFBB80014,
2150         0xFD2CFD2C, 0xFB3C076A, 0xF7520096, 0xFD87F991,
2151         0x0200FB2C, 0xF960FEB8, 0xFC9608E0, 0x02A80498,
2152         0xFD2CFD2C, 0x049802A8, 0x08E0FC96, 0xFEB8F960,
2153         0xFB2C0200, 0xF991FD87, 0x0096F752, 0x076AFB3C,
2154         0xFD2CFD2C, 0x0014FBB8, 0x092A0096, 0x02D4065D,
2155         0xFE00FF2C, 0xF90AFE94, 0xFC96079C, 0x07DE0270,
2156         0x00000000, 0x00000000, 0x00000000, 0x00000000,
2157         0x00000000, 0x00000000, 0x00000000, 0x00000000,
2158         0x00000000, 0x00000000, 0x00000000, 0x00000000,
2159         0x00000000, 0x00000000, 0x00000000, 0x00000000,
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         0x00000000, 0x00000000, 0x00000000, 0x00000000,
2173         0x00000000, 0x00000000, 0x00000000, 0x00000000,
2174         0x00000000, 0x00000000, 0x00000000, 0x00000000,
2175         0x00000000, 0x00000000, 0x00000000, 0x00000000,
2176         0x00000000, 0x00000000, 0x00000000, 0x00000000,
2177         0x00000000, 0x00000000, 0x00000000, 0x00000000,
2178         0x00000000, 0x00000000, 0x00000000, 0x00000000,
2179         0x00000000, 0x00000000, 0x00000000, 0x00000000,
2180         0x062A0000, 0xFEFA0759, 0x08B80908, 0xF396FC2D,
2181         0xF9D6045C, 0xFC4EF608, 0xF748F596, 0x07B207BF,
2182         0x062A062A, 0xF84EF841, 0xF748F596, 0x03B209F8,
2183         0xF9D6045C, 0x0C6A03D3, 0x08B80908, 0x0106F8A7,
2184         0x062A0000, 0xFEFAF8A7, 0x08B8F6F8, 0xF39603D3,
2185         0xF9D6FBA4, 0xFC4E09F8, 0xF7480A6A, 0x07B2F841,
2186         0x062AF9D6, 0xF84E07BF, 0xF7480A6A, 0x03B2F608,
2187         0xF9D6FBA4, 0x0C6AFC2D, 0x08B8F6F8, 0x01060759,
2188         0x062A0000, 0xFEFA0759, 0x08B80908, 0xF396FC2D,
2189         0xF9D6045C, 0xFC4EF608, 0xF748F596, 0x07B207BF,
2190         0x062A062A, 0xF84EF841, 0xF748F596, 0x03B209F8,
2191         0xF9D6045C, 0x0C6A03D3, 0x08B80908, 0x0106F8A7,
2192         0x062A0000, 0xFEFAF8A7, 0x08B8F6F8, 0xF39603D3,
2193         0xF9D6FBA4, 0xFC4E09F8, 0xF7480A6A, 0x07B2F841,
2194         0x062AF9D6, 0xF84E07BF, 0xF7480A6A, 0x03B2F608,
2195         0xF9D6FBA4, 0x0C6AFC2D, 0x08B8F6F8, 0x01060759,
2196         0x061C061C, 0xFF30009D, 0xFFB21141, 0xFD87FB54,
2197         0xF65DFE59, 0x02EEF99E, 0x0166F03C, 0xFFF809B6,
2198         0x000008A4, 0x000AF42B, 0x00EFF577, 0xFA840BF2,
2199         0xFC02FF51, 0x08260F67, 0xFFF0036F, 0x0842F9C3,
2200         0x00000000, 0x063DF7BE, 0xFC910010, 0xF099F7DA,
2201         0x00AF03FE, 0xF40E057C, 0x0A89FF11, 0x0BD5FFF6,
2202         0xF75C0000, 0xF64A0008, 0x0FC4FE9A, 0x0662FD12,
2203         0x01A709A3, 0x04AC0279, 0xEEBF004E, 0xFF6300D0,
2204         0xF9E4F9E4, 0x00D0FF63, 0x004EEEBF, 0x027904AC,
2205         0x09A301A7, 0xFD120662, 0xFE9A0FC4, 0x0008F64A,
2206         0x0000F75C, 0xFFF60BD5, 0xFF110A89, 0x057CF40E,
2207         0x03FE00AF, 0xF7DAF099, 0x0010FC91, 0xF7BE063D,
2208         0x00000000, 0xF9C30842, 0x036FFFF0, 0x0F670826,
2209         0xFF51FC02, 0x0BF2FA84, 0xF57700EF, 0xF42B000A,
2210         0x08A40000, 0x09B6FFF8, 0xF03C0166, 0xF99E02EE,
2211         0xFE59F65D, 0xFB54FD87, 0x1141FFB2, 0x009DFF30,
2212         0x05E30000, 0xFF060705, 0x085408A0, 0xF425FC59,
2213         0xFA1D042A, 0xFC78F67A, 0xF7ACF60E, 0x075A0766,
2214         0x05E305E3, 0xF8A6F89A, 0xF7ACF60E, 0x03880986,
2215         0xFA1D042A, 0x0BDB03A7, 0x085408A0, 0x00FAF8FB,
2216         0x05E30000, 0xFF06F8FB, 0x0854F760, 0xF42503A7,
2217         0xFA1DFBD6, 0xFC780986, 0xF7AC09F2, 0x075AF89A,
2218         0x05E3FA1D, 0xF8A60766, 0xF7AC09F2, 0x0388F67A,
2219         0xFA1DFBD6, 0x0BDBFC59, 0x0854F760, 0x00FA0705,
2220         0x05E30000, 0xFF060705, 0x085408A0, 0xF425FC59,
2221         0xFA1D042A, 0xFC78F67A, 0xF7ACF60E, 0x075A0766,
2222         0x05E305E3, 0xF8A6F89A, 0xF7ACF60E, 0x03880986,
2223         0xFA1D042A, 0x0BDB03A7, 0x085408A0, 0x00FAF8FB,
2224         0x05E30000, 0xFF06F8FB, 0x0854F760, 0xF42503A7,
2225         0xFA1DFBD6, 0xFC780986, 0xF7AC09F2, 0x075AF89A,
2226         0x05E3FA1D, 0xF8A60766, 0xF7AC09F2, 0x0388F67A,
2227         0xFA1DFBD6, 0x0BDBFC59, 0x0854F760, 0x00FA0705,
2228         0xFA58FA58, 0xF8F0FE00, 0x0448073D, 0xFDC9FE46,
2229         0xF9910258, 0x089D0407, 0xFD5CF71A, 0x02AFFDE0,
2230         0x083E0496, 0xFF5A0740, 0xFF7AFD97, 0x00FE01F1,
2231         0x0009082E, 0xFA94FF75, 0xFECDF8EA, 0xFFB0F693,
2232         0xFD2CFA58, 0x0433FF16, 0xFBA405DD, 0xFA610341,
2233         0x06A606CB, 0x0039FD2D, 0x0677FA97, 0x01FA05E0,
2234         0xF896003E, 0x075A068B, 0x012CFC3E, 0xFA23F98D,
2235         0xFC7CFD43, 0xFF90FC0D, 0x01C10982, 0x00C601D6,
2236         0xFD2CFD2C, 0x01D600C6, 0x098201C1, 0xFC0DFF90,
2237         0xFD43FC7C, 0xF98DFA23, 0xFC3E012C, 0x068B075A,
2238         0x003EF896, 0x05E001FA, 0xFA970677, 0xFD2D0039,
2239         0x06CB06A6, 0x0341FA61, 0x05DDFBA4, 0xFF160433,
2240         0xFA58FD2C, 0xF693FFB0, 0xF8EAFECD, 0xFF75FA94,
2241         0x082E0009, 0x01F100FE, 0xFD97FF7A, 0x0740FF5A,
2242         0x0496083E, 0xFDE002AF, 0xF71AFD5C, 0x0407089D,
2243         0x0258F991, 0xFE46FDC9, 0x073D0448, 0xFE00F8F0,
2244         0xFD2CFD2C, 0xFCE00500, 0xFC09FDDC, 0xFE680157,
2245         0x04C70571, 0xFC3AFF21, 0xFCD70228, 0x056D0277,
2246         0x0200FE00, 0x0022F927, 0xFE3C032B, 0xFC44FF3C,
2247         0x03E9FBDB, 0x04570313, 0x04C9FF5C, 0x000D03B8,
2248         0xFA580000, 0xFBE900D2, 0xF9D0FE0B, 0x0125FDF9,
2249         0x042501BF, 0x0328FA2B, 0xFFA902F0, 0xFA250157,
2250         0x0200FE00, 0x03740438, 0xFF0405FD, 0x030CFE52,
2251         0x0037FB39, 0xFF6904C5, 0x04F8FD23, 0xFD31FC1B,
2252         0xFD2CFD2C, 0xFC1BFD31, 0xFD2304F8, 0x04C5FF69,
2253         0xFB390037, 0xFE52030C, 0x05FDFF04, 0x04380374,
2254         0xFE000200, 0x0157FA25, 0x02F0FFA9, 0xFA2B0328,
2255         0x01BF0425, 0xFDF90125, 0xFE0BF9D0, 0x00D2FBE9,
2256         0x0000FA58, 0x03B8000D, 0xFF5C04C9, 0x03130457,
2257         0xFBDB03E9, 0xFF3CFC44, 0x032BFE3C, 0xF9270022,
2258         0xFE000200, 0x0277056D, 0x0228FCD7, 0xFF21FC3A,
2259         0x057104C7, 0x0157FE68, 0xFDDCFC09, 0x0500FCE0,
2260         0xFD2CFD2C, 0x0500FCE0, 0xFDDCFC09, 0x0157FE68,
2261         0x057104C7, 0xFF21FC3A, 0x0228FCD7, 0x0277056D,
2262         0xFE000200, 0xF9270022, 0x032BFE3C, 0xFF3CFC44,
2263         0xFBDB03E9, 0x03130457, 0xFF5C04C9, 0x03B8000D,
2264         0x0000FA58, 0x00D2FBE9, 0xFE0BF9D0, 0xFDF90125,
2265         0x01BF0425, 0xFA2B0328, 0x02F0FFA9, 0x0157FA25,
2266         0xFE000200, 0x04380374, 0x05FDFF04, 0xFE52030C,
2267         0xFB390037, 0x04C5FF69, 0xFD2304F8, 0xFC1BFD31,
2268         0xFD2CFD2C, 0xFD31FC1B, 0x04F8FD23, 0xFF6904C5,
2269         0x0037FB39, 0x030CFE52, 0xFF0405FD, 0x03740438,
2270         0x0200FE00, 0xFA250157, 0xFFA902F0, 0x0328FA2B,
2271         0x042501BF, 0x0125FDF9, 0xF9D0FE0B, 0xFBE900D2,
2272         0xFA580000, 0x000D03B8, 0x04C9FF5C, 0x04570313,
2273         0x03E9FBDB, 0xFC44FF3C, 0xFE3C032B, 0x0022F927,
2274         0x0200FE00, 0x056D0277, 0xFCD70228, 0xFC3AFF21,
2275         0x04C70571, 0xFE680157, 0xFC09FDDC, 0xFCE00500,
2276         0x05A80000, 0xFF1006BE, 0x0800084A, 0xF49CFC7E,
2277         0xFA580400, 0xFC9CF6DA, 0xF800F672, 0x0710071C,
2278         0x05A805A8, 0xF8F0F8E4, 0xF800F672, 0x03640926,
2279         0xFA580400, 0x0B640382, 0x0800084A, 0x00F0F942,
2280         0x05A80000, 0xFF10F942, 0x0800F7B6, 0xF49C0382,
2281         0xFA58FC00, 0xFC9C0926, 0xF800098E, 0x0710F8E4,
2282         0x05A8FA58, 0xF8F0071C, 0xF800098E, 0x0364F6DA,
2283         0xFA58FC00, 0x0B64FC7E, 0x0800F7B6, 0x00F006BE,
2284         0x05A80000, 0xFF1006BE, 0x0800084A, 0xF49CFC7E,
2285         0xFA580400, 0xFC9CF6DA, 0xF800F672, 0x0710071C,
2286         0x05A805A8, 0xF8F0F8E4, 0xF800F672, 0x03640926,
2287         0xFA580400, 0x0B640382, 0x0800084A, 0x00F0F942,
2288         0x05A80000, 0xFF10F942, 0x0800F7B6, 0xF49C0382,
2289         0xFA58FC00, 0xFC9C0926, 0xF800098E, 0x0710F8E4,
2290         0x05A8FA58, 0xF8F0071C, 0xF800098E, 0x0364F6DA,
2291         0xFA58FC00, 0x0B64FC7E, 0x0800F7B6, 0x00F006BE,
2292 };
2293
2294 static const u32 b43_ntab_tmap[] = {
2295         0x8A88AA80, 0x8AAAAA8A, 0x8A8A8AA8, 0x00000888,
2296         0x88000000, 0x8A8A88AA, 0x8AA88888, 0x8888A8A8,
2297         0xF1111110, 0x11111111, 0x11F11111, 0x00000111,
2298         0x11000000, 0x1111F111, 0x11111111, 0x111111F1,
2299         0x8A88AA80, 0x8AAAAA8A, 0x8A8A8AA8, 0x000AA888,
2300         0x88880000, 0x8A8A88AA, 0x8AA88888, 0x8888A8A8,
2301         0xA1111110, 0x11111111, 0x11C11111, 0x00000111,
2302         0x11000000, 0x1111A111, 0x11111111, 0x111111A1,
2303         0xA2222220, 0x22222222, 0x22C22222, 0x00000222,
2304         0x22000000, 0x2222A222, 0x22222222, 0x222222A2,
2305         0xF1111110, 0x11111111, 0x11F11111, 0x00011111,
2306         0x11110000, 0x1111F111, 0x11111111, 0x111111F1,
2307         0xA8AA88A0, 0xA88888A8, 0xA8A8A88A, 0x00088AAA,
2308         0xAAAA0000, 0xA8A8AA88, 0xA88AAAAA, 0xAAAA8A8A,
2309         0xAAA8AAA0, 0x8AAA8AAA, 0xAA8A8A8A, 0x000AAA88,
2310         0x8AAA0000, 0xAAA8A888, 0x8AA88A8A, 0x8A88A888,
2311         0x08080A00, 0x0A08080A, 0x080A0A08, 0x00080808,
2312         0x080A0000, 0x080A0808, 0x080A0808, 0x0A0A0A08,
2313         0xA0A0A0A0, 0x80A0A080, 0x8080A0A0, 0x00008080,
2314         0x80A00000, 0x80A080A0, 0xA080A0A0, 0x8080A0A0,
2315         0x00000000, 0x00000000, 0x00000000, 0x00000000,
2316         0x00000000, 0x00000000, 0x00000000, 0x00000000,
2317         0x00000000, 0x00000000, 0x00000000, 0x00000000,
2318         0x00000000, 0x00000000, 0x00000000, 0x00000000,
2319         0x00000000, 0x00000000, 0x00000000, 0x00000000,
2320         0x00000000, 0x00000000, 0x00000000, 0x00000000,
2321         0x00000000, 0x00000000, 0x00000000, 0x00000000,
2322         0x00000000, 0x00000000, 0x00000000, 0x00000000,
2323         0x00000000, 0x00000000, 0x00000000, 0x00000000,
2324         0x00000000, 0x00000000, 0x00000000, 0x00000000,
2325         0x00000000, 0x00000000, 0x00000000, 0x00000000,
2326         0x00000000, 0x00000000, 0x00000000, 0x00000000,
2327         0x99999000, 0x9B9B99BB, 0x9BB99999, 0x9999B9B9,
2328         0x9B99BB90, 0x9BBBBB9B, 0x9B9B9BB9, 0x00000999,
2329         0x88000000, 0x8A8A88AA, 0x8AA88888, 0x8888A8A8,
2330         0x8A88AA80, 0x8AAAAA8A, 0x8A8A8AA8, 0x00AAA888,
2331         0x22000000, 0x2222B222, 0x22222222, 0x222222B2,
2332         0xB2222220, 0x22222222, 0x22D22222, 0x00000222,
2333         0x11000000, 0x1111A111, 0x11111111, 0x111111A1,
2334         0xA1111110, 0x11111111, 0x11C11111, 0x00000111,
2335         0x33000000, 0x3333B333, 0x33333333, 0x333333B3,
2336         0xB3333330, 0x33333333, 0x33D33333, 0x00000333,
2337         0x22000000, 0x2222A222, 0x22222222, 0x222222A2,
2338         0xA2222220, 0x22222222, 0x22C22222, 0x00000222,
2339         0x99B99B00, 0x9B9B99BB, 0x9BB99999, 0x9999B9B9,
2340         0x9B99BB99, 0x9BBBBB9B, 0x9B9B9BB9, 0x00000999,
2341         0x88000000, 0x8A8A88AA, 0x8AA88888, 0x8888A8A8,
2342         0x8A88AA88, 0x8AAAAA8A, 0x8A8A8AA8, 0x08AAA888,
2343         0x22222200, 0x2222F222, 0x22222222, 0x222222F2,
2344         0x22222222, 0x22222222, 0x22F22222, 0x00000222,
2345         0x11000000, 0x1111F111, 0x11111111, 0x11111111,
2346         0xF1111111, 0x11111111, 0x11F11111, 0x01111111,
2347         0xBB9BB900, 0xB9B9BB99, 0xB99BBBBB, 0xBBBB9B9B,
2348         0xB9BB99BB, 0xB99999B9, 0xB9B9B99B, 0x00000BBB,
2349         0xAA000000, 0xA8A8AA88, 0xA88AAAAA, 0xAAAA8A8A,
2350         0xA8AA88AA, 0xA88888A8, 0xA8A8A88A, 0x0A888AAA,
2351         0xAA000000, 0xA8A8AA88, 0xA88AAAAA, 0xAAAA8A8A,
2352         0xA8AA88A0, 0xA88888A8, 0xA8A8A88A, 0x00000AAA,
2353         0x88000000, 0x8A8A88AA, 0x8AA88888, 0x8888A8A8,
2354         0x8A88AA80, 0x8AAAAA8A, 0x8A8A8AA8, 0x00000888,
2355         0xBBBBBB00, 0x999BBBBB, 0x9BB99B9B, 0xB9B9B9BB,
2356         0xB9B99BBB, 0xB9B9B9BB, 0xB9BB9B99, 0x00000999,
2357         0x8A000000, 0xAA88A888, 0xA88888AA, 0xA88A8A88,
2358         0xA88AA88A, 0x88A8AAAA, 0xA8AA8AAA, 0x0888A88A,
2359         0x0B0B0B00, 0x090B0B0B, 0x0B090B0B, 0x0909090B,
2360         0x09090B0B, 0x09090B0B, 0x09090B09, 0x00000909,
2361         0x0A000000, 0x0A080808, 0x080A080A, 0x080A0A08,
2362         0x080A080A, 0x0808080A, 0x0A0A0A08, 0x0808080A,
2363         0xB0B0B000, 0x9090B0B0, 0x90B09090, 0xB0B0B090,
2364         0xB0B090B0, 0x90B0B0B0, 0xB0B09090, 0x00000090,
2365         0x80000000, 0xA080A080, 0xA08080A0, 0xA0808080,
2366         0xA080A080, 0x80A0A0A0, 0xA0A080A0, 0x00A0A0A0,
2367         0x22000000, 0x2222F222, 0x22222222, 0x222222F2,
2368         0xF2222220, 0x22222222, 0x22F22222, 0x00000222,
2369         0x11000000, 0x1111F111, 0x11111111, 0x111111F1,
2370         0xF1111110, 0x11111111, 0x11F11111, 0x00000111,
2371         0x33000000, 0x3333F333, 0x33333333, 0x333333F3,
2372         0xF3333330, 0x33333333, 0x33F33333, 0x00000333,
2373         0x22000000, 0x2222F222, 0x22222222, 0x222222F2,
2374         0xF2222220, 0x22222222, 0x22F22222, 0x00000222,
2375         0x99000000, 0x9B9B99BB, 0x9BB99999, 0x9999B9B9,
2376         0x9B99BB90, 0x9BBBBB9B, 0x9B9B9BB9, 0x00000999,
2377         0x88000000, 0x8A8A88AA, 0x8AA88888, 0x8888A8A8,
2378         0x8A88AA80, 0x8AAAAA8A, 0x8A8A8AA8, 0x00000888,
2379         0x88888000, 0x8A8A88AA, 0x8AA88888, 0x8888A8A8,
2380         0x8A88AA80, 0x8AAAAA8A, 0x8A8A8AA8, 0x00000888,
2381         0x88000000, 0x8A8A88AA, 0x8AA88888, 0x8888A8A8,
2382         0x8A88AA80, 0x8AAAAA8A, 0x8A8A8AA8, 0x00AAA888,
2383         0x88A88A00, 0x8A8A88AA, 0x8AA88888, 0x8888A8A8,
2384         0x8A88AA88, 0x8AAAAA8A, 0x8A8A8AA8, 0x00000888,
2385         0x88000000, 0x8A8A88AA, 0x8AA88888, 0x8888A8A8,
2386         0x8A88AA88, 0x8AAAAA8A, 0x8A8A8AA8, 0x08AAA888,
2387         0x11000000, 0x1111A111, 0x11111111, 0x111111A1,
2388         0xA1111110, 0x11111111, 0x11C11111, 0x00000111,
2389         0x11000000, 0x1111A111, 0x11111111, 0x111111A1,
2390         0xA1111110, 0x11111111, 0x11C11111, 0x00000111,
2391         0x88000000, 0x8A8A88AA, 0x8AA88888, 0x8888A8A8,
2392         0x8A88AA80, 0x8AAAAA8A, 0x8A8A8AA8, 0x00000888,
2393         0x88000000, 0x8A8A88AA, 0x8AA88888, 0x8888A8A8,
2394         0x8A88AA80, 0x8AAAAA8A, 0x8A8A8AA8, 0x00000888,
2395         0x00000000, 0x00000000, 0x00000000, 0x00000000,
2396         0x00000000, 0x00000000, 0x00000000, 0x00000000,
2397         0x00000000, 0x00000000, 0x00000000, 0x00000000,
2398         0x00000000, 0x00000000, 0x00000000, 0x00000000,
2399         0x00000000, 0x00000000, 0x00000000, 0x00000000,
2400         0x00000000, 0x00000000, 0x00000000, 0x00000000,
2401         0x00000000, 0x00000000, 0x00000000, 0x00000000,
2402         0x00000000, 0x00000000, 0x00000000, 0x00000000,
2403         0x00000000, 0x00000000, 0x00000000, 0x00000000,
2404         0x00000000, 0x00000000, 0x00000000, 0x00000000,
2405         0x00000000, 0x00000000, 0x00000000, 0x00000000,
2406         0x00000000, 0x00000000, 0x00000000, 0x00000000,
2407 };
2408
2409 const u32 b43_ntab_tx_gain_rev0_1_2[] = {
2410         0x03cc2b44, 0x03cc2b42, 0x03cc2a44, 0x03cc2a42,
2411         0x03cc2944, 0x03c82b44, 0x03c82b42, 0x03c82a44,
2412         0x03c82a42, 0x03c82944, 0x03c82942, 0x03c82844,
2413         0x03c82842, 0x03c42b44, 0x03c42b42, 0x03c42a44,
2414         0x03c42a42, 0x03c42944, 0x03c42942, 0x03c42844,
2415         0x03c42842, 0x03c42744, 0x03c42742, 0x03c42644,
2416         0x03c42642, 0x03c42544, 0x03c42542, 0x03c42444,
2417         0x03c42442, 0x03c02b44, 0x03c02b42, 0x03c02a44,
2418         0x03c02a42, 0x03c02944, 0x03c02942, 0x03c02844,
2419         0x03c02842, 0x03c02744, 0x03c02742, 0x03b02b44,
2420         0x03b02b42, 0x03b02a44, 0x03b02a42, 0x03b02944,
2421         0x03b02942, 0x03b02844, 0x03b02842, 0x03b02744,
2422         0x03b02742, 0x03b02644, 0x03b02642, 0x03b02544,
2423         0x03b02542, 0x03a02b44, 0x03a02b42, 0x03a02a44,
2424         0x03a02a42, 0x03a02944, 0x03a02942, 0x03a02844,
2425         0x03a02842, 0x03a02744, 0x03a02742, 0x03902b44,
2426         0x03902b42, 0x03902a44, 0x03902a42, 0x03902944,
2427         0x03902942, 0x03902844, 0x03902842, 0x03902744,
2428         0x03902742, 0x03902644, 0x03902642, 0x03902544,
2429         0x03902542, 0x03802b44, 0x03802b42, 0x03802a44,
2430         0x03802a42, 0x03802944, 0x03802942, 0x03802844,
2431         0x03802842, 0x03802744, 0x03802742, 0x03802644,
2432         0x03802642, 0x03802544, 0x03802542, 0x03802444,
2433         0x03802442, 0x03802344, 0x03802342, 0x03802244,
2434         0x03802242, 0x03802144, 0x03802142, 0x03802044,
2435         0x03802042, 0x03801f44, 0x03801f42, 0x03801e44,
2436         0x03801e42, 0x03801d44, 0x03801d42, 0x03801c44,
2437         0x03801c42, 0x03801b44, 0x03801b42, 0x03801a44,
2438         0x03801a42, 0x03801944, 0x03801942, 0x03801844,
2439         0x03801842, 0x03801744, 0x03801742, 0x03801644,
2440         0x03801642, 0x03801544, 0x03801542, 0x03801444,
2441         0x03801442, 0x03801344, 0x03801342, 0x00002b00,
2442 };
2443
2444 const u32 b43_ntab_tx_gain_rev3plus_2ghz[] = {
2445         0x1f410044, 0x1f410042, 0x1f410040, 0x1f41003e,
2446         0x1f41003c, 0x1f41003b, 0x1f410039, 0x1f410037,
2447         0x1e410044, 0x1e410042, 0x1e410040, 0x1e41003e,
2448         0x1e41003c, 0x1e41003b, 0x1e410039, 0x1e410037,
2449         0x1d410044, 0x1d410042, 0x1d410040, 0x1d41003e,
2450         0x1d41003c, 0x1d41003b, 0x1d410039, 0x1d410037,
2451         0x1c410044, 0x1c410042, 0x1c410040, 0x1c41003e,
2452         0x1c41003c, 0x1c41003b, 0x1c410039, 0x1c410037,
2453         0x1b410044, 0x1b410042, 0x1b410040, 0x1b41003e,
2454         0x1b41003c, 0x1b41003b, 0x1b410039, 0x1b410037,
2455         0x1a410044, 0x1a410042, 0x1a410040, 0x1a41003e,
2456         0x1a41003c, 0x1a41003b, 0x1a410039, 0x1a410037,
2457         0x19410044, 0x19410042, 0x19410040, 0x1941003e,
2458         0x1941003c, 0x1941003b, 0x19410039, 0x19410037,
2459         0x18410044, 0x18410042, 0x18410040, 0x1841003e,
2460         0x1841003c, 0x1841003b, 0x18410039, 0x18410037,
2461         0x17410044, 0x17410042, 0x17410040, 0x1741003e,
2462         0x1741003c, 0x1741003b, 0x17410039, 0x17410037,
2463         0x16410044, 0x16410042, 0x16410040, 0x1641003e,
2464         0x1641003c, 0x1641003b, 0x16410039, 0x16410037,
2465         0x15410044, 0x15410042, 0x15410040, 0x1541003e,
2466         0x1541003c, 0x1541003b, 0x15410039, 0x15410037,
2467         0x14410044, 0x14410042, 0x14410040, 0x1441003e,
2468         0x1441003c, 0x1441003b, 0x14410039, 0x14410037,
2469         0x13410044, 0x13410042, 0x13410040, 0x1341003e,
2470         0x1341003c, 0x1341003b, 0x13410039, 0x13410037,
2471         0x12410044, 0x12410042, 0x12410040, 0x1241003e,
2472         0x1241003c, 0x1241003b, 0x12410039, 0x12410037,
2473         0x11410044, 0x11410042, 0x11410040, 0x1141003e,
2474         0x1141003c, 0x1141003b, 0x11410039, 0x11410037,
2475         0x10410044, 0x10410042, 0x10410040, 0x1041003e,
2476         0x1041003c, 0x1041003b, 0x10410039, 0x10410037,
2477 };
2478
2479 const u32 b43_ntab_tx_gain_rev3_5ghz[] = {
2480         0xcff70044, 0xcff70042, 0xcff70040, 0xcff7003e,
2481         0xcff7003c, 0xcff7003b, 0xcff70039, 0xcff70037,
2482         0xcef70044, 0xcef70042, 0xcef70040, 0xcef7003e,
2483         0xcef7003c, 0xcef7003b, 0xcef70039, 0xcef70037,
2484         0xcdf70044, 0xcdf70042, 0xcdf70040, 0xcdf7003e,
2485         0xcdf7003c, 0xcdf7003b, 0xcdf70039, 0xcdf70037,
2486         0xccf70044, 0xccf70042, 0xccf70040, 0xccf7003e,
2487         0xccf7003c, 0xccf7003b, 0xccf70039, 0xccf70037,
2488         0xcbf70044, 0xcbf70042, 0xcbf70040, 0xcbf7003e,
2489         0xcbf7003c, 0xcbf7003b, 0xcbf70039, 0xcbf70037,
2490         0xcaf70044, 0xcaf70042, 0xcaf70040, 0xcaf7003e,
2491         0xcaf7003c, 0xcaf7003b, 0xcaf70039, 0xcaf70037,
2492         0xc9f70044, 0xc9f70042, 0xc9f70040, 0xc9f7003e,
2493         0xc9f7003c, 0xc9f7003b, 0xc9f70039, 0xc9f70037,
2494         0xc8f70044, 0xc8f70042, 0xc8f70040, 0xc8f7003e,
2495         0xc8f7003c, 0xc8f7003b, 0xc8f70039, 0xc8f70037,
2496         0xc7f70044, 0xc7f70042, 0xc7f70040, 0xc7f7003e,
2497         0xc7f7003c, 0xc7f7003b, 0xc7f70039, 0xc7f70037,
2498         0xc6f70044, 0xc6f70042, 0xc6f70040, 0xc6f7003e,
2499         0xc6f7003c, 0xc6f7003b, 0xc6f70039, 0xc6f70037,
2500         0xc5f70044, 0xc5f70042, 0xc5f70040, 0xc5f7003e,
2501         0xc5f7003c, 0xc5f7003b, 0xc5f70039, 0xc5f70037,
2502         0xc4f70044, 0xc4f70042, 0xc4f70040, 0xc4f7003e,
2503         0xc4f7003c, 0xc4f7003b, 0xc4f70039, 0xc4f70037,
2504         0xc3f70044, 0xc3f70042, 0xc3f70040, 0xc3f7003e,
2505         0xc3f7003c, 0xc3f7003b, 0xc3f70039, 0xc3f70037,
2506         0xc2f70044, 0xc2f70042, 0xc2f70040, 0xc2f7003e,
2507         0xc2f7003c, 0xc2f7003b, 0xc2f70039, 0xc2f70037,
2508         0xc1f70044, 0xc1f70042, 0xc1f70040, 0xc1f7003e,
2509         0xc1f7003c, 0xc1f7003b, 0xc1f70039, 0xc1f70037,
2510         0xc0f70044, 0xc0f70042, 0xc0f70040, 0xc0f7003e,
2511         0xc0f7003c, 0xc0f7003b, 0xc0f70039, 0xc0f70037,
2512 };
2513
2514 const u32 b43_ntab_tx_gain_rev4_5ghz[] = {
2515         0x2ff20044, 0x2ff20042, 0x2ff20040, 0x2ff2003e,
2516         0x2ff2003c, 0x2ff2003b, 0x2ff20039, 0x2ff20037,
2517         0x2ef20044, 0x2ef20042, 0x2ef20040, 0x2ef2003e,
2518         0x2ef2003c, 0x2ef2003b, 0x2ef20039, 0x2ef20037,
2519         0x2df20044, 0x2df20042, 0x2df20040, 0x2df2003e,
2520         0x2df2003c, 0x2df2003b, 0x2df20039, 0x2df20037,
2521         0x2cf20044, 0x2cf20042, 0x2cf20040, 0x2cf2003e,
2522         0x2cf2003c, 0x2cf2003b, 0x2cf20039, 0x2cf20037,
2523         0x2bf20044, 0x2bf20042, 0x2bf20040, 0x2bf2003e,
2524         0x2bf2003c, 0x2bf2003b, 0x2bf20039, 0x2bf20037,
2525         0x2af20044, 0x2af20042, 0x2af20040, 0x2af2003e,
2526         0x2af2003c, 0x2af2003b, 0x2af20039, 0x2af20037,
2527         0x29f20044, 0x29f20042, 0x29f20040, 0x29f2003e,
2528         0x29f2003c, 0x29f2003b, 0x29f20039, 0x29f20037,
2529         0x28f20044, 0x28f20042, 0x28f20040, 0x28f2003e,
2530         0x28f2003c, 0x28f2003b, 0x28f20039, 0x28f20037,
2531         0x27f20044, 0x27f20042, 0x27f20040, 0x27f2003e,
2532         0x27f2003c, 0x27f2003b, 0x27f20039, 0x27f20037,
2533         0x26f20044, 0x26f20042, 0x26f20040, 0x26f2003e,
2534         0x26f2003c, 0x26f2003b, 0x26f20039, 0x26f20037,
2535         0x25f20044, 0x25f20042, 0x25f20040, 0x25f2003e,
2536         0x25f2003c, 0x25f2003b, 0x25f20039, 0x25f20037,
2537         0x24f20044, 0x24f20042, 0x24f20040, 0x24f2003e,
2538         0x24f2003c, 0x24f2003b, 0x24f20039, 0x24f20038,
2539         0x23f20041, 0x23f20040, 0x23f2003f, 0x23f2003e,
2540         0x23f2003c, 0x23f2003b, 0x23f20039, 0x23f20037,
2541         0x22f20044, 0x22f20042, 0x22f20040, 0x22f2003e,
2542         0x22f2003c, 0x22f2003b, 0x22f20039, 0x22f20037,
2543         0x21f20044, 0x21f20042, 0x21f20040, 0x21f2003e,
2544         0x21f2003c, 0x21f2003b, 0x21f20039, 0x21f20037,
2545         0x20d20043, 0x20d20041, 0x20d2003e, 0x20d2003c,
2546         0x20d2003a, 0x20d20038, 0x20d20036, 0x20d20034,
2547 };
2548
2549 const u32 b43_ntab_tx_gain_rev5plus_5ghz[] = {
2550         0x0f62004a, 0x0f620048, 0x0f620046, 0x0f620044,
2551         0x0f620042, 0x0f620040, 0x0f62003e, 0x0f62003c,
2552         0x0e620044, 0x0e620042, 0x0e620040, 0x0e62003e,
2553         0x0e62003c, 0x0e62003d, 0x0e62003b, 0x0e62003a,
2554         0x0d620043, 0x0d620041, 0x0d620040, 0x0d62003e,
2555         0x0d62003d, 0x0d62003c, 0x0d62003b, 0x0d62003a,
2556         0x0c620041, 0x0c620040, 0x0c62003f, 0x0c62003e,
2557         0x0c62003c, 0x0c62003b, 0x0c620039, 0x0c620037,
2558         0x0b620046, 0x0b620044, 0x0b620042, 0x0b620040,
2559         0x0b62003e, 0x0b62003c, 0x0b62003b, 0x0b62003a,
2560         0x0a620041, 0x0a620040, 0x0a62003e, 0x0a62003c,
2561         0x0a62003b, 0x0a62003a, 0x0a620039, 0x0a620038,
2562         0x0962003e, 0x0962003d, 0x0962003c, 0x0962003b,
2563         0x09620039, 0x09620037, 0x09620035, 0x09620033,
2564         0x08620044, 0x08620042, 0x08620040, 0x0862003e,
2565         0x0862003c, 0x0862003b, 0x0862003a, 0x08620039,
2566         0x07620043, 0x07620042, 0x07620040, 0x0762003f,
2567         0x0762003d, 0x0762003b, 0x0762003a, 0x07620039,
2568         0x0662003e, 0x0662003d, 0x0662003c, 0x0662003b,
2569         0x06620039, 0x06620037, 0x06620035, 0x06620033,
2570         0x05620046, 0x05620044, 0x05620042, 0x05620040,
2571         0x0562003e, 0x0562003c, 0x0562003b, 0x05620039,
2572         0x04620044, 0x04620042, 0x04620040, 0x0462003e,
2573         0x0462003c, 0x0462003b, 0x04620039, 0x04620038,
2574         0x0362003c, 0x0362003b, 0x0362003a, 0x03620039,
2575         0x03620038, 0x03620037, 0x03620035, 0x03620033,
2576         0x0262004c, 0x0262004a, 0x02620048, 0x02620047,
2577         0x02620046, 0x02620044, 0x02620043, 0x02620042,
2578         0x0162004a, 0x01620048, 0x01620046, 0x01620044,
2579         0x01620043, 0x01620042, 0x01620041, 0x01620040,
2580         0x00620042, 0x00620040, 0x0062003e, 0x0062003c,
2581         0x0062003b, 0x00620039, 0x00620037, 0x00620035,
2582 };
2583
2584 const u32 txpwrctrl_tx_gain_ipa[] = {
2585         0x5ff7002d, 0x5ff7002b, 0x5ff7002a, 0x5ff70029,
2586         0x5ff70028, 0x5ff70027, 0x5ff70026, 0x5ff70025,
2587         0x5ef7002d, 0x5ef7002b, 0x5ef7002a, 0x5ef70029,
2588         0x5ef70028, 0x5ef70027, 0x5ef70026, 0x5ef70025,
2589         0x5df7002d, 0x5df7002b, 0x5df7002a, 0x5df70029,
2590         0x5df70028, 0x5df70027, 0x5df70026, 0x5df70025,
2591         0x5cf7002d, 0x5cf7002b, 0x5cf7002a, 0x5cf70029,
2592         0x5cf70028, 0x5cf70027, 0x5cf70026, 0x5cf70025,
2593         0x5bf7002d, 0x5bf7002b, 0x5bf7002a, 0x5bf70029,
2594         0x5bf70028, 0x5bf70027, 0x5bf70026, 0x5bf70025,
2595         0x5af7002d, 0x5af7002b, 0x5af7002a, 0x5af70029,
2596         0x5af70028, 0x5af70027, 0x5af70026, 0x5af70025,
2597         0x59f7002d, 0x59f7002b, 0x59f7002a, 0x59f70029,
2598         0x59f70028, 0x59f70027, 0x59f70026, 0x59f70025,
2599         0x58f7002d, 0x58f7002b, 0x58f7002a, 0x58f70029,
2600         0x58f70028, 0x58f70027, 0x58f70026, 0x58f70025,
2601         0x57f7002d, 0x57f7002b, 0x57f7002a, 0x57f70029,
2602         0x57f70028, 0x57f70027, 0x57f70026, 0x57f70025,
2603         0x56f7002d, 0x56f7002b, 0x56f7002a, 0x56f70029,
2604         0x56f70028, 0x56f70027, 0x56f70026, 0x56f70025,
2605         0x55f7002d, 0x55f7002b, 0x55f7002a, 0x55f70029,
2606         0x55f70028, 0x55f70027, 0x55f70026, 0x55f70025,
2607         0x54f7002d, 0x54f7002b, 0x54f7002a, 0x54f70029,
2608         0x54f70028, 0x54f70027, 0x54f70026, 0x54f70025,
2609         0x53f7002d, 0x53f7002b, 0x53f7002a, 0x53f70029,
2610         0x53f70028, 0x53f70027, 0x53f70026, 0x53f70025,
2611         0x52f7002d, 0x52f7002b, 0x52f7002a, 0x52f70029,
2612         0x52f70028, 0x52f70027, 0x52f70026, 0x52f70025,
2613         0x51f7002d, 0x51f7002b, 0x51f7002a, 0x51f70029,
2614         0x51f70028, 0x51f70027, 0x51f70026, 0x51f70025,
2615         0x50f7002d, 0x50f7002b, 0x50f7002a, 0x50f70029,
2616         0x50f70028, 0x50f70027, 0x50f70026, 0x50f70025,
2617 };
2618
2619 const u32 txpwrctrl_tx_gain_ipa_rev5[] = {
2620         0x1ff7002d, 0x1ff7002b, 0x1ff7002a, 0x1ff70029,
2621         0x1ff70028, 0x1ff70027, 0x1ff70026, 0x1ff70025,
2622         0x1ef7002d, 0x1ef7002b, 0x1ef7002a, 0x1ef70029,
2623         0x1ef70028, 0x1ef70027, 0x1ef70026, 0x1ef70025,
2624         0x1df7002d, 0x1df7002b, 0x1df7002a, 0x1df70029,
2625         0x1df70028, 0x1df70027, 0x1df70026, 0x1df70025,
2626         0x1cf7002d, 0x1cf7002b, 0x1cf7002a, 0x1cf70029,
2627         0x1cf70028, 0x1cf70027, 0x1cf70026, 0x1cf70025,
2628         0x1bf7002d, 0x1bf7002b, 0x1bf7002a, 0x1bf70029,
2629         0x1bf70028, 0x1bf70027, 0x1bf70026, 0x1bf70025,
2630         0x1af7002d, 0x1af7002b, 0x1af7002a, 0x1af70029,
2631         0x1af70028, 0x1af70027, 0x1af70026, 0x1af70025,
2632         0x19f7002d, 0x19f7002b, 0x19f7002a, 0x19f70029,
2633         0x19f70028, 0x19f70027, 0x19f70026, 0x19f70025,
2634         0x18f7002d, 0x18f7002b, 0x18f7002a, 0x18f70029,
2635         0x18f70028, 0x18f70027, 0x18f70026, 0x18f70025,
2636         0x17f7002d, 0x17f7002b, 0x17f7002a, 0x17f70029,
2637         0x17f70028, 0x17f70027, 0x17f70026, 0x17f70025,
2638         0x16f7002d, 0x16f7002b, 0x16f7002a, 0x16f70029,
2639         0x16f70028, 0x16f70027, 0x16f70026, 0x16f70025,
2640         0x15f7002d, 0x15f7002b, 0x15f7002a, 0x15f70029,
2641         0x15f70028, 0x15f70027, 0x15f70026, 0x15f70025,
2642         0x14f7002d, 0x14f7002b, 0x14f7002a, 0x14f70029,
2643         0x14f70028, 0x14f70027, 0x14f70026, 0x14f70025,
2644         0x13f7002d, 0x13f7002b, 0x13f7002a, 0x13f70029,
2645         0x13f70028, 0x13f70027, 0x13f70026, 0x13f70025,
2646         0x12f7002d, 0x12f7002b, 0x12f7002a, 0x12f70029,
2647         0x12f70028, 0x12f70027, 0x12f70026, 0x12f70025,
2648         0x11f7002d, 0x11f7002b, 0x11f7002a, 0x11f70029,
2649         0x11f70028, 0x11f70027, 0x11f70026, 0x11f70025,
2650         0x10f7002d, 0x10f7002b, 0x10f7002a, 0x10f70029,
2651         0x10f70028, 0x10f70027, 0x10f70026, 0x10f70025,
2652 };
2653
2654 const u32 txpwrctrl_tx_gain_ipa_rev6[] = {
2655         0x0ff7002d, 0x0ff7002b, 0x0ff7002a, 0x0ff70029,
2656         0x0ff70028, 0x0ff70027, 0x0ff70026, 0x0ff70025,
2657         0x0ef7002d, 0x0ef7002b, 0x0ef7002a, 0x0ef70029,
2658         0x0ef70028, 0x0ef70027, 0x0ef70026, 0x0ef70025,
2659         0x0df7002d, 0x0df7002b, 0x0df7002a, 0x0df70029,
2660         0x0df70028, 0x0df70027, 0x0df70026, 0x0df70025,
2661         0x0cf7002d, 0x0cf7002b, 0x0cf7002a, 0x0cf70029,
2662         0x0cf70028, 0x0cf70027, 0x0cf70026, 0x0cf70025,
2663         0x0bf7002d, 0x0bf7002b, 0x0bf7002a, 0x0bf70029,
2664         0x0bf70028, 0x0bf70027, 0x0bf70026, 0x0bf70025,
2665         0x0af7002d, 0x0af7002b, 0x0af7002a, 0x0af70029,
2666         0x0af70028, 0x0af70027, 0x0af70026, 0x0af70025,
2667         0x09f7002d, 0x09f7002b, 0x09f7002a, 0x09f70029,
2668         0x09f70028, 0x09f70027, 0x09f70026, 0x09f70025,
2669         0x08f7002d, 0x08f7002b, 0x08f7002a, 0x08f70029,
2670         0x08f70028, 0x08f70027, 0x08f70026, 0x08f70025,
2671         0x07f7002d, 0x07f7002b, 0x07f7002a, 0x07f70029,
2672         0x07f70028, 0x07f70027, 0x07f70026, 0x07f70025,
2673         0x06f7002d, 0x06f7002b, 0x06f7002a, 0x06f70029,
2674         0x06f70028, 0x06f70027, 0x06f70026, 0x06f70025,
2675         0x05f7002d, 0x05f7002b, 0x05f7002a, 0x05f70029,
2676         0x05f70028, 0x05f70027, 0x05f70026, 0x05f70025,
2677         0x04f7002d, 0x04f7002b, 0x04f7002a, 0x04f70029,
2678         0x04f70028, 0x04f70027, 0x04f70026, 0x04f70025,
2679         0x03f7002d, 0x03f7002b, 0x03f7002a, 0x03f70029,
2680         0x03f70028, 0x03f70027, 0x03f70026, 0x03f70025,
2681         0x02f7002d, 0x02f7002b, 0x02f7002a, 0x02f70029,
2682         0x02f70028, 0x02f70027, 0x02f70026, 0x02f70025,
2683         0x01f7002d, 0x01f7002b, 0x01f7002a, 0x01f70029,
2684         0x01f70028, 0x01f70027, 0x01f70026, 0x01f70025,
2685         0x00f7002d, 0x00f7002b, 0x00f7002a, 0x00f70029,
2686         0x00f70028, 0x00f70027, 0x00f70026, 0x00f70025,
2687 };
2688
2689 const u32 txpwrctrl_tx_gain_ipa_5g[] = {
2690         0x7ff70035, 0x7ff70033, 0x7ff70032, 0x7ff70031,
2691         0x7ff7002f, 0x7ff7002e, 0x7ff7002d, 0x7ff7002b,
2692         0x7ff7002a, 0x7ff70029, 0x7ff70028, 0x7ff70027,
2693         0x7ff70026, 0x7ff70024, 0x7ff70023, 0x7ff70022,
2694         0x7ef70028, 0x7ef70027, 0x7ef70026, 0x7ef70025,
2695         0x7ef70024, 0x7ef70023, 0x7df70028, 0x7df70027,
2696         0x7df70026, 0x7df70025, 0x7df70024, 0x7df70023,
2697         0x7df70022, 0x7cf70029, 0x7cf70028, 0x7cf70027,
2698         0x7cf70026, 0x7cf70025, 0x7cf70023, 0x7cf70022,
2699         0x7bf70029, 0x7bf70028, 0x7bf70026, 0x7bf70025,
2700         0x7bf70024, 0x7bf70023, 0x7bf70022, 0x7bf70021,
2701         0x7af70029, 0x7af70028, 0x7af70027, 0x7af70026,
2702         0x7af70025, 0x7af70024, 0x7af70023, 0x7af70022,
2703         0x79f70029, 0x79f70028, 0x79f70027, 0x79f70026,
2704         0x79f70025, 0x79f70024, 0x79f70023, 0x79f70022,
2705         0x78f70029, 0x78f70028, 0x78f70027, 0x78f70026,
2706         0x78f70025, 0x78f70024, 0x78f70023, 0x78f70022,
2707         0x77f70029, 0x77f70028, 0x77f70027, 0x77f70026,
2708         0x77f70025, 0x77f70024, 0x77f70023, 0x77f70022,
2709         0x76f70029, 0x76f70028, 0x76f70027, 0x76f70026,
2710         0x76f70024, 0x76f70023, 0x76f70022, 0x76f70021,
2711         0x75f70029, 0x75f70028, 0x75f70027, 0x75f70026,
2712         0x75f70025, 0x75f70024, 0x75f70023, 0x74f70029,
2713         0x74f70028, 0x74f70026, 0x74f70025, 0x74f70024,
2714         0x74f70023, 0x74f70022, 0x73f70029, 0x73f70027,
2715         0x73f70026, 0x73f70025, 0x73f70024, 0x73f70023,
2716         0x73f70022, 0x72f70028, 0x72f70027, 0x72f70026,
2717         0x72f70025, 0x72f70024, 0x72f70023, 0x72f70022,
2718         0x71f70028, 0x71f70027, 0x71f70026, 0x71f70025,
2719         0x71f70024, 0x71f70023, 0x70f70028, 0x70f70027,
2720         0x70f70026, 0x70f70024, 0x70f70023, 0x70f70022,
2721         0x70f70021, 0x70f70020, 0x70f70020, 0x70f7001f,
2722 };
2723
2724 const u16 tbl_iqcal_gainparams[2][9][8] = {
2725         {
2726                 { 0x000, 0, 0, 2, 0x69, 0x69, 0x69, 0x69 },
2727                 { 0x700, 7, 0, 0, 0x69, 0x69, 0x69, 0x69 },
2728                 { 0x710, 7, 1, 0, 0x68, 0x68, 0x68, 0x68 },
2729                 { 0x720, 7, 2, 0, 0x67, 0x67, 0x67, 0x67 },
2730                 { 0x730, 7, 3, 0, 0x66, 0x66, 0x66, 0x66 },
2731                 { 0x740, 7, 4, 0, 0x65, 0x65, 0x65, 0x65 },
2732                 { 0x741, 7, 4, 1, 0x65, 0x65, 0x65, 0x65 },
2733                 { 0x742, 7, 4, 2, 0x65, 0x65, 0x65, 0x65 },
2734                 { 0x743, 7, 4, 3, 0x65, 0x65, 0x65, 0x65 }
2735         },
2736         {
2737                 { 0x000, 7, 0, 0, 0x79, 0x79, 0x79, 0x79 },
2738                 { 0x700, 7, 0, 0, 0x79, 0x79, 0x79, 0x79 },
2739                 { 0x710, 7, 1, 0, 0x79, 0x79, 0x79, 0x79 },
2740                 { 0x720, 7, 2, 0, 0x78, 0x78, 0x78, 0x78 },
2741                 { 0x730, 7, 3, 0, 0x78, 0x78, 0x78, 0x78 },
2742                 { 0x740, 7, 4, 0, 0x78, 0x78, 0x78, 0x78 },
2743                 { 0x741, 7, 4, 1, 0x78, 0x78, 0x78, 0x78 },
2744                 { 0x742, 7, 4, 2, 0x78, 0x78, 0x78, 0x78 },
2745                 { 0x743, 7, 4, 3, 0x78, 0x78, 0x78, 0x78 }
2746         }
2747 };
2748
2749 const struct nphy_txiqcal_ladder ladder_lo[] = {
2750         { 3, 0 },
2751         { 4, 0 },
2752         { 6, 0 },
2753         { 9, 0 },
2754         { 13, 0 },
2755         { 18, 0 },
2756         { 25, 0 },
2757         { 25, 1 },
2758         { 25, 2 },
2759         { 25, 3 },
2760         { 25, 4 },
2761         { 25, 5 },
2762         { 25, 6 },
2763         { 25, 7 },
2764         { 35, 7 },
2765         { 50, 7 },
2766         { 71, 7 },
2767         { 100, 7 }
2768 };
2769
2770 const struct nphy_txiqcal_ladder ladder_iq[] = {
2771         { 3, 0 },
2772         { 4, 0 },
2773         { 6, 0 },
2774         { 9, 0 },
2775         { 13, 0 },
2776         { 18, 0 },
2777         { 25, 0 },
2778         { 35, 0 },
2779         { 50, 0 },
2780         { 71, 0 },
2781         { 100, 0 },
2782         { 100, 1 },
2783         { 100, 2 },
2784         { 100, 3 },
2785         { 100, 4 },
2786         { 100, 5 },
2787         { 100, 6 },
2788         { 100, 7 }
2789 };
2790
2791 const u16 loscale[] = {
2792         256, 256, 271, 271,
2793         287, 256, 256, 271,
2794         271, 287, 287, 304,
2795         304, 256, 256, 271,
2796         271, 287, 287, 304,
2797         304, 322, 322, 341,
2798         341, 362, 362, 383,
2799         383, 256, 256, 271,
2800         271, 287, 287, 304,
2801         304, 322, 322, 256,
2802         256, 271, 271, 287,
2803         287, 304, 304, 322,
2804         322, 341, 341, 362,
2805         362, 256, 256, 271,
2806         271, 287, 287, 304,
2807         304, 322, 322, 256,
2808         256, 271, 271, 287,
2809         287, 304, 304, 322,
2810         322, 341, 341, 362,
2811         362, 256, 256, 271,
2812         271, 287, 287, 304,
2813         304, 322, 322, 341,
2814         341, 362, 362, 383,
2815         383, 406, 406, 430,
2816         430, 455, 455, 482,
2817         482, 511, 511, 541,
2818         541, 573, 573, 607,
2819         607, 643, 643, 681,
2820         681, 722, 722, 764,
2821         764, 810, 810, 858,
2822         858, 908, 908, 962,
2823         962, 1019, 1019, 256
2824 };
2825
2826 const u16 tbl_tx_iqlo_cal_loft_ladder_40[] = {
2827         0x0200, 0x0300, 0x0400, 0x0700,
2828         0x0900, 0x0c00, 0x1200, 0x1201,
2829         0x1202, 0x1203, 0x1204, 0x1205,
2830         0x1206, 0x1207, 0x1907, 0x2307,
2831         0x3207, 0x4707
2832 };
2833
2834 const u16 tbl_tx_iqlo_cal_loft_ladder_20[] = {
2835         0x0300, 0x0500, 0x0700, 0x0900,
2836         0x0d00, 0x1100, 0x1900, 0x1901,
2837         0x1902, 0x1903, 0x1904, 0x1905,
2838         0x1906, 0x1907, 0x2407, 0x3207,
2839         0x4607, 0x6407
2840 };
2841
2842 const u16 tbl_tx_iqlo_cal_iqimb_ladder_40[] = {
2843         0x0100, 0x0200, 0x0400, 0x0700,
2844         0x0900, 0x0c00, 0x1200, 0x1900,
2845         0x2300, 0x3200, 0x4700, 0x4701,
2846         0x4702, 0x4703, 0x4704, 0x4705,
2847         0x4706, 0x4707
2848 };
2849
2850 const u16 tbl_tx_iqlo_cal_iqimb_ladder_20[] = {
2851         0x0200, 0x0300, 0x0600, 0x0900,
2852         0x0d00, 0x1100, 0x1900, 0x2400,
2853         0x3200, 0x4600, 0x6400, 0x6401,
2854         0x6402, 0x6403, 0x6404, 0x6405,
2855         0x6406, 0x6407
2856 };
2857
2858 const u16 tbl_tx_iqlo_cal_startcoefs_nphyrev3[B43_NTAB_TX_IQLO_CAL_STARTCOEFS_REV3] = { };
2859
2860 const u16 tbl_tx_iqlo_cal_startcoefs[B43_NTAB_TX_IQLO_CAL_STARTCOEFS] = { };
2861
2862 const u16 tbl_tx_iqlo_cal_cmds_recal_nphyrev3[] = {
2863         0x8423, 0x8323, 0x8073, 0x8256,
2864         0x8045, 0x8223, 0x9423, 0x9323,
2865         0x9073, 0x9256, 0x9045, 0x9223
2866 };
2867
2868 const u16 tbl_tx_iqlo_cal_cmds_recal[] = {
2869         0x8101, 0x8253, 0x8053, 0x8234,
2870         0x8034, 0x9101, 0x9253, 0x9053,
2871         0x9234, 0x9034
2872 };
2873
2874 const u16 tbl_tx_iqlo_cal_cmds_fullcal[] = {
2875         0x8123, 0x8264, 0x8086, 0x8245,
2876         0x8056, 0x9123, 0x9264, 0x9086,
2877         0x9245, 0x9056
2878 };
2879
2880 const u16 tbl_tx_iqlo_cal_cmds_fullcal_nphyrev3[] = {
2881         0x8434, 0x8334, 0x8084, 0x8267,
2882         0x8056, 0x8234, 0x9434, 0x9334,
2883         0x9084, 0x9267, 0x9056, 0x9234
2884 };
2885
2886 const s16 tbl_tx_filter_coef_rev4[7][15] = {
2887         {  -377,   137,  -407,   208, -1527,
2888             956,    93,   186,    93,   230,
2889             -44,   230,    20,  -191,   201 },
2890         {   -77,    20,   -98,    49,   -93,
2891              60,    56,   111,    56,    26,
2892              -5,    26,    34,   -32,    34 },
2893         {  -360,   164,  -376,   164, -1533,
2894             576,   308,  -314,   308,   121,
2895             -73,   121,    91,   124,    91 },
2896         {  -295,   200,  -363,   142, -1391,
2897             826,   151,   301,   151,   151,
2898             301,   151,   602,  -752,   602 },
2899         {   -92,    58,   -96,    49,  -104,
2900              44,    17,    35,    17,    12,
2901              25,    12,    13,    27,    13 },
2902         {  -375,   136,  -399,   209, -1479,
2903             949,   130,   260,   130,   230,
2904             -44,   230,   201,  -191,   201 },
2905         { 0xed9,  0xc8, 0xe95,  0x8e, 0xa91,
2906           0x33a,  0x97, 0x12d,  0x97,  0x97,
2907           0x12d,  0x97, 0x25a, 0xd10, 0x25a }
2908 };
2909
2910 /* addr0,  addr1,  bmask,  shift */
2911 const struct nphy_rf_control_override_rev2 tbl_rf_control_override_rev2[] = {
2912         { 0x78, 0x78, 0x0038,  3 }, /* for field == 0x0002 (fls == 2) */
2913         { 0x7A, 0x7D, 0x0001,  0 }, /* for field == 0x0004 (fls == 3) */
2914         { 0x7A, 0x7D, 0x0002,  1 }, /* for field == 0x0008 (fls == 4) */
2915         { 0x7A, 0x7D, 0x0004,  2 }, /* for field == 0x0010 (fls == 5) */
2916         { 0x7A, 0x7D, 0x0030,  4 }, /* for field == 0x0020 (fls == 6) */
2917         { 0x7A, 0x7D, 0x00C0,  6 }, /* for field == 0x0040 (fls == 7) */
2918         { 0x7A, 0x7D, 0x0100,  8 }, /* for field == 0x0080 (fls == 8) */
2919         { 0x7A, 0x7D, 0x0200,  9 }, /* for field == 0x0100 (fls == 9) */
2920         { 0x78, 0x78, 0x0004,  2 }, /* for field == 0x0200 (fls == 10) */
2921         { 0x7B, 0x7E, 0x01FF,  0 }, /* for field == 0x0400 (fls == 11) */
2922         { 0x7C, 0x7F, 0x01FF,  0 }, /* for field == 0x0800 (fls == 12) */
2923         { 0x78, 0x78, 0x0100,  8 }, /* for field == 0x1000 (fls == 13) */
2924         { 0x78, 0x78, 0x0200,  9 }, /* for field == 0x2000 (fls == 14) */
2925         { 0x78, 0x78, 0xF000, 12 }  /* for field == 0x4000 (fls == 15) */
2926 };
2927
2928 /* val_mask, val_shift, en_addr0, val_addr0, en_addr1, val_addr1 */
2929 const struct nphy_rf_control_override_rev3 tbl_rf_control_override_rev3[] = {
2930         { 0x8000, 15, 0xE5, 0xF9, 0xE6, 0xFB }, /* field == 0x0001 (fls 1) */
2931         { 0x0001,  0, 0xE7, 0x7A, 0xEC, 0x7D }, /* field == 0x0002 (fls 2) */
2932         { 0x0002,  1, 0xE7, 0x7A, 0xEC, 0x7D }, /* field == 0x0004 (fls 3) */
2933         { 0x0004,  2, 0xE7, 0x7A, 0xEC, 0x7D }, /* field == 0x0008 (fls 4) */
2934         { 0x0016,  4, 0xE7, 0x7A, 0xEC, 0x7D }, /* field == 0x0010 (fls 5) */
2935         { 0x0020,  5, 0xE7, 0x7A, 0xEC, 0x7D }, /* field == 0x0020 (fls 6) */
2936         { 0x0040,  6, 0xE7, 0x7A, 0xEC, 0x7D }, /* field == 0x0040 (fls 7) */
2937         { 0x0080,  6, 0xE7, 0x7A, 0xEC, 0x7D }, /* field == 0x0080 (fls 8) */
2938         { 0x0100,  7, 0xE7, 0x7A, 0xEC, 0x7D }, /* field == 0x0100 (fls 9) */
2939         { 0x0007,  0, 0xE7, 0xF8, 0xEC, 0xFA }, /* field == 0x0200 (fls 10) */
2940         { 0x0070,  4, 0xE7, 0xF8, 0xEC, 0xFA }, /* field == 0x0400 (fls 11) */
2941         { 0xE000, 13, 0xE7, 0x7A, 0xEC, 0x7D }, /* field == 0x0800 (fls 12) */
2942         { 0xFFFF,  0, 0xE7, 0x7B, 0xEC, 0x7E }, /* field == 0x1000 (fls 13) */
2943         { 0xFFFF,  0, 0xE7, 0x7C, 0xEC, 0x7F }, /* field == 0x2000 (fls 14) */
2944         { 0x00C0,  6, 0xE7, 0xF9, 0xEC, 0xFB }  /* field == 0x4000 (fls 15) */
2945 };
2946
2947 static inline void assert_ntab_array_sizes(void)
2948 {
2949 #undef check
2950 #define check(table, size)      \
2951         BUILD_BUG_ON(ARRAY_SIZE(b43_ntab_##table) != B43_NTAB_##size##_SIZE)
2952
2953         check(adjustpower0, C0_ADJPLT);
2954         check(adjustpower1, C1_ADJPLT);
2955         check(bdi, BDI);
2956         check(channelest, CHANEST);
2957         check(estimatepowerlt0, C0_ESTPLT);
2958         check(estimatepowerlt1, C1_ESTPLT);
2959         check(framelookup, FRAMELT);
2960         check(framestruct, FRAMESTRUCT);
2961         check(gainctl0, C0_GAINCTL);
2962         check(gainctl1, C1_GAINCTL);
2963         check(intlevel, INTLEVEL);
2964         check(iqlt0, C0_IQLT);
2965         check(iqlt1, C1_IQLT);
2966         check(loftlt0, C0_LOFEEDTH);
2967         check(loftlt1, C1_LOFEEDTH);
2968         check(mcs, MCS);
2969         check(noisevar10, NOISEVAR10);
2970         check(noisevar11, NOISEVAR11);
2971         check(pilot, PILOT);
2972         check(pilotlt, PILOTLT);
2973         check(tdi20a0, TDI20A0);
2974         check(tdi20a1, TDI20A1);
2975         check(tdi40a0, TDI40A0);
2976         check(tdi40a1, TDI40A1);
2977         check(tdtrn, TDTRN);
2978         check(tmap, TMAP);
2979
2980 #undef check
2981 }
2982
2983 u32 b43_ntab_read(struct b43_wldev *dev, u32 offset)
2984 {
2985         u32 type, value;
2986
2987         type = offset & B43_NTAB_TYPEMASK;
2988         offset &= ~B43_NTAB_TYPEMASK;
2989         B43_WARN_ON(offset > 0xFFFF);
2990
2991         switch (type) {
2992         case B43_NTAB_8BIT:
2993                 b43_phy_write(dev, B43_NPHY_TABLE_ADDR, offset);
2994                 value = b43_phy_read(dev, B43_NPHY_TABLE_DATALO) & 0xFF;
2995                 break;
2996         case B43_NTAB_16BIT:
2997                 b43_phy_write(dev, B43_NPHY_TABLE_ADDR, offset);
2998                 value = b43_phy_read(dev, B43_NPHY_TABLE_DATALO);
2999                 break;
3000         case B43_NTAB_32BIT:
3001                 b43_phy_write(dev, B43_NPHY_TABLE_ADDR, offset);
3002                 value = b43_phy_read(dev, B43_NPHY_TABLE_DATAHI);
3003                 value <<= 16;
3004                 value |= b43_phy_read(dev, B43_NPHY_TABLE_DATALO);
3005                 break;
3006         default:
3007                 B43_WARN_ON(1);
3008                 value = 0;
3009         }
3010
3011         return value;
3012 }
3013
3014 void b43_ntab_read_bulk(struct b43_wldev *dev, u32 offset,
3015                          unsigned int nr_elements, void *_data)
3016 {
3017         u32 type;
3018         u8 *data = _data;
3019         unsigned int i;
3020
3021         type = offset & B43_NTAB_TYPEMASK;
3022         offset &= ~B43_NTAB_TYPEMASK;
3023         B43_WARN_ON(offset > 0xFFFF);
3024
3025         b43_phy_write(dev, B43_NPHY_TABLE_ADDR, offset);
3026
3027         for (i = 0; i < nr_elements; i++) {
3028                 switch (type) {
3029                 case B43_NTAB_8BIT:
3030                         *data = b43_phy_read(dev, B43_NPHY_TABLE_DATALO) & 0xFF;
3031                         data++;
3032                         break;
3033                 case B43_NTAB_16BIT:
3034                         *((u16 *)data) = b43_phy_read(dev, B43_NPHY_TABLE_DATALO);
3035                         data += 2;
3036                         break;
3037                 case B43_NTAB_32BIT:
3038                         *((u32 *)data) = b43_phy_read(dev, B43_NPHY_TABLE_DATAHI);
3039                         *((u32 *)data) <<= 16;
3040                         *((u32 *)data) |= b43_phy_read(dev, B43_NPHY_TABLE_DATALO);
3041                         data += 4;
3042                         break;
3043                 default:
3044                         B43_WARN_ON(1);
3045                 }
3046         }
3047 }
3048
3049 void b43_ntab_write(struct b43_wldev *dev, u32 offset, u32 value)
3050 {
3051         u32 type;
3052
3053         type = offset & B43_NTAB_TYPEMASK;
3054         offset &= 0xFFFF;
3055
3056         switch (type) {
3057         case B43_NTAB_8BIT:
3058                 B43_WARN_ON(value & ~0xFF);
3059                 b43_phy_write(dev, B43_NPHY_TABLE_ADDR, offset);
3060                 b43_phy_write(dev, B43_NPHY_TABLE_DATALO, value);
3061                 break;
3062         case B43_NTAB_16BIT:
3063                 B43_WARN_ON(value & ~0xFFFF);
3064                 b43_phy_write(dev, B43_NPHY_TABLE_ADDR, offset);
3065                 b43_phy_write(dev, B43_NPHY_TABLE_DATALO, value);
3066                 break;
3067         case B43_NTAB_32BIT:
3068                 b43_phy_write(dev, B43_NPHY_TABLE_ADDR, offset);
3069                 b43_phy_write(dev, B43_NPHY_TABLE_DATAHI, value >> 16);
3070                 b43_phy_write(dev, B43_NPHY_TABLE_DATALO, value & 0xFFFF);
3071                 break;
3072         default:
3073                 B43_WARN_ON(1);
3074         }
3075
3076         return;
3077
3078         /* Some compiletime assertions... */
3079         assert_ntab_array_sizes();
3080 }
3081
3082 void b43_ntab_write_bulk(struct b43_wldev *dev, u32 offset,
3083                           unsigned int nr_elements, const void *_data)
3084 {
3085         u32 type, value;
3086         const u8 *data = _data;
3087         unsigned int i;
3088
3089         type = offset & B43_NTAB_TYPEMASK;
3090         offset &= ~B43_NTAB_TYPEMASK;
3091         B43_WARN_ON(offset > 0xFFFF);
3092
3093         b43_phy_write(dev, B43_NPHY_TABLE_ADDR, offset);
3094
3095         for (i = 0; i < nr_elements; i++) {
3096                 switch (type) {
3097                 case B43_NTAB_8BIT:
3098                         value = *data;
3099                         data++;
3100                         B43_WARN_ON(value & ~0xFF);
3101                         b43_phy_write(dev, B43_NPHY_TABLE_DATALO, value);
3102                         break;
3103                 case B43_NTAB_16BIT:
3104                         value = *((u16 *)data);
3105                         data += 2;
3106                         B43_WARN_ON(value & ~0xFFFF);
3107                         b43_phy_write(dev, B43_NPHY_TABLE_DATALO, value);
3108                         break;
3109                 case B43_NTAB_32BIT:
3110                         value = *((u32 *)data);
3111                         data += 4;
3112                         b43_phy_write(dev, B43_NPHY_TABLE_DATAHI, value >> 16);
3113                         b43_phy_write(dev, B43_NPHY_TABLE_DATALO,
3114                                         value & 0xFFFF);
3115                         break;
3116                 default:
3117                         B43_WARN_ON(1);
3118                 }
3119         }
3120 }
3121
3122 #define ntab_upload(dev, offset, data) do { \
3123                 unsigned int i;                                         \
3124                 for (i = 0; i < (offset##_SIZE); i++)                   \
3125                         b43_ntab_write(dev, (offset) + i, (data)[i]);   \
3126         } while (0)
3127
3128 void b43_nphy_rev0_1_2_tables_init(struct b43_wldev *dev)
3129 {
3130         /* Static tables */
3131         ntab_upload(dev, B43_NTAB_FRAMESTRUCT, b43_ntab_framestruct);
3132         ntab_upload(dev, B43_NTAB_FRAMELT, b43_ntab_framelookup);
3133         ntab_upload(dev, B43_NTAB_TMAP, b43_ntab_tmap);
3134         ntab_upload(dev, B43_NTAB_TDTRN, b43_ntab_tdtrn);
3135         ntab_upload(dev, B43_NTAB_INTLEVEL, b43_ntab_intlevel);
3136         ntab_upload(dev, B43_NTAB_PILOT, b43_ntab_pilot);
3137         ntab_upload(dev, B43_NTAB_PILOTLT, b43_ntab_pilotlt);
3138         ntab_upload(dev, B43_NTAB_TDI20A0, b43_ntab_tdi20a0);
3139         ntab_upload(dev, B43_NTAB_TDI20A1, b43_ntab_tdi20a1);
3140         ntab_upload(dev, B43_NTAB_TDI40A0, b43_ntab_tdi40a0);
3141         ntab_upload(dev, B43_NTAB_TDI40A1, b43_ntab_tdi40a1);
3142         ntab_upload(dev, B43_NTAB_BDI, b43_ntab_bdi);
3143         ntab_upload(dev, B43_NTAB_CHANEST, b43_ntab_channelest);
3144         ntab_upload(dev, B43_NTAB_MCS, b43_ntab_mcs);
3145
3146         /* Volatile tables */
3147         ntab_upload(dev, B43_NTAB_NOISEVAR10, b43_ntab_noisevar10);
3148         ntab_upload(dev, B43_NTAB_NOISEVAR11, b43_ntab_noisevar11);
3149         ntab_upload(dev, B43_NTAB_C0_ESTPLT, b43_ntab_estimatepowerlt0);
3150         ntab_upload(dev, B43_NTAB_C1_ESTPLT, b43_ntab_estimatepowerlt1);
3151         ntab_upload(dev, B43_NTAB_C0_ADJPLT, b43_ntab_adjustpower0);
3152         ntab_upload(dev, B43_NTAB_C1_ADJPLT, b43_ntab_adjustpower1);
3153         ntab_upload(dev, B43_NTAB_C0_GAINCTL, b43_ntab_gainctl0);
3154         ntab_upload(dev, B43_NTAB_C1_GAINCTL, b43_ntab_gainctl1);
3155         ntab_upload(dev, B43_NTAB_C0_IQLT, b43_ntab_iqlt0);
3156         ntab_upload(dev, B43_NTAB_C1_IQLT, b43_ntab_iqlt1);
3157         ntab_upload(dev, B43_NTAB_C0_LOFEEDTH, b43_ntab_loftlt0);
3158         ntab_upload(dev, B43_NTAB_C1_LOFEEDTH, b43_ntab_loftlt1);
3159 }
3160
3161 void b43_nphy_rev3plus_tables_init(struct b43_wldev *dev)
3162 {
3163         /* Static tables */
3164         /* TODO */
3165
3166         /* Volatile tables */
3167         /* TODO */
3168 }