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_noisevar0_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 u32 b43_ntab_noisevar1_r3[] = {
1698 0x02110211, 0x0000014d, 0x02110211, 0x0000014d,
1699 0x02110211, 0x0000014d, 0x02110211, 0x0000014d,
1700 0x02110211, 0x0000014d, 0x02110211, 0x0000014d,
1701 0x02110211, 0x0000014d, 0x02110211, 0x0000014d,
1702 0x02110211, 0x0000014d, 0x02110211, 0x0000014d,
1703 0x02110211, 0x0000014d, 0x02110211, 0x0000014d,
1704 0x02110211, 0x0000014d, 0x02110211, 0x0000014d,
1705 0x02110211, 0x0000014d, 0x02110211, 0x0000014d,
1706 0x02110211, 0x0000014d, 0x02110211, 0x0000014d,
1707 0x02110211, 0x0000014d, 0x02110211, 0x0000014d,
1708 0x02110211, 0x0000014d, 0x02110211, 0x0000014d,
1709 0x02110211, 0x0000014d, 0x02110211, 0x0000014d,
1710 0x02110211, 0x0000014d, 0x02110211, 0x0000014d,
1711 0x02110211, 0x0000014d, 0x02110211, 0x0000014d,
1712 0x02110211, 0x0000014d, 0x02110211, 0x0000014d,
1713 0x02110211, 0x0000014d, 0x02110211, 0x0000014d,
1714 0x02110211, 0x0000014d, 0x02110211, 0x0000014d,
1715 0x02110211, 0x0000014d, 0x02110211, 0x0000014d,
1716 0x02110211, 0x0000014d, 0x02110211, 0x0000014d,
1717 0x02110211, 0x0000014d, 0x02110211, 0x0000014d,
1718 0x02110211, 0x0000014d, 0x02110211, 0x0000014d,
1719 0x02110211, 0x0000014d, 0x02110211, 0x0000014d,
1720 0x02110211, 0x0000014d, 0x02110211, 0x0000014d,
1721 0x02110211, 0x0000014d, 0x02110211, 0x0000014d,
1722 0x02110211, 0x0000014d, 0x02110211, 0x0000014d,
1723 0x02110211, 0x0000014d, 0x02110211, 0x0000014d,
1724 0x02110211, 0x0000014d, 0x02110211, 0x0000014d,
1725 0x02110211, 0x0000014d, 0x02110211, 0x0000014d,
1726 0x02110211, 0x0000014d, 0x02110211, 0x0000014d,
1727 0x02110211, 0x0000014d, 0x02110211, 0x0000014d,
1728 0x02110211, 0x0000014d, 0x02110211, 0x0000014d,
1729 0x02110211, 0x0000014d, 0x02110211, 0x0000014d,
1730 0x02110211, 0x0000014d, 0x02110211, 0x0000014d,
1731 0x02110211, 0x0000014d, 0x02110211, 0x0000014d,
1732 0x02110211, 0x0000014d, 0x02110211, 0x0000014d,
1733 0x02110211, 0x0000014d, 0x02110211, 0x0000014d,
1734 0x02110211, 0x0000014d, 0x02110211, 0x0000014d,
1735 0x02110211, 0x0000014d, 0x02110211, 0x0000014d,
1736 0x02110211, 0x0000014d, 0x02110211, 0x0000014d,
1737 0x02110211, 0x0000014d, 0x02110211, 0x0000014d,
1738 0x02110211, 0x0000014d, 0x02110211, 0x0000014d,
1739 0x02110211, 0x0000014d, 0x02110211, 0x0000014d,
1740 0x02110211, 0x0000014d, 0x02110211, 0x0000014d,
1741 0x02110211, 0x0000014d, 0x02110211, 0x0000014d,
1742 0x02110211, 0x0000014d, 0x02110211, 0x0000014d,
1743 0x02110211, 0x0000014d, 0x02110211, 0x0000014d,
1744 0x02110211, 0x0000014d, 0x02110211, 0x0000014d,
1745 0x02110211, 0x0000014d, 0x02110211, 0x0000014d,
1746 0x02110211, 0x0000014d, 0x02110211, 0x0000014d,
1747 0x02110211, 0x0000014d, 0x02110211, 0x0000014d,
1748 0x02110211, 0x0000014d, 0x02110211, 0x0000014d,
1749 0x02110211, 0x0000014d, 0x02110211, 0x0000014d,
1750 0x02110211, 0x0000014d, 0x02110211, 0x0000014d,
1751 0x02110211, 0x0000014d, 0x02110211, 0x0000014d,
1752 0x02110211, 0x0000014d, 0x02110211, 0x0000014d,
1753 0x02110211, 0x0000014d, 0x02110211, 0x0000014d,
1754 0x02110211, 0x0000014d, 0x02110211, 0x0000014d,
1755 0x02110211, 0x0000014d, 0x02110211, 0x0000014d,
1756 0x02110211, 0x0000014d, 0x02110211, 0x0000014d,
1757 0x02110211, 0x0000014d, 0x02110211, 0x0000014d,
1758 0x02110211, 0x0000014d, 0x02110211, 0x0000014d,
1759 0x02110211, 0x0000014d, 0x02110211, 0x0000014d,
1760 0x02110211, 0x0000014d, 0x02110211, 0x0000014d,
1761 0x02110211, 0x0000014d, 0x02110211, 0x0000014d,
1762 };
1763
1764 static const u16 b43_ntab_mcs_r3[] = {
1765 0x0000, 0x0008, 0x000a, 0x0010, 0x0012, 0x0019,
1766 0x001a, 0x001c, 0x0080, 0x0088, 0x008a, 0x0090,
1767 0x0092, 0x0099, 0x009a, 0x009c, 0x0100, 0x0108,
1768 0x010a, 0x0110, 0x0112, 0x0119, 0x011a, 0x011c,
1769 0x0180, 0x0188, 0x018a, 0x0190, 0x0192, 0x0199,
1770 0x019a, 0x019c, 0x0000, 0x0098, 0x00a0, 0x00a8,
1771 0x009a, 0x00a2, 0x00aa, 0x0120, 0x0128, 0x0128,
1772 0x0130, 0x0138, 0x0138, 0x0140, 0x0122, 0x012a,
1773 0x012a, 0x0132, 0x013a, 0x013a, 0x0142, 0x01a8,
1774 0x01b0, 0x01b8, 0x01b0, 0x01b8, 0x01c0, 0x01c8,
1775 0x01c0, 0x01c8, 0x01d0, 0x01d0, 0x01d8, 0x01aa,
1776 0x01b2, 0x01ba, 0x01b2, 0x01ba, 0x01c2, 0x01ca,
1777 0x01c2, 0x01ca, 0x01d2, 0x01d2, 0x01da, 0x0001,
1778 0x0002, 0x0004, 0x0009, 0x000c, 0x0011, 0x0014,
1779 0x0018, 0x0020, 0x0021, 0x0022, 0x0024, 0x0081,
1780 0x0082, 0x0084, 0x0089, 0x008c, 0x0091, 0x0094,
1781 0x0098, 0x00a0, 0x00a1, 0x00a2, 0x00a4, 0x0007,
1782 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007,
1783 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007,
1784 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007,
1785 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007,
1786 0x0007, 0x0007,
1787 };
1788
1789 static const u32 b43_ntab_tdi20a0_r3[] = {
1790 0x00091226, 0x000a1429, 0x000b56ad, 0x000c58b0,
1791 0x000d5ab3, 0x000e9cb6, 0x000f9eba, 0x0000c13d,
1792 0x00020301, 0x00030504, 0x00040708, 0x0005090b,
1793 0x00064b8e, 0x00095291, 0x000a5494, 0x000b9718,
1794 0x000c9927, 0x000d9b2a, 0x000edd2e, 0x000fdf31,
1795 0x000101b4, 0x000243b7, 0x000345bb, 0x000447be,
1796 0x00058982, 0x00068c05, 0x00099309, 0x000a950c,
1797 0x000bd78f, 0x000cd992, 0x000ddb96, 0x000f1d99,
1798 0x00005fa8, 0x0001422c, 0x0002842f, 0x00038632,
1799 0x00048835, 0x0005ca38, 0x0006ccbc, 0x0009d3bf,
1800 0x000b1603, 0x000c1806, 0x000d1a0a, 0x000e1c0d,
1801 0x000f5e10, 0x00008093, 0x00018297, 0x0002c49a,
1802 0x0003c680, 0x0004c880, 0x00060b00, 0x00070d00,
1803 0x00000000, 0x00000000, 0x00000000,
1804 };
1805
1806 static const u32 b43_ntab_tdi20a1_r3[] = {
1807 0x00014b26, 0x00028d29, 0x000393ad, 0x00049630,
1808 0x0005d833, 0x0006da36, 0x00099c3a, 0x000a9e3d,
1809 0x000bc081, 0x000cc284, 0x000dc488, 0x000f068b,
1810 0x0000488e, 0x00018b91, 0x0002d214, 0x0003d418,
1811 0x0004d6a7, 0x000618aa, 0x00071aae, 0x0009dcb1,
1812 0x000b1eb4, 0x000c0137, 0x000d033b, 0x000e053e,
1813 0x000f4702, 0x00008905, 0x00020c09, 0x0003128c,
1814 0x0004148f, 0x00051712, 0x00065916, 0x00091b19,
1815 0x000a1d28, 0x000b5f2c, 0x000c41af, 0x000d43b2,
1816 0x000e85b5, 0x000f87b8, 0x0000c9bc, 0x00024cbf,
1817 0x00035303, 0x00045506, 0x0005978a, 0x0006998d,
1818 0x00095b90, 0x000a5d93, 0x000b9f97, 0x000c821a,
1819 0x000d8400, 0x000ec600, 0x000fc800, 0x00010a00,
1820 0x00000000, 0x00000000, 0x00000000,
1821 };
1822
1823 static const u32 b43_ntab_tdi40a0_r3[] = {
1824 0x0011a346, 0x00136ccf, 0x0014f5d9, 0x001641e2,
1825 0x0017cb6b, 0x00195475, 0x001b2383, 0x001cad0c,
1826 0x001e7616, 0x0000821f, 0x00020ba8, 0x0003d4b2,
1827 0x00056447, 0x00072dd0, 0x0008b6da, 0x000a02e3,
1828 0x000b8c6c, 0x000d15f6, 0x0011e484, 0x0013ae0d,
1829 0x00153717, 0x00168320, 0x00180ca9, 0x00199633,
1830 0x001b6548, 0x001ceed1, 0x001eb7db, 0x0000c3e4,
1831 0x00024d6d, 0x000416f7, 0x0005a585, 0x00076f0f,
1832 0x0008f818, 0x000a4421, 0x000bcdab, 0x000d9734,
1833 0x00122649, 0x0013efd2, 0x001578dc, 0x0016c4e5,
1834 0x00184e6e, 0x001a17f8, 0x001ba686, 0x001d3010,
1835 0x001ef999, 0x00010522, 0x00028eac, 0x00045835,
1836 0x0005e74a, 0x0007b0d3, 0x00093a5d, 0x000a85e6,
1837 0x000c0f6f, 0x000dd8f9, 0x00126787, 0x00143111,
1838 0x0015ba9a, 0x00170623, 0x00188fad, 0x001a5936,
1839 0x001be84b, 0x001db1d4, 0x001f3b5e, 0x000146e7,
1840 0x00031070, 0x000499fa, 0x00062888, 0x0007f212,
1841 0x00097b9b, 0x000ac7a4, 0x000c50ae, 0x000e1a37,
1842 0x0012a94c, 0x001472d5, 0x0015fc5f, 0x00174868,
1843 0x0018d171, 0x001a9afb, 0x001c2989, 0x001df313,
1844 0x001f7c9c, 0x000188a5, 0x000351af, 0x0004db38,
1845 0x0006aa4d, 0x000833d7, 0x0009bd60, 0x000b0969,
1846 0x000c9273, 0x000e5bfc, 0x00132a8a, 0x0014b414,
1847 0x00163d9d, 0x001789a6, 0x001912b0, 0x001adc39,
1848 0x001c6bce, 0x001e34d8, 0x001fbe61, 0x0001ca6a,
1849 0x00039374, 0x00051cfd, 0x0006ec0b, 0x00087515,
1850 0x0009fe9e, 0x000b4aa7, 0x000cd3b1, 0x000e9d3a,
1851 0x00000000, 0x00000000,
1852 };
1853
1854 static const u32 b43_ntab_tdi40a1_r3[] = {
1855 0x001edb36, 0x000129ca, 0x0002b353, 0x00047cdd,
1856 0x0005c8e6, 0x000791ef, 0x00091bf9, 0x000aaa07,
1857 0x000c3391, 0x000dfd1a, 0x00120923, 0x0013d22d,
1858 0x00155c37, 0x0016eacb, 0x00187454, 0x001a3dde,
1859 0x001b89e7, 0x001d12f0, 0x001f1cfa, 0x00016b88,
1860 0x00033492, 0x0004be1b, 0x00060a24, 0x0007d32e,
1861 0x00095d38, 0x000aec4c, 0x000c7555, 0x000e3edf,
1862 0x00124ae8, 0x001413f1, 0x0015a37b, 0x00172c89,
1863 0x0018b593, 0x001a419c, 0x001bcb25, 0x001d942f,
1864 0x001f63b9, 0x0001ad4d, 0x00037657, 0x0004c260,
1865 0x00068be9, 0x000814f3, 0x0009a47c, 0x000b2d8a,
1866 0x000cb694, 0x000e429d, 0x00128c26, 0x001455b0,
1867 0x0015e4ba, 0x00176e4e, 0x0018f758, 0x001a8361,
1868 0x001c0cea, 0x001dd674, 0x001fa57d, 0x0001ee8b,
1869 0x0003b795, 0x0005039e, 0x0006cd27, 0x000856b1,
1870 0x0009e5c6, 0x000b6f4f, 0x000cf859, 0x000e8462,
1871 0x00130deb, 0x00149775, 0x00162603, 0x0017af8c,
1872 0x00193896, 0x001ac49f, 0x001c4e28, 0x001e17b2,
1873 0x0000a6c7, 0x00023050, 0x0003f9da, 0x00054563,
1874 0x00070eec, 0x00089876, 0x000a2704, 0x000bb08d,
1875 0x000d3a17, 0x001185a0, 0x00134f29, 0x0014d8b3,
1876 0x001667c8, 0x0017f151, 0x00197adb, 0x001b0664,
1877 0x001c8fed, 0x001e5977, 0x0000e805, 0x0002718f,
1878 0x00043b18, 0x000586a1, 0x0007502b, 0x0008d9b4,
1879 0x000a68c9, 0x000bf252, 0x000dbbdc, 0x0011c7e5,
1880 0x001390ee, 0x00151a78, 0x0016a906, 0x00183290,
1881 0x0019bc19, 0x001b4822, 0x001cd12c, 0x001e9ab5,
1882 0x00000000, 0x00000000,
1883 };
1884
1885 static const u32 b43_ntab_pilotlt_r3[] = {
1886 0x76540213, 0x62407351, 0x76543210, 0x76540213,
1887 0x76540213, 0x76430521,
1888 };
1889
1890 static const u32 b43_ntab_channelest_r3[] = {
1891 0x44444444, 0x44444444, 0x44444444, 0x44444444,
1892 0x44444444, 0x44444444, 0x44444444, 0x44444444,
1893 0x10101010, 0x10101010, 0x10101010, 0x10101010,
1894 0x10101010, 0x10101010, 0x10101010, 0x10101010,
1895 0x44444444, 0x44444444, 0x44444444, 0x44444444,
1896 0x44444444, 0x44444444, 0x44444444, 0x44444444,
1897 0x10101010, 0x10101010, 0x10101010, 0x10101010,
1898 0x10101010, 0x10101010, 0x10101010, 0x10101010,
1899 0x44444444, 0x44444444, 0x44444444, 0x44444444,
1900 0x44444444, 0x44444444, 0x44444444, 0x44444444,
1901 0x44444444, 0x44444444, 0x44444444, 0x44444444,
1902 0x44444444, 0x44444444, 0x44444444, 0x44444444,
1903 0x10101010, 0x10101010, 0x10101010, 0x10101010,
1904 0x10101010, 0x10101010, 0x10101010, 0x10101010,
1905 0x10101010, 0x10101010, 0x10101010, 0x10101010,
1906 0x10101010, 0x10101010, 0x10101010, 0x10101010,
1907 0x44444444, 0x44444444, 0x44444444, 0x44444444,
1908 0x44444444, 0x44444444, 0x44444444, 0x44444444,
1909 0x44444444, 0x44444444, 0x44444444, 0x44444444,
1910 0x44444444, 0x44444444, 0x44444444, 0x44444444,
1911 0x10101010, 0x10101010, 0x10101010, 0x10101010,
1912 0x10101010, 0x10101010, 0x10101010, 0x10101010,
1913 0x10101010, 0x10101010, 0x10101010, 0x10101010,
1914 0x10101010, 0x10101010, 0x10101010, 0x10101010,
1915 };
1916
1917 static const u8 b43_ntab_framelookup_r3[] = {
1918 0x02, 0x04, 0x14, 0x14, 0x03, 0x05, 0x16, 0x16,
1919 0x0a, 0x0c, 0x1c, 0x1c, 0x0b, 0x0d, 0x1e, 0x1e,
1920 0x06, 0x08, 0x18, 0x18, 0x07, 0x09, 0x1a, 0x1a,
1921 0x0e, 0x10, 0x20, 0x28, 0x0f, 0x11, 0x22, 0x2a,
1922 };
1923
1924 static const u8 b43_ntab_estimatepowerlt0_r3[] = {
1925 0x55, 0x54, 0x54, 0x53, 0x52, 0x52, 0x51, 0x51,
1926 0x50, 0x4f, 0x4f, 0x4e, 0x4e, 0x4d, 0x4c, 0x4c,
1927 0x4b, 0x4a, 0x49, 0x49, 0x48, 0x47, 0x46, 0x46,
1928 0x45, 0x44, 0x43, 0x42, 0x41, 0x40, 0x40, 0x3f,
1929 0x3e, 0x3d, 0x3c, 0x3a, 0x39, 0x38, 0x37, 0x36,
1930 0x35, 0x33, 0x32, 0x31, 0x2f, 0x2e, 0x2c, 0x2b,
1931 0x29, 0x27, 0x25, 0x23, 0x21, 0x1f, 0x1d, 0x1a,
1932 0x18, 0x15, 0x12, 0x0e, 0x0b, 0x07, 0x02, 0xfd,
1933 };
1934
1935 static const u8 b43_ntab_estimatepowerlt1_r3[] = {
1936 0x55, 0x54, 0x54, 0x53, 0x52, 0x52, 0x51, 0x51,
1937 0x50, 0x4f, 0x4f, 0x4e, 0x4e, 0x4d, 0x4c, 0x4c,
1938 0x4b, 0x4a, 0x49, 0x49, 0x48, 0x47, 0x46, 0x46,
1939 0x45, 0x44, 0x43, 0x42, 0x41, 0x40, 0x40, 0x3f,
1940 0x3e, 0x3d, 0x3c, 0x3a, 0x39, 0x38, 0x37, 0x36,
1941 0x35, 0x33, 0x32, 0x31, 0x2f, 0x2e, 0x2c, 0x2b,
1942 0x29, 0x27, 0x25, 0x23, 0x21, 0x1f, 0x1d, 0x1a,
1943 0x18, 0x15, 0x12, 0x0e, 0x0b, 0x07, 0x02, 0xfd,
1944 };
1945
1946 static const u8 b43_ntab_adjustpower0_r3[] = {
1947 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1948 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1949 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1950 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1951 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1952 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1953 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1954 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1955 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1956 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1957 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1958 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1959 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1960 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1961 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1962 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1963 };
1964
1965 static const u8 b43_ntab_adjustpower1_r3[] = {
1966 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1967 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1968 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1969 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1970 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1971 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1972 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1973 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1974 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1975 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1976 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1977 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1978 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1979 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1980 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1981 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1982 };
1983
1984 static const u32 b43_ntab_gainctl0_r3[] = {
1985 0x5bf70044, 0x5bf70042, 0x5bf70040, 0x5bf7003e,
1986 0x5bf7003c, 0x5bf7003b, 0x5bf70039, 0x5bf70037,
1987 0x5bf70036, 0x5bf70034, 0x5bf70033, 0x5bf70031,
1988 0x5bf70030, 0x5ba70044, 0x5ba70042, 0x5ba70040,
1989 0x5ba7003e, 0x5ba7003c, 0x5ba7003b, 0x5ba70039,
1990 0x5ba70037, 0x5ba70036, 0x5ba70034, 0x5ba70033,
1991 0x5b770044, 0x5b770042, 0x5b770040, 0x5b77003e,
1992 0x5b77003c, 0x5b77003b, 0x5b770039, 0x5b770037,
1993 0x5b770036, 0x5b770034, 0x5b770033, 0x5b770031,
1994 0x5b770030, 0x5b77002f, 0x5b77002d, 0x5b77002c,
1995 0x5b470044, 0x5b470042, 0x5b470040, 0x5b47003e,
1996 0x5b47003c, 0x5b47003b, 0x5b470039, 0x5b470037,
1997 0x5b470036, 0x5b470034, 0x5b470033, 0x5b470031,
1998 0x5b470030, 0x5b47002f, 0x5b47002d, 0x5b47002c,
1999 0x5b47002b, 0x5b47002a, 0x5b270044, 0x5b270042,
2000 0x5b270040, 0x5b27003e, 0x5b27003c, 0x5b27003b,
2001 0x5b270039, 0x5b270037, 0x5b270036, 0x5b270034,
2002 0x5b270033, 0x5b270031, 0x5b270030, 0x5b27002f,
2003 0x5b170044, 0x5b170042, 0x5b170040, 0x5b17003e,
2004 0x5b17003c, 0x5b17003b, 0x5b170039, 0x5b170037,
2005 0x5b170036, 0x5b170034, 0x5b170033, 0x5b170031,
2006 0x5b170030, 0x5b17002f, 0x5b17002d, 0x5b17002c,
2007 0x5b17002b, 0x5b17002a, 0x5b170028, 0x5b170027,
2008 0x5b170026, 0x5b170025, 0x5b170024, 0x5b170023,
2009 0x5b070044, 0x5b070042, 0x5b070040, 0x5b07003e,
2010 0x5b07003c, 0x5b07003b, 0x5b070039, 0x5b070037,
2011 0x5b070036, 0x5b070034, 0x5b070033, 0x5b070031,
2012 0x5b070030, 0x5b07002f, 0x5b07002d, 0x5b07002c,
2013 0x5b07002b, 0x5b07002a, 0x5b070028, 0x5b070027,
2014 0x5b070026, 0x5b070025, 0x5b070024, 0x5b070023,
2015 0x5b070022, 0x5b070021, 0x5b070020, 0x5b07001f,
2016 0x5b07001e, 0x5b07001d, 0x5b07001d, 0x5b07001c,
2017 };
2018
2019 static const u32 b43_ntab_gainctl1_r3[] = {
2020 0x5bf70044, 0x5bf70042, 0x5bf70040, 0x5bf7003e,
2021 0x5bf7003c, 0x5bf7003b, 0x5bf70039, 0x5bf70037,
2022 0x5bf70036, 0x5bf70034, 0x5bf70033, 0x5bf70031,
2023 0x5bf70030, 0x5ba70044, 0x5ba70042, 0x5ba70040,
2024 0x5ba7003e, 0x5ba7003c, 0x5ba7003b, 0x5ba70039,
2025 0x5ba70037, 0x5ba70036, 0x5ba70034, 0x5ba70033,
2026 0x5b770044, 0x5b770042, 0x5b770040, 0x5b77003e,
2027 0x5b77003c, 0x5b77003b, 0x5b770039, 0x5b770037,
2028 0x5b770036, 0x5b770034, 0x5b770033, 0x5b770031,
2029 0x5b770030, 0x5b77002f, 0x5b77002d, 0x5b77002c,
2030 0x5b470044, 0x5b470042, 0x5b470040, 0x5b47003e,
2031 0x5b47003c, 0x5b47003b, 0x5b470039, 0x5b470037,
2032 0x5b470036, 0x5b470034, 0x5b470033, 0x5b470031,
2033 0x5b470030, 0x5b47002f, 0x5b47002d, 0x5b47002c,
2034 0x5b47002b, 0x5b47002a, 0x5b270044, 0x5b270042,
2035 0x5b270040, 0x5b27003e, 0x5b27003c, 0x5b27003b,
2036 0x5b270039, 0x5b270037, 0x5b270036, 0x5b270034,
2037 0x5b270033, 0x5b270031, 0x5b270030, 0x5b27002f,
2038 0x5b170044, 0x5b170042, 0x5b170040, 0x5b17003e,
2039 0x5b17003c, 0x5b17003b, 0x5b170039, 0x5b170037,
2040 0x5b170036, 0x5b170034, 0x5b170033, 0x5b170031,
2041 0x5b170030, 0x5b17002f, 0x5b17002d, 0x5b17002c,
2042 0x5b17002b, 0x5b17002a, 0x5b170028, 0x5b170027,
2043 0x5b170026, 0x5b170025, 0x5b170024, 0x5b170023,
2044 0x5b070044, 0x5b070042, 0x5b070040, 0x5b07003e,
2045 0x5b07003c, 0x5b07003b, 0x5b070039, 0x5b070037,
2046 0x5b070036, 0x5b070034, 0x5b070033, 0x5b070031,
2047 0x5b070030, 0x5b07002f, 0x5b07002d, 0x5b07002c,
2048 0x5b07002b, 0x5b07002a, 0x5b070028, 0x5b070027,
2049 0x5b070026, 0x5b070025, 0x5b070024, 0x5b070023,
2050 0x5b070022, 0x5b070021, 0x5b070020, 0x5b07001f,
2051 0x5b07001e, 0x5b07001d, 0x5b07001d, 0x5b07001c,
2052 };
2053
2054 static const u32 b43_ntab_iqlt0_r3[] = {
2055 0x00000000, 0x00000000, 0x00000000, 0x00000000,
2056 0x00000000, 0x00000000, 0x00000000, 0x00000000,
2057 0x00000000, 0x00000000, 0x00000000, 0x00000000,
2058 0x00000000, 0x00000000, 0x00000000, 0x00000000,
2059 0x00000000, 0x00000000, 0x00000000, 0x00000000,
2060 0x00000000, 0x00000000, 0x00000000, 0x00000000,
2061 0x00000000, 0x00000000, 0x00000000, 0x00000000,
2062 0x00000000, 0x00000000, 0x00000000, 0x00000000,
2063 0x00000000, 0x00000000, 0x00000000, 0x00000000,
2064 0x00000000, 0x00000000, 0x00000000, 0x00000000,
2065 0x00000000, 0x00000000, 0x00000000, 0x00000000,
2066 0x00000000, 0x00000000, 0x00000000, 0x00000000,
2067 0x00000000, 0x00000000, 0x00000000, 0x00000000,
2068 0x00000000, 0x00000000, 0x00000000, 0x00000000,
2069 0x00000000, 0x00000000, 0x00000000, 0x00000000,
2070 0x00000000, 0x00000000, 0x00000000, 0x00000000,
2071 0x00000000, 0x00000000, 0x00000000, 0x00000000,
2072 0x00000000, 0x00000000, 0x00000000, 0x00000000,
2073 0x00000000, 0x00000000, 0x00000000, 0x00000000,
2074 0x00000000, 0x00000000, 0x00000000, 0x00000000,
2075 0x00000000, 0x00000000, 0x00000000, 0x00000000,
2076 0x00000000, 0x00000000, 0x00000000, 0x00000000,
2077 0x00000000, 0x00000000, 0x00000000, 0x00000000,
2078 0x00000000, 0x00000000, 0x00000000, 0x00000000,
2079 0x00000000, 0x00000000, 0x00000000, 0x00000000,
2080 0x00000000, 0x00000000, 0x00000000, 0x00000000,
2081 0x00000000, 0x00000000, 0x00000000, 0x00000000,
2082 0x00000000, 0x00000000, 0x00000000, 0x00000000,
2083 0x00000000, 0x00000000, 0x00000000, 0x00000000,
2084 0x00000000, 0x00000000, 0x00000000, 0x00000000,
2085 0x00000000, 0x00000000, 0x00000000, 0x00000000,
2086 0x00000000, 0x00000000, 0x00000000, 0x00000000,
2087 };
2088
2089 static const u32 b43_ntab_iqlt1_r3[] = {
2090 0x00000000, 0x00000000, 0x00000000, 0x00000000,
2091 0x00000000, 0x00000000, 0x00000000, 0x00000000,
2092 0x00000000, 0x00000000, 0x00000000, 0x00000000,
2093 0x00000000, 0x00000000, 0x00000000, 0x00000000,
2094 0x00000000, 0x00000000, 0x00000000, 0x00000000,
2095 0x00000000, 0x00000000, 0x00000000, 0x00000000,
2096 0x00000000, 0x00000000, 0x00000000, 0x00000000,
2097 0x00000000, 0x00000000, 0x00000000, 0x00000000,
2098 0x00000000, 0x00000000, 0x00000000, 0x00000000,
2099 0x00000000, 0x00000000, 0x00000000, 0x00000000,
2100 0x00000000, 0x00000000, 0x00000000, 0x00000000,
2101 0x00000000, 0x00000000, 0x00000000, 0x00000000,
2102 0x00000000, 0x00000000, 0x00000000, 0x00000000,
2103 0x00000000, 0x00000000, 0x00000000, 0x00000000,
2104 0x00000000, 0x00000000, 0x00000000, 0x00000000,
2105 0x00000000, 0x00000000, 0x00000000, 0x00000000,
2106 0x00000000, 0x00000000, 0x00000000, 0x00000000,
2107 0x00000000, 0x00000000, 0x00000000, 0x00000000,
2108 0x00000000, 0x00000000, 0x00000000, 0x00000000,
2109 0x00000000, 0x00000000, 0x00000000, 0x00000000,
2110 0x00000000, 0x00000000, 0x00000000, 0x00000000,
2111 0x00000000, 0x00000000, 0x00000000, 0x00000000,
2112 0x00000000, 0x00000000, 0x00000000, 0x00000000,
2113 0x00000000, 0x00000000, 0x00000000, 0x00000000,
2114 0x00000000, 0x00000000, 0x00000000, 0x00000000,
2115 0x00000000, 0x00000000, 0x00000000, 0x00000000,
2116 0x00000000, 0x00000000, 0x00000000, 0x00000000,
2117 0x00000000, 0x00000000, 0x00000000, 0x00000000,
2118 0x00000000, 0x00000000, 0x00000000, 0x00000000,
2119 0x00000000, 0x00000000, 0x00000000, 0x00000000,
2120 0x00000000, 0x00000000, 0x00000000, 0x00000000,
2121 0x00000000, 0x00000000, 0x00000000, 0x00000000,
2122 };
2123
2124 static const u16 b43_ntab_loftlt0_r3[] = {
2125 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
2126 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
2127 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
2128 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
2129 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
2130 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
2131 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
2132 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
2133 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
2134 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
2135 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
2136 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
2137 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
2138 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
2139 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
2140 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
2141 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
2142 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
2143 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
2144 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
2145 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
2146 0x0000, 0x0000,
2147 };
2148
2149 static const u16 b43_ntab_loftlt1_r3[] = {
2150 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
2151 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
2152 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
2153 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
2154 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
2155 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
2156 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
2157 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
2158 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
2159 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
2160 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
2161 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
2162 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
2163 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
2164 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
2165 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
2166 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
2167 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
2168 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
2169 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
2170 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
2171 0x0000, 0x0000,
2172 };
2173
2174 /* volatile tables, PHY revision >= 3 */
2175
2176 /* indexed by antswctl2g */
2177 static const u16 b43_ntab_antswctl2g_r3[4][32] = {
2178 {
2179 0x0082, 0x0082, 0x0211, 0x0222, 0x0328,
2180 0x0000, 0x0000, 0x0000, 0x0144, 0x0000,
2181 0x0000, 0x0000, 0x0188, 0x0000, 0x0000,
2182 0x0000, 0x0082, 0x0082, 0x0211, 0x0222,
2183 0x0328, 0x0000, 0x0000, 0x0000, 0x0144,
2184 0x0000, 0x0000, 0x0000, 0x0188, 0x0000,
2185 0x0000, 0x0000,
2186 },
2187 {
2188 0x0022, 0x0022, 0x0011, 0x0022, 0x0022,
2189 0x0000, 0x0000, 0x0000, 0x0011, 0x0000,
2190 0x0000, 0x0000, 0x0022, 0x0000, 0x0000,
2191 0x0000, 0x0022, 0x0022, 0x0011, 0x0022,
2192 0x0022, 0x0000, 0x0000, 0x0000, 0x0011,
2193 0x0000, 0x0000, 0x0000, 0x0022, 0x0000,
2194 0x0000, 0x0000,
2195 },
2196 {
2197 0x0088, 0x0088, 0x0044, 0x0088, 0x0088,
2198 0x0000, 0x0000, 0x0000, 0x0044, 0x0000,
2199 0x0000, 0x0000, 0x0088, 0x0000, 0x0000,
2200 0x0000, 0x0088, 0x0088, 0x0044, 0x0088,
2201 0x0088, 0x0000, 0x0000, 0x0000, 0x0044,
2202 0x0000, 0x0000, 0x0000, 0x0088, 0x0000,
2203 0x0000, 0x0000,
2204 },
2205 {
2206 0x0022, 0x0022, 0x0011, 0x0022, 0x0000,
2207 0x0000, 0x0000, 0x0000, 0x0011, 0x0000,
2208 0x0000, 0x0000, 0x0022, 0x0000, 0x0000,
2209 0x03cc, 0x0022, 0x0022, 0x0011, 0x0022,
2210 0x0000, 0x0000, 0x0000, 0x0000, 0x0011,
2211 0x0000, 0x0000, 0x0000, 0x0022, 0x0000,
2212 0x0000, 0x03cc,
2213 }
2214 };
2215
2216 /* TX gain tables */
2217 static const u32 b43_ntab_tx_gain_rev0_1_2[] = {
2218 0x03cc2b44, 0x03cc2b42, 0x03cc2a44, 0x03cc2a42,
2219 0x03cc2944, 0x03c82b44, 0x03c82b42, 0x03c82a44,
2220 0x03c82a42, 0x03c82944, 0x03c82942, 0x03c82844,
2221 0x03c82842, 0x03c42b44, 0x03c42b42, 0x03c42a44,
2222 0x03c42a42, 0x03c42944, 0x03c42942, 0x03c42844,
2223 0x03c42842, 0x03c42744, 0x03c42742, 0x03c42644,
2224 0x03c42642, 0x03c42544, 0x03c42542, 0x03c42444,
2225 0x03c42442, 0x03c02b44, 0x03c02b42, 0x03c02a44,
2226 0x03c02a42, 0x03c02944, 0x03c02942, 0x03c02844,
2227 0x03c02842, 0x03c02744, 0x03c02742, 0x03b02b44,
2228 0x03b02b42, 0x03b02a44, 0x03b02a42, 0x03b02944,
2229 0x03b02942, 0x03b02844, 0x03b02842, 0x03b02744,
2230 0x03b02742, 0x03b02644, 0x03b02642, 0x03b02544,
2231 0x03b02542, 0x03a02b44, 0x03a02b42, 0x03a02a44,
2232 0x03a02a42, 0x03a02944, 0x03a02942, 0x03a02844,
2233 0x03a02842, 0x03a02744, 0x03a02742, 0x03902b44,
2234 0x03902b42, 0x03902a44, 0x03902a42, 0x03902944,
2235 0x03902942, 0x03902844, 0x03902842, 0x03902744,
2236 0x03902742, 0x03902644, 0x03902642, 0x03902544,
2237 0x03902542, 0x03802b44, 0x03802b42, 0x03802a44,
2238 0x03802a42, 0x03802944, 0x03802942, 0x03802844,
2239 0x03802842, 0x03802744, 0x03802742, 0x03802644,
2240 0x03802642, 0x03802544, 0x03802542, 0x03802444,
2241 0x03802442, 0x03802344, 0x03802342, 0x03802244,
2242 0x03802242, 0x03802144, 0x03802142, 0x03802044,
2243 0x03802042, 0x03801f44, 0x03801f42, 0x03801e44,
2244 0x03801e42, 0x03801d44, 0x03801d42, 0x03801c44,
2245 0x03801c42, 0x03801b44, 0x03801b42, 0x03801a44,
2246 0x03801a42, 0x03801944, 0x03801942, 0x03801844,
2247 0x03801842, 0x03801744, 0x03801742, 0x03801644,
2248 0x03801642, 0x03801544, 0x03801542, 0x03801444,
2249 0x03801442, 0x03801344, 0x03801342, 0x00002b00,
2250 };
2251
2252 static const u32 b43_ntab_tx_gain_rev3plus_2ghz[] = {
2253 0x1f410044, 0x1f410042, 0x1f410040, 0x1f41003e,
2254 0x1f41003c, 0x1f41003b, 0x1f410039, 0x1f410037,
2255 0x1e410044, 0x1e410042, 0x1e410040, 0x1e41003e,
2256 0x1e41003c, 0x1e41003b, 0x1e410039, 0x1e410037,
2257 0x1d410044, 0x1d410042, 0x1d410040, 0x1d41003e,
2258 0x1d41003c, 0x1d41003b, 0x1d410039, 0x1d410037,
2259 0x1c410044, 0x1c410042, 0x1c410040, 0x1c41003e,
2260 0x1c41003c, 0x1c41003b, 0x1c410039, 0x1c410037,
2261 0x1b410044, 0x1b410042, 0x1b410040, 0x1b41003e,
2262 0x1b41003c, 0x1b41003b, 0x1b410039, 0x1b410037,
2263 0x1a410044, 0x1a410042, 0x1a410040, 0x1a41003e,
2264 0x1a41003c, 0x1a41003b, 0x1a410039, 0x1a410037,
2265 0x19410044, 0x19410042, 0x19410040, 0x1941003e,
2266 0x1941003c, 0x1941003b, 0x19410039, 0x19410037,
2267 0x18410044, 0x18410042, 0x18410040, 0x1841003e,
2268 0x1841003c, 0x1841003b, 0x18410039, 0x18410037,
2269 0x17410044, 0x17410042, 0x17410040, 0x1741003e,
2270 0x1741003c, 0x1741003b, 0x17410039, 0x17410037,
2271 0x16410044, 0x16410042, 0x16410040, 0x1641003e,
2272 0x1641003c, 0x1641003b, 0x16410039, 0x16410037,
2273 0x15410044, 0x15410042, 0x15410040, 0x1541003e,
2274 0x1541003c, 0x1541003b, 0x15410039, 0x15410037,
2275 0x14410044, 0x14410042, 0x14410040, 0x1441003e,
2276 0x1441003c, 0x1441003b, 0x14410039, 0x14410037,
2277 0x13410044, 0x13410042, 0x13410040, 0x1341003e,
2278 0x1341003c, 0x1341003b, 0x13410039, 0x13410037,
2279 0x12410044, 0x12410042, 0x12410040, 0x1241003e,
2280 0x1241003c, 0x1241003b, 0x12410039, 0x12410037,
2281 0x11410044, 0x11410042, 0x11410040, 0x1141003e,
2282 0x1141003c, 0x1141003b, 0x11410039, 0x11410037,
2283 0x10410044, 0x10410042, 0x10410040, 0x1041003e,
2284 0x1041003c, 0x1041003b, 0x10410039, 0x10410037,
2285 };
2286
2287 static const u32 b43_ntab_tx_gain_rev3_5ghz[] = {
2288 0xcff70044, 0xcff70042, 0xcff70040, 0xcff7003e,
2289 0xcff7003c, 0xcff7003b, 0xcff70039, 0xcff70037,
2290 0xcef70044, 0xcef70042, 0xcef70040, 0xcef7003e,
2291 0xcef7003c, 0xcef7003b, 0xcef70039, 0xcef70037,
2292 0xcdf70044, 0xcdf70042, 0xcdf70040, 0xcdf7003e,
2293 0xcdf7003c, 0xcdf7003b, 0xcdf70039, 0xcdf70037,
2294 0xccf70044, 0xccf70042, 0xccf70040, 0xccf7003e,
2295 0xccf7003c, 0xccf7003b, 0xccf70039, 0xccf70037,
2296 0xcbf70044, 0xcbf70042, 0xcbf70040, 0xcbf7003e,
2297 0xcbf7003c, 0xcbf7003b, 0xcbf70039, 0xcbf70037,
2298 0xcaf70044, 0xcaf70042, 0xcaf70040, 0xcaf7003e,
2299 0xcaf7003c, 0xcaf7003b, 0xcaf70039, 0xcaf70037,
2300 0xc9f70044, 0xc9f70042, 0xc9f70040, 0xc9f7003e,
2301 0xc9f7003c, 0xc9f7003b, 0xc9f70039, 0xc9f70037,
2302 0xc8f70044, 0xc8f70042, 0xc8f70040, 0xc8f7003e,
2303 0xc8f7003c, 0xc8f7003b, 0xc8f70039, 0xc8f70037,
2304 0xc7f70044, 0xc7f70042, 0xc7f70040, 0xc7f7003e,
2305 0xc7f7003c, 0xc7f7003b, 0xc7f70039, 0xc7f70037,
2306 0xc6f70044, 0xc6f70042, 0xc6f70040, 0xc6f7003e,
2307 0xc6f7003c, 0xc6f7003b, 0xc6f70039, 0xc6f70037,
2308 0xc5f70044, 0xc5f70042, 0xc5f70040, 0xc5f7003e,
2309 0xc5f7003c, 0xc5f7003b, 0xc5f70039, 0xc5f70037,
2310 0xc4f70044, 0xc4f70042, 0xc4f70040, 0xc4f7003e,
2311 0xc4f7003c, 0xc4f7003b, 0xc4f70039, 0xc4f70037,
2312 0xc3f70044, 0xc3f70042, 0xc3f70040, 0xc3f7003e,
2313 0xc3f7003c, 0xc3f7003b, 0xc3f70039, 0xc3f70037,
2314 0xc2f70044, 0xc2f70042, 0xc2f70040, 0xc2f7003e,
2315 0xc2f7003c, 0xc2f7003b, 0xc2f70039, 0xc2f70037,
2316 0xc1f70044, 0xc1f70042, 0xc1f70040, 0xc1f7003e,
2317 0xc1f7003c, 0xc1f7003b, 0xc1f70039, 0xc1f70037,
2318 0xc0f70044, 0xc0f70042, 0xc0f70040, 0xc0f7003e,
2319 0xc0f7003c, 0xc0f7003b, 0xc0f70039, 0xc0f70037,
2320 };
2321
2322 static const u32 b43_ntab_tx_gain_rev4_5ghz[] = {
2323 0x2ff20044, 0x2ff20042, 0x2ff20040, 0x2ff2003e,
2324 0x2ff2003c, 0x2ff2003b, 0x2ff20039, 0x2ff20037,
2325 0x2ef20044, 0x2ef20042, 0x2ef20040, 0x2ef2003e,
2326 0x2ef2003c, 0x2ef2003b, 0x2ef20039, 0x2ef20037,
2327 0x2df20044, 0x2df20042, 0x2df20040, 0x2df2003e,
2328 0x2df2003c, 0x2df2003b, 0x2df20039, 0x2df20037,
2329 0x2cf20044, 0x2cf20042, 0x2cf20040, 0x2cf2003e,
2330 0x2cf2003c, 0x2cf2003b, 0x2cf20039, 0x2cf20037,
2331 0x2bf20044, 0x2bf20042, 0x2bf20040, 0x2bf2003e,
2332 0x2bf2003c, 0x2bf2003b, 0x2bf20039, 0x2bf20037,
2333 0x2af20044, 0x2af20042, 0x2af20040, 0x2af2003e,
2334 0x2af2003c, 0x2af2003b, 0x2af20039, 0x2af20037,
2335 0x29f20044, 0x29f20042, 0x29f20040, 0x29f2003e,
2336 0x29f2003c, 0x29f2003b, 0x29f20039, 0x29f20037,
2337 0x28f20044, 0x28f20042, 0x28f20040, 0x28f2003e,
2338 0x28f2003c, 0x28f2003b, 0x28f20039, 0x28f20037,
2339 0x27f20044, 0x27f20042, 0x27f20040, 0x27f2003e,
2340 0x27f2003c, 0x27f2003b, 0x27f20039, 0x27f20037,
2341 0x26f20044, 0x26f20042, 0x26f20040, 0x26f2003e,
2342 0x26f2003c, 0x26f2003b, 0x26f20039, 0x26f20037,
2343 0x25f20044, 0x25f20042, 0x25f20040, 0x25f2003e,
2344 0x25f2003c, 0x25f2003b, 0x25f20039, 0x25f20037,
2345 0x24f20044, 0x24f20042, 0x24f20040, 0x24f2003e,
2346 0x24f2003c, 0x24f2003b, 0x24f20039, 0x24f20038,
2347 0x23f20041, 0x23f20040, 0x23f2003f, 0x23f2003e,
2348 0x23f2003c, 0x23f2003b, 0x23f20039, 0x23f20037,
2349 0x22f20044, 0x22f20042, 0x22f20040, 0x22f2003e,
2350 0x22f2003c, 0x22f2003b, 0x22f20039, 0x22f20037,
2351 0x21f20044, 0x21f20042, 0x21f20040, 0x21f2003e,
2352 0x21f2003c, 0x21f2003b, 0x21f20039, 0x21f20037,
2353 0x20d20043, 0x20d20041, 0x20d2003e, 0x20d2003c,
2354 0x20d2003a, 0x20d20038, 0x20d20036, 0x20d20034,
2355 };
2356
2357 static const u32 b43_ntab_tx_gain_rev5plus_5ghz[] = {
2358 0x0f62004a, 0x0f620048, 0x0f620046, 0x0f620044,
2359 0x0f620042, 0x0f620040, 0x0f62003e, 0x0f62003c,
2360 0x0e620044, 0x0e620042, 0x0e620040, 0x0e62003e,
2361 0x0e62003c, 0x0e62003d, 0x0e62003b, 0x0e62003a,
2362 0x0d620043, 0x0d620041, 0x0d620040, 0x0d62003e,
2363 0x0d62003d, 0x0d62003c, 0x0d62003b, 0x0d62003a,
2364 0x0c620041, 0x0c620040, 0x0c62003f, 0x0c62003e,
2365 0x0c62003c, 0x0c62003b, 0x0c620039, 0x0c620037,
2366 0x0b620046, 0x0b620044, 0x0b620042, 0x0b620040,
2367 0x0b62003e, 0x0b62003c, 0x0b62003b, 0x0b62003a,
2368 0x0a620041, 0x0a620040, 0x0a62003e, 0x0a62003c,
2369 0x0a62003b, 0x0a62003a, 0x0a620039, 0x0a620038,
2370 0x0962003e, 0x0962003d, 0x0962003c, 0x0962003b,
2371 0x09620039, 0x09620037, 0x09620035, 0x09620033,
2372 0x08620044, 0x08620042, 0x08620040, 0x0862003e,
2373 0x0862003c, 0x0862003b, 0x0862003a, 0x08620039,
2374 0x07620043, 0x07620042, 0x07620040, 0x0762003f,
2375 0x0762003d, 0x0762003b, 0x0762003a, 0x07620039,
2376 0x0662003e, 0x0662003d, 0x0662003c, 0x0662003b,
2377 0x06620039, 0x06620037, 0x06620035, 0x06620033,
2378 0x05620046, 0x05620044, 0x05620042, 0x05620040,
2379 0x0562003e, 0x0562003c, 0x0562003b, 0x05620039,
2380 0x04620044, 0x04620042, 0x04620040, 0x0462003e,
2381 0x0462003c, 0x0462003b, 0x04620039, 0x04620038,
2382 0x0362003c, 0x0362003b, 0x0362003a, 0x03620039,
2383 0x03620038, 0x03620037, 0x03620035, 0x03620033,
2384 0x0262004c, 0x0262004a, 0x02620048, 0x02620047,
2385 0x02620046, 0x02620044, 0x02620043, 0x02620042,
2386 0x0162004a, 0x01620048, 0x01620046, 0x01620044,
2387 0x01620043, 0x01620042, 0x01620041, 0x01620040,
2388 0x00620042, 0x00620040, 0x0062003e, 0x0062003c,
2389 0x0062003b, 0x00620039, 0x00620037, 0x00620035,
2390 };
2391
2392 static const u32 txpwrctrl_tx_gain_ipa[] = {
2393 0x5ff7002d, 0x5ff7002b, 0x5ff7002a, 0x5ff70029,
2394 0x5ff70028, 0x5ff70027, 0x5ff70026, 0x5ff70025,
2395 0x5ef7002d, 0x5ef7002b, 0x5ef7002a, 0x5ef70029,
2396 0x5ef70028, 0x5ef70027, 0x5ef70026, 0x5ef70025,
2397 0x5df7002d, 0x5df7002b, 0x5df7002a, 0x5df70029,
2398 0x5df70028, 0x5df70027, 0x5df70026, 0x5df70025,
2399 0x5cf7002d, 0x5cf7002b, 0x5cf7002a, 0x5cf70029,
2400 0x5cf70028, 0x5cf70027, 0x5cf70026, 0x5cf70025,
2401 0x5bf7002d, 0x5bf7002b, 0x5bf7002a, 0x5bf70029,
2402 0x5bf70028, 0x5bf70027, 0x5bf70026, 0x5bf70025,
2403 0x5af7002d, 0x5af7002b, 0x5af7002a, 0x5af70029,
2404 0x5af70028, 0x5af70027, 0x5af70026, 0x5af70025,
2405 0x59f7002d, 0x59f7002b, 0x59f7002a, 0x59f70029,
2406 0x59f70028, 0x59f70027, 0x59f70026, 0x59f70025,
2407 0x58f7002d, 0x58f7002b, 0x58f7002a, 0x58f70029,
2408 0x58f70028, 0x58f70027, 0x58f70026, 0x58f70025,
2409 0x57f7002d, 0x57f7002b, 0x57f7002a, 0x57f70029,
2410 0x57f70028, 0x57f70027, 0x57f70026, 0x57f70025,
2411 0x56f7002d, 0x56f7002b, 0x56f7002a, 0x56f70029,
2412 0x56f70028, 0x56f70027, 0x56f70026, 0x56f70025,
2413 0x55f7002d, 0x55f7002b, 0x55f7002a, 0x55f70029,
2414 0x55f70028, 0x55f70027, 0x55f70026, 0x55f70025,
2415 0x54f7002d, 0x54f7002b, 0x54f7002a, 0x54f70029,
2416 0x54f70028, 0x54f70027, 0x54f70026, 0x54f70025,
2417 0x53f7002d, 0x53f7002b, 0x53f7002a, 0x53f70029,
2418 0x53f70028, 0x53f70027, 0x53f70026, 0x53f70025,
2419 0x52f7002d, 0x52f7002b, 0x52f7002a, 0x52f70029,
2420 0x52f70028, 0x52f70027, 0x52f70026, 0x52f70025,
2421 0x51f7002d, 0x51f7002b, 0x51f7002a, 0x51f70029,
2422 0x51f70028, 0x51f70027, 0x51f70026, 0x51f70025,
2423 0x50f7002d, 0x50f7002b, 0x50f7002a, 0x50f70029,
2424 0x50f70028, 0x50f70027, 0x50f70026, 0x50f70025,
2425 };
2426
2427 static const u32 txpwrctrl_tx_gain_ipa_rev5[] = {
2428 0x1ff7002d, 0x1ff7002b, 0x1ff7002a, 0x1ff70029,
2429 0x1ff70028, 0x1ff70027, 0x1ff70026, 0x1ff70025,
2430 0x1ef7002d, 0x1ef7002b, 0x1ef7002a, 0x1ef70029,
2431 0x1ef70028, 0x1ef70027, 0x1ef70026, 0x1ef70025,
2432 0x1df7002d, 0x1df7002b, 0x1df7002a, 0x1df70029,
2433 0x1df70028, 0x1df70027, 0x1df70026, 0x1df70025,
2434 0x1cf7002d, 0x1cf7002b, 0x1cf7002a, 0x1cf70029,
2435 0x1cf70028, 0x1cf70027, 0x1cf70026, 0x1cf70025,
2436 0x1bf7002d, 0x1bf7002b, 0x1bf7002a, 0x1bf70029,
2437 0x1bf70028, 0x1bf70027, 0x1bf70026, 0x1bf70025,
2438 0x1af7002d, 0x1af7002b, 0x1af7002a, 0x1af70029,
2439 0x1af70028, 0x1af70027, 0x1af70026, 0x1af70025,
2440 0x19f7002d, 0x19f7002b, 0x19f7002a, 0x19f70029,
2441 0x19f70028, 0x19f70027, 0x19f70026, 0x19f70025,
2442 0x18f7002d, 0x18f7002b, 0x18f7002a, 0x18f70029,
2443 0x18f70028, 0x18f70027, 0x18f70026, 0x18f70025,
2444 0x17f7002d, 0x17f7002b, 0x17f7002a, 0x17f70029,
2445 0x17f70028, 0x17f70027, 0x17f70026, 0x17f70025,
2446 0x16f7002d, 0x16f7002b, 0x16f7002a, 0x16f70029,
2447 0x16f70028, 0x16f70027, 0x16f70026, 0x16f70025,
2448 0x15f7002d, 0x15f7002b, 0x15f7002a, 0x15f70029,
2449 0x15f70028, 0x15f70027, 0x15f70026, 0x15f70025,
2450 0x14f7002d, 0x14f7002b, 0x14f7002a, 0x14f70029,
2451 0x14f70028, 0x14f70027, 0x14f70026, 0x14f70025,
2452 0x13f7002d, 0x13f7002b, 0x13f7002a, 0x13f70029,
2453 0x13f70028, 0x13f70027, 0x13f70026, 0x13f70025,
2454 0x12f7002d, 0x12f7002b, 0x12f7002a, 0x12f70029,
2455 0x12f70028, 0x12f70027, 0x12f70026, 0x12f70025,
2456 0x11f7002d, 0x11f7002b, 0x11f7002a, 0x11f70029,
2457 0x11f70028, 0x11f70027, 0x11f70026, 0x11f70025,
2458 0x10f7002d, 0x10f7002b, 0x10f7002a, 0x10f70029,
2459 0x10f70028, 0x10f70027, 0x10f70026, 0x10f70025,
2460 };
2461
2462 static const u32 txpwrctrl_tx_gain_ipa_rev6[] = {
2463 0x0ff7002d, 0x0ff7002b, 0x0ff7002a, 0x0ff70029,
2464 0x0ff70028, 0x0ff70027, 0x0ff70026, 0x0ff70025,
2465 0x0ef7002d, 0x0ef7002b, 0x0ef7002a, 0x0ef70029,
2466 0x0ef70028, 0x0ef70027, 0x0ef70026, 0x0ef70025,
2467 0x0df7002d, 0x0df7002b, 0x0df7002a, 0x0df70029,
2468 0x0df70028, 0x0df70027, 0x0df70026, 0x0df70025,
2469 0x0cf7002d, 0x0cf7002b, 0x0cf7002a, 0x0cf70029,
2470 0x0cf70028, 0x0cf70027, 0x0cf70026, 0x0cf70025,
2471 0x0bf7002d, 0x0bf7002b, 0x0bf7002a, 0x0bf70029,
2472 0x0bf70028, 0x0bf70027, 0x0bf70026, 0x0bf70025,
2473 0x0af7002d, 0x0af7002b, 0x0af7002a, 0x0af70029,
2474 0x0af70028, 0x0af70027, 0x0af70026, 0x0af70025,
2475 0x09f7002d, 0x09f7002b, 0x09f7002a, 0x09f70029,
2476 0x09f70028, 0x09f70027, 0x09f70026, 0x09f70025,
2477 0x08f7002d, 0x08f7002b, 0x08f7002a, 0x08f70029,
2478 0x08f70028, 0x08f70027, 0x08f70026, 0x08f70025,
2479 0x07f7002d, 0x07f7002b, 0x07f7002a, 0x07f70029,
2480 0x07f70028, 0x07f70027, 0x07f70026, 0x07f70025,
2481 0x06f7002d, 0x06f7002b, 0x06f7002a, 0x06f70029,
2482 0x06f70028, 0x06f70027, 0x06f70026, 0x06f70025,
2483 0x05f7002d, 0x05f7002b, 0x05f7002a, 0x05f70029,
2484 0x05f70028, 0x05f70027, 0x05f70026, 0x05f70025,
2485 0x04f7002d, 0x04f7002b, 0x04f7002a, 0x04f70029,
2486 0x04f70028, 0x04f70027, 0x04f70026, 0x04f70025,
2487 0x03f7002d, 0x03f7002b, 0x03f7002a, 0x03f70029,
2488 0x03f70028, 0x03f70027, 0x03f70026, 0x03f70025,
2489 0x02f7002d, 0x02f7002b, 0x02f7002a, 0x02f70029,
2490 0x02f70028, 0x02f70027, 0x02f70026, 0x02f70025,
2491 0x01f7002d, 0x01f7002b, 0x01f7002a, 0x01f70029,
2492 0x01f70028, 0x01f70027, 0x01f70026, 0x01f70025,
2493 0x00f7002d, 0x00f7002b, 0x00f7002a, 0x00f70029,
2494 0x00f70028, 0x00f70027, 0x00f70026, 0x00f70025,
2495 };
2496
2497 static const u32 txpwrctrl_tx_gain_ipa_5g[] = {
2498 0x7ff70035, 0x7ff70033, 0x7ff70032, 0x7ff70031,
2499 0x7ff7002f, 0x7ff7002e, 0x7ff7002d, 0x7ff7002b,
2500 0x7ff7002a, 0x7ff70029, 0x7ff70028, 0x7ff70027,
2501 0x7ff70026, 0x7ff70024, 0x7ff70023, 0x7ff70022,
2502 0x7ef70028, 0x7ef70027, 0x7ef70026, 0x7ef70025,
2503 0x7ef70024, 0x7ef70023, 0x7df70028, 0x7df70027,
2504 0x7df70026, 0x7df70025, 0x7df70024, 0x7df70023,
2505 0x7df70022, 0x7cf70029, 0x7cf70028, 0x7cf70027,
2506 0x7cf70026, 0x7cf70025, 0x7cf70023, 0x7cf70022,
2507 0x7bf70029, 0x7bf70028, 0x7bf70026, 0x7bf70025,
2508 0x7bf70024, 0x7bf70023, 0x7bf70022, 0x7bf70021,
2509 0x7af70029, 0x7af70028, 0x7af70027, 0x7af70026,
2510 0x7af70025, 0x7af70024, 0x7af70023, 0x7af70022,
2511 0x79f70029, 0x79f70028, 0x79f70027, 0x79f70026,
2512 0x79f70025, 0x79f70024, 0x79f70023, 0x79f70022,
2513 0x78f70029, 0x78f70028, 0x78f70027, 0x78f70026,
2514 0x78f70025, 0x78f70024, 0x78f70023, 0x78f70022,
2515 0x77f70029, 0x77f70028, 0x77f70027, 0x77f70026,
2516 0x77f70025, 0x77f70024, 0x77f70023, 0x77f70022,
2517 0x76f70029, 0x76f70028, 0x76f70027, 0x76f70026,
2518 0x76f70024, 0x76f70023, 0x76f70022, 0x76f70021,
2519 0x75f70029, 0x75f70028, 0x75f70027, 0x75f70026,
2520 0x75f70025, 0x75f70024, 0x75f70023, 0x74f70029,
2521 0x74f70028, 0x74f70026, 0x74f70025, 0x74f70024,
2522 0x74f70023, 0x74f70022, 0x73f70029, 0x73f70027,
2523 0x73f70026, 0x73f70025, 0x73f70024, 0x73f70023,
2524 0x73f70022, 0x72f70028, 0x72f70027, 0x72f70026,
2525 0x72f70025, 0x72f70024, 0x72f70023, 0x72f70022,
2526 0x71f70028, 0x71f70027, 0x71f70026, 0x71f70025,
2527 0x71f70024, 0x71f70023, 0x70f70028, 0x70f70027,
2528 0x70f70026, 0x70f70024, 0x70f70023, 0x70f70022,
2529 0x70f70021, 0x70f70020, 0x70f70020, 0x70f7001f,
2530 };
2531
2532 const s8 b43_ntab_papd_pga_gain_delta_ipa_2g[] = {
2533 -114, -108, -98, -91, -84, -78, -70, -62,
2534 -54, -46, -39, -31, -23, -15, -8, 0
2535 };
2536
2537 const u16 tbl_iqcal_gainparams[2][9][8] = {
2538 {
2539 { 0x000, 0, 0, 2, 0x69, 0x69, 0x69, 0x69 },
2540 { 0x700, 7, 0, 0, 0x69, 0x69, 0x69, 0x69 },
2541 { 0x710, 7, 1, 0, 0x68, 0x68, 0x68, 0x68 },
2542 { 0x720, 7, 2, 0, 0x67, 0x67, 0x67, 0x67 },
2543 { 0x730, 7, 3, 0, 0x66, 0x66, 0x66, 0x66 },
2544 { 0x740, 7, 4, 0, 0x65, 0x65, 0x65, 0x65 },
2545 { 0x741, 7, 4, 1, 0x65, 0x65, 0x65, 0x65 },
2546 { 0x742, 7, 4, 2, 0x65, 0x65, 0x65, 0x65 },
2547 { 0x743, 7, 4, 3, 0x65, 0x65, 0x65, 0x65 }
2548 },
2549 {
2550 { 0x000, 7, 0, 0, 0x79, 0x79, 0x79, 0x79 },
2551 { 0x700, 7, 0, 0, 0x79, 0x79, 0x79, 0x79 },
2552 { 0x710, 7, 1, 0, 0x79, 0x79, 0x79, 0x79 },
2553 { 0x720, 7, 2, 0, 0x78, 0x78, 0x78, 0x78 },
2554 { 0x730, 7, 3, 0, 0x78, 0x78, 0x78, 0x78 },
2555 { 0x740, 7, 4, 0, 0x78, 0x78, 0x78, 0x78 },
2556 { 0x741, 7, 4, 1, 0x78, 0x78, 0x78, 0x78 },
2557 { 0x742, 7, 4, 2, 0x78, 0x78, 0x78, 0x78 },
2558 { 0x743, 7, 4, 3, 0x78, 0x78, 0x78, 0x78 }
2559 }
2560 };
2561
2562 const struct nphy_txiqcal_ladder ladder_lo[] = {
2563 { 3, 0 },
2564 { 4, 0 },
2565 { 6, 0 },
2566 { 9, 0 },
2567 { 13, 0 },
2568 { 18, 0 },
2569 { 25, 0 },
2570 { 25, 1 },
2571 { 25, 2 },
2572 { 25, 3 },
2573 { 25, 4 },
2574 { 25, 5 },
2575 { 25, 6 },
2576 { 25, 7 },
2577 { 35, 7 },
2578 { 50, 7 },
2579 { 71, 7 },
2580 { 100, 7 }
2581 };
2582
2583 const struct nphy_txiqcal_ladder ladder_iq[] = {
2584 { 3, 0 },
2585 { 4, 0 },
2586 { 6, 0 },
2587 { 9, 0 },
2588 { 13, 0 },
2589 { 18, 0 },
2590 { 25, 0 },
2591 { 35, 0 },
2592 { 50, 0 },
2593 { 71, 0 },
2594 { 100, 0 },
2595 { 100, 1 },
2596 { 100, 2 },
2597 { 100, 3 },
2598 { 100, 4 },
2599 { 100, 5 },
2600 { 100, 6 },
2601 { 100, 7 }
2602 };
2603
2604 const u16 loscale[] = {
2605 256, 256, 271, 271,
2606 287, 256, 256, 271,
2607 271, 287, 287, 304,
2608 304, 256, 256, 271,
2609 271, 287, 287, 304,
2610 304, 322, 322, 341,
2611 341, 362, 362, 383,
2612 383, 256, 256, 271,
2613 271, 287, 287, 304,
2614 304, 322, 322, 256,
2615 256, 271, 271, 287,
2616 287, 304, 304, 322,
2617 322, 341, 341, 362,
2618 362, 256, 256, 271,
2619 271, 287, 287, 304,
2620 304, 322, 322, 256,
2621 256, 271, 271, 287,
2622 287, 304, 304, 322,
2623 322, 341, 341, 362,
2624 362, 256, 256, 271,
2625 271, 287, 287, 304,
2626 304, 322, 322, 341,
2627 341, 362, 362, 383,
2628 383, 406, 406, 430,
2629 430, 455, 455, 482,
2630 482, 511, 511, 541,
2631 541, 573, 573, 607,
2632 607, 643, 643, 681,
2633 681, 722, 722, 764,
2634 764, 810, 810, 858,
2635 858, 908, 908, 962,
2636 962, 1019, 1019, 256
2637 };
2638
2639 const u16 tbl_tx_iqlo_cal_loft_ladder_40[] = {
2640 0x0200, 0x0300, 0x0400, 0x0700,
2641 0x0900, 0x0c00, 0x1200, 0x1201,
2642 0x1202, 0x1203, 0x1204, 0x1205,
2643 0x1206, 0x1207, 0x1907, 0x2307,
2644 0x3207, 0x4707
2645 };
2646
2647 const u16 tbl_tx_iqlo_cal_loft_ladder_20[] = {
2648 0x0300, 0x0500, 0x0700, 0x0900,
2649 0x0d00, 0x1100, 0x1900, 0x1901,
2650 0x1902, 0x1903, 0x1904, 0x1905,
2651 0x1906, 0x1907, 0x2407, 0x3207,
2652 0x4607, 0x6407
2653 };
2654
2655 const u16 tbl_tx_iqlo_cal_iqimb_ladder_40[] = {
2656 0x0100, 0x0200, 0x0400, 0x0700,
2657 0x0900, 0x0c00, 0x1200, 0x1900,
2658 0x2300, 0x3200, 0x4700, 0x4701,
2659 0x4702, 0x4703, 0x4704, 0x4705,
2660 0x4706, 0x4707
2661 };
2662
2663 const u16 tbl_tx_iqlo_cal_iqimb_ladder_20[] = {
2664 0x0200, 0x0300, 0x0600, 0x0900,
2665 0x0d00, 0x1100, 0x1900, 0x2400,
2666 0x3200, 0x4600, 0x6400, 0x6401,
2667 0x6402, 0x6403, 0x6404, 0x6405,
2668 0x6406, 0x6407
2669 };
2670
2671 const u16 tbl_tx_iqlo_cal_startcoefs_nphyrev3[B43_NTAB_TX_IQLO_CAL_STARTCOEFS_REV3] = { };
2672
2673 const u16 tbl_tx_iqlo_cal_startcoefs[B43_NTAB_TX_IQLO_CAL_STARTCOEFS] = { };
2674
2675 const u16 tbl_tx_iqlo_cal_cmds_recal_nphyrev3[] = {
2676 0x8423, 0x8323, 0x8073, 0x8256,
2677 0x8045, 0x8223, 0x9423, 0x9323,
2678 0x9073, 0x9256, 0x9045, 0x9223
2679 };
2680
2681 const u16 tbl_tx_iqlo_cal_cmds_recal[] = {
2682 0x8101, 0x8253, 0x8053, 0x8234,
2683 0x8034, 0x9101, 0x9253, 0x9053,
2684 0x9234, 0x9034
2685 };
2686
2687 const u16 tbl_tx_iqlo_cal_cmds_fullcal[] = {
2688 0x8123, 0x8264, 0x8086, 0x8245,
2689 0x8056, 0x9123, 0x9264, 0x9086,
2690 0x9245, 0x9056
2691 };
2692
2693 const u16 tbl_tx_iqlo_cal_cmds_fullcal_nphyrev3[] = {
2694 0x8434, 0x8334, 0x8084, 0x8267,
2695 0x8056, 0x8234, 0x9434, 0x9334,
2696 0x9084, 0x9267, 0x9056, 0x9234
2697 };
2698
2699 const s16 tbl_tx_filter_coef_rev4[7][15] = {
2700 { -377, 137, -407, 208, -1527,
2701 956, 93, 186, 93, 230,
2702 -44, 230, 201, -191, 201 },
2703 { -77, 20, -98, 49, -93,
2704 60, 56, 111, 56, 26,
2705 -5, 26, 34, -32, 34 },
2706 { -360, 164, -376, 164, -1533,
2707 576, 308, -314, 308, 121,
2708 -73, 121, 91, 124, 91 },
2709 { -295, 200, -363, 142, -1391,
2710 826, 151, 301, 151, 151,
2711 301, 151, 602, -752, 602 },
2712 { -92, 58, -96, 49, -104,
2713 44, 17, 35, 17, 12,
2714 25, 12, 13, 27, 13 },
2715 { -375, 136, -399, 209, -1479,
2716 949, 130, 260, 130, 230,
2717 -44, 230, 201, -191, 201 },
2718 { 0xed9, 0xc8, 0xe95, 0x8e, 0xa91,
2719 0x33a, 0x97, 0x12d, 0x97, 0x97,
2720 0x12d, 0x97, 0x25a, 0xd10, 0x25a }
2721 };
2722
2723 /* addr0, addr1, bmask, shift */
2724 const struct nphy_rf_control_override_rev2 tbl_rf_control_override_rev2[] = {
2725 { 0x78, 0x78, 0x0038, 3 }, /* for field == 0x0002 (fls == 2) */
2726 { 0x7A, 0x7D, 0x0001, 0 }, /* for field == 0x0004 (fls == 3) */
2727 { 0x7A, 0x7D, 0x0002, 1 }, /* for field == 0x0008 (fls == 4) */
2728 { 0x7A, 0x7D, 0x0004, 2 }, /* for field == 0x0010 (fls == 5) */
2729 { 0x7A, 0x7D, 0x0030, 4 }, /* for field == 0x0020 (fls == 6) */
2730 { 0x7A, 0x7D, 0x00C0, 6 }, /* for field == 0x0040 (fls == 7) */
2731 { 0x7A, 0x7D, 0x0100, 8 }, /* for field == 0x0080 (fls == 8) */
2732 { 0x7A, 0x7D, 0x0200, 9 }, /* for field == 0x0100 (fls == 9) */
2733 { 0x78, 0x78, 0x0004, 2 }, /* for field == 0x0200 (fls == 10) */
2734 { 0x7B, 0x7E, 0x01FF, 0 }, /* for field == 0x0400 (fls == 11) */
2735 { 0x7C, 0x7F, 0x01FF, 0 }, /* for field == 0x0800 (fls == 12) */
2736 { 0x78, 0x78, 0x0100, 8 }, /* for field == 0x1000 (fls == 13) */
2737 { 0x78, 0x78, 0x0200, 9 }, /* for field == 0x2000 (fls == 14) */
2738 { 0x78, 0x78, 0xF000, 12 } /* for field == 0x4000 (fls == 15) */
2739 };
2740
2741 /* val_mask, val_shift, en_addr0, val_addr0, en_addr1, val_addr1 */
2742 const struct nphy_rf_control_override_rev3 tbl_rf_control_override_rev3[] = {
2743 { 0x8000, 15, 0xE5, 0xF9, 0xE6, 0xFB }, /* field == 0x0001 (fls 1) */
2744 { 0x0001, 0, 0xE7, 0x7A, 0xEC, 0x7D }, /* field == 0x0002 (fls 2) */
2745 { 0x0002, 1, 0xE7, 0x7A, 0xEC, 0x7D }, /* field == 0x0004 (fls 3) */
2746 { 0x0004, 2, 0xE7, 0x7A, 0xEC, 0x7D }, /* field == 0x0008 (fls 4) */
2747 { 0x0010, 4, 0xE7, 0x7A, 0xEC, 0x7D }, /* field == 0x0010 (fls 5) */
2748 { 0x0020, 5, 0xE7, 0x7A, 0xEC, 0x7D }, /* field == 0x0020 (fls 6) */
2749 { 0x0040, 6, 0xE7, 0x7A, 0xEC, 0x7D }, /* field == 0x0040 (fls 7) */
2750 { 0x0080, 7, 0xE7, 0x7A, 0xEC, 0x7D }, /* field == 0x0080 (fls 8) */
2751 { 0x0100, 8, 0xE7, 0x7A, 0xEC, 0x7D }, /* field == 0x0100 (fls 9) */
2752 { 0x0007, 0, 0xE7, 0xF8, 0xEC, 0xFA }, /* field == 0x0200 (fls 10) */
2753 { 0x0070, 4, 0xE7, 0xF8, 0xEC, 0xFA }, /* field == 0x0400 (fls 11) */
2754 { 0xE000, 13, 0xE7, 0x7A, 0xEC, 0x7D }, /* field == 0x0800 (fls 12) */
2755 { 0xFFFF, 0, 0xE7, 0x7B, 0xEC, 0x7E }, /* field == 0x1000 (fls 13) */
2756 { 0xFFFF, 0, 0xE7, 0x7C, 0xEC, 0x7F }, /* field == 0x2000 (fls 14) */
2757 { 0x00C0, 6, 0xE7, 0xF9, 0xEC, 0xFB } /* field == 0x4000 (fls 15) */
2758 };
2759
2760 struct nphy_gain_ctl_workaround_entry nphy_gain_ctl_wa_phy6_radio11_ghz2 = {
2761 { 10, 14, 19, 27 },
2762 { -5, 6, 10, 15 },
2763 { 0xA, 0xA, 0xA, 0xA, 0xA, 0xA, 0xA, 0xA, 0xA, 0xA },
2764 { 3, 3, 3, 3, 3, 3, 3, 3, 3, 3 },
2765 0x427E,
2766 { 0x413F, 0x413F, 0x413F, 0x413F },
2767 0x007E, 0x0066, 0x1074,
2768 0x18, 0x18, 0x18,
2769 0x01D0, 0x5,
2770 };
2771 struct nphy_gain_ctl_workaround_entry nphy_gain_ctl_workaround[2][4] = {
2772 { /* 2GHz */
2773 { /* PHY rev 3 */
2774 { 7, 11, 16, 23 },
2775 { -5, 6, 10, 14 },
2776 { 0xA, 0xA, 0xA, 0xA, 0xA, 0xA, 0xA, 0xA, 0xA, 0xA },
2777 { 3, 3, 3, 3, 3, 3, 3, 3, 3, 3 },
2778 0x627E,
2779 { 0x613F, 0x613F, 0x613F, 0x613F },
2780 0x107E, 0x0066, 0x0074,
2781 0x18, 0x18, 0x18,
2782 0x020D, 0x5,
2783 },
2784 { /* PHY rev 4 */
2785 { 8, 12, 17, 25 },
2786 { -5, 6, 10, 14 },
2787 { 0xA, 0xA, 0xA, 0xA, 0xA, 0xA, 0xA, 0xA, 0xA, 0xA },
2788 { 3, 3, 3, 3, 3, 3, 3, 3, 3, 3 },
2789 0x527E,
2790 { 0x513F, 0x513F, 0x513F, 0x513F },
2791 0x007E, 0x0066, 0x0074,
2792 0x18, 0x18, 0x18,
2793 0x01A1, 0x5,
2794 },
2795 { /* PHY rev 5 */
2796 { 9, 13, 18, 26 },
2797 { -3, 7, 11, 16 },
2798 { 0xA, 0xA, 0xA, 0xA, 0xA, 0xA, 0xA, 0xA, 0xA, 0xA },
2799 { 3, 3, 3, 3, 3, 3, 3, 3, 3, 3 },
2800 0x427E, /* invalid for external LNA! */
2801 { 0x413F, 0x413F, 0x413F, 0x413F }, /* invalid for external LNA! */
2802 0x1076, 0x0066, 0x0000, /* low is invalid (the last one) */
2803 0x18, 0x18, 0x18,
2804 0x01D0, 0x9,
2805 },
2806 { /* PHY rev 6+ */
2807 { 8, 13, 18, 25 },
2808 { -5, 6, 10, 14 },
2809 { 0xA, 0xA, 0xA, 0xA, 0xA, 0xA, 0xA, 0xA, 0xA, 0xA },
2810 { 3, 3, 3, 3, 3, 3, 3, 3, 3, 3 },
2811 0x527E, /* invalid for external LNA! */
2812 { 0x513F, 0x513F, 0x513F, 0x513F }, /* invalid for external LNA! */
2813 0x1076, 0x0066, 0x0000, /* low is invalid (the last one) */
2814 0x18, 0x18, 0x18,
2815 0x01D0, 0x5,
2816 },
2817 },
2818 { /* 5GHz */
2819 { /* PHY rev 3 */
2820 { 7, 11, 17, 23 },
2821 { -6, 2, 6, 10 },
2822 { 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13 },
2823 { 6, 6, 6, 6, 6, 6, 6, 6, 6, 6 },
2824 0x52DE,
2825 { 0x516F, 0x516F, 0x516F, 0x516F },
2826 0x00DE, 0x00CA, 0x00CC,
2827 0x1E, 0x1E, 0x1E,
2828 0x01A1, 25,
2829 },
2830 { /* PHY rev 4 */
2831 { 8, 12, 18, 23 },
2832 { -5, 2, 6, 10 },
2833 { 0xD, 0xD, 0xD, 0xD, 0xD, 0xD, 0xD, 0xD, 0xD, 0xD },
2834 { 4, 4, 4, 4, 4, 4, 4, 4, 4, 4 },
2835 0x629E,
2836 { 0x614F, 0x614F, 0x614F, 0x614F },
2837 0x029E, 0x1084, 0x0086,
2838 0x24, 0x24, 0x24,
2839 0x0107, 25,
2840 },
2841 { /* PHY rev 5 */
2842 { 6, 10, 16, 21 },
2843 { -7, 0, 4, 8 },
2844 { 0xD, 0xD, 0xD, 0xD, 0xD, 0xD, 0xD, 0xD, 0xD, 0xD },
2845 { 4, 4, 4, 4, 4, 4, 4, 4, 4, 4 },
2846 0x729E,
2847 { 0x714F, 0x714F, 0x714F, 0x714F },
2848 0x029E, 0x2084, 0x2086,
2849 0x24, 0x24, 0x24,
2850 0x00A9, 25,
2851 },
2852 { /* PHY rev 6+ */
2853 { 6, 10, 16, 21 },
2854 { -7, 0, 4, 8 },
2855 { 0xD, 0xD, 0xD, 0xD, 0xD, 0xD, 0xD, 0xD, 0xD, 0xD },
2856 { 4, 4, 4, 4, 4, 4, 4, 4, 4, 4 },
2857 0x729E,
2858 { 0x714F, 0x714F, 0x714F, 0x714F },
2859 0x029E, 0x2084, 0x2086,
2860 0x24, 0x24, 0x24, /* low is invalid for radio rev 11! */
2861 0x00F0, 25,
2862 },
2863 },
2864 };
2865
assert_ntab_array_sizes(void)2866 static inline void assert_ntab_array_sizes(void)
2867 {
2868 #undef check
2869 #define check(table, size) \
2870 BUILD_BUG_ON(ARRAY_SIZE(b43_ntab_##table) != B43_NTAB_##size##_SIZE)
2871
2872 check(adjustpower0, C0_ADJPLT);
2873 check(adjustpower1, C1_ADJPLT);
2874 check(bdi, BDI);
2875 check(channelest, CHANEST);
2876 check(estimatepowerlt0, C0_ESTPLT);
2877 check(estimatepowerlt1, C1_ESTPLT);
2878 check(framelookup, FRAMELT);
2879 check(framestruct, FRAMESTRUCT);
2880 check(gainctl0, C0_GAINCTL);
2881 check(gainctl1, C1_GAINCTL);
2882 check(intlevel, INTLEVEL);
2883 check(iqlt0, C0_IQLT);
2884 check(iqlt1, C1_IQLT);
2885 check(loftlt0, C0_LOFEEDTH);
2886 check(loftlt1, C1_LOFEEDTH);
2887 check(mcs, MCS);
2888 check(noisevar10, NOISEVAR10);
2889 check(noisevar11, NOISEVAR11);
2890 check(pilot, PILOT);
2891 check(pilotlt, PILOTLT);
2892 check(tdi20a0, TDI20A0);
2893 check(tdi20a1, TDI20A1);
2894 check(tdi40a0, TDI40A0);
2895 check(tdi40a1, TDI40A1);
2896 check(tdtrn, TDTRN);
2897 check(tmap, TMAP);
2898
2899 #undef check
2900 }
2901
b43_ntab_read(struct b43_wldev * dev,u32 offset)2902 u32 b43_ntab_read(struct b43_wldev *dev, u32 offset)
2903 {
2904 u32 type, value;
2905
2906 type = offset & B43_NTAB_TYPEMASK;
2907 offset &= ~B43_NTAB_TYPEMASK;
2908 B43_WARN_ON(offset > 0xFFFF);
2909
2910 switch (type) {
2911 case B43_NTAB_8BIT:
2912 b43_phy_write(dev, B43_NPHY_TABLE_ADDR, offset);
2913 value = b43_phy_read(dev, B43_NPHY_TABLE_DATALO) & 0xFF;
2914 break;
2915 case B43_NTAB_16BIT:
2916 b43_phy_write(dev, B43_NPHY_TABLE_ADDR, offset);
2917 value = b43_phy_read(dev, B43_NPHY_TABLE_DATALO);
2918 break;
2919 case B43_NTAB_32BIT:
2920 b43_phy_write(dev, B43_NPHY_TABLE_ADDR, offset);
2921 value = b43_phy_read(dev, B43_NPHY_TABLE_DATALO);
2922 value |= b43_phy_read(dev, B43_NPHY_TABLE_DATAHI) << 16;
2923 break;
2924 default:
2925 B43_WARN_ON(1);
2926 value = 0;
2927 }
2928
2929 return value;
2930 }
2931
b43_ntab_read_bulk(struct b43_wldev * dev,u32 offset,unsigned int nr_elements,void * _data)2932 void b43_ntab_read_bulk(struct b43_wldev *dev, u32 offset,
2933 unsigned int nr_elements, void *_data)
2934 {
2935 u32 type;
2936 u8 *data = _data;
2937 unsigned int i;
2938
2939 type = offset & B43_NTAB_TYPEMASK;
2940 offset &= ~B43_NTAB_TYPEMASK;
2941 B43_WARN_ON(offset > 0xFFFF);
2942
2943 b43_phy_write(dev, B43_NPHY_TABLE_ADDR, offset);
2944
2945 for (i = 0; i < nr_elements; i++) {
2946 /* Auto increment broken + caching issue on BCM43224? */
2947 if (dev->dev->chip_id == 43224 && dev->dev->chip_rev == 1) {
2948 b43_phy_read(dev, B43_NPHY_TABLE_DATALO);
2949 b43_phy_write(dev, B43_NPHY_TABLE_ADDR, offset + i);
2950 }
2951
2952 switch (type) {
2953 case B43_NTAB_8BIT:
2954 *data = b43_phy_read(dev, B43_NPHY_TABLE_DATALO) & 0xFF;
2955 data++;
2956 break;
2957 case B43_NTAB_16BIT:
2958 *((u16 *)data) = b43_phy_read(dev, B43_NPHY_TABLE_DATALO);
2959 data += 2;
2960 break;
2961 case B43_NTAB_32BIT:
2962 *((u32 *)data) =
2963 b43_phy_read(dev, B43_NPHY_TABLE_DATALO);
2964 *((u32 *)data) |=
2965 b43_phy_read(dev, B43_NPHY_TABLE_DATAHI) << 16;
2966 data += 4;
2967 break;
2968 default:
2969 B43_WARN_ON(1);
2970 }
2971 }
2972 }
2973
b43_ntab_write(struct b43_wldev * dev,u32 offset,u32 value)2974 void b43_ntab_write(struct b43_wldev *dev, u32 offset, u32 value)
2975 {
2976 u32 type;
2977
2978 type = offset & B43_NTAB_TYPEMASK;
2979 offset &= 0xFFFF;
2980
2981 switch (type) {
2982 case B43_NTAB_8BIT:
2983 B43_WARN_ON(value & ~0xFF);
2984 b43_phy_write(dev, B43_NPHY_TABLE_ADDR, offset);
2985 b43_phy_write(dev, B43_NPHY_TABLE_DATALO, value);
2986 break;
2987 case B43_NTAB_16BIT:
2988 B43_WARN_ON(value & ~0xFFFF);
2989 b43_phy_write(dev, B43_NPHY_TABLE_ADDR, offset);
2990 b43_phy_write(dev, B43_NPHY_TABLE_DATALO, value);
2991 break;
2992 case B43_NTAB_32BIT:
2993 b43_phy_write(dev, B43_NPHY_TABLE_ADDR, offset);
2994 b43_phy_write(dev, B43_NPHY_TABLE_DATAHI, value >> 16);
2995 b43_phy_write(dev, B43_NPHY_TABLE_DATALO, value & 0xFFFF);
2996 break;
2997 default:
2998 B43_WARN_ON(1);
2999 }
3000
3001 return;
3002
3003 /* Some compiletime assertions... */
3004 assert_ntab_array_sizes();
3005 }
3006
b43_ntab_write_bulk(struct b43_wldev * dev,u32 offset,unsigned int nr_elements,const void * _data)3007 void b43_ntab_write_bulk(struct b43_wldev *dev, u32 offset,
3008 unsigned int nr_elements, const void *_data)
3009 {
3010 u32 type, value;
3011 const u8 *data = _data;
3012 unsigned int i;
3013
3014 type = offset & B43_NTAB_TYPEMASK;
3015 offset &= ~B43_NTAB_TYPEMASK;
3016 B43_WARN_ON(offset > 0xFFFF);
3017
3018 b43_phy_write(dev, B43_NPHY_TABLE_ADDR, offset);
3019
3020 for (i = 0; i < nr_elements; i++) {
3021 /* Auto increment broken + caching issue on BCM43224? */
3022 if ((offset >> 10) == 9 && dev->dev->chip_id == 43224 &&
3023 dev->dev->chip_rev == 1) {
3024 b43_phy_read(dev, B43_NPHY_TABLE_DATALO);
3025 b43_phy_write(dev, B43_NPHY_TABLE_ADDR, offset + i);
3026 }
3027
3028 switch (type) {
3029 case B43_NTAB_8BIT:
3030 value = *data;
3031 data++;
3032 B43_WARN_ON(value & ~0xFF);
3033 b43_phy_write(dev, B43_NPHY_TABLE_DATALO, value);
3034 break;
3035 case B43_NTAB_16BIT:
3036 value = *((u16 *)data);
3037 data += 2;
3038 B43_WARN_ON(value & ~0xFFFF);
3039 b43_phy_write(dev, B43_NPHY_TABLE_DATALO, value);
3040 break;
3041 case B43_NTAB_32BIT:
3042 value = *((u32 *)data);
3043 data += 4;
3044 b43_phy_write(dev, B43_NPHY_TABLE_DATAHI, value >> 16);
3045 b43_phy_write(dev, B43_NPHY_TABLE_DATALO,
3046 value & 0xFFFF);
3047 break;
3048 default:
3049 B43_WARN_ON(1);
3050 }
3051 }
3052 }
3053
3054 #define ntab_upload(dev, offset, data) do { \
3055 b43_ntab_write_bulk(dev, offset, offset##_SIZE, data); \
3056 } while (0)
b43_nphy_rev0_1_2_tables_init(struct b43_wldev * dev)3057 void b43_nphy_rev0_1_2_tables_init(struct b43_wldev *dev)
3058 {
3059 /* Static tables */
3060 ntab_upload(dev, B43_NTAB_FRAMESTRUCT, b43_ntab_framestruct);
3061 ntab_upload(dev, B43_NTAB_FRAMELT, b43_ntab_framelookup);
3062 ntab_upload(dev, B43_NTAB_TMAP, b43_ntab_tmap);
3063 ntab_upload(dev, B43_NTAB_TDTRN, b43_ntab_tdtrn);
3064 ntab_upload(dev, B43_NTAB_INTLEVEL, b43_ntab_intlevel);
3065 ntab_upload(dev, B43_NTAB_PILOT, b43_ntab_pilot);
3066 ntab_upload(dev, B43_NTAB_TDI20A0, b43_ntab_tdi20a0);
3067 ntab_upload(dev, B43_NTAB_TDI20A1, b43_ntab_tdi20a1);
3068 ntab_upload(dev, B43_NTAB_TDI40A0, b43_ntab_tdi40a0);
3069 ntab_upload(dev, B43_NTAB_TDI40A1, b43_ntab_tdi40a1);
3070 ntab_upload(dev, B43_NTAB_CHANEST, b43_ntab_channelest);
3071 ntab_upload(dev, B43_NTAB_MCS, b43_ntab_mcs);
3072 ntab_upload(dev, B43_NTAB_NOISEVAR10, b43_ntab_noisevar10);
3073 ntab_upload(dev, B43_NTAB_NOISEVAR11, b43_ntab_noisevar11);
3074
3075 /* Volatile tables */
3076 ntab_upload(dev, B43_NTAB_BDI, b43_ntab_bdi);
3077 ntab_upload(dev, B43_NTAB_PILOTLT, b43_ntab_pilotlt);
3078 ntab_upload(dev, B43_NTAB_C0_GAINCTL, b43_ntab_gainctl0);
3079 ntab_upload(dev, B43_NTAB_C1_GAINCTL, b43_ntab_gainctl1);
3080 ntab_upload(dev, B43_NTAB_C0_ESTPLT, b43_ntab_estimatepowerlt0);
3081 ntab_upload(dev, B43_NTAB_C1_ESTPLT, b43_ntab_estimatepowerlt1);
3082 ntab_upload(dev, B43_NTAB_C0_ADJPLT, b43_ntab_adjustpower0);
3083 ntab_upload(dev, B43_NTAB_C1_ADJPLT, b43_ntab_adjustpower1);
3084 ntab_upload(dev, B43_NTAB_C0_IQLT, b43_ntab_iqlt0);
3085 ntab_upload(dev, B43_NTAB_C1_IQLT, b43_ntab_iqlt1);
3086 ntab_upload(dev, B43_NTAB_C0_LOFEEDTH, b43_ntab_loftlt0);
3087 ntab_upload(dev, B43_NTAB_C1_LOFEEDTH, b43_ntab_loftlt1);
3088 }
3089
3090 #define ntab_upload_r3(dev, offset, data) do { \
3091 b43_ntab_write_bulk(dev, offset, ARRAY_SIZE(data), data); \
3092 } while (0)
b43_nphy_rev3plus_tables_init(struct b43_wldev * dev)3093 void b43_nphy_rev3plus_tables_init(struct b43_wldev *dev)
3094 {
3095 struct ssb_sprom *sprom = dev->dev->bus_sprom;
3096
3097 /* Static tables */
3098 ntab_upload_r3(dev, B43_NTAB_FRAMESTRUCT_R3, b43_ntab_framestruct_r3);
3099 ntab_upload_r3(dev, B43_NTAB_PILOT_R3, b43_ntab_pilot_r3);
3100 ntab_upload_r3(dev, B43_NTAB_TMAP_R3, b43_ntab_tmap_r3);
3101 ntab_upload_r3(dev, B43_NTAB_INTLEVEL_R3, b43_ntab_intlevel_r3);
3102 ntab_upload_r3(dev, B43_NTAB_TDTRN_R3, b43_ntab_tdtrn_r3);
3103 ntab_upload_r3(dev, B43_NTAB_NOISEVAR0_R3, b43_ntab_noisevar0_r3);
3104 ntab_upload_r3(dev, B43_NTAB_NOISEVAR1_R3, b43_ntab_noisevar1_r3);
3105 ntab_upload_r3(dev, B43_NTAB_MCS_R3, b43_ntab_mcs_r3);
3106 ntab_upload_r3(dev, B43_NTAB_TDI20A0_R3, b43_ntab_tdi20a0_r3);
3107 ntab_upload_r3(dev, B43_NTAB_TDI20A1_R3, b43_ntab_tdi20a1_r3);
3108 ntab_upload_r3(dev, B43_NTAB_TDI40A0_R3, b43_ntab_tdi40a0_r3);
3109 ntab_upload_r3(dev, B43_NTAB_TDI40A1_R3, b43_ntab_tdi40a1_r3);
3110 ntab_upload_r3(dev, B43_NTAB_PILOTLT_R3, b43_ntab_pilotlt_r3);
3111 ntab_upload_r3(dev, B43_NTAB_CHANEST_R3, b43_ntab_channelest_r3);
3112 ntab_upload_r3(dev, B43_NTAB_FRAMELT_R3, b43_ntab_framelookup_r3);
3113 ntab_upload_r3(dev, B43_NTAB_C0_ESTPLT_R3,
3114 b43_ntab_estimatepowerlt0_r3);
3115 ntab_upload_r3(dev, B43_NTAB_C1_ESTPLT_R3,
3116 b43_ntab_estimatepowerlt1_r3);
3117 ntab_upload_r3(dev, B43_NTAB_C0_ADJPLT_R3, b43_ntab_adjustpower0_r3);
3118 ntab_upload_r3(dev, B43_NTAB_C1_ADJPLT_R3, b43_ntab_adjustpower1_r3);
3119 ntab_upload_r3(dev, B43_NTAB_C0_GAINCTL_R3, b43_ntab_gainctl0_r3);
3120 ntab_upload_r3(dev, B43_NTAB_C1_GAINCTL_R3, b43_ntab_gainctl1_r3);
3121 ntab_upload_r3(dev, B43_NTAB_C0_IQLT_R3, b43_ntab_iqlt0_r3);
3122 ntab_upload_r3(dev, B43_NTAB_C1_IQLT_R3, b43_ntab_iqlt1_r3);
3123 ntab_upload_r3(dev, B43_NTAB_C0_LOFEEDTH_R3, b43_ntab_loftlt0_r3);
3124 ntab_upload_r3(dev, B43_NTAB_C1_LOFEEDTH_R3, b43_ntab_loftlt1_r3);
3125
3126 /* Volatile tables */
3127 if (sprom->fem.ghz2.antswlut < ARRAY_SIZE(b43_ntab_antswctl2g_r3))
3128 ntab_upload_r3(dev, B43_NTAB_ANT_SW_CTL_R3,
3129 b43_ntab_antswctl2g_r3[sprom->fem.ghz2.antswlut]);
3130 else
3131 B43_WARN_ON(1);
3132 }
3133
3134 /* http://bcm-v4.sipsolutions.net/802.11/PHY/N/GetIpaGainTbl */
b43_nphy_get_ipa_gain_table(struct b43_wldev * dev)3135 static const u32 *b43_nphy_get_ipa_gain_table(struct b43_wldev *dev)
3136 {
3137 if (b43_current_band(dev->wl) == IEEE80211_BAND_2GHZ) {
3138 if (dev->phy.rev >= 6) {
3139 if (dev->dev->chip_id == 47162)
3140 return txpwrctrl_tx_gain_ipa_rev5;
3141 return txpwrctrl_tx_gain_ipa_rev6;
3142 } else if (dev->phy.rev >= 5) {
3143 return txpwrctrl_tx_gain_ipa_rev5;
3144 } else {
3145 return txpwrctrl_tx_gain_ipa;
3146 }
3147 } else {
3148 return txpwrctrl_tx_gain_ipa_5g;
3149 }
3150 }
3151
b43_nphy_get_tx_gain_table(struct b43_wldev * dev)3152 const u32 *b43_nphy_get_tx_gain_table(struct b43_wldev *dev)
3153 {
3154 enum ieee80211_band band = b43_current_band(dev->wl);
3155 struct ssb_sprom *sprom = dev->dev->bus_sprom;
3156
3157 if (dev->phy.rev < 3)
3158 return b43_ntab_tx_gain_rev0_1_2;
3159
3160 /* rev 3+ */
3161 if ((dev->phy.n->ipa2g_on && band == IEEE80211_BAND_2GHZ) ||
3162 (dev->phy.n->ipa5g_on && band == IEEE80211_BAND_5GHZ)) {
3163 return b43_nphy_get_ipa_gain_table(dev);
3164 } else if (b43_current_band(dev->wl) == IEEE80211_BAND_5GHZ) {
3165 if (dev->phy.rev == 3)
3166 return b43_ntab_tx_gain_rev3_5ghz;
3167 if (dev->phy.rev == 4)
3168 return sprom->fem.ghz5.extpa_gain == 3 ?
3169 b43_ntab_tx_gain_rev4_5ghz :
3170 b43_ntab_tx_gain_rev4_5ghz; /* FIXME */
3171 else
3172 return b43_ntab_tx_gain_rev5plus_5ghz;
3173 } else {
3174 if (dev->phy.rev >= 5 && sprom->fem.ghz5.extpa_gain == 3)
3175 return b43_ntab_tx_gain_rev3plus_2ghz; /* FIXME */
3176 else
3177 return b43_ntab_tx_gain_rev3plus_2ghz;
3178 }
3179 }
3180
b43_nphy_get_gain_ctl_workaround_ent(struct b43_wldev * dev,bool ghz5,bool ext_lna)3181 struct nphy_gain_ctl_workaround_entry *b43_nphy_get_gain_ctl_workaround_ent(
3182 struct b43_wldev *dev, bool ghz5, bool ext_lna)
3183 {
3184 struct nphy_gain_ctl_workaround_entry *e;
3185 u8 phy_idx;
3186 u8 tr_iso = ghz5 ? dev->dev->bus_sprom->fem.ghz5.tr_iso :
3187 dev->dev->bus_sprom->fem.ghz2.tr_iso;
3188
3189 if (!ghz5 && dev->phy.rev >= 6 && dev->phy.radio_rev == 11)
3190 return &nphy_gain_ctl_wa_phy6_radio11_ghz2;
3191
3192 B43_WARN_ON(dev->phy.rev < 3);
3193 if (dev->phy.rev >= 6)
3194 phy_idx = 3;
3195 else if (dev->phy.rev == 5)
3196 phy_idx = 2;
3197 else if (dev->phy.rev == 4)
3198 phy_idx = 1;
3199 else
3200 phy_idx = 0;
3201 e = &nphy_gain_ctl_workaround[ghz5][phy_idx];
3202
3203 /* Some workarounds to the workarounds... */
3204 if (ghz5 && dev->phy.rev >= 6) {
3205 if (dev->phy.radio_rev == 11 &&
3206 !b43_channel_type_is_40mhz(dev->phy.channel_type))
3207 e->cliplo_gain = 0x2d;
3208 } else if (!ghz5 && dev->phy.rev >= 5) {
3209 if (ext_lna) {
3210 e->rfseq_init[0] &= ~0x4000;
3211 e->rfseq_init[1] &= ~0x4000;
3212 e->rfseq_init[2] &= ~0x4000;
3213 e->rfseq_init[3] &= ~0x4000;
3214 e->init_gain &= ~0x4000;
3215 }
3216 switch (tr_iso) {
3217 case 0:
3218 e->cliplo_gain = 0x0062;
3219 case 1:
3220 e->cliplo_gain = 0x0064;
3221 case 2:
3222 e->cliplo_gain = 0x006a;
3223 case 3:
3224 e->cliplo_gain = 0x106a;
3225 case 4:
3226 e->cliplo_gain = 0x106c;
3227 case 5:
3228 e->cliplo_gain = 0x1074;
3229 case 6:
3230 e->cliplo_gain = 0x107c;
3231 case 7:
3232 e->cliplo_gain = 0x207c;
3233 default:
3234 e->cliplo_gain = 0x106a;
3235 }
3236 } else if (ghz5 && dev->phy.rev == 4 && ext_lna) {
3237 e->rfseq_init[0] &= ~0x4000;
3238 e->rfseq_init[1] &= ~0x4000;
3239 e->rfseq_init[2] &= ~0x4000;
3240 e->rfseq_init[3] &= ~0x4000;
3241 e->init_gain &= ~0x4000;
3242 e->rfseq_init[0] |= 0x1000;
3243 e->rfseq_init[1] |= 0x1000;
3244 e->rfseq_init[2] |= 0x1000;
3245 e->rfseq_init[3] |= 0x1000;
3246 e->init_gain |= 0x1000;
3247 }
3248
3249 return e;
3250 }
3251