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