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