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