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