]> bbs.cooldavid.org Git - net-next-2.6.git/blame - drivers/net/wireless/b43/tables_nphy.c
b43: N-PHY: prepare for rev3+ channel tables
[net-next-2.6.git] / drivers / net / wireless / b43 / tables_nphy.c
CommitLineData
53a6e234
MB
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"
ef1a628d 27#include "phy_common.h"
3d0da751 28#include "phy_n.h"
53a6e234
MB
29
30
31struct 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
d1591314 44static const struct b2055_inittab_entry b2055_inittab [] = {
53a6e234
MB
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
273void b2055_upload_inittab(struct b43_wldev *dev,
274 bool ghz5, bool ignore_uploadflag)
275{
d1591314 276 const struct b2055_inittab_entry *e;
53a6e234
MB
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}
d1591314
MB
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) \
b15b3039
RM
321 .phy_regs.phy_bw1a = r0, \
322 .phy_regs.phy_bw2 = r1, \
323 .phy_regs.phy_bw3 = r2, \
324 .phy_regs.phy_bw4 = r3, \
325 .phy_regs.phy_bw5 = r4, \
326 .phy_regs.phy_bw6 = r5
d1591314 327
f2a6d6a0 328static const struct b43_nphy_channeltab_entry_rev2 b43_nphy_channeltab_rev2[] = {
d1591314
MB
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
f19ebe7d
RM
1323const struct b43_nphy_channeltab_entry_rev2 *
1324b43_nphy_get_chantabent_rev2(struct b43_wldev *dev, u8 channel)
d1591314 1325{
f19ebe7d 1326 const struct b43_nphy_channeltab_entry_rev2 *e;
d1591314
MB
1327 unsigned int i;
1328
f2a6d6a0
RM
1329 for (i = 0; i < ARRAY_SIZE(b43_nphy_channeltab_rev2); i++) {
1330 e = &(b43_nphy_channeltab_rev2[i]);
d1591314
MB
1331 if (e->channel == channel)
1332 return e;
1333 }
1334
1335 return NULL;
1336}
8ac919be 1337
f2a6d6a0
RM
1338static const struct b43_nphy_channeltab_entry_rev3 b43_nphy_channeltab_rev3[] = {
1339};
1340
1341const struct b43_nphy_channeltab_entry_rev3 *
1342b43_nphy_get_chantabent_rev3(struct b43_wldev *dev, u16 freq)
1343{
1344 const struct b43_nphy_channeltab_entry_rev3 *e;
1345 unsigned int i;
1346
1347 for (i = 0; i < ARRAY_SIZE(b43_nphy_channeltab_rev3); i++) {
1348 e = &(b43_nphy_channeltab_rev3[i]);
1349 if (e->freq == freq)
1350 return e;
1351 }
1352
1353 return NULL;
1354}
1355
8ac919be 1356
4772ae10 1357static const u8 b43_ntab_adjustpower0[] = {
8ac919be
MB
1358 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01,
1359 0x02, 0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x03,
1360 0x04, 0x04, 0x04, 0x04, 0x05, 0x05, 0x05, 0x05,
1361 0x06, 0x06, 0x06, 0x06, 0x07, 0x07, 0x07, 0x07,
1362 0x08, 0x08, 0x08, 0x08, 0x09, 0x09, 0x09, 0x09,
1363 0x0A, 0x0A, 0x0A, 0x0A, 0x0B, 0x0B, 0x0B, 0x0B,
1364 0x0C, 0x0C, 0x0C, 0x0C, 0x0D, 0x0D, 0x0D, 0x0D,
1365 0x0E, 0x0E, 0x0E, 0x0E, 0x0F, 0x0F, 0x0F, 0x0F,
1366 0x10, 0x10, 0x10, 0x10, 0x11, 0x11, 0x11, 0x11,
1367 0x12, 0x12, 0x12, 0x12, 0x13, 0x13, 0x13, 0x13,
1368 0x14, 0x14, 0x14, 0x14, 0x15, 0x15, 0x15, 0x15,
1369 0x16, 0x16, 0x16, 0x16, 0x17, 0x17, 0x17, 0x17,
1370 0x18, 0x18, 0x18, 0x18, 0x19, 0x19, 0x19, 0x19,
1371 0x1A, 0x1A, 0x1A, 0x1A, 0x1B, 0x1B, 0x1B, 0x1B,
1372 0x1C, 0x1C, 0x1C, 0x1C, 0x1D, 0x1D, 0x1D, 0x1D,
1373 0x1E, 0x1E, 0x1E, 0x1E, 0x1F, 0x1F, 0x1F, 0x1F,
1374};
1375
4772ae10 1376static const u8 b43_ntab_adjustpower1[] = {
8ac919be
MB
1377 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01,
1378 0x02, 0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x03,
1379 0x04, 0x04, 0x04, 0x04, 0x05, 0x05, 0x05, 0x05,
1380 0x06, 0x06, 0x06, 0x06, 0x07, 0x07, 0x07, 0x07,
1381 0x08, 0x08, 0x08, 0x08, 0x09, 0x09, 0x09, 0x09,
1382 0x0A, 0x0A, 0x0A, 0x0A, 0x0B, 0x0B, 0x0B, 0x0B,
1383 0x0C, 0x0C, 0x0C, 0x0C, 0x0D, 0x0D, 0x0D, 0x0D,
1384 0x0E, 0x0E, 0x0E, 0x0E, 0x0F, 0x0F, 0x0F, 0x0F,
1385 0x10, 0x10, 0x10, 0x10, 0x11, 0x11, 0x11, 0x11,
1386 0x12, 0x12, 0x12, 0x12, 0x13, 0x13, 0x13, 0x13,
1387 0x14, 0x14, 0x14, 0x14, 0x15, 0x15, 0x15, 0x15,
1388 0x16, 0x16, 0x16, 0x16, 0x17, 0x17, 0x17, 0x17,
1389 0x18, 0x18, 0x18, 0x18, 0x19, 0x19, 0x19, 0x19,
1390 0x1A, 0x1A, 0x1A, 0x1A, 0x1B, 0x1B, 0x1B, 0x1B,
1391 0x1C, 0x1C, 0x1C, 0x1C, 0x1D, 0x1D, 0x1D, 0x1D,
1392 0x1E, 0x1E, 0x1E, 0x1E, 0x1F, 0x1F, 0x1F, 0x1F,
1393};
1394
4772ae10 1395static const u16 b43_ntab_bdi[] = {
8ac919be
MB
1396 0x0070, 0x0126, 0x012C, 0x0246, 0x048D, 0x04D2,
1397};
1398
4772ae10 1399static const u32 b43_ntab_channelest[] = {
8ac919be
MB
1400 0x44444444, 0x44444444, 0x44444444, 0x44444444,
1401 0x44444444, 0x44444444, 0x44444444, 0x44444444,
1402 0x10101010, 0x10101010, 0x10101010, 0x10101010,
1403 0x10101010, 0x10101010, 0x10101010, 0x10101010,
1404 0x44444444, 0x44444444, 0x44444444, 0x44444444,
1405 0x44444444, 0x44444444, 0x44444444, 0x44444444,
1406 0x10101010, 0x10101010, 0x10101010, 0x10101010,
1407 0x10101010, 0x10101010, 0x10101010, 0x10101010,
1408 0x44444444, 0x44444444, 0x44444444, 0x44444444,
1409 0x44444444, 0x44444444, 0x44444444, 0x44444444,
1410 0x44444444, 0x44444444, 0x44444444, 0x44444444,
1411 0x44444444, 0x44444444, 0x44444444, 0x44444444,
1412 0x10101010, 0x10101010, 0x10101010, 0x10101010,
1413 0x10101010, 0x10101010, 0x10101010, 0x10101010,
1414 0x10101010, 0x10101010, 0x10101010, 0x10101010,
1415 0x10101010, 0x10101010, 0x10101010, 0x10101010,
1416 0x44444444, 0x44444444, 0x44444444, 0x44444444,
1417 0x44444444, 0x44444444, 0x44444444, 0x44444444,
1418 0x44444444, 0x44444444, 0x44444444, 0x44444444,
1419 0x44444444, 0x44444444, 0x44444444, 0x44444444,
1420 0x10101010, 0x10101010, 0x10101010, 0x10101010,
1421 0x10101010, 0x10101010, 0x10101010, 0x10101010,
1422 0x10101010, 0x10101010, 0x10101010, 0x10101010,
1423 0x10101010, 0x10101010, 0x10101010, 0x10101010,
1424};
1425
4772ae10 1426static const u8 b43_ntab_estimatepowerlt0[] = {
8ac919be
MB
1427 0x50, 0x4F, 0x4E, 0x4D, 0x4C, 0x4B, 0x4A, 0x49,
1428 0x48, 0x47, 0x46, 0x45, 0x44, 0x43, 0x42, 0x41,
1429 0x40, 0x3F, 0x3E, 0x3D, 0x3C, 0x3B, 0x3A, 0x39,
1430 0x38, 0x37, 0x36, 0x35, 0x34, 0x33, 0x32, 0x31,
1431 0x30, 0x2F, 0x2E, 0x2D, 0x2C, 0x2B, 0x2A, 0x29,
1432 0x28, 0x27, 0x26, 0x25, 0x24, 0x23, 0x22, 0x21,
1433 0x20, 0x1F, 0x1E, 0x1D, 0x1C, 0x1B, 0x1A, 0x19,
1434 0x18, 0x17, 0x16, 0x15, 0x14, 0x13, 0x12, 0x11,
1435};
1436
4772ae10 1437static const u8 b43_ntab_estimatepowerlt1[] = {
8ac919be
MB
1438 0x50, 0x4F, 0x4E, 0x4D, 0x4C, 0x4B, 0x4A, 0x49,
1439 0x48, 0x47, 0x46, 0x45, 0x44, 0x43, 0x42, 0x41,
1440 0x40, 0x3F, 0x3E, 0x3D, 0x3C, 0x3B, 0x3A, 0x39,
1441 0x38, 0x37, 0x36, 0x35, 0x34, 0x33, 0x32, 0x31,
1442 0x30, 0x2F, 0x2E, 0x2D, 0x2C, 0x2B, 0x2A, 0x29,
1443 0x28, 0x27, 0x26, 0x25, 0x24, 0x23, 0x22, 0x21,
1444 0x20, 0x1F, 0x1E, 0x1D, 0x1C, 0x1B, 0x1A, 0x19,
1445 0x18, 0x17, 0x16, 0x15, 0x14, 0x13, 0x12, 0x11,
1446};
1447
4772ae10 1448static const u8 b43_ntab_framelookup[] = {
8ac919be
MB
1449 0x02, 0x04, 0x14, 0x14, 0x03, 0x05, 0x16, 0x16,
1450 0x0A, 0x0C, 0x1C, 0x1C, 0x0B, 0x0D, 0x1E, 0x1E,
1451 0x06, 0x08, 0x18, 0x18, 0x07, 0x09, 0x1A, 0x1A,
1452 0x0E, 0x10, 0x20, 0x28, 0x0F, 0x11, 0x22, 0x2A,
1453};
1454
4772ae10 1455static const u32 b43_ntab_framestruct[] = {
8ac919be
MB
1456 0x08004A04, 0x00100000, 0x01000A05, 0x00100020,
1457 0x09804506, 0x00100030, 0x09804507, 0x00100030,
1458 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1459 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1460 0x08004A0C, 0x00100008, 0x01000A0D, 0x00100028,
1461 0x0980450E, 0x00100038, 0x0980450F, 0x00100038,
1462 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1463 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1464 0x00000A04, 0x00100000, 0x11008A05, 0x00100020,
1465 0x1980C506, 0x00100030, 0x21810506, 0x00100030,
1466 0x21810506, 0x00100030, 0x01800504, 0x00100030,
1467 0x11808505, 0x00100030, 0x29814507, 0x01100030,
1468 0x00000A04, 0x00100000, 0x11008A05, 0x00100020,
1469 0x21810506, 0x00100030, 0x21810506, 0x00100030,
1470 0x29814507, 0x01100030, 0x00000000, 0x00000000,
1471 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1472 0x00000A0C, 0x00100008, 0x11008A0D, 0x00100028,
1473 0x1980C50E, 0x00100038, 0x2181050E, 0x00100038,
1474 0x2181050E, 0x00100038, 0x0180050C, 0x00100038,
1475 0x1180850D, 0x00100038, 0x2981450F, 0x01100038,
1476 0x00000A0C, 0x00100008, 0x11008A0D, 0x00100028,
1477 0x2181050E, 0x00100038, 0x2181050E, 0x00100038,
1478 0x2981450F, 0x01100038, 0x00000000, 0x00000000,
1479 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1480 0x08004A04, 0x00100000, 0x01000A05, 0x00100020,
1481 0x1980C506, 0x00100030, 0x1980C506, 0x00100030,
1482 0x11808504, 0x00100030, 0x3981CA05, 0x00100030,
1483 0x29814507, 0x01100030, 0x00000000, 0x00000000,
1484 0x10008A04, 0x00100000, 0x3981CA05, 0x00100030,
1485 0x1980C506, 0x00100030, 0x29814507, 0x01100030,
1486 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1487 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1488 0x08004A0C, 0x00100008, 0x01000A0D, 0x00100028,
1489 0x1980C50E, 0x00100038, 0x1980C50E, 0x00100038,
1490 0x1180850C, 0x00100038, 0x3981CA0D, 0x00100038,
1491 0x2981450F, 0x01100038, 0x00000000, 0x00000000,
1492 0x10008A0C, 0x00100008, 0x3981CA0D, 0x00100038,
1493 0x1980C50E, 0x00100038, 0x2981450F, 0x01100038,
1494 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1495 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1496 0x40021404, 0x00100000, 0x02001405, 0x00100040,
1497 0x0B004A06, 0x01900060, 0x13008A06, 0x01900060,
1498 0x13008A06, 0x01900060, 0x43020A04, 0x00100060,
1499 0x1B00CA05, 0x00100060, 0x23010A07, 0x01500060,
1500 0x40021404, 0x00100000, 0x1A00D405, 0x00100040,
1501 0x13008A06, 0x01900060, 0x13008A06, 0x01900060,
1502 0x23010A07, 0x01500060, 0x00000000, 0x00000000,
1503 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1504 0x4002140C, 0x00100010, 0x0200140D, 0x00100050,
1505 0x0B004A0E, 0x01900070, 0x13008A0E, 0x01900070,
1506 0x13008A0E, 0x01900070, 0x43020A0C, 0x00100070,
1507 0x1B00CA0D, 0x00100070, 0x23010A0F, 0x01500070,
1508 0x4002140C, 0x00100010, 0x1A00D40D, 0x00100050,
1509 0x13008A0E, 0x01900070, 0x13008A0E, 0x01900070,
1510 0x23010A0F, 0x01500070, 0x00000000, 0x00000000,
1511 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1512 0x50029404, 0x00100000, 0x32019405, 0x00100040,
1513 0x0B004A06, 0x01900060, 0x0B004A06, 0x01900060,
1514 0x5B02CA04, 0x00100060, 0x3B01D405, 0x00100060,
1515 0x23010A07, 0x01500060, 0x00000000, 0x00000000,
1516 0x5802D404, 0x00100000, 0x3B01D405, 0x00100060,
1517 0x0B004A06, 0x01900060, 0x23010A07, 0x01500060,
1518 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1519 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1520 0x5002940C, 0x00100010, 0x3201940D, 0x00100050,
1521 0x0B004A0E, 0x01900070, 0x0B004A0E, 0x01900070,
1522 0x5B02CA0C, 0x00100070, 0x3B01D40D, 0x00100070,
1523 0x23010A0F, 0x01500070, 0x00000000, 0x00000000,
1524 0x5802D40C, 0x00100010, 0x3B01D40D, 0x00100070,
1525 0x0B004A0E, 0x01900070, 0x23010A0F, 0x01500070,
1526 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1527 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1528 0x40021404, 0x000F4800, 0x62031405, 0x00100040,
1529 0x53028A06, 0x01900060, 0x53028A07, 0x01900060,
1530 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1531 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1532 0x4002140C, 0x000F4810, 0x6203140D, 0x00100050,
1533 0x53028A0E, 0x01900070, 0x53028A0F, 0x01900070,
1534 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1535 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1536 0x00000A0C, 0x00100008, 0x11008A0D, 0x00100028,
1537 0x1980C50E, 0x00100038, 0x2181050E, 0x00100038,
1538 0x2181050E, 0x00100038, 0x0180050C, 0x00100038,
1539 0x1180850D, 0x00100038, 0x1181850D, 0x00100038,
1540 0x2981450F, 0x01100038, 0x00000000, 0x00000000,
1541 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1542 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1543 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1544 0x00000A0C, 0x00100008, 0x11008A0D, 0x00100028,
1545 0x2181050E, 0x00100038, 0x2181050E, 0x00100038,
1546 0x1181850D, 0x00100038, 0x2981450F, 0x01100038,
1547 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1548 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1549 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1550 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1551 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1552 0x08004A04, 0x00100000, 0x01000A05, 0x00100020,
1553 0x0180C506, 0x00100030, 0x0180C506, 0x00100030,
1554 0x2180C50C, 0x00100030, 0x49820A0D, 0x0016A130,
1555 0x41824A0D, 0x0016A130, 0x2981450F, 0x01100030,
1556 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1557 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1558 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1559 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1560 0x2000CA0C, 0x00100000, 0x49820A0D, 0x0016A130,
1561 0x1980C50E, 0x00100030, 0x41824A0D, 0x0016A130,
1562 0x2981450F, 0x01100030, 0x00000000, 0x00000000,
1563 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1564 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1565 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1566 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1567 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1568 0x4002140C, 0x00100010, 0x0200140D, 0x00100050,
1569 0x0B004A0E, 0x01900070, 0x13008A0E, 0x01900070,
1570 0x13008A0E, 0x01900070, 0x43020A0C, 0x00100070,
1571 0x1B00CA0D, 0x00100070, 0x1B014A0D, 0x00100070,
1572 0x23010A0F, 0x01500070, 0x00000000, 0x00000000,
1573 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1574 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1575 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1576 0x4002140C, 0x00100010, 0x1A00D40D, 0x00100050,
1577 0x13008A0E, 0x01900070, 0x13008A0E, 0x01900070,
1578 0x1B014A0D, 0x00100070, 0x23010A0F, 0x01500070,
1579 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1580 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1581 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1582 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1583 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1584 0x50029404, 0x00100000, 0x32019405, 0x00100040,
1585 0x03004A06, 0x01900060, 0x03004A06, 0x01900060,
1586 0x6B030A0C, 0x00100060, 0x4B02140D, 0x0016A160,
1587 0x4302540D, 0x0016A160, 0x23010A0F, 0x01500060,
1588 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1589 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1590 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1591 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1592 0x6B03140C, 0x00100060, 0x4B02140D, 0x0016A160,
1593 0x0B004A0E, 0x01900060, 0x4302540D, 0x0016A160,
1594 0x23010A0F, 0x01500060, 0x00000000, 0x00000000,
1595 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1596 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1597 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1598 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1599 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1600 0x40021404, 0x00100000, 0x1A00D405, 0x00100040,
1601 0x53028A06, 0x01900060, 0x5B02CA06, 0x01900060,
1602 0x5B02CA06, 0x01900060, 0x43020A04, 0x00100060,
1603 0x1B00CA05, 0x00100060, 0x53028A07, 0x0190C060,
1604 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1605 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1606 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1607 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1608 0x4002140C, 0x00100010, 0x1A00D40D, 0x00100050,
1609 0x53028A0E, 0x01900070, 0x5B02CA0E, 0x01900070,
1610 0x5B02CA0E, 0x01900070, 0x43020A0C, 0x00100070,
1611 0x1B00CA0D, 0x00100070, 0x53028A0F, 0x0190C070,
1612 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1613 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1614 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1615 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1616 0x40021404, 0x00100000, 0x1A00D405, 0x00100040,
1617 0x5B02CA06, 0x01900060, 0x5B02CA06, 0x01900060,
1618 0x53028A07, 0x0190C060, 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 0x4002140C, 0x00100010, 0x1A00D40D, 0x00100050,
1625 0x5B02CA0E, 0x01900070, 0x5B02CA0E, 0x01900070,
1626 0x53028A0F, 0x0190C070, 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 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1647 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1648 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1649 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1650 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1651 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1652 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1653 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1654 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1655 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1656 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1657 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1658 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1659 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1660 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1661 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1662 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1663 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1664};
1665
4772ae10 1666static const u32 b43_ntab_gainctl0[] = {
8ac919be
MB
1667 0x007F003F, 0x007E013F, 0x007D023E, 0x007C033E,
1668 0x007B043D, 0x007A053D, 0x0079063C, 0x0078073C,
1669 0x0077083B, 0x0076093B, 0x00750A3A, 0x00740B3A,
1670 0x00730C39, 0x00720D39, 0x00710E38, 0x00700F38,
1671 0x006F0037, 0x006E0137, 0x006D0236, 0x006C0336,
1672 0x006B0435, 0x006A0535, 0x00690634, 0x00680734,
1673 0x00670833, 0x00660933, 0x00650A32, 0x00640B32,
1674 0x00630C31, 0x00620D31, 0x00610E30, 0x00600F30,
1675 0x005F002F, 0x005E012F, 0x005D022E, 0x005C032E,
1676 0x005B042D, 0x005A052D, 0x0059062C, 0x0058072C,
1677 0x0057082B, 0x0056092B, 0x00550A2A, 0x00540B2A,
1678 0x00530C29, 0x00520D29, 0x00510E28, 0x00500F28,
1679 0x004F0027, 0x004E0127, 0x004D0226, 0x004C0326,
1680 0x004B0425, 0x004A0525, 0x00490624, 0x00480724,
1681 0x00470823, 0x00460923, 0x00450A22, 0x00440B22,
1682 0x00430C21, 0x00420D21, 0x00410E20, 0x00400F20,
1683 0x003F001F, 0x003E011F, 0x003D021E, 0x003C031E,
1684 0x003B041D, 0x003A051D, 0x0039061C, 0x0038071C,
1685 0x0037081B, 0x0036091B, 0x00350A1A, 0x00340B1A,
1686 0x00330C19, 0x00320D19, 0x00310E18, 0x00300F18,
1687 0x002F0017, 0x002E0117, 0x002D0216, 0x002C0316,
1688 0x002B0415, 0x002A0515, 0x00290614, 0x00280714,
1689 0x00270813, 0x00260913, 0x00250A12, 0x00240B12,
1690 0x00230C11, 0x00220D11, 0x00210E10, 0x00200F10,
1691 0x001F000F, 0x001E010F, 0x001D020E, 0x001C030E,
1692 0x001B040D, 0x001A050D, 0x0019060C, 0x0018070C,
1693 0x0017080B, 0x0016090B, 0x00150A0A, 0x00140B0A,
1694 0x00130C09, 0x00120D09, 0x00110E08, 0x00100F08,
1695 0x000F0007, 0x000E0107, 0x000D0206, 0x000C0306,
1696 0x000B0405, 0x000A0505, 0x00090604, 0x00080704,
1697 0x00070803, 0x00060903, 0x00050A02, 0x00040B02,
1698 0x00030C01, 0x00020D01, 0x00010E00, 0x00000F00,
1699};
1700
4772ae10 1701static const u32 b43_ntab_gainctl1[] = {
8ac919be
MB
1702 0x007F003F, 0x007E013F, 0x007D023E, 0x007C033E,
1703 0x007B043D, 0x007A053D, 0x0079063C, 0x0078073C,
1704 0x0077083B, 0x0076093B, 0x00750A3A, 0x00740B3A,
1705 0x00730C39, 0x00720D39, 0x00710E38, 0x00700F38,
1706 0x006F0037, 0x006E0137, 0x006D0236, 0x006C0336,
1707 0x006B0435, 0x006A0535, 0x00690634, 0x00680734,
1708 0x00670833, 0x00660933, 0x00650A32, 0x00640B32,
1709 0x00630C31, 0x00620D31, 0x00610E30, 0x00600F30,
1710 0x005F002F, 0x005E012F, 0x005D022E, 0x005C032E,
1711 0x005B042D, 0x005A052D, 0x0059062C, 0x0058072C,
1712 0x0057082B, 0x0056092B, 0x00550A2A, 0x00540B2A,
1713 0x00530C29, 0x00520D29, 0x00510E28, 0x00500F28,
1714 0x004F0027, 0x004E0127, 0x004D0226, 0x004C0326,
1715 0x004B0425, 0x004A0525, 0x00490624, 0x00480724,
1716 0x00470823, 0x00460923, 0x00450A22, 0x00440B22,
1717 0x00430C21, 0x00420D21, 0x00410E20, 0x00400F20,
1718 0x003F001F, 0x003E011F, 0x003D021E, 0x003C031E,
1719 0x003B041D, 0x003A051D, 0x0039061C, 0x0038071C,
1720 0x0037081B, 0x0036091B, 0x00350A1A, 0x00340B1A,
1721 0x00330C19, 0x00320D19, 0x00310E18, 0x00300F18,
1722 0x002F0017, 0x002E0117, 0x002D0216, 0x002C0316,
1723 0x002B0415, 0x002A0515, 0x00290614, 0x00280714,
1724 0x00270813, 0x00260913, 0x00250A12, 0x00240B12,
1725 0x00230C11, 0x00220D11, 0x00210E10, 0x00200F10,
1726 0x001F000F, 0x001E010F, 0x001D020E, 0x001C030E,
1727 0x001B040D, 0x001A050D, 0x0019060C, 0x0018070C,
1728 0x0017080B, 0x0016090B, 0x00150A0A, 0x00140B0A,
1729 0x00130C09, 0x00120D09, 0x00110E08, 0x00100F08,
1730 0x000F0007, 0x000E0107, 0x000D0206, 0x000C0306,
1731 0x000B0405, 0x000A0505, 0x00090604, 0x00080704,
1732 0x00070803, 0x00060903, 0x00050A02, 0x00040B02,
1733 0x00030C01, 0x00020D01, 0x00010E00, 0x00000F00,
1734};
1735
4772ae10 1736static const u32 b43_ntab_intlevel[] = {
8ac919be
MB
1737 0x00802070, 0x0671188D, 0x0A60192C, 0x0A300E46,
1738 0x00C1188D, 0x080024D2, 0x00000070,
1739};
1740
4772ae10 1741static const u32 b43_ntab_iqlt0[] = {
8ac919be
MB
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 0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F,
1757 0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F,
1758 0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F,
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};
1775
4772ae10 1776static const u32 b43_ntab_iqlt1[] = {
8ac919be
MB
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 0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F,
1792 0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F,
1793 0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F,
1794 0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F,
1795 0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F,
1796 0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F,
1797 0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F,
1798 0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F,
1799 0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F,
1800 0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F,
1801 0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F,
1802 0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F,
1803 0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F,
1804 0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F,
1805 0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F,
1806 0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F,
1807 0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F,
1808 0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F,
1809};
1810
4772ae10 1811static const u16 b43_ntab_loftlt0[] = {
8ac919be
MB
1812 0x0000, 0x0101, 0x0002, 0x0103, 0x0000, 0x0101,
1813 0x0002, 0x0103, 0x0000, 0x0101, 0x0002, 0x0103,
1814 0x0000, 0x0101, 0x0002, 0x0103, 0x0000, 0x0101,
1815 0x0002, 0x0103, 0x0000, 0x0101, 0x0002, 0x0103,
1816 0x0000, 0x0101, 0x0002, 0x0103, 0x0000, 0x0101,
1817 0x0002, 0x0103, 0x0000, 0x0101, 0x0002, 0x0103,
1818 0x0000, 0x0101, 0x0002, 0x0103, 0x0000, 0x0101,
1819 0x0002, 0x0103, 0x0000, 0x0101, 0x0002, 0x0103,
1820 0x0000, 0x0101, 0x0002, 0x0103, 0x0000, 0x0101,
1821 0x0002, 0x0103, 0x0000, 0x0101, 0x0002, 0x0103,
1822 0x0000, 0x0101, 0x0002, 0x0103, 0x0000, 0x0101,
1823 0x0002, 0x0103, 0x0000, 0x0101, 0x0002, 0x0103,
1824 0x0000, 0x0101, 0x0002, 0x0103, 0x0000, 0x0101,
1825 0x0002, 0x0103, 0x0000, 0x0101, 0x0002, 0x0103,
1826 0x0000, 0x0101, 0x0002, 0x0103, 0x0000, 0x0101,
1827 0x0002, 0x0103, 0x0000, 0x0101, 0x0002, 0x0103,
1828 0x0000, 0x0101, 0x0002, 0x0103, 0x0000, 0x0101,
1829 0x0002, 0x0103, 0x0000, 0x0101, 0x0002, 0x0103,
1830 0x0000, 0x0101, 0x0002, 0x0103, 0x0000, 0x0101,
1831 0x0002, 0x0103, 0x0000, 0x0101, 0x0002, 0x0103,
1832 0x0000, 0x0101, 0x0002, 0x0103, 0x0000, 0x0101,
1833 0x0002, 0x0103,
1834};
1835
4772ae10 1836static const u16 b43_ntab_loftlt1[] = {
8ac919be
MB
1837 0x0000, 0x0101, 0x0002, 0x0103, 0x0000, 0x0101,
1838 0x0002, 0x0103, 0x0000, 0x0101, 0x0002, 0x0103,
1839 0x0000, 0x0101, 0x0002, 0x0103, 0x0000, 0x0101,
1840 0x0002, 0x0103, 0x0000, 0x0101, 0x0002, 0x0103,
1841 0x0000, 0x0101, 0x0002, 0x0103, 0x0000, 0x0101,
1842 0x0002, 0x0103, 0x0000, 0x0101, 0x0002, 0x0103,
1843 0x0000, 0x0101, 0x0002, 0x0103, 0x0000, 0x0101,
1844 0x0002, 0x0103, 0x0000, 0x0101, 0x0002, 0x0103,
1845 0x0000, 0x0101, 0x0002, 0x0103, 0x0000, 0x0101,
1846 0x0002, 0x0103, 0x0000, 0x0101, 0x0002, 0x0103,
1847 0x0000, 0x0101, 0x0002, 0x0103, 0x0000, 0x0101,
1848 0x0002, 0x0103, 0x0000, 0x0101, 0x0002, 0x0103,
1849 0x0000, 0x0101, 0x0002, 0x0103, 0x0000, 0x0101,
1850 0x0002, 0x0103, 0x0000, 0x0101, 0x0002, 0x0103,
1851 0x0000, 0x0101, 0x0002, 0x0103, 0x0000, 0x0101,
1852 0x0002, 0x0103, 0x0000, 0x0101, 0x0002, 0x0103,
1853 0x0000, 0x0101, 0x0002, 0x0103, 0x0000, 0x0101,
1854 0x0002, 0x0103, 0x0000, 0x0101, 0x0002, 0x0103,
1855 0x0000, 0x0101, 0x0002, 0x0103, 0x0000, 0x0101,
1856 0x0002, 0x0103, 0x0000, 0x0101, 0x0002, 0x0103,
1857 0x0000, 0x0101, 0x0002, 0x0103, 0x0000, 0x0101,
1858 0x0002, 0x0103,
1859};
1860
4772ae10 1861static const u8 b43_ntab_mcs[] = {
8ac919be
MB
1862 0x00, 0x08, 0x0A, 0x10, 0x12, 0x19, 0x1A, 0x1C,
1863 0x40, 0x48, 0x4A, 0x50, 0x52, 0x59, 0x5A, 0x5C,
1864 0x80, 0x88, 0x8A, 0x90, 0x92, 0x99, 0x9A, 0x9C,
1865 0xC0, 0xC8, 0xCA, 0xD0, 0xD2, 0xD9, 0xDA, 0xDC,
1866 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1867 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1868 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1869 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1870 0x00, 0x01, 0x02, 0x04, 0x08, 0x09, 0x0A, 0x0C,
1871 0x10, 0x11, 0x12, 0x14, 0x18, 0x19, 0x1A, 0x1C,
1872 0x20, 0x21, 0x22, 0x24, 0x40, 0x41, 0x42, 0x44,
1873 0x48, 0x49, 0x4A, 0x4C, 0x50, 0x51, 0x52, 0x54,
1874 0x58, 0x59, 0x5A, 0x5C, 0x60, 0x61, 0x62, 0x64,
1875 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1876 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1877 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1878};
1879
4772ae10 1880static const u32 b43_ntab_noisevar10[] = {
8ac919be
MB
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 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
1928 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
1929 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
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};
1946
4772ae10 1947static const u32 b43_ntab_noisevar11[] = {
8ac919be
MB
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 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
1995 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
1996 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
1997 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
1998 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
1999 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
2000 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
2001 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
2002 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
2003 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
2004 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
2005 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
2006 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
2007 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
2008 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
2009 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
2010 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
2011 0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
2012};
2013
4772ae10 2014static const u16 b43_ntab_pilot[] = {
8ac919be
MB
2015 0xFF08, 0xFF08, 0xFF08, 0xFF08, 0xFF08, 0xFF08,
2016 0xFF08, 0xFF08, 0x80D5, 0x80D5, 0x80D5, 0x80D5,
2017 0x80D5, 0x80D5, 0x80D5, 0x80D5, 0xFF0A, 0xFF82,
2018 0xFFA0, 0xFF28, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
2019 0xFF82, 0xFFA0, 0xFF28, 0xFF0A, 0xFFFF, 0xFFFF,
2020 0xFFFF, 0xFFFF, 0xF83F, 0xFA1F, 0xFA97, 0xFAB5,
2021 0xF2BD, 0xF0BF, 0xFFFF, 0xFFFF, 0xF017, 0xF815,
2022 0xF215, 0xF095, 0xF035, 0xF01D, 0xFFFF, 0xFFFF,
2023 0xFF08, 0xFF02, 0xFF80, 0xFF20, 0xFF08, 0xFF02,
2024 0xFF80, 0xFF20, 0xF01F, 0xF817, 0xFA15, 0xF295,
2025 0xF0B5, 0xF03D, 0xFFFF, 0xFFFF, 0xF82A, 0xFA0A,
2026 0xFA82, 0xFAA0, 0xF2A8, 0xF0AA, 0xFFFF, 0xFFFF,
2027 0xF002, 0xF800, 0xF200, 0xF080, 0xF020, 0xF008,
2028 0xFFFF, 0xFFFF, 0xF00A, 0xF802, 0xFA00, 0xF280,
2029 0xF0A0, 0xF028, 0xFFFF, 0xFFFF,
2030};
2031
4772ae10 2032static const u32 b43_ntab_pilotlt[] = {
8ac919be
MB
2033 0x76540123, 0x62407351, 0x76543201, 0x76540213,
2034 0x76540123, 0x76430521,
2035};
2036
4772ae10 2037static const u32 b43_ntab_tdi20a0[] = {
8ac919be
MB
2038 0x00091226, 0x000A1429, 0x000B56AD, 0x000C58B0,
2039 0x000D5AB3, 0x000E9CB6, 0x000F9EBA, 0x0000C13D,
2040 0x00020301, 0x00030504, 0x00040708, 0x0005090B,
2041 0x00064B8E, 0x00095291, 0x000A5494, 0x000B9718,
2042 0x000C9927, 0x000D9B2A, 0x000EDD2E, 0x000FDF31,
2043 0x000101B4, 0x000243B7, 0x000345BB, 0x000447BE,
2044 0x00058982, 0x00068C05, 0x00099309, 0x000A950C,
2045 0x000BD78F, 0x000CD992, 0x000DDB96, 0x000F1D99,
2046 0x00005FA8, 0x0001422C, 0x0002842F, 0x00038632,
2047 0x00048835, 0x0005CA38, 0x0006CCBC, 0x0009D3BF,
2048 0x000B1603, 0x000C1806, 0x000D1A0A, 0x000E1C0D,
2049 0x000F5E10, 0x00008093, 0x00018297, 0x0002C49A,
2050 0x0003C680, 0x0004C880, 0x00060B00, 0x00070D00,
2051 0x00000000, 0x00000000, 0x00000000,
2052};
2053
4772ae10 2054static const u32 b43_ntab_tdi20a1[] = {
8ac919be
MB
2055 0x00014B26, 0x00028D29, 0x000393AD, 0x00049630,
2056 0x0005D833, 0x0006DA36, 0x00099C3A, 0x000A9E3D,
2057 0x000BC081, 0x000CC284, 0x000DC488, 0x000F068B,
2058 0x0000488E, 0x00018B91, 0x0002D214, 0x0003D418,
2059 0x0004D6A7, 0x000618AA, 0x00071AAE, 0x0009DCB1,
2060 0x000B1EB4, 0x000C0137, 0x000D033B, 0x000E053E,
2061 0x000F4702, 0x00008905, 0x00020C09, 0x0003128C,
2062 0x0004148F, 0x00051712, 0x00065916, 0x00091B19,
2063 0x000A1D28, 0x000B5F2C, 0x000C41AF, 0x000D43B2,
2064 0x000E85B5, 0x000F87B8, 0x0000C9BC, 0x00024CBF,
2065 0x00035303, 0x00045506, 0x0005978A, 0x0006998D,
2066 0x00095B90, 0x000A5D93, 0x000B9F97, 0x000C821A,
2067 0x000D8400, 0x000EC600, 0x000FC800, 0x00010A00,
2068 0x00000000, 0x00000000, 0x00000000,
2069};
2070
4772ae10 2071static const u32 b43_ntab_tdi40a0[] = {
8ac919be
MB
2072 0x0011A346, 0x00136CCF, 0x0014F5D9, 0x001641E2,
2073 0x0017CB6B, 0x00195475, 0x001B2383, 0x001CAD0C,
2074 0x001E7616, 0x0000821F, 0x00020BA8, 0x0003D4B2,
2075 0x00056447, 0x00072DD0, 0x0008B6DA, 0x000A02E3,
2076 0x000B8C6C, 0x000D15F6, 0x0011E484, 0x0013AE0D,
2077 0x00153717, 0x00168320, 0x00180CA9, 0x00199633,
2078 0x001B6548, 0x001CEED1, 0x001EB7DB, 0x0000C3E4,
2079 0x00024D6D, 0x000416F7, 0x0005A585, 0x00076F0F,
2080 0x0008F818, 0x000A4421, 0x000BCDAB, 0x000D9734,
2081 0x00122649, 0x0013EFD2, 0x001578DC, 0x0016C4E5,
2082 0x00184E6E, 0x001A17F8, 0x001BA686, 0x001D3010,
2083 0x001EF999, 0x00010522, 0x00028EAC, 0x00045835,
2084 0x0005E74A, 0x0007B0D3, 0x00093A5D, 0x000A85E6,
2085 0x000C0F6F, 0x000DD8F9, 0x00126787, 0x00143111,
2086 0x0015BA9A, 0x00170623, 0x00188FAD, 0x001A5936,
2087 0x001BE84B, 0x001DB1D4, 0x001F3B5E, 0x000146E7,
2088 0x00031070, 0x000499FA, 0x00062888, 0x0007F212,
2089 0x00097B9B, 0x000AC7A4, 0x000C50AE, 0x000E1A37,
2090 0x0012A94C, 0x001472D5, 0x0015FC5F, 0x00174868,
2091 0x0018D171, 0x001A9AFB, 0x001C2989, 0x001DF313,
2092 0x001F7C9C, 0x000188A5, 0x000351AF, 0x0004DB38,
2093 0x0006AA4D, 0x000833D7, 0x0009BD60, 0x000B0969,
2094 0x000C9273, 0x000E5BFC, 0x00132A8A, 0x0014B414,
2095 0x00163D9D, 0x001789A6, 0x001912B0, 0x001ADC39,
2096 0x001C6BCE, 0x001E34D8, 0x001FBE61, 0x0001CA6A,
2097 0x00039374, 0x00051CFD, 0x0006EC0B, 0x00087515,
2098 0x0009FE9E, 0x000B4AA7, 0x000CD3B1, 0x000E9D3A,
2099 0x00000000, 0x00000000,
2100};
2101
4772ae10 2102static const u32 b43_ntab_tdi40a1[] = {
8ac919be
MB
2103 0x001EDB36, 0x000129CA, 0x0002B353, 0x00047CDD,
2104 0x0005C8E6, 0x000791EF, 0x00091BF9, 0x000AAA07,
2105 0x000C3391, 0x000DFD1A, 0x00120923, 0x0013D22D,
2106 0x00155C37, 0x0016EACB, 0x00187454, 0x001A3DDE,
2107 0x001B89E7, 0x001D12F0, 0x001F1CFA, 0x00016B88,
2108 0x00033492, 0x0004BE1B, 0x00060A24, 0x0007D32E,
2109 0x00095D38, 0x000AEC4C, 0x000C7555, 0x000E3EDF,
2110 0x00124AE8, 0x001413F1, 0x0015A37B, 0x00172C89,
2111 0x0018B593, 0x001A419C, 0x001BCB25, 0x001D942F,
2112 0x001F63B9, 0x0001AD4D, 0x00037657, 0x0004C260,
2113 0x00068BE9, 0x000814F3, 0x0009A47C, 0x000B2D8A,
2114 0x000CB694, 0x000E429D, 0x00128C26, 0x001455B0,
2115 0x0015E4BA, 0x00176E4E, 0x0018F758, 0x001A8361,
2116 0x001C0CEA, 0x001DD674, 0x001FA57D, 0x0001EE8B,
2117 0x0003B795, 0x0005039E, 0x0006CD27, 0x000856B1,
2118 0x0009E5C6, 0x000B6F4F, 0x000CF859, 0x000E8462,
2119 0x00130DEB, 0x00149775, 0x00162603, 0x0017AF8C,
2120 0x00193896, 0x001AC49F, 0x001C4E28, 0x001E17B2,
2121 0x0000A6C7, 0x00023050, 0x0003F9DA, 0x00054563,
2122 0x00070EEC, 0x00089876, 0x000A2704, 0x000BB08D,
2123 0x000D3A17, 0x001185A0, 0x00134F29, 0x0014D8B3,
2124 0x001667C8, 0x0017F151, 0x00197ADB, 0x001B0664,
2125 0x001C8FED, 0x001E5977, 0x0000E805, 0x0002718F,
2126 0x00043B18, 0x000586A1, 0x0007502B, 0x0008D9B4,
2127 0x000A68C9, 0x000BF252, 0x000DBBDC, 0x0011C7E5,
2128 0x001390EE, 0x00151A78, 0x0016A906, 0x00183290,
2129 0x0019BC19, 0x001B4822, 0x001CD12C, 0x001E9AB5,
2130 0x00000000, 0x00000000,
2131};
2132
4772ae10 2133static const u32 b43_ntab_tdtrn[] = {
8ac919be
MB
2134 0x061C061C, 0x0050EE68, 0xF592FE36, 0xFE5212F6,
2135 0x00000C38, 0xFE5212F6, 0xF592FE36, 0x0050EE68,
2136 0x061C061C, 0xEE680050, 0xFE36F592, 0x12F6FE52,
2137 0x0C380000, 0x12F6FE52, 0xFE36F592, 0xEE680050,
2138 0x061C061C, 0x0050EE68, 0xF592FE36, 0xFE5212F6,
2139 0x00000C38, 0xFE5212F6, 0xF592FE36, 0x0050EE68,
2140 0x061C061C, 0xEE680050, 0xFE36F592, 0x12F6FE52,
2141 0x0C380000, 0x12F6FE52, 0xFE36F592, 0xEE680050,
2142 0x05E305E3, 0x004DEF0C, 0xF5F3FE47, 0xFE611246,
2143 0x00000BC7, 0xFE611246, 0xF5F3FE47, 0x004DEF0C,
2144 0x05E305E3, 0xEF0C004D, 0xFE47F5F3, 0x1246FE61,
2145 0x0BC70000, 0x1246FE61, 0xFE47F5F3, 0xEF0C004D,
2146 0x05E305E3, 0x004DEF0C, 0xF5F3FE47, 0xFE611246,
2147 0x00000BC7, 0xFE611246, 0xF5F3FE47, 0x004DEF0C,
2148 0x05E305E3, 0xEF0C004D, 0xFE47F5F3, 0x1246FE61,
2149 0x0BC70000, 0x1246FE61, 0xFE47F5F3, 0xEF0C004D,
2150 0xFA58FA58, 0xF895043B, 0xFF4C09C0, 0xFBC6FFA8,
2151 0xFB84F384, 0x0798F6F9, 0x05760122, 0x058409F6,
2152 0x0B500000, 0x05B7F542, 0x08860432, 0x06DDFEE7,
2153 0xFB84F384, 0xF9D90664, 0xF7E8025C, 0x00FFF7BD,
2154 0x05A805A8, 0xF7BD00FF, 0x025CF7E8, 0x0664F9D9,
2155 0xF384FB84, 0xFEE706DD, 0x04320886, 0xF54205B7,
2156 0x00000B50, 0x09F60584, 0x01220576, 0xF6F90798,
2157 0xF384FB84, 0xFFA8FBC6, 0x09C0FF4C, 0x043BF895,
2158 0x02D402D4, 0x07DE0270, 0xFC96079C, 0xF90AFE94,
2159 0xFE00FF2C, 0x02D4065D, 0x092A0096, 0x0014FBB8,
2160 0xFD2CFD2C, 0x076AFB3C, 0x0096F752, 0xF991FD87,
2161 0xFB2C0200, 0xFEB8F960, 0x08E0FC96, 0x049802A8,
2162 0xFD2CFD2C, 0x02A80498, 0xFC9608E0, 0xF960FEB8,
2163 0x0200FB2C, 0xFD87F991, 0xF7520096, 0xFB3C076A,
2164 0xFD2CFD2C, 0xFBB80014, 0x0096092A, 0x065D02D4,
2165 0xFF2CFE00, 0xFE94F90A, 0x079CFC96, 0x027007DE,
2166 0x02D402D4, 0x027007DE, 0x079CFC96, 0xFE94F90A,
2167 0xFF2CFE00, 0x065D02D4, 0x0096092A, 0xFBB80014,
2168 0xFD2CFD2C, 0xFB3C076A, 0xF7520096, 0xFD87F991,
2169 0x0200FB2C, 0xF960FEB8, 0xFC9608E0, 0x02A80498,
2170 0xFD2CFD2C, 0x049802A8, 0x08E0FC96, 0xFEB8F960,
2171 0xFB2C0200, 0xF991FD87, 0x0096F752, 0x076AFB3C,
2172 0xFD2CFD2C, 0x0014FBB8, 0x092A0096, 0x02D4065D,
2173 0xFE00FF2C, 0xF90AFE94, 0xFC96079C, 0x07DE0270,
2174 0x00000000, 0x00000000, 0x00000000, 0x00000000,
2175 0x00000000, 0x00000000, 0x00000000, 0x00000000,
2176 0x00000000, 0x00000000, 0x00000000, 0x00000000,
2177 0x00000000, 0x00000000, 0x00000000, 0x00000000,
2178 0x00000000, 0x00000000, 0x00000000, 0x00000000,
2179 0x00000000, 0x00000000, 0x00000000, 0x00000000,
2180 0x00000000, 0x00000000, 0x00000000, 0x00000000,
2181 0x00000000, 0x00000000, 0x00000000, 0x00000000,
2182 0x00000000, 0x00000000, 0x00000000, 0x00000000,
2183 0x00000000, 0x00000000, 0x00000000, 0x00000000,
2184 0x00000000, 0x00000000, 0x00000000, 0x00000000,
2185 0x00000000, 0x00000000, 0x00000000, 0x00000000,
2186 0x00000000, 0x00000000, 0x00000000, 0x00000000,
2187 0x00000000, 0x00000000, 0x00000000, 0x00000000,
2188 0x00000000, 0x00000000, 0x00000000, 0x00000000,
2189 0x00000000, 0x00000000, 0x00000000, 0x00000000,
2190 0x00000000, 0x00000000, 0x00000000, 0x00000000,
2191 0x00000000, 0x00000000, 0x00000000, 0x00000000,
2192 0x00000000, 0x00000000, 0x00000000, 0x00000000,
2193 0x00000000, 0x00000000, 0x00000000, 0x00000000,
2194 0x00000000, 0x00000000, 0x00000000, 0x00000000,
2195 0x00000000, 0x00000000, 0x00000000, 0x00000000,
2196 0x00000000, 0x00000000, 0x00000000, 0x00000000,
2197 0x00000000, 0x00000000, 0x00000000, 0x00000000,
2198 0x062A0000, 0xFEFA0759, 0x08B80908, 0xF396FC2D,
2199 0xF9D6045C, 0xFC4EF608, 0xF748F596, 0x07B207BF,
2200 0x062A062A, 0xF84EF841, 0xF748F596, 0x03B209F8,
2201 0xF9D6045C, 0x0C6A03D3, 0x08B80908, 0x0106F8A7,
2202 0x062A0000, 0xFEFAF8A7, 0x08B8F6F8, 0xF39603D3,
2203 0xF9D6FBA4, 0xFC4E09F8, 0xF7480A6A, 0x07B2F841,
2204 0x062AF9D6, 0xF84E07BF, 0xF7480A6A, 0x03B2F608,
2205 0xF9D6FBA4, 0x0C6AFC2D, 0x08B8F6F8, 0x01060759,
2206 0x062A0000, 0xFEFA0759, 0x08B80908, 0xF396FC2D,
2207 0xF9D6045C, 0xFC4EF608, 0xF748F596, 0x07B207BF,
2208 0x062A062A, 0xF84EF841, 0xF748F596, 0x03B209F8,
2209 0xF9D6045C, 0x0C6A03D3, 0x08B80908, 0x0106F8A7,
2210 0x062A0000, 0xFEFAF8A7, 0x08B8F6F8, 0xF39603D3,
2211 0xF9D6FBA4, 0xFC4E09F8, 0xF7480A6A, 0x07B2F841,
2212 0x062AF9D6, 0xF84E07BF, 0xF7480A6A, 0x03B2F608,
2213 0xF9D6FBA4, 0x0C6AFC2D, 0x08B8F6F8, 0x01060759,
2214 0x061C061C, 0xFF30009D, 0xFFB21141, 0xFD87FB54,
2215 0xF65DFE59, 0x02EEF99E, 0x0166F03C, 0xFFF809B6,
2216 0x000008A4, 0x000AF42B, 0x00EFF577, 0xFA840BF2,
2217 0xFC02FF51, 0x08260F67, 0xFFF0036F, 0x0842F9C3,
2218 0x00000000, 0x063DF7BE, 0xFC910010, 0xF099F7DA,
2219 0x00AF03FE, 0xF40E057C, 0x0A89FF11, 0x0BD5FFF6,
2220 0xF75C0000, 0xF64A0008, 0x0FC4FE9A, 0x0662FD12,
2221 0x01A709A3, 0x04AC0279, 0xEEBF004E, 0xFF6300D0,
2222 0xF9E4F9E4, 0x00D0FF63, 0x004EEEBF, 0x027904AC,
2223 0x09A301A7, 0xFD120662, 0xFE9A0FC4, 0x0008F64A,
2224 0x0000F75C, 0xFFF60BD5, 0xFF110A89, 0x057CF40E,
2225 0x03FE00AF, 0xF7DAF099, 0x0010FC91, 0xF7BE063D,
2226 0x00000000, 0xF9C30842, 0x036FFFF0, 0x0F670826,
2227 0xFF51FC02, 0x0BF2FA84, 0xF57700EF, 0xF42B000A,
2228 0x08A40000, 0x09B6FFF8, 0xF03C0166, 0xF99E02EE,
2229 0xFE59F65D, 0xFB54FD87, 0x1141FFB2, 0x009DFF30,
2230 0x05E30000, 0xFF060705, 0x085408A0, 0xF425FC59,
2231 0xFA1D042A, 0xFC78F67A, 0xF7ACF60E, 0x075A0766,
2232 0x05E305E3, 0xF8A6F89A, 0xF7ACF60E, 0x03880986,
2233 0xFA1D042A, 0x0BDB03A7, 0x085408A0, 0x00FAF8FB,
2234 0x05E30000, 0xFF06F8FB, 0x0854F760, 0xF42503A7,
2235 0xFA1DFBD6, 0xFC780986, 0xF7AC09F2, 0x075AF89A,
2236 0x05E3FA1D, 0xF8A60766, 0xF7AC09F2, 0x0388F67A,
2237 0xFA1DFBD6, 0x0BDBFC59, 0x0854F760, 0x00FA0705,
2238 0x05E30000, 0xFF060705, 0x085408A0, 0xF425FC59,
2239 0xFA1D042A, 0xFC78F67A, 0xF7ACF60E, 0x075A0766,
2240 0x05E305E3, 0xF8A6F89A, 0xF7ACF60E, 0x03880986,
2241 0xFA1D042A, 0x0BDB03A7, 0x085408A0, 0x00FAF8FB,
2242 0x05E30000, 0xFF06F8FB, 0x0854F760, 0xF42503A7,
2243 0xFA1DFBD6, 0xFC780986, 0xF7AC09F2, 0x075AF89A,
2244 0x05E3FA1D, 0xF8A60766, 0xF7AC09F2, 0x0388F67A,
2245 0xFA1DFBD6, 0x0BDBFC59, 0x0854F760, 0x00FA0705,
2246 0xFA58FA58, 0xF8F0FE00, 0x0448073D, 0xFDC9FE46,
2247 0xF9910258, 0x089D0407, 0xFD5CF71A, 0x02AFFDE0,
2248 0x083E0496, 0xFF5A0740, 0xFF7AFD97, 0x00FE01F1,
2249 0x0009082E, 0xFA94FF75, 0xFECDF8EA, 0xFFB0F693,
2250 0xFD2CFA58, 0x0433FF16, 0xFBA405DD, 0xFA610341,
2251 0x06A606CB, 0x0039FD2D, 0x0677FA97, 0x01FA05E0,
2252 0xF896003E, 0x075A068B, 0x012CFC3E, 0xFA23F98D,
2253 0xFC7CFD43, 0xFF90FC0D, 0x01C10982, 0x00C601D6,
2254 0xFD2CFD2C, 0x01D600C6, 0x098201C1, 0xFC0DFF90,
2255 0xFD43FC7C, 0xF98DFA23, 0xFC3E012C, 0x068B075A,
2256 0x003EF896, 0x05E001FA, 0xFA970677, 0xFD2D0039,
2257 0x06CB06A6, 0x0341FA61, 0x05DDFBA4, 0xFF160433,
2258 0xFA58FD2C, 0xF693FFB0, 0xF8EAFECD, 0xFF75FA94,
2259 0x082E0009, 0x01F100FE, 0xFD97FF7A, 0x0740FF5A,
2260 0x0496083E, 0xFDE002AF, 0xF71AFD5C, 0x0407089D,
2261 0x0258F991, 0xFE46FDC9, 0x073D0448, 0xFE00F8F0,
2262 0xFD2CFD2C, 0xFCE00500, 0xFC09FDDC, 0xFE680157,
2263 0x04C70571, 0xFC3AFF21, 0xFCD70228, 0x056D0277,
2264 0x0200FE00, 0x0022F927, 0xFE3C032B, 0xFC44FF3C,
2265 0x03E9FBDB, 0x04570313, 0x04C9FF5C, 0x000D03B8,
2266 0xFA580000, 0xFBE900D2, 0xF9D0FE0B, 0x0125FDF9,
2267 0x042501BF, 0x0328FA2B, 0xFFA902F0, 0xFA250157,
2268 0x0200FE00, 0x03740438, 0xFF0405FD, 0x030CFE52,
2269 0x0037FB39, 0xFF6904C5, 0x04F8FD23, 0xFD31FC1B,
2270 0xFD2CFD2C, 0xFC1BFD31, 0xFD2304F8, 0x04C5FF69,
2271 0xFB390037, 0xFE52030C, 0x05FDFF04, 0x04380374,
2272 0xFE000200, 0x0157FA25, 0x02F0FFA9, 0xFA2B0328,
2273 0x01BF0425, 0xFDF90125, 0xFE0BF9D0, 0x00D2FBE9,
2274 0x0000FA58, 0x03B8000D, 0xFF5C04C9, 0x03130457,
2275 0xFBDB03E9, 0xFF3CFC44, 0x032BFE3C, 0xF9270022,
2276 0xFE000200, 0x0277056D, 0x0228FCD7, 0xFF21FC3A,
2277 0x057104C7, 0x0157FE68, 0xFDDCFC09, 0x0500FCE0,
2278 0xFD2CFD2C, 0x0500FCE0, 0xFDDCFC09, 0x0157FE68,
2279 0x057104C7, 0xFF21FC3A, 0x0228FCD7, 0x0277056D,
2280 0xFE000200, 0xF9270022, 0x032BFE3C, 0xFF3CFC44,
2281 0xFBDB03E9, 0x03130457, 0xFF5C04C9, 0x03B8000D,
2282 0x0000FA58, 0x00D2FBE9, 0xFE0BF9D0, 0xFDF90125,
2283 0x01BF0425, 0xFA2B0328, 0x02F0FFA9, 0x0157FA25,
2284 0xFE000200, 0x04380374, 0x05FDFF04, 0xFE52030C,
2285 0xFB390037, 0x04C5FF69, 0xFD2304F8, 0xFC1BFD31,
2286 0xFD2CFD2C, 0xFD31FC1B, 0x04F8FD23, 0xFF6904C5,
2287 0x0037FB39, 0x030CFE52, 0xFF0405FD, 0x03740438,
2288 0x0200FE00, 0xFA250157, 0xFFA902F0, 0x0328FA2B,
2289 0x042501BF, 0x0125FDF9, 0xF9D0FE0B, 0xFBE900D2,
2290 0xFA580000, 0x000D03B8, 0x04C9FF5C, 0x04570313,
2291 0x03E9FBDB, 0xFC44FF3C, 0xFE3C032B, 0x0022F927,
2292 0x0200FE00, 0x056D0277, 0xFCD70228, 0xFC3AFF21,
2293 0x04C70571, 0xFE680157, 0xFC09FDDC, 0xFCE00500,
2294 0x05A80000, 0xFF1006BE, 0x0800084A, 0xF49CFC7E,
2295 0xFA580400, 0xFC9CF6DA, 0xF800F672, 0x0710071C,
2296 0x05A805A8, 0xF8F0F8E4, 0xF800F672, 0x03640926,
2297 0xFA580400, 0x0B640382, 0x0800084A, 0x00F0F942,
2298 0x05A80000, 0xFF10F942, 0x0800F7B6, 0xF49C0382,
2299 0xFA58FC00, 0xFC9C0926, 0xF800098E, 0x0710F8E4,
2300 0x05A8FA58, 0xF8F0071C, 0xF800098E, 0x0364F6DA,
2301 0xFA58FC00, 0x0B64FC7E, 0x0800F7B6, 0x00F006BE,
2302 0x05A80000, 0xFF1006BE, 0x0800084A, 0xF49CFC7E,
2303 0xFA580400, 0xFC9CF6DA, 0xF800F672, 0x0710071C,
2304 0x05A805A8, 0xF8F0F8E4, 0xF800F672, 0x03640926,
2305 0xFA580400, 0x0B640382, 0x0800084A, 0x00F0F942,
2306 0x05A80000, 0xFF10F942, 0x0800F7B6, 0xF49C0382,
2307 0xFA58FC00, 0xFC9C0926, 0xF800098E, 0x0710F8E4,
2308 0x05A8FA58, 0xF8F0071C, 0xF800098E, 0x0364F6DA,
2309 0xFA58FC00, 0x0B64FC7E, 0x0800F7B6, 0x00F006BE,
2310};
2311
4772ae10 2312static const u32 b43_ntab_tmap[] = {
8ac919be
MB
2313 0x8A88AA80, 0x8AAAAA8A, 0x8A8A8AA8, 0x00000888,
2314 0x88000000, 0x8A8A88AA, 0x8AA88888, 0x8888A8A8,
2315 0xF1111110, 0x11111111, 0x11F11111, 0x00000111,
2316 0x11000000, 0x1111F111, 0x11111111, 0x111111F1,
2317 0x8A88AA80, 0x8AAAAA8A, 0x8A8A8AA8, 0x000AA888,
2318 0x88880000, 0x8A8A88AA, 0x8AA88888, 0x8888A8A8,
2319 0xA1111110, 0x11111111, 0x11C11111, 0x00000111,
2320 0x11000000, 0x1111A111, 0x11111111, 0x111111A1,
2321 0xA2222220, 0x22222222, 0x22C22222, 0x00000222,
2322 0x22000000, 0x2222A222, 0x22222222, 0x222222A2,
2323 0xF1111110, 0x11111111, 0x11F11111, 0x00011111,
2324 0x11110000, 0x1111F111, 0x11111111, 0x111111F1,
2325 0xA8AA88A0, 0xA88888A8, 0xA8A8A88A, 0x00088AAA,
2326 0xAAAA0000, 0xA8A8AA88, 0xA88AAAAA, 0xAAAA8A8A,
2327 0xAAA8AAA0, 0x8AAA8AAA, 0xAA8A8A8A, 0x000AAA88,
2328 0x8AAA0000, 0xAAA8A888, 0x8AA88A8A, 0x8A88A888,
2329 0x08080A00, 0x0A08080A, 0x080A0A08, 0x00080808,
2330 0x080A0000, 0x080A0808, 0x080A0808, 0x0A0A0A08,
2331 0xA0A0A0A0, 0x80A0A080, 0x8080A0A0, 0x00008080,
2332 0x80A00000, 0x80A080A0, 0xA080A0A0, 0x8080A0A0,
2333 0x00000000, 0x00000000, 0x00000000, 0x00000000,
2334 0x00000000, 0x00000000, 0x00000000, 0x00000000,
2335 0x00000000, 0x00000000, 0x00000000, 0x00000000,
2336 0x00000000, 0x00000000, 0x00000000, 0x00000000,
2337 0x00000000, 0x00000000, 0x00000000, 0x00000000,
2338 0x00000000, 0x00000000, 0x00000000, 0x00000000,
2339 0x00000000, 0x00000000, 0x00000000, 0x00000000,
2340 0x00000000, 0x00000000, 0x00000000, 0x00000000,
2341 0x00000000, 0x00000000, 0x00000000, 0x00000000,
2342 0x00000000, 0x00000000, 0x00000000, 0x00000000,
2343 0x00000000, 0x00000000, 0x00000000, 0x00000000,
2344 0x00000000, 0x00000000, 0x00000000, 0x00000000,
2345 0x99999000, 0x9B9B99BB, 0x9BB99999, 0x9999B9B9,
2346 0x9B99BB90, 0x9BBBBB9B, 0x9B9B9BB9, 0x00000999,
2347 0x88000000, 0x8A8A88AA, 0x8AA88888, 0x8888A8A8,
2348 0x8A88AA80, 0x8AAAAA8A, 0x8A8A8AA8, 0x00AAA888,
2349 0x22000000, 0x2222B222, 0x22222222, 0x222222B2,
2350 0xB2222220, 0x22222222, 0x22D22222, 0x00000222,
2351 0x11000000, 0x1111A111, 0x11111111, 0x111111A1,
2352 0xA1111110, 0x11111111, 0x11C11111, 0x00000111,
2353 0x33000000, 0x3333B333, 0x33333333, 0x333333B3,
2354 0xB3333330, 0x33333333, 0x33D33333, 0x00000333,
2355 0x22000000, 0x2222A222, 0x22222222, 0x222222A2,
2356 0xA2222220, 0x22222222, 0x22C22222, 0x00000222,
2357 0x99B99B00, 0x9B9B99BB, 0x9BB99999, 0x9999B9B9,
2358 0x9B99BB99, 0x9BBBBB9B, 0x9B9B9BB9, 0x00000999,
2359 0x88000000, 0x8A8A88AA, 0x8AA88888, 0x8888A8A8,
2360 0x8A88AA88, 0x8AAAAA8A, 0x8A8A8AA8, 0x08AAA888,
2361 0x22222200, 0x2222F222, 0x22222222, 0x222222F2,
2362 0x22222222, 0x22222222, 0x22F22222, 0x00000222,
2363 0x11000000, 0x1111F111, 0x11111111, 0x11111111,
2364 0xF1111111, 0x11111111, 0x11F11111, 0x01111111,
2365 0xBB9BB900, 0xB9B9BB99, 0xB99BBBBB, 0xBBBB9B9B,
2366 0xB9BB99BB, 0xB99999B9, 0xB9B9B99B, 0x00000BBB,
2367 0xAA000000, 0xA8A8AA88, 0xA88AAAAA, 0xAAAA8A8A,
2368 0xA8AA88AA, 0xA88888A8, 0xA8A8A88A, 0x0A888AAA,
2369 0xAA000000, 0xA8A8AA88, 0xA88AAAAA, 0xAAAA8A8A,
2370 0xA8AA88A0, 0xA88888A8, 0xA8A8A88A, 0x00000AAA,
2371 0x88000000, 0x8A8A88AA, 0x8AA88888, 0x8888A8A8,
2372 0x8A88AA80, 0x8AAAAA8A, 0x8A8A8AA8, 0x00000888,
2373 0xBBBBBB00, 0x999BBBBB, 0x9BB99B9B, 0xB9B9B9BB,
2374 0xB9B99BBB, 0xB9B9B9BB, 0xB9BB9B99, 0x00000999,
2375 0x8A000000, 0xAA88A888, 0xA88888AA, 0xA88A8A88,
2376 0xA88AA88A, 0x88A8AAAA, 0xA8AA8AAA, 0x0888A88A,
2377 0x0B0B0B00, 0x090B0B0B, 0x0B090B0B, 0x0909090B,
2378 0x09090B0B, 0x09090B0B, 0x09090B09, 0x00000909,
2379 0x0A000000, 0x0A080808, 0x080A080A, 0x080A0A08,
2380 0x080A080A, 0x0808080A, 0x0A0A0A08, 0x0808080A,
2381 0xB0B0B000, 0x9090B0B0, 0x90B09090, 0xB0B0B090,
2382 0xB0B090B0, 0x90B0B0B0, 0xB0B09090, 0x00000090,
2383 0x80000000, 0xA080A080, 0xA08080A0, 0xA0808080,
2384 0xA080A080, 0x80A0A0A0, 0xA0A080A0, 0x00A0A0A0,
2385 0x22000000, 0x2222F222, 0x22222222, 0x222222F2,
2386 0xF2222220, 0x22222222, 0x22F22222, 0x00000222,
2387 0x11000000, 0x1111F111, 0x11111111, 0x111111F1,
2388 0xF1111110, 0x11111111, 0x11F11111, 0x00000111,
2389 0x33000000, 0x3333F333, 0x33333333, 0x333333F3,
2390 0xF3333330, 0x33333333, 0x33F33333, 0x00000333,
2391 0x22000000, 0x2222F222, 0x22222222, 0x222222F2,
2392 0xF2222220, 0x22222222, 0x22F22222, 0x00000222,
2393 0x99000000, 0x9B9B99BB, 0x9BB99999, 0x9999B9B9,
2394 0x9B99BB90, 0x9BBBBB9B, 0x9B9B9BB9, 0x00000999,
2395 0x88000000, 0x8A8A88AA, 0x8AA88888, 0x8888A8A8,
2396 0x8A88AA80, 0x8AAAAA8A, 0x8A8A8AA8, 0x00000888,
2397 0x88888000, 0x8A8A88AA, 0x8AA88888, 0x8888A8A8,
2398 0x8A88AA80, 0x8AAAAA8A, 0x8A8A8AA8, 0x00000888,
2399 0x88000000, 0x8A8A88AA, 0x8AA88888, 0x8888A8A8,
2400 0x8A88AA80, 0x8AAAAA8A, 0x8A8A8AA8, 0x00AAA888,
2401 0x88A88A00, 0x8A8A88AA, 0x8AA88888, 0x8888A8A8,
2402 0x8A88AA88, 0x8AAAAA8A, 0x8A8A8AA8, 0x00000888,
2403 0x88000000, 0x8A8A88AA, 0x8AA88888, 0x8888A8A8,
2404 0x8A88AA88, 0x8AAAAA8A, 0x8A8A8AA8, 0x08AAA888,
2405 0x11000000, 0x1111A111, 0x11111111, 0x111111A1,
2406 0xA1111110, 0x11111111, 0x11C11111, 0x00000111,
2407 0x11000000, 0x1111A111, 0x11111111, 0x111111A1,
2408 0xA1111110, 0x11111111, 0x11C11111, 0x00000111,
2409 0x88000000, 0x8A8A88AA, 0x8AA88888, 0x8888A8A8,
2410 0x8A88AA80, 0x8AAAAA8A, 0x8A8A8AA8, 0x00000888,
2411 0x88000000, 0x8A8A88AA, 0x8AA88888, 0x8888A8A8,
2412 0x8A88AA80, 0x8AAAAA8A, 0x8A8A8AA8, 0x00000888,
2413 0x00000000, 0x00000000, 0x00000000, 0x00000000,
2414 0x00000000, 0x00000000, 0x00000000, 0x00000000,
2415 0x00000000, 0x00000000, 0x00000000, 0x00000000,
2416 0x00000000, 0x00000000, 0x00000000, 0x00000000,
2417 0x00000000, 0x00000000, 0x00000000, 0x00000000,
2418 0x00000000, 0x00000000, 0x00000000, 0x00000000,
2419 0x00000000, 0x00000000, 0x00000000, 0x00000000,
2420 0x00000000, 0x00000000, 0x00000000, 0x00000000,
2421 0x00000000, 0x00000000, 0x00000000, 0x00000000,
2422 0x00000000, 0x00000000, 0x00000000, 0x00000000,
2423 0x00000000, 0x00000000, 0x00000000, 0x00000000,
2424 0x00000000, 0x00000000, 0x00000000, 0x00000000,
2425};
2426
088e56b4
RM
2427const u32 b43_ntab_tx_gain_rev0_1_2[] = {
2428 0x03cc2b44, 0x03cc2b42, 0x03cc2a44, 0x03cc2a42,
2429 0x03cc2944, 0x03c82b44, 0x03c82b42, 0x03c82a44,
2430 0x03c82a42, 0x03c82944, 0x03c82942, 0x03c82844,
2431 0x03c82842, 0x03c42b44, 0x03c42b42, 0x03c42a44,
2432 0x03c42a42, 0x03c42944, 0x03c42942, 0x03c42844,
2433 0x03c42842, 0x03c42744, 0x03c42742, 0x03c42644,
2434 0x03c42642, 0x03c42544, 0x03c42542, 0x03c42444,
2435 0x03c42442, 0x03c02b44, 0x03c02b42, 0x03c02a44,
2436 0x03c02a42, 0x03c02944, 0x03c02942, 0x03c02844,
2437 0x03c02842, 0x03c02744, 0x03c02742, 0x03b02b44,
2438 0x03b02b42, 0x03b02a44, 0x03b02a42, 0x03b02944,
2439 0x03b02942, 0x03b02844, 0x03b02842, 0x03b02744,
2440 0x03b02742, 0x03b02644, 0x03b02642, 0x03b02544,
2441 0x03b02542, 0x03a02b44, 0x03a02b42, 0x03a02a44,
2442 0x03a02a42, 0x03a02944, 0x03a02942, 0x03a02844,
2443 0x03a02842, 0x03a02744, 0x03a02742, 0x03902b44,
2444 0x03902b42, 0x03902a44, 0x03902a42, 0x03902944,
2445 0x03902942, 0x03902844, 0x03902842, 0x03902744,
2446 0x03902742, 0x03902644, 0x03902642, 0x03902544,
2447 0x03902542, 0x03802b44, 0x03802b42, 0x03802a44,
2448 0x03802a42, 0x03802944, 0x03802942, 0x03802844,
2449 0x03802842, 0x03802744, 0x03802742, 0x03802644,
2450 0x03802642, 0x03802544, 0x03802542, 0x03802444,
2451 0x03802442, 0x03802344, 0x03802342, 0x03802244,
2452 0x03802242, 0x03802144, 0x03802142, 0x03802044,
2453 0x03802042, 0x03801f44, 0x03801f42, 0x03801e44,
2454 0x03801e42, 0x03801d44, 0x03801d42, 0x03801c44,
2455 0x03801c42, 0x03801b44, 0x03801b42, 0x03801a44,
2456 0x03801a42, 0x03801944, 0x03801942, 0x03801844,
2457 0x03801842, 0x03801744, 0x03801742, 0x03801644,
2458 0x03801642, 0x03801544, 0x03801542, 0x03801444,
2459 0x03801442, 0x03801344, 0x03801342, 0x00002b00,
2460};
2461
2462const u32 b43_ntab_tx_gain_rev3plus_2ghz[] = {
2463 0x1f410044, 0x1f410042, 0x1f410040, 0x1f41003e,
2464 0x1f41003c, 0x1f41003b, 0x1f410039, 0x1f410037,
2465 0x1e410044, 0x1e410042, 0x1e410040, 0x1e41003e,
2466 0x1e41003c, 0x1e41003b, 0x1e410039, 0x1e410037,
2467 0x1d410044, 0x1d410042, 0x1d410040, 0x1d41003e,
2468 0x1d41003c, 0x1d41003b, 0x1d410039, 0x1d410037,
2469 0x1c410044, 0x1c410042, 0x1c410040, 0x1c41003e,
2470 0x1c41003c, 0x1c41003b, 0x1c410039, 0x1c410037,
2471 0x1b410044, 0x1b410042, 0x1b410040, 0x1b41003e,
2472 0x1b41003c, 0x1b41003b, 0x1b410039, 0x1b410037,
2473 0x1a410044, 0x1a410042, 0x1a410040, 0x1a41003e,
2474 0x1a41003c, 0x1a41003b, 0x1a410039, 0x1a410037,
2475 0x19410044, 0x19410042, 0x19410040, 0x1941003e,
2476 0x1941003c, 0x1941003b, 0x19410039, 0x19410037,
2477 0x18410044, 0x18410042, 0x18410040, 0x1841003e,
2478 0x1841003c, 0x1841003b, 0x18410039, 0x18410037,
2479 0x17410044, 0x17410042, 0x17410040, 0x1741003e,
2480 0x1741003c, 0x1741003b, 0x17410039, 0x17410037,
2481 0x16410044, 0x16410042, 0x16410040, 0x1641003e,
2482 0x1641003c, 0x1641003b, 0x16410039, 0x16410037,
2483 0x15410044, 0x15410042, 0x15410040, 0x1541003e,
2484 0x1541003c, 0x1541003b, 0x15410039, 0x15410037,
2485 0x14410044, 0x14410042, 0x14410040, 0x1441003e,
2486 0x1441003c, 0x1441003b, 0x14410039, 0x14410037,
2487 0x13410044, 0x13410042, 0x13410040, 0x1341003e,
2488 0x1341003c, 0x1341003b, 0x13410039, 0x13410037,
2489 0x12410044, 0x12410042, 0x12410040, 0x1241003e,
2490 0x1241003c, 0x1241003b, 0x12410039, 0x12410037,
2491 0x11410044, 0x11410042, 0x11410040, 0x1141003e,
2492 0x1141003c, 0x1141003b, 0x11410039, 0x11410037,
2493 0x10410044, 0x10410042, 0x10410040, 0x1041003e,
2494 0x1041003c, 0x1041003b, 0x10410039, 0x10410037,
2495};
2496
2497const u32 b43_ntab_tx_gain_rev3_5ghz[] = {
2498 0xcff70044, 0xcff70042, 0xcff70040, 0xcff7003e,
2499 0xcff7003c, 0xcff7003b, 0xcff70039, 0xcff70037,
2500 0xcef70044, 0xcef70042, 0xcef70040, 0xcef7003e,
2501 0xcef7003c, 0xcef7003b, 0xcef70039, 0xcef70037,
2502 0xcdf70044, 0xcdf70042, 0xcdf70040, 0xcdf7003e,
2503 0xcdf7003c, 0xcdf7003b, 0xcdf70039, 0xcdf70037,
2504 0xccf70044, 0xccf70042, 0xccf70040, 0xccf7003e,
2505 0xccf7003c, 0xccf7003b, 0xccf70039, 0xccf70037,
2506 0xcbf70044, 0xcbf70042, 0xcbf70040, 0xcbf7003e,
2507 0xcbf7003c, 0xcbf7003b, 0xcbf70039, 0xcbf70037,
2508 0xcaf70044, 0xcaf70042, 0xcaf70040, 0xcaf7003e,
2509 0xcaf7003c, 0xcaf7003b, 0xcaf70039, 0xcaf70037,
2510 0xc9f70044, 0xc9f70042, 0xc9f70040, 0xc9f7003e,
2511 0xc9f7003c, 0xc9f7003b, 0xc9f70039, 0xc9f70037,
2512 0xc8f70044, 0xc8f70042, 0xc8f70040, 0xc8f7003e,
2513 0xc8f7003c, 0xc8f7003b, 0xc8f70039, 0xc8f70037,
2514 0xc7f70044, 0xc7f70042, 0xc7f70040, 0xc7f7003e,
2515 0xc7f7003c, 0xc7f7003b, 0xc7f70039, 0xc7f70037,
2516 0xc6f70044, 0xc6f70042, 0xc6f70040, 0xc6f7003e,
2517 0xc6f7003c, 0xc6f7003b, 0xc6f70039, 0xc6f70037,
2518 0xc5f70044, 0xc5f70042, 0xc5f70040, 0xc5f7003e,
2519 0xc5f7003c, 0xc5f7003b, 0xc5f70039, 0xc5f70037,
2520 0xc4f70044, 0xc4f70042, 0xc4f70040, 0xc4f7003e,
2521 0xc4f7003c, 0xc4f7003b, 0xc4f70039, 0xc4f70037,
2522 0xc3f70044, 0xc3f70042, 0xc3f70040, 0xc3f7003e,
2523 0xc3f7003c, 0xc3f7003b, 0xc3f70039, 0xc3f70037,
2524 0xc2f70044, 0xc2f70042, 0xc2f70040, 0xc2f7003e,
2525 0xc2f7003c, 0xc2f7003b, 0xc2f70039, 0xc2f70037,
2526 0xc1f70044, 0xc1f70042, 0xc1f70040, 0xc1f7003e,
2527 0xc1f7003c, 0xc1f7003b, 0xc1f70039, 0xc1f70037,
2528 0xc0f70044, 0xc0f70042, 0xc0f70040, 0xc0f7003e,
2529 0xc0f7003c, 0xc0f7003b, 0xc0f70039, 0xc0f70037,
2530};
2531
2532const u32 b43_ntab_tx_gain_rev4_5ghz[] = {
2533 0x2ff20044, 0x2ff20042, 0x2ff20040, 0x2ff2003e,
2534 0x2ff2003c, 0x2ff2003b, 0x2ff20039, 0x2ff20037,
2535 0x2ef20044, 0x2ef20042, 0x2ef20040, 0x2ef2003e,
2536 0x2ef2003c, 0x2ef2003b, 0x2ef20039, 0x2ef20037,
2537 0x2df20044, 0x2df20042, 0x2df20040, 0x2df2003e,
2538 0x2df2003c, 0x2df2003b, 0x2df20039, 0x2df20037,
2539 0x2cf20044, 0x2cf20042, 0x2cf20040, 0x2cf2003e,
2540 0x2cf2003c, 0x2cf2003b, 0x2cf20039, 0x2cf20037,
2541 0x2bf20044, 0x2bf20042, 0x2bf20040, 0x2bf2003e,
2542 0x2bf2003c, 0x2bf2003b, 0x2bf20039, 0x2bf20037,
2543 0x2af20044, 0x2af20042, 0x2af20040, 0x2af2003e,
2544 0x2af2003c, 0x2af2003b, 0x2af20039, 0x2af20037,
2545 0x29f20044, 0x29f20042, 0x29f20040, 0x29f2003e,
2546 0x29f2003c, 0x29f2003b, 0x29f20039, 0x29f20037,
2547 0x28f20044, 0x28f20042, 0x28f20040, 0x28f2003e,
2548 0x28f2003c, 0x28f2003b, 0x28f20039, 0x28f20037,
2549 0x27f20044, 0x27f20042, 0x27f20040, 0x27f2003e,
2550 0x27f2003c, 0x27f2003b, 0x27f20039, 0x27f20037,
2551 0x26f20044, 0x26f20042, 0x26f20040, 0x26f2003e,
2552 0x26f2003c, 0x26f2003b, 0x26f20039, 0x26f20037,
2553 0x25f20044, 0x25f20042, 0x25f20040, 0x25f2003e,
2554 0x25f2003c, 0x25f2003b, 0x25f20039, 0x25f20037,
2555 0x24f20044, 0x24f20042, 0x24f20040, 0x24f2003e,
2556 0x24f2003c, 0x24f2003b, 0x24f20039, 0x24f20038,
2557 0x23f20041, 0x23f20040, 0x23f2003f, 0x23f2003e,
2558 0x23f2003c, 0x23f2003b, 0x23f20039, 0x23f20037,
2559 0x22f20044, 0x22f20042, 0x22f20040, 0x22f2003e,
2560 0x22f2003c, 0x22f2003b, 0x22f20039, 0x22f20037,
2561 0x21f20044, 0x21f20042, 0x21f20040, 0x21f2003e,
2562 0x21f2003c, 0x21f2003b, 0x21f20039, 0x21f20037,
2563 0x20d20043, 0x20d20041, 0x20d2003e, 0x20d2003c,
2564 0x20d2003a, 0x20d20038, 0x20d20036, 0x20d20034,
2565};
2566
2567const u32 b43_ntab_tx_gain_rev5plus_5ghz[] = {
2568 0x0f62004a, 0x0f620048, 0x0f620046, 0x0f620044,
2569 0x0f620042, 0x0f620040, 0x0f62003e, 0x0f62003c,
2570 0x0e620044, 0x0e620042, 0x0e620040, 0x0e62003e,
2571 0x0e62003c, 0x0e62003d, 0x0e62003b, 0x0e62003a,
2572 0x0d620043, 0x0d620041, 0x0d620040, 0x0d62003e,
2573 0x0d62003d, 0x0d62003c, 0x0d62003b, 0x0d62003a,
2574 0x0c620041, 0x0c620040, 0x0c62003f, 0x0c62003e,
2575 0x0c62003c, 0x0c62003b, 0x0c620039, 0x0c620037,
2576 0x0b620046, 0x0b620044, 0x0b620042, 0x0b620040,
2577 0x0b62003e, 0x0b62003c, 0x0b62003b, 0x0b62003a,
2578 0x0a620041, 0x0a620040, 0x0a62003e, 0x0a62003c,
2579 0x0a62003b, 0x0a62003a, 0x0a620039, 0x0a620038,
2580 0x0962003e, 0x0962003d, 0x0962003c, 0x0962003b,
2581 0x09620039, 0x09620037, 0x09620035, 0x09620033,
2582 0x08620044, 0x08620042, 0x08620040, 0x0862003e,
2583 0x0862003c, 0x0862003b, 0x0862003a, 0x08620039,
2584 0x07620043, 0x07620042, 0x07620040, 0x0762003f,
2585 0x0762003d, 0x0762003b, 0x0762003a, 0x07620039,
2586 0x0662003e, 0x0662003d, 0x0662003c, 0x0662003b,
2587 0x06620039, 0x06620037, 0x06620035, 0x06620033,
2588 0x05620046, 0x05620044, 0x05620042, 0x05620040,
2589 0x0562003e, 0x0562003c, 0x0562003b, 0x05620039,
2590 0x04620044, 0x04620042, 0x04620040, 0x0462003e,
2591 0x0462003c, 0x0462003b, 0x04620039, 0x04620038,
2592 0x0362003c, 0x0362003b, 0x0362003a, 0x03620039,
2593 0x03620038, 0x03620037, 0x03620035, 0x03620033,
2594 0x0262004c, 0x0262004a, 0x02620048, 0x02620047,
2595 0x02620046, 0x02620044, 0x02620043, 0x02620042,
2596 0x0162004a, 0x01620048, 0x01620046, 0x01620044,
2597 0x01620043, 0x01620042, 0x01620041, 0x01620040,
2598 0x00620042, 0x00620040, 0x0062003e, 0x0062003c,
2599 0x0062003b, 0x00620039, 0x00620037, 0x00620035,
2600};
2601
2602const u32 txpwrctrl_tx_gain_ipa[] = {
2603 0x5ff7002d, 0x5ff7002b, 0x5ff7002a, 0x5ff70029,
2604 0x5ff70028, 0x5ff70027, 0x5ff70026, 0x5ff70025,
2605 0x5ef7002d, 0x5ef7002b, 0x5ef7002a, 0x5ef70029,
2606 0x5ef70028, 0x5ef70027, 0x5ef70026, 0x5ef70025,
2607 0x5df7002d, 0x5df7002b, 0x5df7002a, 0x5df70029,
2608 0x5df70028, 0x5df70027, 0x5df70026, 0x5df70025,
2609 0x5cf7002d, 0x5cf7002b, 0x5cf7002a, 0x5cf70029,
2610 0x5cf70028, 0x5cf70027, 0x5cf70026, 0x5cf70025,
2611 0x5bf7002d, 0x5bf7002b, 0x5bf7002a, 0x5bf70029,
2612 0x5bf70028, 0x5bf70027, 0x5bf70026, 0x5bf70025,
2613 0x5af7002d, 0x5af7002b, 0x5af7002a, 0x5af70029,
2614 0x5af70028, 0x5af70027, 0x5af70026, 0x5af70025,
2615 0x59f7002d, 0x59f7002b, 0x59f7002a, 0x59f70029,
2616 0x59f70028, 0x59f70027, 0x59f70026, 0x59f70025,
2617 0x58f7002d, 0x58f7002b, 0x58f7002a, 0x58f70029,
2618 0x58f70028, 0x58f70027, 0x58f70026, 0x58f70025,
2619 0x57f7002d, 0x57f7002b, 0x57f7002a, 0x57f70029,
2620 0x57f70028, 0x57f70027, 0x57f70026, 0x57f70025,
2621 0x56f7002d, 0x56f7002b, 0x56f7002a, 0x56f70029,
2622 0x56f70028, 0x56f70027, 0x56f70026, 0x56f70025,
2623 0x55f7002d, 0x55f7002b, 0x55f7002a, 0x55f70029,
2624 0x55f70028, 0x55f70027, 0x55f70026, 0x55f70025,
2625 0x54f7002d, 0x54f7002b, 0x54f7002a, 0x54f70029,
2626 0x54f70028, 0x54f70027, 0x54f70026, 0x54f70025,
2627 0x53f7002d, 0x53f7002b, 0x53f7002a, 0x53f70029,
2628 0x53f70028, 0x53f70027, 0x53f70026, 0x53f70025,
2629 0x52f7002d, 0x52f7002b, 0x52f7002a, 0x52f70029,
2630 0x52f70028, 0x52f70027, 0x52f70026, 0x52f70025,
2631 0x51f7002d, 0x51f7002b, 0x51f7002a, 0x51f70029,
2632 0x51f70028, 0x51f70027, 0x51f70026, 0x51f70025,
2633 0x50f7002d, 0x50f7002b, 0x50f7002a, 0x50f70029,
2634 0x50f70028, 0x50f70027, 0x50f70026, 0x50f70025,
2635};
2636
2637const u32 txpwrctrl_tx_gain_ipa_rev5[] = {
2638 0x1ff7002d, 0x1ff7002b, 0x1ff7002a, 0x1ff70029,
2639 0x1ff70028, 0x1ff70027, 0x1ff70026, 0x1ff70025,
2640 0x1ef7002d, 0x1ef7002b, 0x1ef7002a, 0x1ef70029,
2641 0x1ef70028, 0x1ef70027, 0x1ef70026, 0x1ef70025,
2642 0x1df7002d, 0x1df7002b, 0x1df7002a, 0x1df70029,
2643 0x1df70028, 0x1df70027, 0x1df70026, 0x1df70025,
2644 0x1cf7002d, 0x1cf7002b, 0x1cf7002a, 0x1cf70029,
2645 0x1cf70028, 0x1cf70027, 0x1cf70026, 0x1cf70025,
2646 0x1bf7002d, 0x1bf7002b, 0x1bf7002a, 0x1bf70029,
2647 0x1bf70028, 0x1bf70027, 0x1bf70026, 0x1bf70025,
2648 0x1af7002d, 0x1af7002b, 0x1af7002a, 0x1af70029,
2649 0x1af70028, 0x1af70027, 0x1af70026, 0x1af70025,
2650 0x19f7002d, 0x19f7002b, 0x19f7002a, 0x19f70029,
2651 0x19f70028, 0x19f70027, 0x19f70026, 0x19f70025,
2652 0x18f7002d, 0x18f7002b, 0x18f7002a, 0x18f70029,
2653 0x18f70028, 0x18f70027, 0x18f70026, 0x18f70025,
2654 0x17f7002d, 0x17f7002b, 0x17f7002a, 0x17f70029,
2655 0x17f70028, 0x17f70027, 0x17f70026, 0x17f70025,
2656 0x16f7002d, 0x16f7002b, 0x16f7002a, 0x16f70029,
2657 0x16f70028, 0x16f70027, 0x16f70026, 0x16f70025,
2658 0x15f7002d, 0x15f7002b, 0x15f7002a, 0x15f70029,
2659 0x15f70028, 0x15f70027, 0x15f70026, 0x15f70025,
2660 0x14f7002d, 0x14f7002b, 0x14f7002a, 0x14f70029,
2661 0x14f70028, 0x14f70027, 0x14f70026, 0x14f70025,
2662 0x13f7002d, 0x13f7002b, 0x13f7002a, 0x13f70029,
2663 0x13f70028, 0x13f70027, 0x13f70026, 0x13f70025,
2664 0x12f7002d, 0x12f7002b, 0x12f7002a, 0x12f70029,
2665 0x12f70028, 0x12f70027, 0x12f70026, 0x12f70025,
2666 0x11f7002d, 0x11f7002b, 0x11f7002a, 0x11f70029,
2667 0x11f70028, 0x11f70027, 0x11f70026, 0x11f70025,
2668 0x10f7002d, 0x10f7002b, 0x10f7002a, 0x10f70029,
2669 0x10f70028, 0x10f70027, 0x10f70026, 0x10f70025,
2670};
2671
2672const u32 txpwrctrl_tx_gain_ipa_rev6[] = {
2673 0x0ff7002d, 0x0ff7002b, 0x0ff7002a, 0x0ff70029,
2674 0x0ff70028, 0x0ff70027, 0x0ff70026, 0x0ff70025,
2675 0x0ef7002d, 0x0ef7002b, 0x0ef7002a, 0x0ef70029,
2676 0x0ef70028, 0x0ef70027, 0x0ef70026, 0x0ef70025,
2677 0x0df7002d, 0x0df7002b, 0x0df7002a, 0x0df70029,
2678 0x0df70028, 0x0df70027, 0x0df70026, 0x0df70025,
2679 0x0cf7002d, 0x0cf7002b, 0x0cf7002a, 0x0cf70029,
2680 0x0cf70028, 0x0cf70027, 0x0cf70026, 0x0cf70025,
2681 0x0bf7002d, 0x0bf7002b, 0x0bf7002a, 0x0bf70029,
2682 0x0bf70028, 0x0bf70027, 0x0bf70026, 0x0bf70025,
2683 0x0af7002d, 0x0af7002b, 0x0af7002a, 0x0af70029,
2684 0x0af70028, 0x0af70027, 0x0af70026, 0x0af70025,
2685 0x09f7002d, 0x09f7002b, 0x09f7002a, 0x09f70029,
2686 0x09f70028, 0x09f70027, 0x09f70026, 0x09f70025,
2687 0x08f7002d, 0x08f7002b, 0x08f7002a, 0x08f70029,
2688 0x08f70028, 0x08f70027, 0x08f70026, 0x08f70025,
2689 0x07f7002d, 0x07f7002b, 0x07f7002a, 0x07f70029,
2690 0x07f70028, 0x07f70027, 0x07f70026, 0x07f70025,
2691 0x06f7002d, 0x06f7002b, 0x06f7002a, 0x06f70029,
2692 0x06f70028, 0x06f70027, 0x06f70026, 0x06f70025,
2693 0x05f7002d, 0x05f7002b, 0x05f7002a, 0x05f70029,
2694 0x05f70028, 0x05f70027, 0x05f70026, 0x05f70025,
2695 0x04f7002d, 0x04f7002b, 0x04f7002a, 0x04f70029,
2696 0x04f70028, 0x04f70027, 0x04f70026, 0x04f70025,
2697 0x03f7002d, 0x03f7002b, 0x03f7002a, 0x03f70029,
2698 0x03f70028, 0x03f70027, 0x03f70026, 0x03f70025,
2699 0x02f7002d, 0x02f7002b, 0x02f7002a, 0x02f70029,
2700 0x02f70028, 0x02f70027, 0x02f70026, 0x02f70025,
2701 0x01f7002d, 0x01f7002b, 0x01f7002a, 0x01f70029,
2702 0x01f70028, 0x01f70027, 0x01f70026, 0x01f70025,
2703 0x00f7002d, 0x00f7002b, 0x00f7002a, 0x00f70029,
2704 0x00f70028, 0x00f70027, 0x00f70026, 0x00f70025,
2705};
2706
2707const u32 txpwrctrl_tx_gain_ipa_5g[] = {
2708 0x7ff70035, 0x7ff70033, 0x7ff70032, 0x7ff70031,
2709 0x7ff7002f, 0x7ff7002e, 0x7ff7002d, 0x7ff7002b,
2710 0x7ff7002a, 0x7ff70029, 0x7ff70028, 0x7ff70027,
2711 0x7ff70026, 0x7ff70024, 0x7ff70023, 0x7ff70022,
2712 0x7ef70028, 0x7ef70027, 0x7ef70026, 0x7ef70025,
2713 0x7ef70024, 0x7ef70023, 0x7df70028, 0x7df70027,
2714 0x7df70026, 0x7df70025, 0x7df70024, 0x7df70023,
2715 0x7df70022, 0x7cf70029, 0x7cf70028, 0x7cf70027,
2716 0x7cf70026, 0x7cf70025, 0x7cf70023, 0x7cf70022,
2717 0x7bf70029, 0x7bf70028, 0x7bf70026, 0x7bf70025,
2718 0x7bf70024, 0x7bf70023, 0x7bf70022, 0x7bf70021,
2719 0x7af70029, 0x7af70028, 0x7af70027, 0x7af70026,
2720 0x7af70025, 0x7af70024, 0x7af70023, 0x7af70022,
2721 0x79f70029, 0x79f70028, 0x79f70027, 0x79f70026,
2722 0x79f70025, 0x79f70024, 0x79f70023, 0x79f70022,
2723 0x78f70029, 0x78f70028, 0x78f70027, 0x78f70026,
2724 0x78f70025, 0x78f70024, 0x78f70023, 0x78f70022,
2725 0x77f70029, 0x77f70028, 0x77f70027, 0x77f70026,
2726 0x77f70025, 0x77f70024, 0x77f70023, 0x77f70022,
2727 0x76f70029, 0x76f70028, 0x76f70027, 0x76f70026,
2728 0x76f70024, 0x76f70023, 0x76f70022, 0x76f70021,
2729 0x75f70029, 0x75f70028, 0x75f70027, 0x75f70026,
2730 0x75f70025, 0x75f70024, 0x75f70023, 0x74f70029,
2731 0x74f70028, 0x74f70026, 0x74f70025, 0x74f70024,
2732 0x74f70023, 0x74f70022, 0x73f70029, 0x73f70027,
2733 0x73f70026, 0x73f70025, 0x73f70024, 0x73f70023,
2734 0x73f70022, 0x72f70028, 0x72f70027, 0x72f70026,
2735 0x72f70025, 0x72f70024, 0x72f70023, 0x72f70022,
2736 0x71f70028, 0x71f70027, 0x71f70026, 0x71f70025,
2737 0x71f70024, 0x71f70023, 0x70f70028, 0x70f70027,
2738 0x70f70026, 0x70f70024, 0x70f70023, 0x70f70022,
2739 0x70f70021, 0x70f70020, 0x70f70020, 0x70f7001f,
2740};
2741
2742const u16 tbl_iqcal_gainparams[2][9][8] = {
2743 {
2744 { 0x000, 0, 0, 2, 0x69, 0x69, 0x69, 0x69 },
2745 { 0x700, 7, 0, 0, 0x69, 0x69, 0x69, 0x69 },
2746 { 0x710, 7, 1, 0, 0x68, 0x68, 0x68, 0x68 },
2747 { 0x720, 7, 2, 0, 0x67, 0x67, 0x67, 0x67 },
2748 { 0x730, 7, 3, 0, 0x66, 0x66, 0x66, 0x66 },
2749 { 0x740, 7, 4, 0, 0x65, 0x65, 0x65, 0x65 },
2750 { 0x741, 7, 4, 1, 0x65, 0x65, 0x65, 0x65 },
2751 { 0x742, 7, 4, 2, 0x65, 0x65, 0x65, 0x65 },
2752 { 0x743, 7, 4, 3, 0x65, 0x65, 0x65, 0x65 }
2753 },
2754 {
2755 { 0x000, 7, 0, 0, 0x79, 0x79, 0x79, 0x79 },
2756 { 0x700, 7, 0, 0, 0x79, 0x79, 0x79, 0x79 },
2757 { 0x710, 7, 1, 0, 0x79, 0x79, 0x79, 0x79 },
2758 { 0x720, 7, 2, 0, 0x78, 0x78, 0x78, 0x78 },
2759 { 0x730, 7, 3, 0, 0x78, 0x78, 0x78, 0x78 },
2760 { 0x740, 7, 4, 0, 0x78, 0x78, 0x78, 0x78 },
2761 { 0x741, 7, 4, 1, 0x78, 0x78, 0x78, 0x78 },
2762 { 0x742, 7, 4, 2, 0x78, 0x78, 0x78, 0x78 },
2763 { 0x743, 7, 4, 3, 0x78, 0x78, 0x78, 0x78 }
2764 }
2765};
2766
2767const struct nphy_txiqcal_ladder ladder_lo[] = {
2768 { 3, 0 },
2769 { 4, 0 },
2770 { 6, 0 },
2771 { 9, 0 },
2772 { 13, 0 },
2773 { 18, 0 },
2774 { 25, 0 },
2775 { 25, 1 },
2776 { 25, 2 },
2777 { 25, 3 },
2778 { 25, 4 },
2779 { 25, 5 },
2780 { 25, 6 },
2781 { 25, 7 },
2782 { 35, 7 },
2783 { 50, 7 },
2784 { 71, 7 },
2785 { 100, 7 }
2786};
2787
2788const struct nphy_txiqcal_ladder ladder_iq[] = {
2789 { 3, 0 },
2790 { 4, 0 },
2791 { 6, 0 },
2792 { 9, 0 },
2793 { 13, 0 },
2794 { 18, 0 },
2795 { 25, 0 },
2796 { 35, 0 },
2797 { 50, 0 },
2798 { 71, 0 },
2799 { 100, 0 },
2800 { 100, 1 },
2801 { 100, 2 },
2802 { 100, 3 },
2803 { 100, 4 },
2804 { 100, 5 },
2805 { 100, 6 },
2806 { 100, 7 }
2807};
2808
2809const u16 loscale[] = {
2810 256, 256, 271, 271,
2811 287, 256, 256, 271,
2812 271, 287, 287, 304,
2813 304, 256, 256, 271,
2814 271, 287, 287, 304,
2815 304, 322, 322, 341,
2816 341, 362, 362, 383,
2817 383, 256, 256, 271,
2818 271, 287, 287, 304,
2819 304, 322, 322, 256,
2820 256, 271, 271, 287,
2821 287, 304, 304, 322,
2822 322, 341, 341, 362,
2823 362, 256, 256, 271,
2824 271, 287, 287, 304,
2825 304, 322, 322, 256,
2826 256, 271, 271, 287,
2827 287, 304, 304, 322,
2828 322, 341, 341, 362,
2829 362, 256, 256, 271,
2830 271, 287, 287, 304,
2831 304, 322, 322, 341,
2832 341, 362, 362, 383,
2833 383, 406, 406, 430,
2834 430, 455, 455, 482,
2835 482, 511, 511, 541,
2836 541, 573, 573, 607,
2837 607, 643, 643, 681,
2838 681, 722, 722, 764,
2839 764, 810, 810, 858,
2840 858, 908, 908, 962,
2841 962, 1019, 1019, 256
2842};
2843
2844const u16 tbl_tx_iqlo_cal_loft_ladder_40[] = {
2845 0x0200, 0x0300, 0x0400, 0x0700,
2846 0x0900, 0x0c00, 0x1200, 0x1201,
2847 0x1202, 0x1203, 0x1204, 0x1205,
2848 0x1206, 0x1207, 0x1907, 0x2307,
2849 0x3207, 0x4707
2850};
2851
2852const u16 tbl_tx_iqlo_cal_loft_ladder_20[] = {
2853 0x0300, 0x0500, 0x0700, 0x0900,
2854 0x0d00, 0x1100, 0x1900, 0x1901,
2855 0x1902, 0x1903, 0x1904, 0x1905,
2856 0x1906, 0x1907, 0x2407, 0x3207,
2857 0x4607, 0x6407
2858};
2859
2860const u16 tbl_tx_iqlo_cal_iqimb_ladder_40[] = {
2861 0x0100, 0x0200, 0x0400, 0x0700,
2862 0x0900, 0x0c00, 0x1200, 0x1900,
2863 0x2300, 0x3200, 0x4700, 0x4701,
2864 0x4702, 0x4703, 0x4704, 0x4705,
2865 0x4706, 0x4707
2866};
2867
2868const u16 tbl_tx_iqlo_cal_iqimb_ladder_20[] = {
2869 0x0200, 0x0300, 0x0600, 0x0900,
2870 0x0d00, 0x1100, 0x1900, 0x2400,
2871 0x3200, 0x4600, 0x6400, 0x6401,
2872 0x6402, 0x6403, 0x6404, 0x6405,
2873 0x6406, 0x6407
2874};
2875
2876const u16 tbl_tx_iqlo_cal_startcoefs_nphyrev3[B43_NTAB_TX_IQLO_CAL_STARTCOEFS_REV3] = { };
2877
2878const u16 tbl_tx_iqlo_cal_startcoefs[B43_NTAB_TX_IQLO_CAL_STARTCOEFS] = { };
2879
2880const u16 tbl_tx_iqlo_cal_cmds_recal_nphyrev3[] = {
2881 0x8423, 0x8323, 0x8073, 0x8256,
2882 0x8045, 0x8223, 0x9423, 0x9323,
2883 0x9073, 0x9256, 0x9045, 0x9223
2884};
2885
2886const u16 tbl_tx_iqlo_cal_cmds_recal[] = {
2887 0x8101, 0x8253, 0x8053, 0x8234,
2888 0x8034, 0x9101, 0x9253, 0x9053,
2889 0x9234, 0x9034
2890};
2891
2892const u16 tbl_tx_iqlo_cal_cmds_fullcal[] = {
2893 0x8123, 0x8264, 0x8086, 0x8245,
2894 0x8056, 0x9123, 0x9264, 0x9086,
2895 0x9245, 0x9056
2896};
2897
2898const u16 tbl_tx_iqlo_cal_cmds_fullcal_nphyrev3[] = {
2899 0x8434, 0x8334, 0x8084, 0x8267,
2900 0x8056, 0x8234, 0x9434, 0x9334,
2901 0x9084, 0x9267, 0x9056, 0x9234
2902};
2903
45ca697e
RM
2904const s16 tbl_tx_filter_coef_rev4[7][15] = {
2905 { -377, 137, -407, 208, -1527,
2906 956, 93, 186, 93, 230,
2907 -44, 230, 20, -191, 201 },
2908 { -77, 20, -98, 49, -93,
2909 60, 56, 111, 56, 26,
2910 -5, 26, 34, -32, 34 },
2911 { -360, 164, -376, 164, -1533,
2912 576, 308, -314, 308, 121,
2913 -73, 121, 91, 124, 91 },
2914 { -295, 200, -363, 142, -1391,
2915 826, 151, 301, 151, 151,
2916 301, 151, 602, -752, 602 },
2917 { -92, 58, -96, 49, -104,
2918 44, 17, 35, 17, 12,
2919 25, 12, 13, 27, 13 },
2920 { -375, 136, -399, 209, -1479,
2921 949, 130, 260, 130, 230,
2922 -44, 230, 201, -191, 201 },
2923 { 0xed9, 0xc8, 0xe95, 0x8e, 0xa91,
2924 0x33a, 0x97, 0x12d, 0x97, 0x97,
2925 0x12d, 0x97, 0x25a, 0xd10, 0x25a }
2926};
2927
75377b24
RM
2928/* addr0, addr1, bmask, shift */
2929const struct nphy_rf_control_override_rev2 tbl_rf_control_override_rev2[] = {
2930 { 0x78, 0x78, 0x0038, 3 }, /* for field == 0x0002 (fls == 2) */
2931 { 0x7A, 0x7D, 0x0001, 0 }, /* for field == 0x0004 (fls == 3) */
2932 { 0x7A, 0x7D, 0x0002, 1 }, /* for field == 0x0008 (fls == 4) */
2933 { 0x7A, 0x7D, 0x0004, 2 }, /* for field == 0x0010 (fls == 5) */
2934 { 0x7A, 0x7D, 0x0030, 4 }, /* for field == 0x0020 (fls == 6) */
2935 { 0x7A, 0x7D, 0x00C0, 6 }, /* for field == 0x0040 (fls == 7) */
2936 { 0x7A, 0x7D, 0x0100, 8 }, /* for field == 0x0080 (fls == 8) */
2937 { 0x7A, 0x7D, 0x0200, 9 }, /* for field == 0x0100 (fls == 9) */
2938 { 0x78, 0x78, 0x0004, 2 }, /* for field == 0x0200 (fls == 10) */
2939 { 0x7B, 0x7E, 0x01FF, 0 }, /* for field == 0x0400 (fls == 11) */
2940 { 0x7C, 0x7F, 0x01FF, 0 }, /* for field == 0x0800 (fls == 12) */
2941 { 0x78, 0x78, 0x0100, 8 }, /* for field == 0x1000 (fls == 13) */
2942 { 0x78, 0x78, 0x0200, 9 }, /* for field == 0x2000 (fls == 14) */
2943 { 0x78, 0x78, 0xF000, 12 } /* for field == 0x4000 (fls == 15) */
2944};
2945
2946/* val_mask, val_shift, en_addr0, val_addr0, en_addr1, val_addr1 */
2947const struct nphy_rf_control_override_rev3 tbl_rf_control_override_rev3[] = {
2948 { 0x8000, 15, 0xE5, 0xF9, 0xE6, 0xFB }, /* field == 0x0001 (fls 1) */
2949 { 0x0001, 0, 0xE7, 0x7A, 0xEC, 0x7D }, /* field == 0x0002 (fls 2) */
2950 { 0x0002, 1, 0xE7, 0x7A, 0xEC, 0x7D }, /* field == 0x0004 (fls 3) */
2951 { 0x0004, 2, 0xE7, 0x7A, 0xEC, 0x7D }, /* field == 0x0008 (fls 4) */
2952 { 0x0016, 4, 0xE7, 0x7A, 0xEC, 0x7D }, /* field == 0x0010 (fls 5) */
2953 { 0x0020, 5, 0xE7, 0x7A, 0xEC, 0x7D }, /* field == 0x0020 (fls 6) */
2954 { 0x0040, 6, 0xE7, 0x7A, 0xEC, 0x7D }, /* field == 0x0040 (fls 7) */
2955 { 0x0080, 6, 0xE7, 0x7A, 0xEC, 0x7D }, /* field == 0x0080 (fls 8) */
2956 { 0x0100, 7, 0xE7, 0x7A, 0xEC, 0x7D }, /* field == 0x0100 (fls 9) */
2957 { 0x0007, 0, 0xE7, 0xF8, 0xEC, 0xFA }, /* field == 0x0200 (fls 10) */
2958 { 0x0070, 4, 0xE7, 0xF8, 0xEC, 0xFA }, /* field == 0x0400 (fls 11) */
2959 { 0xE000, 13, 0xE7, 0x7A, 0xEC, 0x7D }, /* field == 0x0800 (fls 12) */
2960 { 0xFFFF, 0, 0xE7, 0x7B, 0xEC, 0x7E }, /* field == 0x1000 (fls 13) */
2961 { 0xFFFF, 0, 0xE7, 0x7C, 0xEC, 0x7F }, /* field == 0x2000 (fls 14) */
2962 { 0x00C0, 6, 0xE7, 0xF9, 0xEC, 0xFB } /* field == 0x4000 (fls 15) */
2963};
2964
8ac919be
MB
2965static inline void assert_ntab_array_sizes(void)
2966{
2967#undef check
2968#define check(table, size) \
2969 BUILD_BUG_ON(ARRAY_SIZE(b43_ntab_##table) != B43_NTAB_##size##_SIZE)
2970
2971 check(adjustpower0, C0_ADJPLT);
2972 check(adjustpower1, C1_ADJPLT);
2973 check(bdi, BDI);
2974 check(channelest, CHANEST);
2975 check(estimatepowerlt0, C0_ESTPLT);
2976 check(estimatepowerlt1, C1_ESTPLT);
2977 check(framelookup, FRAMELT);
2978 check(framestruct, FRAMESTRUCT);
2979 check(gainctl0, C0_GAINCTL);
2980 check(gainctl1, C1_GAINCTL);
2981 check(intlevel, INTLEVEL);
2982 check(iqlt0, C0_IQLT);
2983 check(iqlt1, C1_IQLT);
2984 check(loftlt0, C0_LOFEEDTH);
2985 check(loftlt1, C1_LOFEEDTH);
2986 check(mcs, MCS);
2987 check(noisevar10, NOISEVAR10);
2988 check(noisevar11, NOISEVAR11);
2989 check(pilot, PILOT);
2990 check(pilotlt, PILOTLT);
2991 check(tdi20a0, TDI20A0);
2992 check(tdi20a1, TDI20A1);
2993 check(tdi40a0, TDI40A0);
2994 check(tdi40a1, TDI40A1);
2995 check(tdtrn, TDTRN);
2996 check(tmap, TMAP);
2997
2998#undef check
2999}
3000
c643a66e
RM
3001u32 b43_ntab_read(struct b43_wldev *dev, u32 offset)
3002{
3003 u32 type, value;
3004
3005 type = offset & B43_NTAB_TYPEMASK;
3006 offset &= ~B43_NTAB_TYPEMASK;
3007 B43_WARN_ON(offset > 0xFFFF);
3008
3009 switch (type) {
3010 case B43_NTAB_8BIT:
3011 b43_phy_write(dev, B43_NPHY_TABLE_ADDR, offset);
3012 value = b43_phy_read(dev, B43_NPHY_TABLE_DATALO) & 0xFF;
3013 break;
3014 case B43_NTAB_16BIT:
3015 b43_phy_write(dev, B43_NPHY_TABLE_ADDR, offset);
3016 value = b43_phy_read(dev, B43_NPHY_TABLE_DATALO);
3017 break;
3018 case B43_NTAB_32BIT:
3019 b43_phy_write(dev, B43_NPHY_TABLE_ADDR, offset);
3020 value = b43_phy_read(dev, B43_NPHY_TABLE_DATAHI);
3021 value <<= 16;
3022 value |= b43_phy_read(dev, B43_NPHY_TABLE_DATALO);
3023 break;
3024 default:
3025 B43_WARN_ON(1);
3026 value = 0;
3027 }
3028
3029 return value;
3030}
3031
9145834e
RM
3032void b43_ntab_read_bulk(struct b43_wldev *dev, u32 offset,
3033 unsigned int nr_elements, void *_data)
3034{
3035 u32 type;
3036 u8 *data = _data;
3037 unsigned int i;
3038
3039 type = offset & B43_NTAB_TYPEMASK;
3040 offset &= ~B43_NTAB_TYPEMASK;
3041 B43_WARN_ON(offset > 0xFFFF);
3042
3043 b43_phy_write(dev, B43_NPHY_TABLE_ADDR, offset);
3044
3045 for (i = 0; i < nr_elements; i++) {
3046 switch (type) {
3047 case B43_NTAB_8BIT:
3048 *data = b43_phy_read(dev, B43_NPHY_TABLE_DATALO) & 0xFF;
3049 data++;
3050 break;
3051 case B43_NTAB_16BIT:
3052 *((u16 *)data) = b43_phy_read(dev, B43_NPHY_TABLE_DATALO);
3053 data += 2;
3054 break;
3055 case B43_NTAB_32BIT:
3056 *((u32 *)data) = b43_phy_read(dev, B43_NPHY_TABLE_DATAHI);
3057 *((u32 *)data) <<= 16;
3058 *((u32 *)data) |= b43_phy_read(dev, B43_NPHY_TABLE_DATALO);
3059 data += 4;
3060 break;
3061 default:
3062 B43_WARN_ON(1);
3063 }
3064 }
3065}
3066
8ac919be
MB
3067void b43_ntab_write(struct b43_wldev *dev, u32 offset, u32 value)
3068{
3069 u32 type;
3070
3071 type = offset & B43_NTAB_TYPEMASK;
3072 offset &= 0xFFFF;
3073
3074 switch (type) {
3075 case B43_NTAB_8BIT:
3076 B43_WARN_ON(value & ~0xFF);
3077 b43_phy_write(dev, B43_NPHY_TABLE_ADDR, offset);
3078 b43_phy_write(dev, B43_NPHY_TABLE_DATALO, value);
3079 break;
3080 case B43_NTAB_16BIT:
3081 B43_WARN_ON(value & ~0xFFFF);
3082 b43_phy_write(dev, B43_NPHY_TABLE_ADDR, offset);
3083 b43_phy_write(dev, B43_NPHY_TABLE_DATALO, value);
3084 break;
3085 case B43_NTAB_32BIT:
3086 b43_phy_write(dev, B43_NPHY_TABLE_ADDR, offset);
3087 b43_phy_write(dev, B43_NPHY_TABLE_DATAHI, value >> 16);
3088 b43_phy_write(dev, B43_NPHY_TABLE_DATALO, value & 0xFFFF);
3089 break;
3090 default:
3091 B43_WARN_ON(1);
3092 }
3093
3094 return;
3095
3096 /* Some compiletime assertions... */
3097 assert_ntab_array_sizes();
3098}
4772ae10 3099
2581b143
RM
3100void b43_ntab_write_bulk(struct b43_wldev *dev, u32 offset,
3101 unsigned int nr_elements, const void *_data)
3102{
3103 u32 type, value;
3104 const u8 *data = _data;
3105 unsigned int i;
3106
3107 type = offset & B43_NTAB_TYPEMASK;
3108 offset &= ~B43_NTAB_TYPEMASK;
3109 B43_WARN_ON(offset > 0xFFFF);
3110
3111 b43_phy_write(dev, B43_NPHY_TABLE_ADDR, offset);
3112
3113 for (i = 0; i < nr_elements; i++) {
3114 switch (type) {
3115 case B43_NTAB_8BIT:
3116 value = *data;
3117 data++;
3118 B43_WARN_ON(value & ~0xFF);
3119 b43_phy_write(dev, B43_NPHY_TABLE_DATALO, value);
3120 break;
3121 case B43_NTAB_16BIT:
3122 value = *((u16 *)data);
3123 data += 2;
3124 B43_WARN_ON(value & ~0xFFFF);
3125 b43_phy_write(dev, B43_NPHY_TABLE_DATALO, value);
3126 break;
3127 case B43_NTAB_32BIT:
3128 value = *((u32 *)data);
3129 data += 4;
3130 b43_phy_write(dev, B43_NPHY_TABLE_DATAHI, value >> 16);
3131 b43_phy_write(dev, B43_NPHY_TABLE_DATALO,
3132 value & 0xFFFF);
3133 break;
3134 default:
3135 B43_WARN_ON(1);
3136 }
3137 }
3138}
3139
4772ae10
RM
3140#define ntab_upload(dev, offset, data) do { \
3141 unsigned int i; \
3142 for (i = 0; i < (offset##_SIZE); i++) \
3143 b43_ntab_write(dev, (offset) + i, (data)[i]); \
3144 } while (0)
3145
3146void b43_nphy_rev0_1_2_tables_init(struct b43_wldev *dev)
3147{
3148 /* Static tables */
3149 ntab_upload(dev, B43_NTAB_FRAMESTRUCT, b43_ntab_framestruct);
3150 ntab_upload(dev, B43_NTAB_FRAMELT, b43_ntab_framelookup);
3151 ntab_upload(dev, B43_NTAB_TMAP, b43_ntab_tmap);
3152 ntab_upload(dev, B43_NTAB_TDTRN, b43_ntab_tdtrn);
3153 ntab_upload(dev, B43_NTAB_INTLEVEL, b43_ntab_intlevel);
3154 ntab_upload(dev, B43_NTAB_PILOT, b43_ntab_pilot);
3155 ntab_upload(dev, B43_NTAB_PILOTLT, b43_ntab_pilotlt);
3156 ntab_upload(dev, B43_NTAB_TDI20A0, b43_ntab_tdi20a0);
3157 ntab_upload(dev, B43_NTAB_TDI20A1, b43_ntab_tdi20a1);
3158 ntab_upload(dev, B43_NTAB_TDI40A0, b43_ntab_tdi40a0);
3159 ntab_upload(dev, B43_NTAB_TDI40A1, b43_ntab_tdi40a1);
3160 ntab_upload(dev, B43_NTAB_BDI, b43_ntab_bdi);
3161 ntab_upload(dev, B43_NTAB_CHANEST, b43_ntab_channelest);
3162 ntab_upload(dev, B43_NTAB_MCS, b43_ntab_mcs);
3163
3164 /* Volatile tables */
3165 ntab_upload(dev, B43_NTAB_NOISEVAR10, b43_ntab_noisevar10);
3166 ntab_upload(dev, B43_NTAB_NOISEVAR11, b43_ntab_noisevar11);
3167 ntab_upload(dev, B43_NTAB_C0_ESTPLT, b43_ntab_estimatepowerlt0);
3168 ntab_upload(dev, B43_NTAB_C1_ESTPLT, b43_ntab_estimatepowerlt1);
3169 ntab_upload(dev, B43_NTAB_C0_ADJPLT, b43_ntab_adjustpower0);
3170 ntab_upload(dev, B43_NTAB_C1_ADJPLT, b43_ntab_adjustpower1);
3171 ntab_upload(dev, B43_NTAB_C0_GAINCTL, b43_ntab_gainctl0);
3172 ntab_upload(dev, B43_NTAB_C1_GAINCTL, b43_ntab_gainctl1);
3173 ntab_upload(dev, B43_NTAB_C0_IQLT, b43_ntab_iqlt0);
3174 ntab_upload(dev, B43_NTAB_C1_IQLT, b43_ntab_iqlt1);
3175 ntab_upload(dev, B43_NTAB_C0_LOFEEDTH, b43_ntab_loftlt0);
3176 ntab_upload(dev, B43_NTAB_C1_LOFEEDTH, b43_ntab_loftlt1);
3177}
3178
3179void b43_nphy_rev3plus_tables_init(struct b43_wldev *dev)
3180{
3181 /* Static tables */
3182 /* TODO */
3183
3184 /* Volatile tables */
3185 /* TODO */
3186}