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