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