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