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
85static 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
104static 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
123static const uint16_t bwn_ntab_bdi[] = {
124	0x0070, 0x0126, 0x012C, 0x0246, 0x048D, 0x04D2,
125};
126
127static 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
154static 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
165static 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
176static 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
183static 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
394static 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
429static 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
464static const uint32_t bwn_ntab_intlevel[] = {
465	0x00802070, 0x0671188D, 0x0A60192C, 0x0A300E46,
466	0x00C1188D, 0x080024D2, 0x00000070,
467};
468
469static 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
504static 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
539static 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
564static 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
589static 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
608static 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
675static 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
742static 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
760static const uint32_t bwn_ntab_pilotlt[] = {
761	0x76540123, 0x62407351, 0x76543201, 0x76540213,
762	0x76540123, 0x76430521,
763};
764
765static 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
782static 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
799static 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
830static 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
861static 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
1040static 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 */
1156static 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
1367static 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
1385static 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
1500static const uint32_t bwn_ntab_intlevel_r3[] = {
1501	0x00802070, 0x0671188d, 0x0a60192c, 0x0a300e46,
1502	0x00c1188d, 0x080024d2, 0x00000070,
1503};
1504
1505static 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
1684static 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
1751static 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
1776static 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
1793static 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
1810static 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
1841static 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
1872static const uint32_t bwn_ntab_pilotlt_r3[] = {
1873	0x76540213, 0x62407351, 0x76543210, 0x76540213,
1874	0x76540213, 0x76430521,
1875};
1876
1877static 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
1904static 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
1911static 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
1922static 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
1933static 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
1952static 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
1971static 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
2006static 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
2041static 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
2076static 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
2111static 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
2136static 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 */
2164static 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) */
2206static 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 */
2322static 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
2393static 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
2430static 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
2465static 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
2502static 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
2537static 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
2572static 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
2607static 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
2644static 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
2679static 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
2714static 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 */
2750static 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 */
2786static 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 */
2822static 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
2859static 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 */
2895static 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
2930const 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 */
2938static 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 */
2949static 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 */
2959static 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
2969const 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
2994const 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
3015const 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
3036const 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
3071const 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
3079const 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
3087const 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
3095const 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
3103const uint16_t tbl_tx_iqlo_cal_startcoefs_nphyrev3[BWN_NTAB_TX_IQLO_CAL_STARTCOEFS_REV3] = { };
3104
3105const uint16_t tbl_tx_iqlo_cal_startcoefs[BWN_NTAB_TX_IQLO_CAL_STARTCOEFS] = { };
3106
3107const 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
3113const uint16_t tbl_tx_iqlo_cal_cmds_recal[] = {
3114	0x8101, 0x8253, 0x8053, 0x8234,
3115	0x8034, 0x9101, 0x9253, 0x9053,
3116	0x9234, 0x9034
3117};
3118
3119const uint16_t tbl_tx_iqlo_cal_cmds_fullcal[] = {
3120	0x8123, 0x8264, 0x8086, 0x8245,
3121	0x8056, 0x9123, 0x9264, 0x9086,
3122	0x9245, 0x9056
3123};
3124
3125const 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
3131const 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 */
3156const 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 */
3174const 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 */
3193static 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 */
3209static 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 */
3226static 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
3235static 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};
3246static 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
3341static 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
3377uint32_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
3409void 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
3455void bwn_ntab_write(struct bwn_mac *mac, uint32_t offset, uint32_t value)
3456{
3457	uint32_t type, orig;
3458
3459	type = offset & BWN_NTAB_TYPEMASK;
3460	orig = offset;
3461	offset &= 0xFFFF;
3462
3463	switch (type) {
3464	case BWN_NTAB_8BIT:
3465		KASSERT(value <= 0xFF, ("%s: 8bit: invalid value (%d) (0x%08x)\n",
3466		    __func__, value, orig));
3467		BWN_PHY_WRITE(mac, BWN_NPHY_TABLE_ADDR, offset);
3468		BWN_PHY_WRITE(mac, BWN_NPHY_TABLE_DATALO, value);
3469		break;
3470	case BWN_NTAB_16BIT:
3471		KASSERT(value <= 0xFFFF, ("%s: 8bit: invalid value (%d) (0x%08x)\n",
3472		    __func__, value, orig));
3473		BWN_PHY_WRITE(mac, BWN_NPHY_TABLE_ADDR, offset);
3474		BWN_PHY_WRITE(mac, BWN_NPHY_TABLE_DATALO, value);
3475		break;
3476	case BWN_NTAB_32BIT:
3477		BWN_PHY_WRITE(mac, BWN_NPHY_TABLE_ADDR, offset);
3478		BWN_PHY_WRITE(mac, BWN_NPHY_TABLE_DATAHI, value >> 16);
3479		BWN_PHY_WRITE(mac, BWN_NPHY_TABLE_DATALO, value & 0xFFFF);
3480		break;
3481	default:
3482		KASSERT(0, ("%s: called; invalid type (%d)\n",
3483		    __func__, type));
3484	}
3485
3486	return;
3487
3488	/* Some compiletime assertions... */
3489	assert_ntab_array_sizes();
3490}
3491
3492void bwn_ntab_write_bulk(struct bwn_mac *mac, uint32_t offset,
3493			  unsigned int nr_elements, const void *_data)
3494{
3495	struct bwn_softc *sc = mac->mac_sc;
3496	uint32_t type, value;
3497	uint32_t orig;
3498	const uint8_t *data = _data;
3499	unsigned int i;
3500
3501	type = offset & BWN_NTAB_TYPEMASK;
3502	orig = offset;
3503	offset &= ~BWN_NTAB_TYPEMASK;
3504	KASSERT(offset <= 0xFFFF, ("%s: invalid offset (%d)\n",
3505	    __func__, offset));
3506
3507	BWN_PHY_WRITE(mac, BWN_NPHY_TABLE_ADDR, offset);
3508
3509	for (i = 0; i < nr_elements; i++) {
3510		/* Auto increment broken + caching issue on BCM43224? */
3511		if ((offset >> 10) == 9 &&
3512		    sc->sc_cid.chip_id == BHND_CHIPID_BCM43224 &&
3513		    bhnd_get_hwrev(sc->sc_dev) == 1) {
3514			BWN_PHY_READ(mac, BWN_NPHY_TABLE_DATALO);
3515			BWN_PHY_WRITE(mac, BWN_NPHY_TABLE_ADDR, offset + i);
3516		}
3517
3518		switch (type) {
3519		case BWN_NTAB_8BIT:
3520			value = *data;
3521			data++;
3522			KASSERT(value <= 0xFF, ("%s: 8bit: invalid value (%d) (0x%08x)\n",
3523			    __func__, value, orig));
3524			BWN_PHY_WRITE(mac, BWN_NPHY_TABLE_DATALO, value);
3525			break;
3526		case BWN_NTAB_16BIT:
3527			value = *((const uint16_t *)data);
3528			data += 2;
3529			KASSERT(value <= 0xFFFF, ("%s: 16bit: invalid value (%d) (0x%08x)\n",
3530			    __func__, value, orig));
3531			BWN_PHY_WRITE(mac, BWN_NPHY_TABLE_DATALO, value);
3532			break;
3533		case BWN_NTAB_32BIT:
3534			value = *((const uint32_t *)data);
3535			data += 4;
3536			BWN_PHY_WRITE(mac, BWN_NPHY_TABLE_DATAHI, value >> 16);
3537			BWN_PHY_WRITE(mac, BWN_NPHY_TABLE_DATALO,
3538					value & 0xFFFF);
3539			break;
3540		default:
3541			KASSERT(0, ("%s: invalid type (%d)\n", __func__,
3542			    type));
3543		}
3544	}
3545}
3546
3547#define ntab_upload(mac, offset, data) do { \
3548		bwn_ntab_write_bulk(mac, offset, nitems(data), data); \
3549	} while (0)
3550
3551static void bwn_nphy_tables_init_shared_lut(struct bwn_mac *mac)
3552{
3553	ntab_upload(mac, BWN_NTAB_C0_ESTPLT_R3, bwn_ntab_estimatepowerlt0_r3);
3554	ntab_upload(mac, BWN_NTAB_C1_ESTPLT_R3, bwn_ntab_estimatepowerlt1_r3);
3555	ntab_upload(mac, BWN_NTAB_C0_ADJPLT_R3, bwn_ntab_adjustpower0_r3);
3556	ntab_upload(mac, BWN_NTAB_C1_ADJPLT_R3, bwn_ntab_adjustpower1_r3);
3557	ntab_upload(mac, BWN_NTAB_C0_GAINCTL_R3, bwn_ntab_gainctl0_r3);
3558	ntab_upload(mac, BWN_NTAB_C1_GAINCTL_R3, bwn_ntab_gainctl1_r3);
3559	ntab_upload(mac, BWN_NTAB_C0_IQLT_R3, bwn_ntab_iqlt0_r3);
3560	ntab_upload(mac, BWN_NTAB_C1_IQLT_R3, bwn_ntab_iqlt1_r3);
3561	ntab_upload(mac, BWN_NTAB_C0_LOFEEDTH_R3, bwn_ntab_loftlt0_r3);
3562	ntab_upload(mac, BWN_NTAB_C1_LOFEEDTH_R3, bwn_ntab_loftlt1_r3);
3563}
3564
3565static int bwn_nphy_tables_get_antswlut(struct bwn_mac *mac, uint8_t *antswlut)
3566{
3567	struct ieee80211com	*ic = &mac->mac_sc->sc_ic;
3568	struct bwn_softc	*sc = mac->mac_sc;
3569	const char		*antswlut_var;
3570	int			 error;
3571
3572	if (IEEE80211_IS_CHAN_5GHZ(ic->ic_curchan))
3573		antswlut_var = BHND_NVAR_ANTSWCTL5G;
3574	else
3575		antswlut_var = BHND_NVAR_ANTSWCTL2G;
3576
3577	error = bhnd_nvram_getvar_uint8(sc->sc_dev, antswlut_var, antswlut);
3578	if (error)
3579		BWN_ERRPRINTF(mac->mac_sc, "NVRAM variable %s unreadable: %d",
3580		    antswlut_var, error);
3581
3582	return (error);
3583}
3584
3585static void bwn_nphy_tables_init_rev7_volatile(struct bwn_mac *mac)
3586{
3587	int	core, error, offset, i;
3588	uint8_t	antswlut;
3589
3590	const int antswlut0_offsets[] = { 0, 4, 8, }; /* Offsets for values */
3591	const uint8_t antswlut0_values[][3] = {
3592		{ 0x2, 0x12, 0x8 }, /* Core 0 */
3593		{ 0x2, 0x18, 0x2 }, /* Core 1 */
3594	};
3595
3596	if ((error = bwn_nphy_tables_get_antswlut(mac, &antswlut)))
3597		return;
3598
3599	switch (antswlut) {
3600	case 0:
3601		for (core = 0; core < 2; core++) {
3602			for (i = 0; i < nitems(antswlut0_values[0]); i++) {
3603				offset = core ? 0x20 : 0x00;
3604				offset += antswlut0_offsets[i];
3605				bwn_ntab_write(mac, BWN_NTAB8(9, offset),
3606					       antswlut0_values[core][i]);
3607			}
3608		}
3609		break;
3610	default:
3611		BWN_ERRPRINTF(mac->mac_sc, "Unsupported antswlut: %d\n", antswlut);
3612		break;
3613	}
3614}
3615
3616static void bwn_nphy_tables_init_rev16(struct bwn_mac *mac)
3617{
3618	/* Static tables */
3619	if (mac->mac_phy.phy_do_full_init) {
3620		ntab_upload(mac, BWN_NTAB_NOISEVAR_R7, bwn_ntab_noisevar_r7);
3621		bwn_nphy_tables_init_shared_lut(mac);
3622	}
3623
3624	/* Volatile tables */
3625	bwn_nphy_tables_init_rev7_volatile(mac);
3626}
3627
3628static void bwn_nphy_tables_init_rev7(struct bwn_mac *mac)
3629{
3630	/* Static tables */
3631	if (mac->mac_phy.phy_do_full_init) {
3632		ntab_upload(mac, BWN_NTAB_FRAMESTRUCT_R3, bwn_ntab_framestruct_r3);
3633		ntab_upload(mac, BWN_NTAB_PILOT_R3, bwn_ntab_pilot_r3);
3634		ntab_upload(mac, BWN_NTAB_TMAP_R7, bwn_ntab_tmap_r7);
3635		ntab_upload(mac, BWN_NTAB_INTLEVEL_R3, bwn_ntab_intlevel_r3);
3636		ntab_upload(mac, BWN_NTAB_TDTRN_R3, bwn_ntab_tdtrn_r3);
3637		ntab_upload(mac, BWN_NTAB_NOISEVAR_R7, bwn_ntab_noisevar_r7);
3638		ntab_upload(mac, BWN_NTAB_MCS_R3, bwn_ntab_mcs_r3);
3639		ntab_upload(mac, BWN_NTAB_TDI20A0_R3, bwn_ntab_tdi20a0_r3);
3640		ntab_upload(mac, BWN_NTAB_TDI20A1_R3, bwn_ntab_tdi20a1_r3);
3641		ntab_upload(mac, BWN_NTAB_TDI40A0_R3, bwn_ntab_tdi40a0_r3);
3642		ntab_upload(mac, BWN_NTAB_TDI40A1_R3, bwn_ntab_tdi40a1_r3);
3643		ntab_upload(mac, BWN_NTAB_PILOTLT_R3, bwn_ntab_pilotlt_r3);
3644		ntab_upload(mac, BWN_NTAB_CHANEST_R3, bwn_ntab_channelest_r3);
3645		ntab_upload(mac, BWN_NTAB_FRAMELT_R3, bwn_ntab_framelookup_r3);
3646		bwn_nphy_tables_init_shared_lut(mac);
3647	}
3648
3649	/* Volatile tables */
3650	bwn_nphy_tables_init_rev7_volatile(mac);
3651}
3652
3653static void bwn_nphy_tables_init_rev3(struct bwn_mac *mac)
3654{
3655	int	error;
3656	uint8_t	antswlut;
3657
3658	if ((error = bwn_nphy_tables_get_antswlut(mac, &antswlut)))
3659		return;
3660
3661	/* Static tables */
3662	if (mac->mac_phy.phy_do_full_init) {
3663		ntab_upload(mac, BWN_NTAB_FRAMESTRUCT_R3, bwn_ntab_framestruct_r3);
3664		ntab_upload(mac, BWN_NTAB_PILOT_R3, bwn_ntab_pilot_r3);
3665		ntab_upload(mac, BWN_NTAB_TMAP_R3, bwn_ntab_tmap_r3);
3666		ntab_upload(mac, BWN_NTAB_INTLEVEL_R3, bwn_ntab_intlevel_r3);
3667		ntab_upload(mac, BWN_NTAB_TDTRN_R3, bwn_ntab_tdtrn_r3);
3668		ntab_upload(mac, BWN_NTAB_NOISEVAR_R3, bwn_ntab_noisevar_r3);
3669		ntab_upload(mac, BWN_NTAB_MCS_R3, bwn_ntab_mcs_r3);
3670		ntab_upload(mac, BWN_NTAB_TDI20A0_R3, bwn_ntab_tdi20a0_r3);
3671		ntab_upload(mac, BWN_NTAB_TDI20A1_R3, bwn_ntab_tdi20a1_r3);
3672		ntab_upload(mac, BWN_NTAB_TDI40A0_R3, bwn_ntab_tdi40a0_r3);
3673		ntab_upload(mac, BWN_NTAB_TDI40A1_R3, bwn_ntab_tdi40a1_r3);
3674		ntab_upload(mac, BWN_NTAB_PILOTLT_R3, bwn_ntab_pilotlt_r3);
3675		ntab_upload(mac, BWN_NTAB_CHANEST_R3, bwn_ntab_channelest_r3);
3676		ntab_upload(mac, BWN_NTAB_FRAMELT_R3, bwn_ntab_framelookup_r3);
3677		bwn_nphy_tables_init_shared_lut(mac);
3678	}
3679
3680	/* Volatile tables */
3681	if (antswlut < nitems(bwn_ntab_antswctl_r3))
3682		ntab_upload(mac, BWN_NTAB_ANT_SW_CTL_R3,
3683			    bwn_ntab_antswctl_r3[antswlut]);
3684	else
3685		KASSERT(0, ("%s: antswlut out of bounds (%d)\n",
3686		    __func__, antswlut));
3687}
3688
3689static void bwn_nphy_tables_init_rev0(struct bwn_mac *mac)
3690{
3691	/* Static tables */
3692	if (mac->mac_phy.phy_do_full_init) {
3693		ntab_upload(mac, BWN_NTAB_FRAMESTRUCT, bwn_ntab_framestruct);
3694		ntab_upload(mac, BWN_NTAB_FRAMELT, bwn_ntab_framelookup);
3695		ntab_upload(mac, BWN_NTAB_TMAP, bwn_ntab_tmap);
3696		ntab_upload(mac, BWN_NTAB_TDTRN, bwn_ntab_tdtrn);
3697		ntab_upload(mac, BWN_NTAB_INTLEVEL, bwn_ntab_intlevel);
3698		ntab_upload(mac, BWN_NTAB_PILOT, bwn_ntab_pilot);
3699		ntab_upload(mac, BWN_NTAB_TDI20A0, bwn_ntab_tdi20a0);
3700		ntab_upload(mac, BWN_NTAB_TDI20A1, bwn_ntab_tdi20a1);
3701		ntab_upload(mac, BWN_NTAB_TDI40A0, bwn_ntab_tdi40a0);
3702		ntab_upload(mac, BWN_NTAB_TDI40A1, bwn_ntab_tdi40a1);
3703		ntab_upload(mac, BWN_NTAB_CHANEST, bwn_ntab_channelest);
3704		ntab_upload(mac, BWN_NTAB_MCS, bwn_ntab_mcs);
3705		ntab_upload(mac, BWN_NTAB_NOISEVAR10, bwn_ntab_noisevar10);
3706		ntab_upload(mac, BWN_NTAB_NOISEVAR11, bwn_ntab_noisevar11);
3707	}
3708
3709	/* Volatile tables */
3710	ntab_upload(mac, BWN_NTAB_BDI, bwn_ntab_bdi);
3711	ntab_upload(mac, BWN_NTAB_PILOTLT, bwn_ntab_pilotlt);
3712	ntab_upload(mac, BWN_NTAB_C0_GAINCTL, bwn_ntab_gainctl0);
3713	ntab_upload(mac, BWN_NTAB_C1_GAINCTL, bwn_ntab_gainctl1);
3714	ntab_upload(mac, BWN_NTAB_C0_ESTPLT, bwn_ntab_estimatepowerlt0);
3715	ntab_upload(mac, BWN_NTAB_C1_ESTPLT, bwn_ntab_estimatepowerlt1);
3716	ntab_upload(mac, BWN_NTAB_C0_ADJPLT, bwn_ntab_adjustpower0);
3717	ntab_upload(mac, BWN_NTAB_C1_ADJPLT, bwn_ntab_adjustpower1);
3718	ntab_upload(mac, BWN_NTAB_C0_IQLT, bwn_ntab_iqlt0);
3719	ntab_upload(mac, BWN_NTAB_C1_IQLT, bwn_ntab_iqlt1);
3720	ntab_upload(mac, BWN_NTAB_C0_LOFEEDTH, bwn_ntab_loftlt0);
3721	ntab_upload(mac, BWN_NTAB_C1_LOFEEDTH, bwn_ntab_loftlt1);
3722}
3723
3724/* http://bcm-v4.sipsolutions.net/802.11/PHY/N/InitTables */
3725void bwn_nphy_tables_init(struct bwn_mac *mac)
3726{
3727	if (mac->mac_phy.rev >= 16)
3728		bwn_nphy_tables_init_rev16(mac);
3729	else if (mac->mac_phy.rev >= 7)
3730		bwn_nphy_tables_init_rev7(mac);
3731	else if (mac->mac_phy.rev >= 3)
3732		bwn_nphy_tables_init_rev3(mac);
3733	else
3734		bwn_nphy_tables_init_rev0(mac);
3735}
3736
3737/* http://bcm-v4.sipsolutions.net/802.11/PHY/N/GetIpaGainTbl */
3738static const uint32_t *bwn_nphy_get_ipa_gain_table(struct bwn_mac *mac)
3739{
3740	struct bwn_softc *sc = mac->mac_sc;
3741	struct ieee80211com *ic = &mac->mac_sc->sc_ic;
3742	struct bwn_phy *phy = &mac->mac_phy;
3743
3744	if (IEEE80211_IS_CHAN_2GHZ(ic->ic_curchan)) {
3745		switch (phy->rev) {
3746		case 17:
3747			if (phy->rf_rev == 14)
3748				return bwn_ntab_tx_gain_ipa_2057_rev14_2g;
3749			break;
3750		case 16:
3751			if (phy->rf_rev == 9)
3752				return bwn_ntab_tx_gain_ipa_2057_rev9_2g;
3753			break;
3754		case 8:
3755			if (phy->rf_rev == 5)
3756				return bwn_ntab_tx_gain_ipa_2057_rev5_2g;
3757			break;
3758		case 6:
3759			if (sc->sc_cid.chip_id == BHND_CHIPID_BCM47162)
3760				return bwn_ntab_tx_gain_ipa_rev5_2g;
3761			return bwn_ntab_tx_gain_ipa_rev6_2g;
3762		case 5:
3763			return bwn_ntab_tx_gain_ipa_rev5_2g;
3764		case 4:
3765		case 3:
3766			return bwn_ntab_tx_gain_ipa_rev3_2g;
3767		}
3768
3769		BWN_ERRPRINTF(mac->mac_sc,
3770		       "No 2GHz IPA gain table available for this device\n");
3771		return NULL;
3772	} else {
3773		switch (phy->rev) {
3774		case 16:
3775			if (phy->rf_rev == 9)
3776				return bwn_ntab_tx_gain_ipa_2057_rev9_5g;
3777			break;
3778		case 3 ... 6:
3779			return bwn_ntab_tx_gain_ipa_rev3_5g;
3780		}
3781
3782		BWN_ERRPRINTF(mac->mac_sc,
3783		       "No 5GHz IPA gain table available for this device\n");
3784		return NULL;
3785	}
3786}
3787
3788const uint32_t *bwn_nphy_get_tx_gain_table(struct bwn_mac *mac)
3789{
3790	struct ieee80211com *ic = &mac->mac_sc->sc_ic;
3791	struct bwn_softc *sc = mac->mac_sc;
3792	struct bwn_phy *phy = &mac->mac_phy;
3793	int error, is_5ghz;
3794	uint8_t extpa_gain;
3795
3796	/* XXX ideally we'd have is2, is5, etc */
3797	is_5ghz = !! IEEE80211_IS_CHAN_5GHZ(ic->ic_curchan);
3798
3799	if (mac->mac_phy.rev < 3)
3800		return bwn_ntab_tx_gain_rev0_1_2;
3801
3802	/* rev 3+ */
3803	if ((mac->mac_phy.phy_n->ipa2g_on && is_5ghz == 0) ||
3804	    (mac->mac_phy.phy_n->ipa5g_on && is_5ghz == 1)) {
3805		return bwn_nphy_get_ipa_gain_table(mac);
3806	} else if (is_5ghz == 1) {
3807		switch (phy->rev) {
3808		case 6:
3809		case 5:
3810			return bwn_ntab_tx_gain_epa_rev5_5g;
3811		case 4:
3812			error = bhnd_nvram_getvar_uint8(sc->sc_dev,
3813			    BHND_NVAR_EXTPAGAIN5G, &extpa_gain);
3814			if (error) {
3815				BWN_ERRPRINTF(mac->mac_sc, "Error reading EPA "
3816				    "gain configuration (%s) from NVRAM: %d\n",
3817				    BHND_NVAR_EXTPAGAIN5G, error);
3818				return (NULL);
3819			}
3820
3821			return (extpa_gain == 3) ?
3822				bwn_ntab_tx_gain_epa_rev4_5g :
3823				bwn_ntab_tx_gain_epa_rev4_hi_pwr_5g;
3824		case 3:
3825			return bwn_ntab_tx_gain_epa_rev3_5g;
3826		default:
3827			BWN_ERRPRINTF(mac->mac_sc,
3828			       "No 5GHz EPA gain table available for this device\n");
3829			return NULL;
3830		}
3831	} else {
3832		switch (phy->rev) {
3833		case 6:
3834		case 5:
3835			error = bhnd_nvram_getvar_uint8(sc->sc_dev,
3836			    BHND_NVAR_EXTPAGAIN2G, &extpa_gain);
3837			if (error) {
3838				BWN_ERRPRINTF(mac->mac_sc, "Error reading EPA "
3839				    "gain configuration (%s) from NVRAM: %d\n",
3840				    BHND_NVAR_EXTPAGAIN2G, error);
3841				return (NULL);
3842			}
3843
3844			if (extpa_gain == 3)
3845				return bwn_ntab_tx_gain_epa_rev3_hi_pwr_2g;
3846			/* fall through */
3847		case 4:
3848		case 3:
3849			return bwn_ntab_tx_gain_epa_rev3_2g;
3850		default:
3851			BWN_ERRPRINTF(mac->mac_sc,
3852			       "No 2GHz EPA gain table available for this device\n");
3853			return NULL;
3854		}
3855	}
3856}
3857
3858const int16_t *bwn_ntab_get_rf_pwr_offset_table(struct bwn_mac *mac)
3859{
3860	struct ieee80211com *ic = &mac->mac_sc->sc_ic;
3861	struct bwn_phy *phy = &mac->mac_phy;
3862
3863	if (IEEE80211_IS_CHAN_2GHZ(ic->ic_curchan)) {
3864		switch (phy->rev) {
3865		case 17:
3866			if (phy->rf_rev == 14)
3867				return bwn_ntab_rf_pwr_offset_2057_rev14_2g;
3868			break;
3869		case 16:
3870			if (phy->rf_rev == 9)
3871				return bwn_ntab_rf_pwr_offset_2057_rev9_2g;
3872			break;
3873		}
3874
3875		BWN_ERRPRINTF(mac->mac_sc,
3876		       "No 2GHz RF power table available for this device\n");
3877		return NULL;
3878	} else {
3879		switch (phy->rev) {
3880		case 16:
3881			if (phy->rf_rev == 9)
3882				return bwn_ntab_rf_pwr_offset_2057_rev9_5g;
3883			break;
3884		}
3885
3886		BWN_ERRPRINTF(mac->mac_sc,
3887		       "No 5GHz RF power table available for this device\n");
3888		return NULL;
3889	}
3890}
3891
3892struct bwn_nphy_gain_ctl_workaround_entry *bwn_nphy_get_gain_ctl_workaround_ent(
3893	struct bwn_mac *mac, bool ghz5, bool ext_lna)
3894{
3895	struct ieee80211com *ic = &mac->mac_sc->sc_ic;
3896	struct bwn_softc *sc = mac->mac_sc;
3897	struct bwn_phy *phy = &mac->mac_phy;
3898	struct bwn_nphy_gain_ctl_workaround_entry *e;
3899	uint8_t phy_idx;
3900
3901	if (!ghz5 && mac->mac_phy.rev >= 6 && mac->mac_phy.rf_rev == 11)
3902		return &nphy_gain_ctl_wa_phy6_radio11_ghz2;
3903
3904	KASSERT(mac->mac_phy.rev >= 3,
3905	    ("%s: called; too early phy rev (%d)\n",
3906	    __func__, mac->mac_phy.rev));
3907	if (mac->mac_phy.rev >= 6)
3908		phy_idx = 3;
3909	else if (mac->mac_phy.rev == 5)
3910		phy_idx = 2;
3911	else if (mac->mac_phy.rev == 4)
3912		phy_idx = 1;
3913	else
3914		phy_idx = 0;
3915	e = &nphy_gain_ctl_workaround[ghz5][phy_idx];
3916
3917	/* Some workarounds to the workarounds... */
3918	if (!ghz5) {
3919		uint8_t	tr_iso;
3920		int	error;
3921
3922		error = bhnd_nvram_getvar_uint8(sc->sc_dev, BHND_NVAR_TRISO2G,
3923		    &tr_iso);
3924		BWN_ERRPRINTF(mac->mac_sc, "Error reading %s from NVRAM: %d\n",
3925		    BHND_NVAR_TRISO2G, error);
3926
3927		if (tr_iso > 7)
3928			tr_iso = 3;
3929
3930		if (phy->rev >= 6) {
3931			static const int gain_data[] = { 0x106a, 0x106c, 0x1074,
3932							 0x107c, 0x007e, 0x107e,
3933							 0x207e, 0x307e, };
3934
3935			e->cliplo_gain = gain_data[tr_iso];
3936		} else if (phy->rev == 5) {
3937			static const int gain_data[] = { 0x0062, 0x0064, 0x006a,
3938							 0x106a, 0x106c, 0x1074,
3939							 0x107c, 0x207c, };
3940
3941			e->cliplo_gain = gain_data[tr_iso];
3942		}
3943
3944		if (phy->rev >= 5 && ext_lna) {
3945			e->rfseq_init[0] &= ~0x4000;
3946			e->rfseq_init[1] &= ~0x4000;
3947			e->rfseq_init[2] &= ~0x4000;
3948			e->rfseq_init[3] &= ~0x4000;
3949			e->init_gain &= ~0x4000;
3950		}
3951	} else {
3952		if (phy->rev >= 6) {
3953			/* XXX 40MHz HT only? No static-40MHz? */
3954			if (phy->rf_rev == 11 &&
3955			    IEEE80211_IS_CHAN_HT40(ic->ic_curchan))
3956				e->crsminu = 0x2d;
3957		} else if (phy->rev == 4 && ext_lna) {
3958			e->rfseq_init[0] &= ~0x4000;
3959			e->rfseq_init[1] &= ~0x4000;
3960			e->rfseq_init[2] &= ~0x4000;
3961			e->rfseq_init[3] &= ~0x4000;
3962			e->init_gain &= ~0x4000;
3963			e->rfseq_init[0] |= 0x1000;
3964			e->rfseq_init[1] |= 0x1000;
3965			e->rfseq_init[2] |= 0x1000;
3966			e->rfseq_init[3] |= 0x1000;
3967			e->init_gain |= 0x1000;
3968		}
3969	}
3970
3971	return e;
3972}
3973
3974const struct bwn_nphy_rf_control_override_rev7 *
3975bwn_nphy_get_rf_ctl_over_rev7(struct bwn_mac *mac, uint16_t field,
3976    uint8_t override)
3977{
3978	const struct bwn_nphy_rf_control_override_rev7 *e;
3979	uint8_t size, i;
3980
3981	switch (override) {
3982	case 0:
3983		e = tbl_rf_control_override_rev7_over0;
3984		size = nitems(tbl_rf_control_override_rev7_over0);
3985		break;
3986	case 1:
3987		e = tbl_rf_control_override_rev7_over1;
3988		size = nitems(tbl_rf_control_override_rev7_over1);
3989		break;
3990	case 2:
3991		e = tbl_rf_control_override_rev7_over2;
3992		size = nitems(tbl_rf_control_override_rev7_over2);
3993		break;
3994	default:
3995		BWN_ERRPRINTF(mac->mac_sc, "Invalid override value %d\n", override);
3996		return NULL;
3997	}
3998
3999	for (i = 0; i < size; i++) {
4000		if (e[i].field == field)
4001			return &e[i];
4002	}
4003
4004	return NULL;
4005}
4006