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