wdt: sunxi: Move restart code to the watchdog driver
[linux-2.6-block.git] / drivers / net / wireless / b43 / tables_nphy.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 "b43.h"
27 #include "tables_nphy.h"
28 #include "phy_common.h"
29 #include "phy_n.h"
30
31 static const u8 b43_ntab_adjustpower0[] = {
32         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
33         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
34         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
35         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
36         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
37         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
38         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
39         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
40         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
41         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
42         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
43         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
44         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
45         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
46         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
47         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
48 };
49
50 static const u8 b43_ntab_adjustpower1[] = {
51         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
52         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
53         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
54         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
55         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
56         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
57         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
58         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
59         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
60         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
61         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
62         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
63         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
64         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
65         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
66         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
67 };
68
69 static const u16 b43_ntab_bdi[] = {
70         0x0070, 0x0126, 0x012C, 0x0246, 0x048D, 0x04D2,
71 };
72
73 static const u32 b43_ntab_channelest[] = {
74         0x44444444, 0x44444444, 0x44444444, 0x44444444,
75         0x44444444, 0x44444444, 0x44444444, 0x44444444,
76         0x10101010, 0x10101010, 0x10101010, 0x10101010,
77         0x10101010, 0x10101010, 0x10101010, 0x10101010,
78         0x44444444, 0x44444444, 0x44444444, 0x44444444,
79         0x44444444, 0x44444444, 0x44444444, 0x44444444,
80         0x10101010, 0x10101010, 0x10101010, 0x10101010,
81         0x10101010, 0x10101010, 0x10101010, 0x10101010,
82         0x44444444, 0x44444444, 0x44444444, 0x44444444,
83         0x44444444, 0x44444444, 0x44444444, 0x44444444,
84         0x44444444, 0x44444444, 0x44444444, 0x44444444,
85         0x44444444, 0x44444444, 0x44444444, 0x44444444,
86         0x10101010, 0x10101010, 0x10101010, 0x10101010,
87         0x10101010, 0x10101010, 0x10101010, 0x10101010,
88         0x10101010, 0x10101010, 0x10101010, 0x10101010,
89         0x10101010, 0x10101010, 0x10101010, 0x10101010,
90         0x44444444, 0x44444444, 0x44444444, 0x44444444,
91         0x44444444, 0x44444444, 0x44444444, 0x44444444,
92         0x44444444, 0x44444444, 0x44444444, 0x44444444,
93         0x44444444, 0x44444444, 0x44444444, 0x44444444,
94         0x10101010, 0x10101010, 0x10101010, 0x10101010,
95         0x10101010, 0x10101010, 0x10101010, 0x10101010,
96         0x10101010, 0x10101010, 0x10101010, 0x10101010,
97         0x10101010, 0x10101010, 0x10101010, 0x10101010,
98 };
99
100 static const u8 b43_ntab_estimatepowerlt0[] = {
101         0x50, 0x4F, 0x4E, 0x4D, 0x4C, 0x4B, 0x4A, 0x49,
102         0x48, 0x47, 0x46, 0x45, 0x44, 0x43, 0x42, 0x41,
103         0x40, 0x3F, 0x3E, 0x3D, 0x3C, 0x3B, 0x3A, 0x39,
104         0x38, 0x37, 0x36, 0x35, 0x34, 0x33, 0x32, 0x31,
105         0x30, 0x2F, 0x2E, 0x2D, 0x2C, 0x2B, 0x2A, 0x29,
106         0x28, 0x27, 0x26, 0x25, 0x24, 0x23, 0x22, 0x21,
107         0x20, 0x1F, 0x1E, 0x1D, 0x1C, 0x1B, 0x1A, 0x19,
108         0x18, 0x17, 0x16, 0x15, 0x14, 0x13, 0x12, 0x11,
109 };
110
111 static const u8 b43_ntab_estimatepowerlt1[] = {
112         0x50, 0x4F, 0x4E, 0x4D, 0x4C, 0x4B, 0x4A, 0x49,
113         0x48, 0x47, 0x46, 0x45, 0x44, 0x43, 0x42, 0x41,
114         0x40, 0x3F, 0x3E, 0x3D, 0x3C, 0x3B, 0x3A, 0x39,
115         0x38, 0x37, 0x36, 0x35, 0x34, 0x33, 0x32, 0x31,
116         0x30, 0x2F, 0x2E, 0x2D, 0x2C, 0x2B, 0x2A, 0x29,
117         0x28, 0x27, 0x26, 0x25, 0x24, 0x23, 0x22, 0x21,
118         0x20, 0x1F, 0x1E, 0x1D, 0x1C, 0x1B, 0x1A, 0x19,
119         0x18, 0x17, 0x16, 0x15, 0x14, 0x13, 0x12, 0x11,
120 };
121
122 static const u8 b43_ntab_framelookup[] = {
123         0x02, 0x04, 0x14, 0x14, 0x03, 0x05, 0x16, 0x16,
124         0x0A, 0x0C, 0x1C, 0x1C, 0x0B, 0x0D, 0x1E, 0x1E,
125         0x06, 0x08, 0x18, 0x18, 0x07, 0x09, 0x1A, 0x1A,
126         0x0E, 0x10, 0x20, 0x28, 0x0F, 0x11, 0x22, 0x2A,
127 };
128
129 static const u32 b43_ntab_framestruct[] = {
130         0x08004A04, 0x00100000, 0x01000A05, 0x00100020,
131         0x09804506, 0x00100030, 0x09804507, 0x00100030,
132         0x00000000, 0x00000000, 0x00000000, 0x00000000,
133         0x00000000, 0x00000000, 0x00000000, 0x00000000,
134         0x08004A0C, 0x00100004, 0x01000A0D, 0x00100024,
135         0x0980450E, 0x00100034, 0x0980450F, 0x00100034,
136         0x00000000, 0x00000000, 0x00000000, 0x00000000,
137         0x00000000, 0x00000000, 0x00000000, 0x00000000,
138         0x00000A04, 0x00100000, 0x11008A05, 0x00100020,
139         0x1980C506, 0x00100030, 0x21810506, 0x00100030,
140         0x21810506, 0x00100030, 0x01800504, 0x00100030,
141         0x11808505, 0x00100030, 0x29814507, 0x01100030,
142         0x00000A04, 0x00100000, 0x11008A05, 0x00100020,
143         0x21810506, 0x00100030, 0x21810506, 0x00100030,
144         0x29814507, 0x01100030, 0x00000000, 0x00000000,
145         0x00000000, 0x00000000, 0x00000000, 0x00000000,
146         0x00000A0C, 0x00100008, 0x11008A0D, 0x00100028,
147         0x1980C50E, 0x00100038, 0x2181050E, 0x00100038,
148         0x2181050E, 0x00100038, 0x0180050C, 0x00100038,
149         0x1180850D, 0x00100038, 0x2981450F, 0x01100038,
150         0x00000A0C, 0x00100008, 0x11008A0D, 0x00100028,
151         0x2181050E, 0x00100038, 0x2181050E, 0x00100038,
152         0x2981450F, 0x01100038, 0x00000000, 0x00000000,
153         0x00000000, 0x00000000, 0x00000000, 0x00000000,
154         0x08004A04, 0x00100000, 0x01000A05, 0x00100020,
155         0x1980C506, 0x00100030, 0x1980C506, 0x00100030,
156         0x11808504, 0x00100030, 0x3981CA05, 0x00100030,
157         0x29814507, 0x01100030, 0x00000000, 0x00000000,
158         0x10008A04, 0x00100000, 0x3981CA05, 0x00100030,
159         0x1980C506, 0x00100030, 0x29814507, 0x01100030,
160         0x00000000, 0x00000000, 0x00000000, 0x00000000,
161         0x00000000, 0x00000000, 0x00000000, 0x00000000,
162         0x08004A0C, 0x00100008, 0x01000A0D, 0x00100028,
163         0x1980C50E, 0x00100038, 0x1980C50E, 0x00100038,
164         0x1180850C, 0x00100038, 0x3981CA0D, 0x00100038,
165         0x2981450F, 0x01100038, 0x00000000, 0x00000000,
166         0x10008A0C, 0x00100008, 0x3981CA0D, 0x00100038,
167         0x1980C50E, 0x00100038, 0x2981450F, 0x01100038,
168         0x00000000, 0x00000000, 0x00000000, 0x00000000,
169         0x00000000, 0x00000000, 0x00000000, 0x00000000,
170         0x40021404, 0x00100000, 0x02001405, 0x00100040,
171         0x0B004A06, 0x01900060, 0x13008A06, 0x01900060,
172         0x13008A06, 0x01900060, 0x43020A04, 0x00100060,
173         0x1B00CA05, 0x00100060, 0x23010A07, 0x01500060,
174         0x40021404, 0x00100000, 0x1A00D405, 0x00100040,
175         0x13008A06, 0x01900060, 0x13008A06, 0x01900060,
176         0x23010A07, 0x01500060, 0x00000000, 0x00000000,
177         0x00000000, 0x00000000, 0x00000000, 0x00000000,
178         0x4002140C, 0x00100010, 0x0200140D, 0x00100050,
179         0x0B004A0E, 0x01900070, 0x13008A0E, 0x01900070,
180         0x13008A0E, 0x01900070, 0x43020A0C, 0x00100070,
181         0x1B00CA0D, 0x00100070, 0x23010A0F, 0x01500070,
182         0x4002140C, 0x00100010, 0x1A00D40D, 0x00100050,
183         0x13008A0E, 0x01900070, 0x13008A0E, 0x01900070,
184         0x23010A0F, 0x01500070, 0x00000000, 0x00000000,
185         0x00000000, 0x00000000, 0x00000000, 0x00000000,
186         0x50029404, 0x00100000, 0x32019405, 0x00100040,
187         0x0B004A06, 0x01900060, 0x0B004A06, 0x01900060,
188         0x5B02CA04, 0x00100060, 0x3B01D405, 0x00100060,
189         0x23010A07, 0x01500060, 0x00000000, 0x00000000,
190         0x5802D404, 0x00100000, 0x3B01D405, 0x00100060,
191         0x0B004A06, 0x01900060, 0x23010A07, 0x01500060,
192         0x00000000, 0x00000000, 0x00000000, 0x00000000,
193         0x00000000, 0x00000000, 0x00000000, 0x00000000,
194         0x5002940C, 0x00100010, 0x3201940D, 0x00100050,
195         0x0B004A0E, 0x01900070, 0x0B004A0E, 0x01900070,
196         0x5B02CA0C, 0x00100070, 0x3B01D40D, 0x00100070,
197         0x23010A0F, 0x01500070, 0x00000000, 0x00000000,
198         0x5802D40C, 0x00100010, 0x3B01D40D, 0x00100070,
199         0x0B004A0E, 0x01900070, 0x23010A0F, 0x01500070,
200         0x00000000, 0x00000000, 0x00000000, 0x00000000,
201         0x00000000, 0x00000000, 0x00000000, 0x00000000,
202         0x40021404, 0x000F4800, 0x62031405, 0x00100040,
203         0x53028A06, 0x01900060, 0x53028A07, 0x01900060,
204         0x00000000, 0x00000000, 0x00000000, 0x00000000,
205         0x00000000, 0x00000000, 0x00000000, 0x00000000,
206         0x4002140C, 0x000F4808, 0x6203140D, 0x00100048,
207         0x53028A0E, 0x01900068, 0x53028A0F, 0x01900068,
208         0x00000000, 0x00000000, 0x00000000, 0x00000000,
209         0x00000000, 0x00000000, 0x00000000, 0x00000000,
210         0x00000A0C, 0x00100004, 0x11008A0D, 0x00100024,
211         0x1980C50E, 0x00100034, 0x2181050E, 0x00100034,
212         0x2181050E, 0x00100034, 0x0180050C, 0x00100038,
213         0x1180850D, 0x00100038, 0x1181850D, 0x00100038,
214         0x2981450F, 0x01100038, 0x00000000, 0x00000000,
215         0x00000000, 0x00000000, 0x00000000, 0x00000000,
216         0x00000000, 0x00000000, 0x00000000, 0x00000000,
217         0x00000000, 0x00000000, 0x00000000, 0x00000000,
218         0x00000A0C, 0x00100008, 0x11008A0D, 0x00100028,
219         0x2181050E, 0x00100038, 0x2181050E, 0x00100038,
220         0x1181850D, 0x00100038, 0x2981450F, 0x01100038,
221         0x00000000, 0x00000000, 0x00000000, 0x00000000,
222         0x00000000, 0x00000000, 0x00000000, 0x00000000,
223         0x00000000, 0x00000000, 0x00000000, 0x00000000,
224         0x00000000, 0x00000000, 0x00000000, 0x00000000,
225         0x00000000, 0x00000000, 0x00000000, 0x00000000,
226         0x08004A04, 0x00100000, 0x01000A05, 0x00100020,
227         0x0180C506, 0x00100030, 0x0180C506, 0x00100030,
228         0x2180C50C, 0x00100030, 0x49820A0D, 0x0016A130,
229         0x41824A0D, 0x0016A130, 0x2981450F, 0x01100030,
230         0x00000000, 0x00000000, 0x00000000, 0x00000000,
231         0x00000000, 0x00000000, 0x00000000, 0x00000000,
232         0x00000000, 0x00000000, 0x00000000, 0x00000000,
233         0x00000000, 0x00000000, 0x00000000, 0x00000000,
234         0x2000CA0C, 0x00100000, 0x49820A0D, 0x0016A130,
235         0x1980C50E, 0x00100030, 0x41824A0D, 0x0016A130,
236         0x2981450F, 0x01100030, 0x00000000, 0x00000000,
237         0x00000000, 0x00000000, 0x00000000, 0x00000000,
238         0x00000000, 0x00000000, 0x00000000, 0x00000000,
239         0x00000000, 0x00000000, 0x00000000, 0x00000000,
240         0x00000000, 0x00000000, 0x00000000, 0x00000000,
241         0x00000000, 0x00000000, 0x00000000, 0x00000000,
242         0x4002140C, 0x00100008, 0x0200140D, 0x00100048,
243         0x0B004A0E, 0x01900068, 0x13008A0E, 0x01900068,
244         0x13008A0E, 0x01900068, 0x43020A0C, 0x00100070,
245         0x1B00CA0D, 0x00100070, 0x1B014A0D, 0x00100070,
246         0x23010A0F, 0x01500070, 0x00000000, 0x00000000,
247         0x00000000, 0x00000000, 0x00000000, 0x00000000,
248         0x00000000, 0x00000000, 0x00000000, 0x00000000,
249         0x00000000, 0x00000000, 0x00000000, 0x00000000,
250         0x4002140C, 0x00100010, 0x1A00D40D, 0x00100050,
251         0x13008A0E, 0x01900070, 0x13008A0E, 0x01900070,
252         0x1B014A0D, 0x00100070, 0x23010A0F, 0x01500070,
253         0x00000000, 0x00000000, 0x00000000, 0x00000000,
254         0x00000000, 0x00000000, 0x00000000, 0x00000000,
255         0x00000000, 0x00000000, 0x00000000, 0x00000000,
256         0x00000000, 0x00000000, 0x00000000, 0x00000000,
257         0x00000000, 0x00000000, 0x00000000, 0x00000000,
258         0x50029404, 0x00100000, 0x32019405, 0x00100040,
259         0x03004A06, 0x01900060, 0x03004A06, 0x01900060,
260         0x6B030A0C, 0x00100060, 0x4B02140D, 0x0016A160,
261         0x4302540D, 0x0016A160, 0x23010A0F, 0x01500060,
262         0x00000000, 0x00000000, 0x00000000, 0x00000000,
263         0x00000000, 0x00000000, 0x00000000, 0x00000000,
264         0x00000000, 0x00000000, 0x00000000, 0x00000000,
265         0x00000000, 0x00000000, 0x00000000, 0x00000000,
266         0x6B03140C, 0x00100060, 0x4B02140D, 0x0016A160,
267         0x0B004A0E, 0x01900060, 0x4302540D, 0x0016A160,
268         0x23010A0F, 0x01500060, 0x00000000, 0x00000000,
269         0x00000000, 0x00000000, 0x00000000, 0x00000000,
270         0x00000000, 0x00000000, 0x00000000, 0x00000000,
271         0x00000000, 0x00000000, 0x00000000, 0x00000000,
272         0x00000000, 0x00000000, 0x00000000, 0x00000000,
273         0x00000000, 0x00000000, 0x00000000, 0x00000000,
274         0x40021404, 0x00100000, 0x1A00D405, 0x00100040,
275         0x53028A06, 0x01900060, 0x5B02CA06, 0x01900060,
276         0x5B02CA06, 0x01900060, 0x43020A04, 0x00100060,
277         0x1B00CA05, 0x00100060, 0x53028A07, 0x0190C060,
278         0x00000000, 0x00000000, 0x00000000, 0x00000000,
279         0x00000000, 0x00000000, 0x00000000, 0x00000000,
280         0x00000000, 0x00000000, 0x00000000, 0x00000000,
281         0x00000000, 0x00000000, 0x00000000, 0x00000000,
282         0x4002140C, 0x00100010, 0x1A00D40D, 0x00100050,
283         0x53028A0E, 0x01900070, 0x5B02CA0E, 0x01900070,
284         0x5B02CA0E, 0x01900070, 0x43020A0C, 0x00100070,
285         0x1B00CA0D, 0x00100070, 0x53028A0F, 0x0190C070,
286         0x00000000, 0x00000000, 0x00000000, 0x00000000,
287         0x00000000, 0x00000000, 0x00000000, 0x00000000,
288         0x00000000, 0x00000000, 0x00000000, 0x00000000,
289         0x00000000, 0x00000000, 0x00000000, 0x00000000,
290         0x40021404, 0x00100000, 0x1A00D405, 0x00100040,
291         0x5B02CA06, 0x01900060, 0x5B02CA06, 0x01900060,
292         0x53028A07, 0x0190C060, 0x00000000, 0x00000000,
293         0x00000000, 0x00000000, 0x00000000, 0x00000000,
294         0x00000000, 0x00000000, 0x00000000, 0x00000000,
295         0x00000000, 0x00000000, 0x00000000, 0x00000000,
296         0x00000000, 0x00000000, 0x00000000, 0x00000000,
297         0x00000000, 0x00000000, 0x00000000, 0x00000000,
298         0x4002140C, 0x00100010, 0x1A00D40D, 0x00100050,
299         0x5B02CA0E, 0x01900070, 0x5B02CA0E, 0x01900070,
300         0x53028A0F, 0x0190C070, 0x00000000, 0x00000000,
301         0x00000000, 0x00000000, 0x00000000, 0x00000000,
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         0x00000000, 0x00000000, 0x00000000, 0x00000000,
308         0x00000000, 0x00000000, 0x00000000, 0x00000000,
309         0x00000000, 0x00000000, 0x00000000, 0x00000000,
310         0x00000000, 0x00000000, 0x00000000, 0x00000000,
311         0x00000000, 0x00000000, 0x00000000, 0x00000000,
312         0x00000000, 0x00000000, 0x00000000, 0x00000000,
313         0x00000000, 0x00000000, 0x00000000, 0x00000000,
314         0x00000000, 0x00000000, 0x00000000, 0x00000000,
315         0x00000000, 0x00000000, 0x00000000, 0x00000000,
316         0x00000000, 0x00000000, 0x00000000, 0x00000000,
317         0x00000000, 0x00000000, 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         0x00000000, 0x00000000, 0x00000000, 0x00000000,
324         0x00000000, 0x00000000, 0x00000000, 0x00000000,
325         0x00000000, 0x00000000, 0x00000000, 0x00000000,
326         0x00000000, 0x00000000, 0x00000000, 0x00000000,
327         0x00000000, 0x00000000, 0x00000000, 0x00000000,
328         0x00000000, 0x00000000, 0x00000000, 0x00000000,
329         0x00000000, 0x00000000, 0x00000000, 0x00000000,
330         0x00000000, 0x00000000, 0x00000000, 0x00000000,
331         0x00000000, 0x00000000, 0x00000000, 0x00000000,
332         0x00000000, 0x00000000, 0x00000000, 0x00000000,
333         0x00000000, 0x00000000, 0x00000000, 0x00000000,
334         0x00000000, 0x00000000, 0x00000000, 0x00000000,
335         0x00000000, 0x00000000, 0x00000000, 0x00000000,
336         0x00000000, 0x00000000, 0x00000000, 0x00000000,
337         0x00000000, 0x00000000, 0x00000000, 0x00000000,
338 };
339
340 static const u32 b43_ntab_gainctl0[] = {
341         0x03CC2B44, 0x03CC2B42, 0x03CC2B40, 0x03CC2B3E,
342         0x03CC2B3D, 0x03CC2B3B, 0x03C82B44, 0x03C82B42,
343         0x03C82B40, 0x03C82B3E, 0x03C82B3D, 0x03C82B3B,
344         0x03C82B39, 0x03C82B38, 0x03C82B36, 0x03C82B34,
345         0x03C42B44, 0x03C42B42, 0x03C42B40, 0x03C42B3E,
346         0x03C42B3D, 0x03C42B3B, 0x03C42B39, 0x03C42B38,
347         0x03C42B36, 0x03C42B34, 0x03C42B33, 0x03C42B32,
348         0x03C42B30, 0x03C42B2F, 0x03C42B2D, 0x03C02B44,
349         0x03C02B42, 0x03C02B40, 0x03C02B3E, 0x03C02B3D,
350         0x03C02B3B, 0x03C02B39, 0x03C02B38, 0x03C02B36,
351         0x03C02B34, 0x03B02B44, 0x03B02B42, 0x03B02B40,
352         0x03B02B3E, 0x03B02B3D, 0x03B02B3B, 0x03B02B39,
353         0x03B02B38, 0x03B02B36, 0x03B02B34, 0x03B02B33,
354         0x03B02B32, 0x03B02B30, 0x03B02B2F, 0x03B02B2D,
355         0x03A02B44, 0x03A02B42, 0x03A02B40, 0x03A02B3E,
356         0x03A02B3D, 0x03A02B3B, 0x03A02B39, 0x03A02B38,
357         0x03A02B36, 0x03A02B34, 0x03902B44, 0x03902B42,
358         0x03902B40, 0x03902B3E, 0x03902B3D, 0x03902B3B,
359         0x03902B39, 0x03902B38, 0x03902B36, 0x03902B34,
360         0x03902B33, 0x03902B32, 0x03902B30, 0x03802B44,
361         0x03802B42, 0x03802B40, 0x03802B3E, 0x03802B3D,
362         0x03802B3B, 0x03802B39, 0x03802B38, 0x03802B36,
363         0x03802B34, 0x03802B33, 0x03802B32, 0x03802B30,
364         0x03802B2F, 0x03802B2D, 0x03802B2C, 0x03802B2B,
365         0x03802B2A, 0x03802B29, 0x03802B27, 0x03802B26,
366         0x03802B25, 0x03802B24, 0x03802B23, 0x03802B22,
367         0x03802B21, 0x03802B20, 0x03802B1F, 0x03802B1E,
368         0x03802B1E, 0x03802B1D, 0x03802B1C, 0x03802B1B,
369         0x03802B1A, 0x03802B1A, 0x03802B19, 0x03802B18,
370         0x03802B18, 0x03802B18, 0x03802B18, 0x03802B18,
371         0x03802B18, 0x03802B18, 0x03802B18, 0x03802B18,
372         0x03802B18, 0x03802B18, 0x03802B18, 0x00002B00,
373 };
374
375 static const u32 b43_ntab_gainctl1[] = {
376         0x03CC2B44, 0x03CC2B42, 0x03CC2B40, 0x03CC2B3E,
377         0x03CC2B3D, 0x03CC2B3B, 0x03C82B44, 0x03C82B42,
378         0x03C82B40, 0x03C82B3E, 0x03C82B3D, 0x03C82B3B,
379         0x03C82B39, 0x03C82B38, 0x03C82B36, 0x03C82B34,
380         0x03C42B44, 0x03C42B42, 0x03C42B40, 0x03C42B3E,
381         0x03C42B3D, 0x03C42B3B, 0x03C42B39, 0x03C42B38,
382         0x03C42B36, 0x03C42B34, 0x03C42B33, 0x03C42B32,
383         0x03C42B30, 0x03C42B2F, 0x03C42B2D, 0x03C02B44,
384         0x03C02B42, 0x03C02B40, 0x03C02B3E, 0x03C02B3D,
385         0x03C02B3B, 0x03C02B39, 0x03C02B38, 0x03C02B36,
386         0x03C02B34, 0x03B02B44, 0x03B02B42, 0x03B02B40,
387         0x03B02B3E, 0x03B02B3D, 0x03B02B3B, 0x03B02B39,
388         0x03B02B38, 0x03B02B36, 0x03B02B34, 0x03B02B33,
389         0x03B02B32, 0x03B02B30, 0x03B02B2F, 0x03B02B2D,
390         0x03A02B44, 0x03A02B42, 0x03A02B40, 0x03A02B3E,
391         0x03A02B3D, 0x03A02B3B, 0x03A02B39, 0x03A02B38,
392         0x03A02B36, 0x03A02B34, 0x03902B44, 0x03902B42,
393         0x03902B40, 0x03902B3E, 0x03902B3D, 0x03902B3B,
394         0x03902B39, 0x03902B38, 0x03902B36, 0x03902B34,
395         0x03902B33, 0x03902B32, 0x03902B30, 0x03802B44,
396         0x03802B42, 0x03802B40, 0x03802B3E, 0x03802B3D,
397         0x03802B3B, 0x03802B39, 0x03802B38, 0x03802B36,
398         0x03802B34, 0x03802B33, 0x03802B32, 0x03802B30,
399         0x03802B2F, 0x03802B2D, 0x03802B2C, 0x03802B2B,
400         0x03802B2A, 0x03802B29, 0x03802B27, 0x03802B26,
401         0x03802B25, 0x03802B24, 0x03802B23, 0x03802B22,
402         0x03802B21, 0x03802B20, 0x03802B1F, 0x03802B1E,
403         0x03802B1E, 0x03802B1D, 0x03802B1C, 0x03802B1B,
404         0x03802B1A, 0x03802B1A, 0x03802B19, 0x03802B18,
405         0x03802B18, 0x03802B18, 0x03802B18, 0x03802B18,
406         0x03802B18, 0x03802B18, 0x03802B18, 0x03802B18,
407         0x03802B18, 0x03802B18, 0x03802B18, 0x00002B00,
408 };
409
410 static const u32 b43_ntab_intlevel[] = {
411         0x00802070, 0x0671188D, 0x0A60192C, 0x0A300E46,
412         0x00C1188D, 0x080024D2, 0x00000070,
413 };
414
415 static const u32 b43_ntab_iqlt0[] = {
416         0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F,
417         0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F,
418         0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F,
419         0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F,
420         0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F,
421         0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F,
422         0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F,
423         0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F,
424         0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F,
425         0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F,
426         0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F,
427         0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F,
428         0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F,
429         0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F,
430         0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F,
431         0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F,
432         0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F,
433         0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F,
434         0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F,
435         0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F,
436         0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F,
437         0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F,
438         0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F,
439         0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F,
440         0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F,
441         0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F,
442         0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F,
443         0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F,
444         0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F,
445         0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F,
446         0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F,
447         0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F,
448 };
449
450 static const u32 b43_ntab_iqlt1[] = {
451         0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F,
452         0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F,
453         0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F,
454         0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F,
455         0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F,
456         0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F,
457         0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F,
458         0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F,
459         0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F,
460         0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F,
461         0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F,
462         0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F,
463         0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F,
464         0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F,
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 };
484
485 static const u16 b43_ntab_loftlt0[] = {
486         0x0000, 0x0101, 0x0002, 0x0103, 0x0000, 0x0101,
487         0x0002, 0x0103, 0x0000, 0x0101, 0x0002, 0x0103,
488         0x0000, 0x0101, 0x0002, 0x0103, 0x0000, 0x0101,
489         0x0002, 0x0103, 0x0000, 0x0101, 0x0002, 0x0103,
490         0x0000, 0x0101, 0x0002, 0x0103, 0x0000, 0x0101,
491         0x0002, 0x0103, 0x0000, 0x0101, 0x0002, 0x0103,
492         0x0000, 0x0101, 0x0002, 0x0103, 0x0000, 0x0101,
493         0x0002, 0x0103, 0x0000, 0x0101, 0x0002, 0x0103,
494         0x0000, 0x0101, 0x0002, 0x0103, 0x0000, 0x0101,
495         0x0002, 0x0103, 0x0000, 0x0101, 0x0002, 0x0103,
496         0x0000, 0x0101, 0x0002, 0x0103, 0x0000, 0x0101,
497         0x0002, 0x0103, 0x0000, 0x0101, 0x0002, 0x0103,
498         0x0000, 0x0101, 0x0002, 0x0103, 0x0000, 0x0101,
499         0x0002, 0x0103, 0x0000, 0x0101, 0x0002, 0x0103,
500         0x0000, 0x0101, 0x0002, 0x0103, 0x0000, 0x0101,
501         0x0002, 0x0103, 0x0000, 0x0101, 0x0002, 0x0103,
502         0x0000, 0x0101, 0x0002, 0x0103, 0x0000, 0x0101,
503         0x0002, 0x0103, 0x0000, 0x0101, 0x0002, 0x0103,
504         0x0000, 0x0101, 0x0002, 0x0103, 0x0000, 0x0101,
505         0x0002, 0x0103, 0x0000, 0x0101, 0x0002, 0x0103,
506         0x0000, 0x0101, 0x0002, 0x0103, 0x0000, 0x0101,
507         0x0002, 0x0103,
508 };
509
510 static const u16 b43_ntab_loftlt1[] = {
511         0x0000, 0x0101, 0x0002, 0x0103, 0x0000, 0x0101,
512         0x0002, 0x0103, 0x0000, 0x0101, 0x0002, 0x0103,
513         0x0000, 0x0101, 0x0002, 0x0103, 0x0000, 0x0101,
514         0x0002, 0x0103, 0x0000, 0x0101, 0x0002, 0x0103,
515         0x0000, 0x0101, 0x0002, 0x0103, 0x0000, 0x0101,
516         0x0002, 0x0103, 0x0000, 0x0101, 0x0002, 0x0103,
517         0x0000, 0x0101, 0x0002, 0x0103, 0x0000, 0x0101,
518         0x0002, 0x0103, 0x0000, 0x0101, 0x0002, 0x0103,
519         0x0000, 0x0101, 0x0002, 0x0103, 0x0000, 0x0101,
520         0x0002, 0x0103, 0x0000, 0x0101, 0x0002, 0x0103,
521         0x0000, 0x0101, 0x0002, 0x0103, 0x0000, 0x0101,
522         0x0002, 0x0103, 0x0000, 0x0101, 0x0002, 0x0103,
523         0x0000, 0x0101, 0x0002, 0x0103, 0x0000, 0x0101,
524         0x0002, 0x0103, 0x0000, 0x0101, 0x0002, 0x0103,
525         0x0000, 0x0101, 0x0002, 0x0103, 0x0000, 0x0101,
526         0x0002, 0x0103, 0x0000, 0x0101, 0x0002, 0x0103,
527         0x0000, 0x0101, 0x0002, 0x0103, 0x0000, 0x0101,
528         0x0002, 0x0103, 0x0000, 0x0101, 0x0002, 0x0103,
529         0x0000, 0x0101, 0x0002, 0x0103, 0x0000, 0x0101,
530         0x0002, 0x0103, 0x0000, 0x0101, 0x0002, 0x0103,
531         0x0000, 0x0101, 0x0002, 0x0103, 0x0000, 0x0101,
532         0x0002, 0x0103,
533 };
534
535 static const u8 b43_ntab_mcs[] = {
536         0x00, 0x08, 0x0A, 0x10, 0x12, 0x19, 0x1A, 0x1C,
537         0x40, 0x48, 0x4A, 0x50, 0x52, 0x59, 0x5A, 0x5C,
538         0x80, 0x88, 0x8A, 0x90, 0x92, 0x99, 0x9A, 0x9C,
539         0xC0, 0xC8, 0xCA, 0xD0, 0xD2, 0xD9, 0xDA, 0xDC,
540         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
541         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
542         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
543         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
544         0x00, 0x01, 0x02, 0x04, 0x08, 0x09, 0x0A, 0x0C,
545         0x10, 0x11, 0x12, 0x14, 0x18, 0x19, 0x1A, 0x1C,
546         0x20, 0x21, 0x22, 0x24, 0x40, 0x41, 0x42, 0x44,
547         0x48, 0x49, 0x4A, 0x4C, 0x50, 0x51, 0x52, 0x54,
548         0x58, 0x59, 0x5A, 0x5C, 0x60, 0x61, 0x62, 0x64,
549         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
550         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
551         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
552 };
553
554 static const u32 b43_ntab_noisevar10[] = {
555         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
556         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
557         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
558         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
559         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
560         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
561         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
562         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
563         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
564         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
565         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
566         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
567         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
568         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
569         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
570         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
571         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
572         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
573         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
574         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
575         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
576         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
577         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
578         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
579         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
580         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
581         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
582         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
583         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
584         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
585         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
586         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
587         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
588         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
589         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
590         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
591         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
592         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
593         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
594         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
595         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
596         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
597         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
598         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
599         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
600         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
601         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
602         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
603         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
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 };
620
621 static const u32 b43_ntab_noisevar11[] = {
622         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
623         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
624         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
625         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
626         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
627         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
628         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
629         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
630         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
631         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
632         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
633         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
634         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
635         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
636         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
637         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
638         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
639         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
640         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
641         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
642         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
643         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
644         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
645         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
646         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
647         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
648         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
649         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
650         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
651         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
652         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
653         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
654         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
655         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
656         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
657         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
658         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
659         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
660         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
661         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
662         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
663         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
664         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
665         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
666         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
667         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
668         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
669         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
670         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
671         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
672         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
673         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 };
687
688 static const u16 b43_ntab_pilot[] = {
689         0xFF08, 0xFF08, 0xFF08, 0xFF08, 0xFF08, 0xFF08,
690         0xFF08, 0xFF08, 0x80D5, 0x80D5, 0x80D5, 0x80D5,
691         0x80D5, 0x80D5, 0x80D5, 0x80D5, 0xFF0A, 0xFF82,
692         0xFFA0, 0xFF28, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
693         0xFF82, 0xFFA0, 0xFF28, 0xFF0A, 0xFFFF, 0xFFFF,
694         0xFFFF, 0xFFFF, 0xF83F, 0xFA1F, 0xFA97, 0xFAB5,
695         0xF2BD, 0xF0BF, 0xFFFF, 0xFFFF, 0xF017, 0xF815,
696         0xF215, 0xF095, 0xF035, 0xF01D, 0xFFFF, 0xFFFF,
697         0xFF08, 0xFF02, 0xFF80, 0xFF20, 0xFF08, 0xFF02,
698         0xFF80, 0xFF20, 0xF01F, 0xF817, 0xFA15, 0xF295,
699         0xF0B5, 0xF03D, 0xFFFF, 0xFFFF, 0xF82A, 0xFA0A,
700         0xFA82, 0xFAA0, 0xF2A8, 0xF0AA, 0xFFFF, 0xFFFF,
701         0xF002, 0xF800, 0xF200, 0xF080, 0xF020, 0xF008,
702         0xFFFF, 0xFFFF, 0xF00A, 0xF802, 0xFA00, 0xF280,
703         0xF0A0, 0xF028, 0xFFFF, 0xFFFF,
704 };
705
706 static const u32 b43_ntab_pilotlt[] = {
707         0x76540123, 0x62407351, 0x76543201, 0x76540213,
708         0x76540123, 0x76430521,
709 };
710
711 static const u32 b43_ntab_tdi20a0[] = {
712         0x00091226, 0x000A1429, 0x000B56AD, 0x000C58B0,
713         0x000D5AB3, 0x000E9CB6, 0x000F9EBA, 0x0000C13D,
714         0x00020301, 0x00030504, 0x00040708, 0x0005090B,
715         0x00064B8E, 0x00095291, 0x000A5494, 0x000B9718,
716         0x000C9927, 0x000D9B2A, 0x000EDD2E, 0x000FDF31,
717         0x000101B4, 0x000243B7, 0x000345BB, 0x000447BE,
718         0x00058982, 0x00068C05, 0x00099309, 0x000A950C,
719         0x000BD78F, 0x000CD992, 0x000DDB96, 0x000F1D99,
720         0x00005FA8, 0x0001422C, 0x0002842F, 0x00038632,
721         0x00048835, 0x0005CA38, 0x0006CCBC, 0x0009D3BF,
722         0x000B1603, 0x000C1806, 0x000D1A0A, 0x000E1C0D,
723         0x000F5E10, 0x00008093, 0x00018297, 0x0002C49A,
724         0x0003C680, 0x0004C880, 0x00060B00, 0x00070D00,
725         0x00000000, 0x00000000, 0x00000000,
726 };
727
728 static const u32 b43_ntab_tdi20a1[] = {
729         0x00014B26, 0x00028D29, 0x000393AD, 0x00049630,
730         0x0005D833, 0x0006DA36, 0x00099C3A, 0x000A9E3D,
731         0x000BC081, 0x000CC284, 0x000DC488, 0x000F068B,
732         0x0000488E, 0x00018B91, 0x0002D214, 0x0003D418,
733         0x0004D6A7, 0x000618AA, 0x00071AAE, 0x0009DCB1,
734         0x000B1EB4, 0x000C0137, 0x000D033B, 0x000E053E,
735         0x000F4702, 0x00008905, 0x00020C09, 0x0003128C,
736         0x0004148F, 0x00051712, 0x00065916, 0x00091B19,
737         0x000A1D28, 0x000B5F2C, 0x000C41AF, 0x000D43B2,
738         0x000E85B5, 0x000F87B8, 0x0000C9BC, 0x00024CBF,
739         0x00035303, 0x00045506, 0x0005978A, 0x0006998D,
740         0x00095B90, 0x000A5D93, 0x000B9F97, 0x000C821A,
741         0x000D8400, 0x000EC600, 0x000FC800, 0x00010A00,
742         0x00000000, 0x00000000, 0x00000000,
743 };
744
745 static const u32 b43_ntab_tdi40a0[] = {
746         0x0011A346, 0x00136CCF, 0x0014F5D9, 0x001641E2,
747         0x0017CB6B, 0x00195475, 0x001B2383, 0x001CAD0C,
748         0x001E7616, 0x0000821F, 0x00020BA8, 0x0003D4B2,
749         0x00056447, 0x00072DD0, 0x0008B6DA, 0x000A02E3,
750         0x000B8C6C, 0x000D15F6, 0x0011E484, 0x0013AE0D,
751         0x00153717, 0x00168320, 0x00180CA9, 0x00199633,
752         0x001B6548, 0x001CEED1, 0x001EB7DB, 0x0000C3E4,
753         0x00024D6D, 0x000416F7, 0x0005A585, 0x00076F0F,
754         0x0008F818, 0x000A4421, 0x000BCDAB, 0x000D9734,
755         0x00122649, 0x0013EFD2, 0x001578DC, 0x0016C4E5,
756         0x00184E6E, 0x001A17F8, 0x001BA686, 0x001D3010,
757         0x001EF999, 0x00010522, 0x00028EAC, 0x00045835,
758         0x0005E74A, 0x0007B0D3, 0x00093A5D, 0x000A85E6,
759         0x000C0F6F, 0x000DD8F9, 0x00126787, 0x00143111,
760         0x0015BA9A, 0x00170623, 0x00188FAD, 0x001A5936,
761         0x001BE84B, 0x001DB1D4, 0x001F3B5E, 0x000146E7,
762         0x00031070, 0x000499FA, 0x00062888, 0x0007F212,
763         0x00097B9B, 0x000AC7A4, 0x000C50AE, 0x000E1A37,
764         0x0012A94C, 0x001472D5, 0x0015FC5F, 0x00174868,
765         0x0018D171, 0x001A9AFB, 0x001C2989, 0x001DF313,
766         0x001F7C9C, 0x000188A5, 0x000351AF, 0x0004DB38,
767         0x0006AA4D, 0x000833D7, 0x0009BD60, 0x000B0969,
768         0x000C9273, 0x000E5BFC, 0x00132A8A, 0x0014B414,
769         0x00163D9D, 0x001789A6, 0x001912B0, 0x001ADC39,
770         0x001C6BCE, 0x001E34D8, 0x001FBE61, 0x0001CA6A,
771         0x00039374, 0x00051CFD, 0x0006EC0B, 0x00087515,
772         0x0009FE9E, 0x000B4AA7, 0x000CD3B1, 0x000E9D3A,
773         0x00000000, 0x00000000,
774 };
775
776 static const u32 b43_ntab_tdi40a1[] = {
777         0x001EDB36, 0x000129CA, 0x0002B353, 0x00047CDD,
778         0x0005C8E6, 0x000791EF, 0x00091BF9, 0x000AAA07,
779         0x000C3391, 0x000DFD1A, 0x00120923, 0x0013D22D,
780         0x00155C37, 0x0016EACB, 0x00187454, 0x001A3DDE,
781         0x001B89E7, 0x001D12F0, 0x001F1CFA, 0x00016B88,
782         0x00033492, 0x0004BE1B, 0x00060A24, 0x0007D32E,
783         0x00095D38, 0x000AEC4C, 0x000C7555, 0x000E3EDF,
784         0x00124AE8, 0x001413F1, 0x0015A37B, 0x00172C89,
785         0x0018B593, 0x001A419C, 0x001BCB25, 0x001D942F,
786         0x001F63B9, 0x0001AD4D, 0x00037657, 0x0004C260,
787         0x00068BE9, 0x000814F3, 0x0009A47C, 0x000B2D8A,
788         0x000CB694, 0x000E429D, 0x00128C26, 0x001455B0,
789         0x0015E4BA, 0x00176E4E, 0x0018F758, 0x001A8361,
790         0x001C0CEA, 0x001DD674, 0x001FA57D, 0x0001EE8B,
791         0x0003B795, 0x0005039E, 0x0006CD27, 0x000856B1,
792         0x0009E5C6, 0x000B6F4F, 0x000CF859, 0x000E8462,
793         0x00130DEB, 0x00149775, 0x00162603, 0x0017AF8C,
794         0x00193896, 0x001AC49F, 0x001C4E28, 0x001E17B2,
795         0x0000A6C7, 0x00023050, 0x0003F9DA, 0x00054563,
796         0x00070EEC, 0x00089876, 0x000A2704, 0x000BB08D,
797         0x000D3A17, 0x001185A0, 0x00134F29, 0x0014D8B3,
798         0x001667C8, 0x0017F151, 0x00197ADB, 0x001B0664,
799         0x001C8FED, 0x001E5977, 0x0000E805, 0x0002718F,
800         0x00043B18, 0x000586A1, 0x0007502B, 0x0008D9B4,
801         0x000A68C9, 0x000BF252, 0x000DBBDC, 0x0011C7E5,
802         0x001390EE, 0x00151A78, 0x0016A906, 0x00183290,
803         0x0019BC19, 0x001B4822, 0x001CD12C, 0x001E9AB5,
804         0x00000000, 0x00000000,
805 };
806
807 static const u32 b43_ntab_tdtrn[] = {
808         0x061C061C, 0x0050EE68, 0xF592FE36, 0xFE5212F6,
809         0x00000C38, 0xFE5212F6, 0xF592FE36, 0x0050EE68,
810         0x061C061C, 0xEE680050, 0xFE36F592, 0x12F6FE52,
811         0x0C380000, 0x12F6FE52, 0xFE36F592, 0xEE680050,
812         0x061C061C, 0x0050EE68, 0xF592FE36, 0xFE5212F6,
813         0x00000C38, 0xFE5212F6, 0xF592FE36, 0x0050EE68,
814         0x061C061C, 0xEE680050, 0xFE36F592, 0x12F6FE52,
815         0x0C380000, 0x12F6FE52, 0xFE36F592, 0xEE680050,
816         0x05E305E3, 0x004DEF0C, 0xF5F3FE47, 0xFE611246,
817         0x00000BC7, 0xFE611246, 0xF5F3FE47, 0x004DEF0C,
818         0x05E305E3, 0xEF0C004D, 0xFE47F5F3, 0x1246FE61,
819         0x0BC70000, 0x1246FE61, 0xFE47F5F3, 0xEF0C004D,
820         0x05E305E3, 0x004DEF0C, 0xF5F3FE47, 0xFE611246,
821         0x00000BC7, 0xFE611246, 0xF5F3FE47, 0x004DEF0C,
822         0x05E305E3, 0xEF0C004D, 0xFE47F5F3, 0x1246FE61,
823         0x0BC70000, 0x1246FE61, 0xFE47F5F3, 0xEF0C004D,
824         0xFA58FA58, 0xF895043B, 0xFF4C09C0, 0xFBC6FFA8,
825         0xFB84F384, 0x0798F6F9, 0x05760122, 0x058409F6,
826         0x0B500000, 0x05B7F542, 0x08860432, 0x06DDFEE7,
827         0xFB84F384, 0xF9D90664, 0xF7E8025C, 0x00FFF7BD,
828         0x05A805A8, 0xF7BD00FF, 0x025CF7E8, 0x0664F9D9,
829         0xF384FB84, 0xFEE706DD, 0x04320886, 0xF54205B7,
830         0x00000B50, 0x09F60584, 0x01220576, 0xF6F90798,
831         0xF384FB84, 0xFFA8FBC6, 0x09C0FF4C, 0x043BF895,
832         0x02D402D4, 0x07DE0270, 0xFC96079C, 0xF90AFE94,
833         0xFE00FF2C, 0x02D4065D, 0x092A0096, 0x0014FBB8,
834         0xFD2CFD2C, 0x076AFB3C, 0x0096F752, 0xF991FD87,
835         0xFB2C0200, 0xFEB8F960, 0x08E0FC96, 0x049802A8,
836         0xFD2CFD2C, 0x02A80498, 0xFC9608E0, 0xF960FEB8,
837         0x0200FB2C, 0xFD87F991, 0xF7520096, 0xFB3C076A,
838         0xFD2CFD2C, 0xFBB80014, 0x0096092A, 0x065D02D4,
839         0xFF2CFE00, 0xFE94F90A, 0x079CFC96, 0x027007DE,
840         0x02D402D4, 0x027007DE, 0x079CFC96, 0xFE94F90A,
841         0xFF2CFE00, 0x065D02D4, 0x0096092A, 0xFBB80014,
842         0xFD2CFD2C, 0xFB3C076A, 0xF7520096, 0xFD87F991,
843         0x0200FB2C, 0xF960FEB8, 0xFC9608E0, 0x02A80498,
844         0xFD2CFD2C, 0x049802A8, 0x08E0FC96, 0xFEB8F960,
845         0xFB2C0200, 0xF991FD87, 0x0096F752, 0x076AFB3C,
846         0xFD2CFD2C, 0x0014FBB8, 0x092A0096, 0x02D4065D,
847         0xFE00FF2C, 0xF90AFE94, 0xFC96079C, 0x07DE0270,
848         0x00000000, 0x00000000, 0x00000000, 0x00000000,
849         0x00000000, 0x00000000, 0x00000000, 0x00000000,
850         0x00000000, 0x00000000, 0x00000000, 0x00000000,
851         0x00000000, 0x00000000, 0x00000000, 0x00000000,
852         0x00000000, 0x00000000, 0x00000000, 0x00000000,
853         0x00000000, 0x00000000, 0x00000000, 0x00000000,
854         0x00000000, 0x00000000, 0x00000000, 0x00000000,
855         0x00000000, 0x00000000, 0x00000000, 0x00000000,
856         0x00000000, 0x00000000, 0x00000000, 0x00000000,
857         0x00000000, 0x00000000, 0x00000000, 0x00000000,
858         0x00000000, 0x00000000, 0x00000000, 0x00000000,
859         0x00000000, 0x00000000, 0x00000000, 0x00000000,
860         0x00000000, 0x00000000, 0x00000000, 0x00000000,
861         0x00000000, 0x00000000, 0x00000000, 0x00000000,
862         0x00000000, 0x00000000, 0x00000000, 0x00000000,
863         0x00000000, 0x00000000, 0x00000000, 0x00000000,
864         0x00000000, 0x00000000, 0x00000000, 0x00000000,
865         0x00000000, 0x00000000, 0x00000000, 0x00000000,
866         0x00000000, 0x00000000, 0x00000000, 0x00000000,
867         0x00000000, 0x00000000, 0x00000000, 0x00000000,
868         0x00000000, 0x00000000, 0x00000000, 0x00000000,
869         0x00000000, 0x00000000, 0x00000000, 0x00000000,
870         0x00000000, 0x00000000, 0x00000000, 0x00000000,
871         0x00000000, 0x00000000, 0x00000000, 0x00000000,
872         0x062A0000, 0xFEFA0759, 0x08B80908, 0xF396FC2D,
873         0xF9D6045C, 0xFC4EF608, 0xF748F596, 0x07B207BF,
874         0x062A062A, 0xF84EF841, 0xF748F596, 0x03B209F8,
875         0xF9D6045C, 0x0C6A03D3, 0x08B80908, 0x0106F8A7,
876         0x062A0000, 0xFEFAF8A7, 0x08B8F6F8, 0xF39603D3,
877         0xF9D6FBA4, 0xFC4E09F8, 0xF7480A6A, 0x07B2F841,
878         0x062AF9D6, 0xF84E07BF, 0xF7480A6A, 0x03B2F608,
879         0xF9D6FBA4, 0x0C6AFC2D, 0x08B8F6F8, 0x01060759,
880         0x062A0000, 0xFEFA0759, 0x08B80908, 0xF396FC2D,
881         0xF9D6045C, 0xFC4EF608, 0xF748F596, 0x07B207BF,
882         0x062A062A, 0xF84EF841, 0xF748F596, 0x03B209F8,
883         0xF9D6045C, 0x0C6A03D3, 0x08B80908, 0x0106F8A7,
884         0x062A0000, 0xFEFAF8A7, 0x08B8F6F8, 0xF39603D3,
885         0xF9D6FBA4, 0xFC4E09F8, 0xF7480A6A, 0x07B2F841,
886         0x062AF9D6, 0xF84E07BF, 0xF7480A6A, 0x03B2F608,
887         0xF9D6FBA4, 0x0C6AFC2D, 0x08B8F6F8, 0x01060759,
888         0x061C061C, 0xFF30009D, 0xFFB21141, 0xFD87FB54,
889         0xF65DFE59, 0x02EEF99E, 0x0166F03C, 0xFFF809B6,
890         0x000008A4, 0x000AF42B, 0x00EFF577, 0xFA840BF2,
891         0xFC02FF51, 0x08260F67, 0xFFF0036F, 0x0842F9C3,
892         0x00000000, 0x063DF7BE, 0xFC910010, 0xF099F7DA,
893         0x00AF03FE, 0xF40E057C, 0x0A89FF11, 0x0BD5FFF6,
894         0xF75C0000, 0xF64A0008, 0x0FC4FE9A, 0x0662FD12,
895         0x01A709A3, 0x04AC0279, 0xEEBF004E, 0xFF6300D0,
896         0xF9E4F9E4, 0x00D0FF63, 0x004EEEBF, 0x027904AC,
897         0x09A301A7, 0xFD120662, 0xFE9A0FC4, 0x0008F64A,
898         0x0000F75C, 0xFFF60BD5, 0xFF110A89, 0x057CF40E,
899         0x03FE00AF, 0xF7DAF099, 0x0010FC91, 0xF7BE063D,
900         0x00000000, 0xF9C30842, 0x036FFFF0, 0x0F670826,
901         0xFF51FC02, 0x0BF2FA84, 0xF57700EF, 0xF42B000A,
902         0x08A40000, 0x09B6FFF8, 0xF03C0166, 0xF99E02EE,
903         0xFE59F65D, 0xFB54FD87, 0x1141FFB2, 0x009DFF30,
904         0x05E30000, 0xFF060705, 0x085408A0, 0xF425FC59,
905         0xFA1D042A, 0xFC78F67A, 0xF7ACF60E, 0x075A0766,
906         0x05E305E3, 0xF8A6F89A, 0xF7ACF60E, 0x03880986,
907         0xFA1D042A, 0x0BDB03A7, 0x085408A0, 0x00FAF8FB,
908         0x05E30000, 0xFF06F8FB, 0x0854F760, 0xF42503A7,
909         0xFA1DFBD6, 0xFC780986, 0xF7AC09F2, 0x075AF89A,
910         0x05E3FA1D, 0xF8A60766, 0xF7AC09F2, 0x0388F67A,
911         0xFA1DFBD6, 0x0BDBFC59, 0x0854F760, 0x00FA0705,
912         0x05E30000, 0xFF060705, 0x085408A0, 0xF425FC59,
913         0xFA1D042A, 0xFC78F67A, 0xF7ACF60E, 0x075A0766,
914         0x05E305E3, 0xF8A6F89A, 0xF7ACF60E, 0x03880986,
915         0xFA1D042A, 0x0BDB03A7, 0x085408A0, 0x00FAF8FB,
916         0x05E30000, 0xFF06F8FB, 0x0854F760, 0xF42503A7,
917         0xFA1DFBD6, 0xFC780986, 0xF7AC09F2, 0x075AF89A,
918         0x05E3FA1D, 0xF8A60766, 0xF7AC09F2, 0x0388F67A,
919         0xFA1DFBD6, 0x0BDBFC59, 0x0854F760, 0x00FA0705,
920         0xFA58FA58, 0xF8F0FE00, 0x0448073D, 0xFDC9FE46,
921         0xF9910258, 0x089D0407, 0xFD5CF71A, 0x02AFFDE0,
922         0x083E0496, 0xFF5A0740, 0xFF7AFD97, 0x00FE01F1,
923         0x0009082E, 0xFA94FF75, 0xFECDF8EA, 0xFFB0F693,
924         0xFD2CFA58, 0x0433FF16, 0xFBA405DD, 0xFA610341,
925         0x06A606CB, 0x0039FD2D, 0x0677FA97, 0x01FA05E0,
926         0xF896003E, 0x075A068B, 0x012CFC3E, 0xFA23F98D,
927         0xFC7CFD43, 0xFF90FC0D, 0x01C10982, 0x00C601D6,
928         0xFD2CFD2C, 0x01D600C6, 0x098201C1, 0xFC0DFF90,
929         0xFD43FC7C, 0xF98DFA23, 0xFC3E012C, 0x068B075A,
930         0x003EF896, 0x05E001FA, 0xFA970677, 0xFD2D0039,
931         0x06CB06A6, 0x0341FA61, 0x05DDFBA4, 0xFF160433,
932         0xFA58FD2C, 0xF693FFB0, 0xF8EAFECD, 0xFF75FA94,
933         0x082E0009, 0x01F100FE, 0xFD97FF7A, 0x0740FF5A,
934         0x0496083E, 0xFDE002AF, 0xF71AFD5C, 0x0407089D,
935         0x0258F991, 0xFE46FDC9, 0x073D0448, 0xFE00F8F0,
936         0xFD2CFD2C, 0xFCE00500, 0xFC09FDDC, 0xFE680157,
937         0x04C70571, 0xFC3AFF21, 0xFCD70228, 0x056D0277,
938         0x0200FE00, 0x0022F927, 0xFE3C032B, 0xFC44FF3C,
939         0x03E9FBDB, 0x04570313, 0x04C9FF5C, 0x000D03B8,
940         0xFA580000, 0xFBE900D2, 0xF9D0FE0B, 0x0125FDF9,
941         0x042501BF, 0x0328FA2B, 0xFFA902F0, 0xFA250157,
942         0x0200FE00, 0x03740438, 0xFF0405FD, 0x030CFE52,
943         0x0037FB39, 0xFF6904C5, 0x04F8FD23, 0xFD31FC1B,
944         0xFD2CFD2C, 0xFC1BFD31, 0xFD2304F8, 0x04C5FF69,
945         0xFB390037, 0xFE52030C, 0x05FDFF04, 0x04380374,
946         0xFE000200, 0x0157FA25, 0x02F0FFA9, 0xFA2B0328,
947         0x01BF0425, 0xFDF90125, 0xFE0BF9D0, 0x00D2FBE9,
948         0x0000FA58, 0x03B8000D, 0xFF5C04C9, 0x03130457,
949         0xFBDB03E9, 0xFF3CFC44, 0x032BFE3C, 0xF9270022,
950         0xFE000200, 0x0277056D, 0x0228FCD7, 0xFF21FC3A,
951         0x057104C7, 0x0157FE68, 0xFDDCFC09, 0x0500FCE0,
952         0xFD2CFD2C, 0x0500FCE0, 0xFDDCFC09, 0x0157FE68,
953         0x057104C7, 0xFF21FC3A, 0x0228FCD7, 0x0277056D,
954         0xFE000200, 0xF9270022, 0x032BFE3C, 0xFF3CFC44,
955         0xFBDB03E9, 0x03130457, 0xFF5C04C9, 0x03B8000D,
956         0x0000FA58, 0x00D2FBE9, 0xFE0BF9D0, 0xFDF90125,
957         0x01BF0425, 0xFA2B0328, 0x02F0FFA9, 0x0157FA25,
958         0xFE000200, 0x04380374, 0x05FDFF04, 0xFE52030C,
959         0xFB390037, 0x04C5FF69, 0xFD2304F8, 0xFC1BFD31,
960         0xFD2CFD2C, 0xFD31FC1B, 0x04F8FD23, 0xFF6904C5,
961         0x0037FB39, 0x030CFE52, 0xFF0405FD, 0x03740438,
962         0x0200FE00, 0xFA250157, 0xFFA902F0, 0x0328FA2B,
963         0x042501BF, 0x0125FDF9, 0xF9D0FE0B, 0xFBE900D2,
964         0xFA580000, 0x000D03B8, 0x04C9FF5C, 0x04570313,
965         0x03E9FBDB, 0xFC44FF3C, 0xFE3C032B, 0x0022F927,
966         0x0200FE00, 0x056D0277, 0xFCD70228, 0xFC3AFF21,
967         0x04C70571, 0xFE680157, 0xFC09FDDC, 0xFCE00500,
968         0x05A80000, 0xFF1006BE, 0x0800084A, 0xF49CFC7E,
969         0xFA580400, 0xFC9CF6DA, 0xF800F672, 0x0710071C,
970         0x05A805A8, 0xF8F0F8E4, 0xF800F672, 0x03640926,
971         0xFA580400, 0x0B640382, 0x0800084A, 0x00F0F942,
972         0x05A80000, 0xFF10F942, 0x0800F7B6, 0xF49C0382,
973         0xFA58FC00, 0xFC9C0926, 0xF800098E, 0x0710F8E4,
974         0x05A8FA58, 0xF8F0071C, 0xF800098E, 0x0364F6DA,
975         0xFA58FC00, 0x0B64FC7E, 0x0800F7B6, 0x00F006BE,
976         0x05A80000, 0xFF1006BE, 0x0800084A, 0xF49CFC7E,
977         0xFA580400, 0xFC9CF6DA, 0xF800F672, 0x0710071C,
978         0x05A805A8, 0xF8F0F8E4, 0xF800F672, 0x03640926,
979         0xFA580400, 0x0B640382, 0x0800084A, 0x00F0F942,
980         0x05A80000, 0xFF10F942, 0x0800F7B6, 0xF49C0382,
981         0xFA58FC00, 0xFC9C0926, 0xF800098E, 0x0710F8E4,
982         0x05A8FA58, 0xF8F0071C, 0xF800098E, 0x0364F6DA,
983         0xFA58FC00, 0x0B64FC7E, 0x0800F7B6, 0x00F006BE,
984 };
985
986 static const u32 b43_ntab_tmap[] = {
987         0x8A88AA80, 0x8AAAAA8A, 0x8A8A8AA8, 0x00000888,
988         0x88000000, 0x8A8A88AA, 0x8AA88888, 0x8888A8A8,
989         0xF1111110, 0x11111111, 0x11F11111, 0x00000111,
990         0x11000000, 0x1111F111, 0x11111111, 0x111111F1,
991         0x8A88AA80, 0x8AAAAA8A, 0x8A8A8AA8, 0x000AA888,
992         0x88880000, 0x8A8A88AA, 0x8AA88888, 0x8888A8A8,
993         0xA1111110, 0x11111111, 0x11C11111, 0x00000111,
994         0x11000000, 0x1111A111, 0x11111111, 0x111111A1,
995         0xA2222220, 0x22222222, 0x22C22222, 0x00000222,
996         0x22000000, 0x2222A222, 0x22222222, 0x222222A2,
997         0xF1111110, 0x11111111, 0x11F11111, 0x00011111,
998         0x11110000, 0x1111F111, 0x11111111, 0x111111F1,
999         0xA8AA88A0, 0xA88888A8, 0xA8A8A88A, 0x00088AAA,
1000         0xAAAA0000, 0xA8A8AA88, 0xA88AAAAA, 0xAAAA8A8A,
1001         0xAAA8AAA0, 0x8AAA8AAA, 0xAA8A8A8A, 0x000AAA88,
1002         0x8AAA0000, 0xAAA8A888, 0x8AA88A8A, 0x8A88A888,
1003         0x08080A00, 0x0A08080A, 0x080A0A08, 0x00080808,
1004         0x080A0000, 0x080A0808, 0x080A0808, 0x0A0A0A08,
1005         0xA0A0A0A0, 0x80A0A080, 0x8080A0A0, 0x00008080,
1006         0x80A00000, 0x80A080A0, 0xA080A0A0, 0x8080A0A0,
1007         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1008         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1009         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1010         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1011         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1012         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1013         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1014         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1015         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1016         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1017         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1018         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1019         0x99999000, 0x9B9B99BB, 0x9BB99999, 0x9999B9B9,
1020         0x9B99BB90, 0x9BBBBB9B, 0x9B9B9BB9, 0x00000999,
1021         0x88000000, 0x8A8A88AA, 0x8AA88888, 0x8888A8A8,
1022         0x8A88AA80, 0x8AAAAA8A, 0x8A8A8AA8, 0x00AAA888,
1023         0x22000000, 0x2222B222, 0x22222222, 0x222222B2,
1024         0xB2222220, 0x22222222, 0x22D22222, 0x00000222,
1025         0x11000000, 0x1111A111, 0x11111111, 0x111111A1,
1026         0xA1111110, 0x11111111, 0x11C11111, 0x00000111,
1027         0x33000000, 0x3333B333, 0x33333333, 0x333333B3,
1028         0xB3333330, 0x33333333, 0x33D33333, 0x00000333,
1029         0x22000000, 0x2222A222, 0x22222222, 0x222222A2,
1030         0xA2222220, 0x22222222, 0x22C22222, 0x00000222,
1031         0x99B99B00, 0x9B9B99BB, 0x9BB99999, 0x9999B9B9,
1032         0x9B99BB99, 0x9BBBBB9B, 0x9B9B9BB9, 0x00000999,
1033         0x88000000, 0x8A8A88AA, 0x8AA88888, 0x8888A8A8,
1034         0x8A88AA88, 0x8AAAAA8A, 0x8A8A8AA8, 0x08AAA888,
1035         0x22222200, 0x2222F222, 0x22222222, 0x222222F2,
1036         0x22222222, 0x22222222, 0x22F22222, 0x00000222,
1037         0x11000000, 0x1111F111, 0x11111111, 0x11111111,
1038         0xF1111111, 0x11111111, 0x11F11111, 0x01111111,
1039         0xBB9BB900, 0xB9B9BB99, 0xB99BBBBB, 0xBBBB9B9B,
1040         0xB9BB99BB, 0xB99999B9, 0xB9B9B99B, 0x00000BBB,
1041         0xAA000000, 0xA8A8AA88, 0xA88AAAAA, 0xAAAA8A8A,
1042         0xA8AA88AA, 0xA88888A8, 0xA8A8A88A, 0x0A888AAA,
1043         0xAA000000, 0xA8A8AA88, 0xA88AAAAA, 0xAAAA8A8A,
1044         0xA8AA88A0, 0xA88888A8, 0xA8A8A88A, 0x00000AAA,
1045         0x88000000, 0x8A8A88AA, 0x8AA88888, 0x8888A8A8,
1046         0x8A88AA80, 0x8AAAAA8A, 0x8A8A8AA8, 0x00000888,
1047         0xBBBBBB00, 0x999BBBBB, 0x9BB99B9B, 0xB9B9B9BB,
1048         0xB9B99BBB, 0xB9B9B9BB, 0xB9BB9B99, 0x00000999,
1049         0x8A000000, 0xAA88A888, 0xA88888AA, 0xA88A8A88,
1050         0xA88AA88A, 0x88A8AAAA, 0xA8AA8AAA, 0x0888A88A,
1051         0x0B0B0B00, 0x090B0B0B, 0x0B090B0B, 0x0909090B,
1052         0x09090B0B, 0x09090B0B, 0x09090B09, 0x00000909,
1053         0x0A000000, 0x0A080808, 0x080A080A, 0x080A0A08,
1054         0x080A080A, 0x0808080A, 0x0A0A0A08, 0x0808080A,
1055         0xB0B0B000, 0x9090B0B0, 0x90B09090, 0xB0B0B090,
1056         0xB0B090B0, 0x90B0B0B0, 0xB0B09090, 0x00000090,
1057         0x80000000, 0xA080A080, 0xA08080A0, 0xA0808080,
1058         0xA080A080, 0x80A0A0A0, 0xA0A080A0, 0x00A0A0A0,
1059         0x22000000, 0x2222F222, 0x22222222, 0x222222F2,
1060         0xF2222220, 0x22222222, 0x22F22222, 0x00000222,
1061         0x11000000, 0x1111F111, 0x11111111, 0x111111F1,
1062         0xF1111110, 0x11111111, 0x11F11111, 0x00000111,
1063         0x33000000, 0x3333F333, 0x33333333, 0x333333F3,
1064         0xF3333330, 0x33333333, 0x33F33333, 0x00000333,
1065         0x22000000, 0x2222F222, 0x22222222, 0x222222F2,
1066         0xF2222220, 0x22222222, 0x22F22222, 0x00000222,
1067         0x99000000, 0x9B9B99BB, 0x9BB99999, 0x9999B9B9,
1068         0x9B99BB90, 0x9BBBBB9B, 0x9B9B9BB9, 0x00000999,
1069         0x88000000, 0x8A8A88AA, 0x8AA88888, 0x8888A8A8,
1070         0x8A88AA80, 0x8AAAAA8A, 0x8A8A8AA8, 0x00000888,
1071         0x88888000, 0x8A8A88AA, 0x8AA88888, 0x8888A8A8,
1072         0x8A88AA80, 0x8AAAAA8A, 0x8A8A8AA8, 0x00000888,
1073         0x88000000, 0x8A8A88AA, 0x8AA88888, 0x8888A8A8,
1074         0x8A88AA80, 0x8AAAAA8A, 0x8A8A8AA8, 0x00AAA888,
1075         0x88A88A00, 0x8A8A88AA, 0x8AA88888, 0x8888A8A8,
1076         0x8A88AA88, 0x8AAAAA8A, 0x8A8A8AA8, 0x00000888,
1077         0x88000000, 0x8A8A88AA, 0x8AA88888, 0x8888A8A8,
1078         0x8A88AA88, 0x8AAAAA8A, 0x8A8A8AA8, 0x08AAA888,
1079         0x11000000, 0x1111A111, 0x11111111, 0x111111A1,
1080         0xA1111110, 0x11111111, 0x11C11111, 0x00000111,
1081         0x11000000, 0x1111A111, 0x11111111, 0x111111A1,
1082         0xA1111110, 0x11111111, 0x11C11111, 0x00000111,
1083         0x88000000, 0x8A8A88AA, 0x8AA88888, 0x8888A8A8,
1084         0x8A88AA80, 0x8AAAAA8A, 0x8A8A8AA8, 0x00000888,
1085         0x88000000, 0x8A8A88AA, 0x8AA88888, 0x8888A8A8,
1086         0x8A88AA80, 0x8AAAAA8A, 0x8A8A8AA8, 0x00000888,
1087         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1088         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1089         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1090         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1091         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1092         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1093         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1094         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1095         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1096         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1097         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1098         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1099 };
1100
1101 /* static tables, PHY revision >= 3 */
1102 static const u32 b43_ntab_framestruct_r3[] = {
1103         0x08004a04, 0x00100000, 0x01000a05, 0x00100020,
1104         0x09804506, 0x00100030, 0x09804507, 0x00100030,
1105         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1106         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1107         0x08004a0c, 0x00100004, 0x01000a0d, 0x00100024,
1108         0x0980450e, 0x00100034, 0x0980450f, 0x00100034,
1109         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1110         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1111         0x00000a04, 0x00100000, 0x11008a05, 0x00100020,
1112         0x1980c506, 0x00100030, 0x21810506, 0x00100030,
1113         0x21810506, 0x00100030, 0x01800504, 0x00100030,
1114         0x11808505, 0x00100030, 0x29814507, 0x01100030,
1115         0x00000a04, 0x00100000, 0x11008a05, 0x00100020,
1116         0x21810506, 0x00100030, 0x21810506, 0x00100030,
1117         0x29814507, 0x01100030, 0x00000000, 0x00000000,
1118         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1119         0x00000a0c, 0x00100008, 0x11008a0d, 0x00100028,
1120         0x1980c50e, 0x00100038, 0x2181050e, 0x00100038,
1121         0x2181050e, 0x00100038, 0x0180050c, 0x00100038,
1122         0x1180850d, 0x00100038, 0x2981450f, 0x01100038,
1123         0x00000a0c, 0x00100008, 0x11008a0d, 0x00100028,
1124         0x2181050e, 0x00100038, 0x2181050e, 0x00100038,
1125         0x2981450f, 0x01100038, 0x00000000, 0x00000000,
1126         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1127         0x08004a04, 0x00100000, 0x01000a05, 0x00100020,
1128         0x1980c506, 0x00100030, 0x1980c506, 0x00100030,
1129         0x11808504, 0x00100030, 0x3981ca05, 0x00100030,
1130         0x29814507, 0x01100030, 0x00000000, 0x00000000,
1131         0x10008a04, 0x00100000, 0x3981ca05, 0x00100030,
1132         0x1980c506, 0x00100030, 0x29814507, 0x01100030,
1133         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1134         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1135         0x08004a0c, 0x00100008, 0x01000a0d, 0x00100028,
1136         0x1980c50e, 0x00100038, 0x1980c50e, 0x00100038,
1137         0x1180850c, 0x00100038, 0x3981ca0d, 0x00100038,
1138         0x2981450f, 0x01100038, 0x00000000, 0x00000000,
1139         0x10008a0c, 0x00100008, 0x3981ca0d, 0x00100038,
1140         0x1980c50e, 0x00100038, 0x2981450f, 0x01100038,
1141         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1142         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1143         0x40021404, 0x00100000, 0x02001405, 0x00100040,
1144         0x0b004a06, 0x01900060, 0x13008a06, 0x01900060,
1145         0x13008a06, 0x01900060, 0x43020a04, 0x00100060,
1146         0x1b00ca05, 0x00100060, 0x23010a07, 0x01500060,
1147         0x40021404, 0x00100000, 0x1a00d405, 0x00100040,
1148         0x13008a06, 0x01900060, 0x13008a06, 0x01900060,
1149         0x23010a07, 0x01500060, 0x00000000, 0x00000000,
1150         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1151         0x4002140c, 0x00100010, 0x0200140d, 0x00100050,
1152         0x0b004a0e, 0x01900070, 0x13008a0e, 0x01900070,
1153         0x13008a0e, 0x01900070, 0x43020a0c, 0x00100070,
1154         0x1b00ca0d, 0x00100070, 0x23010a0f, 0x01500070,
1155         0x4002140c, 0x00100010, 0x1a00d40d, 0x00100050,
1156         0x13008a0e, 0x01900070, 0x13008a0e, 0x01900070,
1157         0x23010a0f, 0x01500070, 0x00000000, 0x00000000,
1158         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1159         0x50029404, 0x00100000, 0x32019405, 0x00100040,
1160         0x0b004a06, 0x01900060, 0x0b004a06, 0x01900060,
1161         0x5b02ca04, 0x00100060, 0x3b01d405, 0x00100060,
1162         0x23010a07, 0x01500060, 0x00000000, 0x00000000,
1163         0x5802d404, 0x00100000, 0x3b01d405, 0x00100060,
1164         0x0b004a06, 0x01900060, 0x23010a07, 0x01500060,
1165         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1166         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1167         0x5002940c, 0x00100010, 0x3201940d, 0x00100050,
1168         0x0b004a0e, 0x01900070, 0x0b004a0e, 0x01900070,
1169         0x5b02ca0c, 0x00100070, 0x3b01d40d, 0x00100070,
1170         0x23010a0f, 0x01500070, 0x00000000, 0x00000000,
1171         0x5802d40c, 0x00100010, 0x3b01d40d, 0x00100070,
1172         0x0b004a0e, 0x01900070, 0x23010a0f, 0x01500070,
1173         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1174         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1175         0x40021404, 0x000f4800, 0x62031405, 0x00100040,
1176         0x53028a06, 0x01900060, 0x53028a07, 0x01900060,
1177         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1178         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1179         0x4002140c, 0x000f4808, 0x6203140d, 0x00100048,
1180         0x53028a0e, 0x01900068, 0x53028a0f, 0x01900068,
1181         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1182         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1183         0x00000a0c, 0x00100004, 0x11008a0d, 0x00100024,
1184         0x1980c50e, 0x00100034, 0x2181050e, 0x00100034,
1185         0x2181050e, 0x00100034, 0x0180050c, 0x00100038,
1186         0x1180850d, 0x00100038, 0x1181850d, 0x00100038,
1187         0x2981450f, 0x01100038, 0x00000000, 0x00000000,
1188         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1189         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1190         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1191         0x00000a0c, 0x00100008, 0x11008a0d, 0x00100028,
1192         0x2181050e, 0x00100038, 0x2181050e, 0x00100038,
1193         0x1181850d, 0x00100038, 0x2981450f, 0x01100038,
1194         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1195         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1196         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1197         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1198         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1199         0x08004a04, 0x00100000, 0x01000a05, 0x00100020,
1200         0x0180c506, 0x00100030, 0x0180c506, 0x00100030,
1201         0x2180c50c, 0x00100030, 0x49820a0d, 0x0016a130,
1202         0x41824a0d, 0x0016a130, 0x2981450f, 0x01100030,
1203         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1204         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1205         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1206         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1207         0x2000ca0c, 0x00100000, 0x49820a0d, 0x0016a130,
1208         0x1980c50e, 0x00100030, 0x41824a0d, 0x0016a130,
1209         0x2981450f, 0x01100030, 0x00000000, 0x00000000,
1210         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1211         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1212         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1213         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1214         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1215         0x4002140c, 0x00100008, 0x0200140d, 0x00100048,
1216         0x0b004a0e, 0x01900068, 0x13008a0e, 0x01900068,
1217         0x13008a0e, 0x01900068, 0x43020a0c, 0x00100070,
1218         0x1b00ca0d, 0x00100070, 0x1b014a0d, 0x00100070,
1219         0x23010a0f, 0x01500070, 0x00000000, 0x00000000,
1220         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1221         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1222         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1223         0x4002140c, 0x00100010, 0x1a00d40d, 0x00100050,
1224         0x13008a0e, 0x01900070, 0x13008a0e, 0x01900070,
1225         0x1b014a0d, 0x00100070, 0x23010a0f, 0x01500070,
1226         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1227         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1228         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1229         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1230         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1231         0x50029404, 0x00100000, 0x32019405, 0x00100040,
1232         0x03004a06, 0x01900060, 0x03004a06, 0x01900060,
1233         0x6b030a0c, 0x00100060, 0x4b02140d, 0x0016a160,
1234         0x4302540d, 0x0016a160, 0x23010a0f, 0x01500060,
1235         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1236         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1237         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1238         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1239         0x6b03140c, 0x00100060, 0x4b02140d, 0x0016a160,
1240         0x0b004a0e, 0x01900060, 0x4302540d, 0x0016a160,
1241         0x23010a0f, 0x01500060, 0x00000000, 0x00000000,
1242         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1243         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1244         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1245         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1246         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1247         0x40021404, 0x00100000, 0x1a00d405, 0x00100040,
1248         0x53028a06, 0x01900060, 0x5b02ca06, 0x01900060,
1249         0x5b02ca06, 0x01900060, 0x43020a04, 0x00100060,
1250         0x1b00ca05, 0x00100060, 0x53028a07, 0x0190c060,
1251         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1252         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1253         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1254         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1255         0x4002140c, 0x00100010, 0x1a00d40d, 0x00100050,
1256         0x53028a0e, 0x01900070, 0x5b02ca0e, 0x01900070,
1257         0x5b02ca0e, 0x01900070, 0x43020a0c, 0x00100070,
1258         0x1b00ca0d, 0x00100070, 0x53028a0f, 0x0190c070,
1259         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1260         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1261         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1262         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1263         0x40021404, 0x00100000, 0x1a00d405, 0x00100040,
1264         0x5b02ca06, 0x01900060, 0x5b02ca06, 0x01900060,
1265         0x53028a07, 0x0190c060, 0x00000000, 0x00000000,
1266         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1267         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1268         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1269         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1270         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1271         0x4002140c, 0x00100010, 0x1a00d40d, 0x00100050,
1272         0x5b02ca0e, 0x01900070, 0x5b02ca0e, 0x01900070,
1273         0x53028a0f, 0x0190c070, 0x00000000, 0x00000000,
1274         0x00000000, 0x00000000, 0x00000000, 0x00000000,
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         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1281         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1282         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1283         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1284         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1285         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1286         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1287         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1288         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1289         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1290         0x00000000, 0x00000000, 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         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1297         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1298         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1299         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1300         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1301         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1302         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1303         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1304         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1305         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1306         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1307         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1308         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1309         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1310         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1311 };
1312
1313 static const u16 b43_ntab_pilot_r3[] = {
1314         0xff08, 0xff08, 0xff08, 0xff08, 0xff08, 0xff08,
1315         0xff08, 0xff08, 0x80d5, 0x80d5, 0x80d5, 0x80d5,
1316         0x80d5, 0x80d5, 0x80d5, 0x80d5, 0xff0a, 0xff82,
1317         0xffa0, 0xff28, 0xffff, 0xffff, 0xffff, 0xffff,
1318         0xff82, 0xffa0, 0xff28, 0xff0a, 0xffff, 0xffff,
1319         0xffff, 0xffff, 0xf83f, 0xfa1f, 0xfa97, 0xfab5,
1320         0xf2bd, 0xf0bf, 0xffff, 0xffff, 0xf017, 0xf815,
1321         0xf215, 0xf095, 0xf035, 0xf01d, 0xffff, 0xffff,
1322         0xff08, 0xff02, 0xff80, 0xff20, 0xff08, 0xff02,
1323         0xff80, 0xff20, 0xf01f, 0xf817, 0xfa15, 0xf295,
1324         0xf0b5, 0xf03d, 0xffff, 0xffff, 0xf82a, 0xfa0a,
1325         0xfa82, 0xfaa0, 0xf2a8, 0xf0aa, 0xffff, 0xffff,
1326         0xf002, 0xf800, 0xf200, 0xf080, 0xf020, 0xf008,
1327         0xffff, 0xffff, 0xf00a, 0xf802, 0xfa00, 0xf280,
1328         0xf0a0, 0xf028, 0xffff, 0xffff,
1329 };
1330
1331 static const u32 b43_ntab_tmap_r3[] = {
1332         0x8a88aa80, 0x8aaaaa8a, 0x8a8a8aa8, 0x00000888,
1333         0x88000000, 0x8a8a88aa, 0x8aa88888, 0x8888a8a8,
1334         0xf1111110, 0x11111111, 0x11f11111, 0x00000111,
1335         0x11000000, 0x1111f111, 0x11111111, 0x111111f1,
1336         0x8a88aa80, 0x8aaaaa8a, 0x8a8a8aa8, 0x000aa888,
1337         0x88880000, 0x8a8a88aa, 0x8aa88888, 0x8888a8a8,
1338         0xa1111110, 0x11111111, 0x11c11111, 0x00000111,
1339         0x11000000, 0x1111a111, 0x11111111, 0x111111a1,
1340         0xa2222220, 0x22222222, 0x22c22222, 0x00000222,
1341         0x22000000, 0x2222a222, 0x22222222, 0x222222a2,
1342         0xf1111110, 0x11111111, 0x11f11111, 0x00011111,
1343         0x11110000, 0x1111f111, 0x11111111, 0x111111f1,
1344         0xa8aa88a0, 0xa88888a8, 0xa8a8a88a, 0x00088aaa,
1345         0xaaaa0000, 0xa8a8aa88, 0xa88aaaaa, 0xaaaa8a8a,
1346         0xaaa8aaa0, 0x8aaa8aaa, 0xaa8a8a8a, 0x000aaa88,
1347         0x8aaa0000, 0xaaa8a888, 0x8aa88a8a, 0x8a88a888,
1348         0x08080a00, 0x0a08080a, 0x080a0a08, 0x00080808,
1349         0x080a0000, 0x080a0808, 0x080a0808, 0x0a0a0a08,
1350         0xa0a0a0a0, 0x80a0a080, 0x8080a0a0, 0x00008080,
1351         0x80a00000, 0x80a080a0, 0xa080a0a0, 0x8080a0a0,
1352         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1353         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1354         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1355         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1356         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1357         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1358         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1359         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1360         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1361         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1362         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1363         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1364         0x99999000, 0x9b9b99bb, 0x9bb99999, 0x9999b9b9,
1365         0x9b99bb90, 0x9bbbbb9b, 0x9b9b9bb9, 0x00000999,
1366         0x88000000, 0x8a8a88aa, 0x8aa88888, 0x8888a8a8,
1367         0x8a88aa80, 0x8aaaaa8a, 0x8a8a8aa8, 0x00aaa888,
1368         0x22000000, 0x2222b222, 0x22222222, 0x222222b2,
1369         0xb2222220, 0x22222222, 0x22d22222, 0x00000222,
1370         0x11000000, 0x1111a111, 0x11111111, 0x111111a1,
1371         0xa1111110, 0x11111111, 0x11c11111, 0x00000111,
1372         0x33000000, 0x3333b333, 0x33333333, 0x333333b3,
1373         0xb3333330, 0x33333333, 0x33d33333, 0x00000333,
1374         0x22000000, 0x2222a222, 0x22222222, 0x222222a2,
1375         0xa2222220, 0x22222222, 0x22c22222, 0x00000222,
1376         0x99b99b00, 0x9b9b99bb, 0x9bb99999, 0x9999b9b9,
1377         0x9b99bb99, 0x9bbbbb9b, 0x9b9b9bb9, 0x00000999,
1378         0x88000000, 0x8a8a88aa, 0x8aa88888, 0x8888a8a8,
1379         0x8a88aa88, 0x8aaaaa8a, 0x8a8a8aa8, 0x08aaa888,
1380         0x22222200, 0x2222f222, 0x22222222, 0x222222f2,
1381         0x22222222, 0x22222222, 0x22f22222, 0x00000222,
1382         0x11000000, 0x1111f111, 0x11111111, 0x11111111,
1383         0xf1111111, 0x11111111, 0x11f11111, 0x01111111,
1384         0xbb9bb900, 0xb9b9bb99, 0xb99bbbbb, 0xbbbb9b9b,
1385         0xb9bb99bb, 0xb99999b9, 0xb9b9b99b, 0x00000bbb,
1386         0xaa000000, 0xa8a8aa88, 0xa88aaaaa, 0xaaaa8a8a,
1387         0xa8aa88aa, 0xa88888a8, 0xa8a8a88a, 0x0a888aaa,
1388         0xaa000000, 0xa8a8aa88, 0xa88aaaaa, 0xaaaa8a8a,
1389         0xa8aa88a0, 0xa88888a8, 0xa8a8a88a, 0x00000aaa,
1390         0x88000000, 0x8a8a88aa, 0x8aa88888, 0x8888a8a8,
1391         0x8a88aa80, 0x8aaaaa8a, 0x8a8a8aa8, 0x00000888,
1392         0xbbbbbb00, 0x999bbbbb, 0x9bb99b9b, 0xb9b9b9bb,
1393         0xb9b99bbb, 0xb9b9b9bb, 0xb9bb9b99, 0x00000999,
1394         0x8a000000, 0xaa88a888, 0xa88888aa, 0xa88a8a88,
1395         0xa88aa88a, 0x88a8aaaa, 0xa8aa8aaa, 0x0888a88a,
1396         0x0b0b0b00, 0x090b0b0b, 0x0b090b0b, 0x0909090b,
1397         0x09090b0b, 0x09090b0b, 0x09090b09, 0x00000909,
1398         0x0a000000, 0x0a080808, 0x080a080a, 0x080a0a08,
1399         0x080a080a, 0x0808080a, 0x0a0a0a08, 0x0808080a,
1400         0xb0b0b000, 0x9090b0b0, 0x90b09090, 0xb0b0b090,
1401         0xb0b090b0, 0x90b0b0b0, 0xb0b09090, 0x00000090,
1402         0x80000000, 0xa080a080, 0xa08080a0, 0xa0808080,
1403         0xa080a080, 0x80a0a0a0, 0xa0a080a0, 0x00a0a0a0,
1404         0x22000000, 0x2222f222, 0x22222222, 0x222222f2,
1405         0xf2222220, 0x22222222, 0x22f22222, 0x00000222,
1406         0x11000000, 0x1111f111, 0x11111111, 0x111111f1,
1407         0xf1111110, 0x11111111, 0x11f11111, 0x00000111,
1408         0x33000000, 0x3333f333, 0x33333333, 0x333333f3,
1409         0xf3333330, 0x33333333, 0x33f33333, 0x00000333,
1410         0x22000000, 0x2222f222, 0x22222222, 0x222222f2,
1411         0xf2222220, 0x22222222, 0x22f22222, 0x00000222,
1412         0x99000000, 0x9b9b99bb, 0x9bb99999, 0x9999b9b9,
1413         0x9b99bb90, 0x9bbbbb9b, 0x9b9b9bb9, 0x00000999,
1414         0x88000000, 0x8a8a88aa, 0x8aa88888, 0x8888a8a8,
1415         0x8a88aa80, 0x8aaaaa8a, 0x8a8a8aa8, 0x00000888,
1416         0x88888000, 0x8a8a88aa, 0x8aa88888, 0x8888a8a8,
1417         0x8a88aa80, 0x8aaaaa8a, 0x8a8a8aa8, 0x00000888,
1418         0x88000000, 0x8a8a88aa, 0x8aa88888, 0x8888a8a8,
1419         0x8a88aa80, 0x8aaaaa8a, 0x8a8a8aa8, 0x00aaa888,
1420         0x88a88a00, 0x8a8a88aa, 0x8aa88888, 0x8888a8a8,
1421         0x8a88aa88, 0x8aaaaa8a, 0x8a8a8aa8, 0x00000888,
1422         0x88000000, 0x8a8a88aa, 0x8aa88888, 0x8888a8a8,
1423         0x8a88aa88, 0x8aaaaa8a, 0x8a8a8aa8, 0x08aaa888,
1424         0x11000000, 0x1111a111, 0x11111111, 0x111111a1,
1425         0xa1111110, 0x11111111, 0x11c11111, 0x00000111,
1426         0x11000000, 0x1111a111, 0x11111111, 0x111111a1,
1427         0xa1111110, 0x11111111, 0x11c11111, 0x00000111,
1428         0x88000000, 0x8a8a88aa, 0x8aa88888, 0x8888a8a8,
1429         0x8a88aa80, 0x8aaaaa8a, 0x8a8a8aa8, 0x00000888,
1430         0x88000000, 0x8a8a88aa, 0x8aa88888, 0x8888a8a8,
1431         0x8a88aa80, 0x8aaaaa8a, 0x8a8a8aa8, 0x00000888,
1432         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1433         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1434         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1435         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1436         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1437         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1438         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1439         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1440         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1441         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1442         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1443         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1444 };
1445
1446 static const u32 b43_ntab_intlevel_r3[] = {
1447         0x00802070, 0x0671188d, 0x0a60192c, 0x0a300e46,
1448         0x00c1188d, 0x080024d2, 0x00000070,
1449 };
1450
1451 static const u32 b43_ntab_tdtrn_r3[] = {
1452         0x061c061c, 0x0050ee68, 0xf592fe36, 0xfe5212f6,
1453         0x00000c38, 0xfe5212f6, 0xf592fe36, 0x0050ee68,
1454         0x061c061c, 0xee680050, 0xfe36f592, 0x12f6fe52,
1455         0x0c380000, 0x12f6fe52, 0xfe36f592, 0xee680050,
1456         0x061c061c, 0x0050ee68, 0xf592fe36, 0xfe5212f6,
1457         0x00000c38, 0xfe5212f6, 0xf592fe36, 0x0050ee68,
1458         0x061c061c, 0xee680050, 0xfe36f592, 0x12f6fe52,
1459         0x0c380000, 0x12f6fe52, 0xfe36f592, 0xee680050,
1460         0x05e305e3, 0x004def0c, 0xf5f3fe47, 0xfe611246,
1461         0x00000bc7, 0xfe611246, 0xf5f3fe47, 0x004def0c,
1462         0x05e305e3, 0xef0c004d, 0xfe47f5f3, 0x1246fe61,
1463         0x0bc70000, 0x1246fe61, 0xfe47f5f3, 0xef0c004d,
1464         0x05e305e3, 0x004def0c, 0xf5f3fe47, 0xfe611246,
1465         0x00000bc7, 0xfe611246, 0xf5f3fe47, 0x004def0c,
1466         0x05e305e3, 0xef0c004d, 0xfe47f5f3, 0x1246fe61,
1467         0x0bc70000, 0x1246fe61, 0xfe47f5f3, 0xef0c004d,
1468         0xfa58fa58, 0xf895043b, 0xff4c09c0, 0xfbc6ffa8,
1469         0xfb84f384, 0x0798f6f9, 0x05760122, 0x058409f6,
1470         0x0b500000, 0x05b7f542, 0x08860432, 0x06ddfee7,
1471         0xfb84f384, 0xf9d90664, 0xf7e8025c, 0x00fff7bd,
1472         0x05a805a8, 0xf7bd00ff, 0x025cf7e8, 0x0664f9d9,
1473         0xf384fb84, 0xfee706dd, 0x04320886, 0xf54205b7,
1474         0x00000b50, 0x09f60584, 0x01220576, 0xf6f90798,
1475         0xf384fb84, 0xffa8fbc6, 0x09c0ff4c, 0x043bf895,
1476         0x02d402d4, 0x07de0270, 0xfc96079c, 0xf90afe94,
1477         0xfe00ff2c, 0x02d4065d, 0x092a0096, 0x0014fbb8,
1478         0xfd2cfd2c, 0x076afb3c, 0x0096f752, 0xf991fd87,
1479         0xfb2c0200, 0xfeb8f960, 0x08e0fc96, 0x049802a8,
1480         0xfd2cfd2c, 0x02a80498, 0xfc9608e0, 0xf960feb8,
1481         0x0200fb2c, 0xfd87f991, 0xf7520096, 0xfb3c076a,
1482         0xfd2cfd2c, 0xfbb80014, 0x0096092a, 0x065d02d4,
1483         0xff2cfe00, 0xfe94f90a, 0x079cfc96, 0x027007de,
1484         0x02d402d4, 0x027007de, 0x079cfc96, 0xfe94f90a,
1485         0xff2cfe00, 0x065d02d4, 0x0096092a, 0xfbb80014,
1486         0xfd2cfd2c, 0xfb3c076a, 0xf7520096, 0xfd87f991,
1487         0x0200fb2c, 0xf960feb8, 0xfc9608e0, 0x02a80498,
1488         0xfd2cfd2c, 0x049802a8, 0x08e0fc96, 0xfeb8f960,
1489         0xfb2c0200, 0xf991fd87, 0x0096f752, 0x076afb3c,
1490         0xfd2cfd2c, 0x0014fbb8, 0x092a0096, 0x02d4065d,
1491         0xfe00ff2c, 0xf90afe94, 0xfc96079c, 0x07de0270,
1492         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1493         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1494         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1495         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1496         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1497         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1498         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1499         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1500         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1501         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1502         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1503         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1504         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1505         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1506         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1507         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1508         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1509         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1510         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1511         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1512         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1513         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1514         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1515         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1516         0x062a0000, 0xfefa0759, 0x08b80908, 0xf396fc2d,
1517         0xf9d6045c, 0xfc4ef608, 0xf748f596, 0x07b207bf,
1518         0x062a062a, 0xf84ef841, 0xf748f596, 0x03b209f8,
1519         0xf9d6045c, 0x0c6a03d3, 0x08b80908, 0x0106f8a7,
1520         0x062a0000, 0xfefaf8a7, 0x08b8f6f8, 0xf39603d3,
1521         0xf9d6fba4, 0xfc4e09f8, 0xf7480a6a, 0x07b2f841,
1522         0x062af9d6, 0xf84e07bf, 0xf7480a6a, 0x03b2f608,
1523         0xf9d6fba4, 0x0c6afc2d, 0x08b8f6f8, 0x01060759,
1524         0x062a0000, 0xfefa0759, 0x08b80908, 0xf396fc2d,
1525         0xf9d6045c, 0xfc4ef608, 0xf748f596, 0x07b207bf,
1526         0x062a062a, 0xf84ef841, 0xf748f596, 0x03b209f8,
1527         0xf9d6045c, 0x0c6a03d3, 0x08b80908, 0x0106f8a7,
1528         0x062a0000, 0xfefaf8a7, 0x08b8f6f8, 0xf39603d3,
1529         0xf9d6fba4, 0xfc4e09f8, 0xf7480a6a, 0x07b2f841,
1530         0x062af9d6, 0xf84e07bf, 0xf7480a6a, 0x03b2f608,
1531         0xf9d6fba4, 0x0c6afc2d, 0x08b8f6f8, 0x01060759,
1532         0x061c061c, 0xff30009d, 0xffb21141, 0xfd87fb54,
1533         0xf65dfe59, 0x02eef99e, 0x0166f03c, 0xfff809b6,
1534         0x000008a4, 0x000af42b, 0x00eff577, 0xfa840bf2,
1535         0xfc02ff51, 0x08260f67, 0xfff0036f, 0x0842f9c3,
1536         0x00000000, 0x063df7be, 0xfc910010, 0xf099f7da,
1537         0x00af03fe, 0xf40e057c, 0x0a89ff11, 0x0bd5fff6,
1538         0xf75c0000, 0xf64a0008, 0x0fc4fe9a, 0x0662fd12,
1539         0x01a709a3, 0x04ac0279, 0xeebf004e, 0xff6300d0,
1540         0xf9e4f9e4, 0x00d0ff63, 0x004eeebf, 0x027904ac,
1541         0x09a301a7, 0xfd120662, 0xfe9a0fc4, 0x0008f64a,
1542         0x0000f75c, 0xfff60bd5, 0xff110a89, 0x057cf40e,
1543         0x03fe00af, 0xf7daf099, 0x0010fc91, 0xf7be063d,
1544         0x00000000, 0xf9c30842, 0x036ffff0, 0x0f670826,
1545         0xff51fc02, 0x0bf2fa84, 0xf57700ef, 0xf42b000a,
1546         0x08a40000, 0x09b6fff8, 0xf03c0166, 0xf99e02ee,
1547         0xfe59f65d, 0xfb54fd87, 0x1141ffb2, 0x009dff30,
1548         0x05e30000, 0xff060705, 0x085408a0, 0xf425fc59,
1549         0xfa1d042a, 0xfc78f67a, 0xf7acf60e, 0x075a0766,
1550         0x05e305e3, 0xf8a6f89a, 0xf7acf60e, 0x03880986,
1551         0xfa1d042a, 0x0bdb03a7, 0x085408a0, 0x00faf8fb,
1552         0x05e30000, 0xff06f8fb, 0x0854f760, 0xf42503a7,
1553         0xfa1dfbd6, 0xfc780986, 0xf7ac09f2, 0x075af89a,
1554         0x05e3fa1d, 0xf8a60766, 0xf7ac09f2, 0x0388f67a,
1555         0xfa1dfbd6, 0x0bdbfc59, 0x0854f760, 0x00fa0705,
1556         0x05e30000, 0xff060705, 0x085408a0, 0xf425fc59,
1557         0xfa1d042a, 0xfc78f67a, 0xf7acf60e, 0x075a0766,
1558         0x05e305e3, 0xf8a6f89a, 0xf7acf60e, 0x03880986,
1559         0xfa1d042a, 0x0bdb03a7, 0x085408a0, 0x00faf8fb,
1560         0x05e30000, 0xff06f8fb, 0x0854f760, 0xf42503a7,
1561         0xfa1dfbd6, 0xfc780986, 0xf7ac09f2, 0x075af89a,
1562         0x05e3fa1d, 0xf8a60766, 0xf7ac09f2, 0x0388f67a,
1563         0xfa1dfbd6, 0x0bdbfc59, 0x0854f760, 0x00fa0705,
1564         0xfa58fa58, 0xf8f0fe00, 0x0448073d, 0xfdc9fe46,
1565         0xf9910258, 0x089d0407, 0xfd5cf71a, 0x02affde0,
1566         0x083e0496, 0xff5a0740, 0xff7afd97, 0x00fe01f1,
1567         0x0009082e, 0xfa94ff75, 0xfecdf8ea, 0xffb0f693,
1568         0xfd2cfa58, 0x0433ff16, 0xfba405dd, 0xfa610341,
1569         0x06a606cb, 0x0039fd2d, 0x0677fa97, 0x01fa05e0,
1570         0xf896003e, 0x075a068b, 0x012cfc3e, 0xfa23f98d,
1571         0xfc7cfd43, 0xff90fc0d, 0x01c10982, 0x00c601d6,
1572         0xfd2cfd2c, 0x01d600c6, 0x098201c1, 0xfc0dff90,
1573         0xfd43fc7c, 0xf98dfa23, 0xfc3e012c, 0x068b075a,
1574         0x003ef896, 0x05e001fa, 0xfa970677, 0xfd2d0039,
1575         0x06cb06a6, 0x0341fa61, 0x05ddfba4, 0xff160433,
1576         0xfa58fd2c, 0xf693ffb0, 0xf8eafecd, 0xff75fa94,
1577         0x082e0009, 0x01f100fe, 0xfd97ff7a, 0x0740ff5a,
1578         0x0496083e, 0xfde002af, 0xf71afd5c, 0x0407089d,
1579         0x0258f991, 0xfe46fdc9, 0x073d0448, 0xfe00f8f0,
1580         0xfd2cfd2c, 0xfce00500, 0xfc09fddc, 0xfe680157,
1581         0x04c70571, 0xfc3aff21, 0xfcd70228, 0x056d0277,
1582         0x0200fe00, 0x0022f927, 0xfe3c032b, 0xfc44ff3c,
1583         0x03e9fbdb, 0x04570313, 0x04c9ff5c, 0x000d03b8,
1584         0xfa580000, 0xfbe900d2, 0xf9d0fe0b, 0x0125fdf9,
1585         0x042501bf, 0x0328fa2b, 0xffa902f0, 0xfa250157,
1586         0x0200fe00, 0x03740438, 0xff0405fd, 0x030cfe52,
1587         0x0037fb39, 0xff6904c5, 0x04f8fd23, 0xfd31fc1b,
1588         0xfd2cfd2c, 0xfc1bfd31, 0xfd2304f8, 0x04c5ff69,
1589         0xfb390037, 0xfe52030c, 0x05fdff04, 0x04380374,
1590         0xfe000200, 0x0157fa25, 0x02f0ffa9, 0xfa2b0328,
1591         0x01bf0425, 0xfdf90125, 0xfe0bf9d0, 0x00d2fbe9,
1592         0x0000fa58, 0x03b8000d, 0xff5c04c9, 0x03130457,
1593         0xfbdb03e9, 0xff3cfc44, 0x032bfe3c, 0xf9270022,
1594         0xfe000200, 0x0277056d, 0x0228fcd7, 0xff21fc3a,
1595         0x057104c7, 0x0157fe68, 0xfddcfc09, 0x0500fce0,
1596         0xfd2cfd2c, 0x0500fce0, 0xfddcfc09, 0x0157fe68,
1597         0x057104c7, 0xff21fc3a, 0x0228fcd7, 0x0277056d,
1598         0xfe000200, 0xf9270022, 0x032bfe3c, 0xff3cfc44,
1599         0xfbdb03e9, 0x03130457, 0xff5c04c9, 0x03b8000d,
1600         0x0000fa58, 0x00d2fbe9, 0xfe0bf9d0, 0xfdf90125,
1601         0x01bf0425, 0xfa2b0328, 0x02f0ffa9, 0x0157fa25,
1602         0xfe000200, 0x04380374, 0x05fdff04, 0xfe52030c,
1603         0xfb390037, 0x04c5ff69, 0xfd2304f8, 0xfc1bfd31,
1604         0xfd2cfd2c, 0xfd31fc1b, 0x04f8fd23, 0xff6904c5,
1605         0x0037fb39, 0x030cfe52, 0xff0405fd, 0x03740438,
1606         0x0200fe00, 0xfa250157, 0xffa902f0, 0x0328fa2b,
1607         0x042501bf, 0x0125fdf9, 0xf9d0fe0b, 0xfbe900d2,
1608         0xfa580000, 0x000d03b8, 0x04c9ff5c, 0x04570313,
1609         0x03e9fbdb, 0xfc44ff3c, 0xfe3c032b, 0x0022f927,
1610         0x0200fe00, 0x056d0277, 0xfcd70228, 0xfc3aff21,
1611         0x04c70571, 0xfe680157, 0xfc09fddc, 0xfce00500,
1612         0x05a80000, 0xff1006be, 0x0800084a, 0xf49cfc7e,
1613         0xfa580400, 0xfc9cf6da, 0xf800f672, 0x0710071c,
1614         0x05a805a8, 0xf8f0f8e4, 0xf800f672, 0x03640926,
1615         0xfa580400, 0x0b640382, 0x0800084a, 0x00f0f942,
1616         0x05a80000, 0xff10f942, 0x0800f7b6, 0xf49c0382,
1617         0xfa58fc00, 0xfc9c0926, 0xf800098e, 0x0710f8e4,
1618         0x05a8fa58, 0xf8f0071c, 0xf800098e, 0x0364f6da,
1619         0xfa58fc00, 0x0b64fc7e, 0x0800f7b6, 0x00f006be,
1620         0x05a80000, 0xff1006be, 0x0800084a, 0xf49cfc7e,
1621         0xfa580400, 0xfc9cf6da, 0xf800f672, 0x0710071c,
1622         0x05a805a8, 0xf8f0f8e4, 0xf800f672, 0x03640926,
1623         0xfa580400, 0x0b640382, 0x0800084a, 0x00f0f942,
1624         0x05a80000, 0xff10f942, 0x0800f7b6, 0xf49c0382,
1625         0xfa58fc00, 0xfc9c0926, 0xf800098e, 0x0710f8e4,
1626         0x05a8fa58, 0xf8f0071c, 0xf800098e, 0x0364f6da,
1627         0xfa58fc00, 0x0b64fc7e, 0x0800f7b6, 0x00f006be,
1628 };
1629
1630 static const u32 b43_ntab_noisevar_r3[] = {
1631         0x02110211, 0x0000014d, 0x02110211, 0x0000014d,
1632         0x02110211, 0x0000014d, 0x02110211, 0x0000014d,
1633         0x02110211, 0x0000014d, 0x02110211, 0x0000014d,
1634         0x02110211, 0x0000014d, 0x02110211, 0x0000014d,
1635         0x02110211, 0x0000014d, 0x02110211, 0x0000014d,
1636         0x02110211, 0x0000014d, 0x02110211, 0x0000014d,
1637         0x02110211, 0x0000014d, 0x02110211, 0x0000014d,
1638         0x02110211, 0x0000014d, 0x02110211, 0x0000014d,
1639         0x02110211, 0x0000014d, 0x02110211, 0x0000014d,
1640         0x02110211, 0x0000014d, 0x02110211, 0x0000014d,
1641         0x02110211, 0x0000014d, 0x02110211, 0x0000014d,
1642         0x02110211, 0x0000014d, 0x02110211, 0x0000014d,
1643         0x02110211, 0x0000014d, 0x02110211, 0x0000014d,
1644         0x02110211, 0x0000014d, 0x02110211, 0x0000014d,
1645         0x02110211, 0x0000014d, 0x02110211, 0x0000014d,
1646         0x02110211, 0x0000014d, 0x02110211, 0x0000014d,
1647         0x02110211, 0x0000014d, 0x02110211, 0x0000014d,
1648         0x02110211, 0x0000014d, 0x02110211, 0x0000014d,
1649         0x02110211, 0x0000014d, 0x02110211, 0x0000014d,
1650         0x02110211, 0x0000014d, 0x02110211, 0x0000014d,
1651         0x02110211, 0x0000014d, 0x02110211, 0x0000014d,
1652         0x02110211, 0x0000014d, 0x02110211, 0x0000014d,
1653         0x02110211, 0x0000014d, 0x02110211, 0x0000014d,
1654         0x02110211, 0x0000014d, 0x02110211, 0x0000014d,
1655         0x02110211, 0x0000014d, 0x02110211, 0x0000014d,
1656         0x02110211, 0x0000014d, 0x02110211, 0x0000014d,
1657         0x02110211, 0x0000014d, 0x02110211, 0x0000014d,
1658         0x02110211, 0x0000014d, 0x02110211, 0x0000014d,
1659         0x02110211, 0x0000014d, 0x02110211, 0x0000014d,
1660         0x02110211, 0x0000014d, 0x02110211, 0x0000014d,
1661         0x02110211, 0x0000014d, 0x02110211, 0x0000014d,
1662         0x02110211, 0x0000014d, 0x02110211, 0x0000014d,
1663         0x02110211, 0x0000014d, 0x02110211, 0x0000014d,
1664         0x02110211, 0x0000014d, 0x02110211, 0x0000014d,
1665         0x02110211, 0x0000014d, 0x02110211, 0x0000014d,
1666         0x02110211, 0x0000014d, 0x02110211, 0x0000014d,
1667         0x02110211, 0x0000014d, 0x02110211, 0x0000014d,
1668         0x02110211, 0x0000014d, 0x02110211, 0x0000014d,
1669         0x02110211, 0x0000014d, 0x02110211, 0x0000014d,
1670         0x02110211, 0x0000014d, 0x02110211, 0x0000014d,
1671         0x02110211, 0x0000014d, 0x02110211, 0x0000014d,
1672         0x02110211, 0x0000014d, 0x02110211, 0x0000014d,
1673         0x02110211, 0x0000014d, 0x02110211, 0x0000014d,
1674         0x02110211, 0x0000014d, 0x02110211, 0x0000014d,
1675         0x02110211, 0x0000014d, 0x02110211, 0x0000014d,
1676         0x02110211, 0x0000014d, 0x02110211, 0x0000014d,
1677         0x02110211, 0x0000014d, 0x02110211, 0x0000014d,
1678         0x02110211, 0x0000014d, 0x02110211, 0x0000014d,
1679         0x02110211, 0x0000014d, 0x02110211, 0x0000014d,
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 };
1696
1697 static const u16 b43_ntab_mcs_r3[] = {
1698         0x0000, 0x0008, 0x000a, 0x0010, 0x0012, 0x0019,
1699         0x001a, 0x001c, 0x0080, 0x0088, 0x008a, 0x0090,
1700         0x0092, 0x0099, 0x009a, 0x009c, 0x0100, 0x0108,
1701         0x010a, 0x0110, 0x0112, 0x0119, 0x011a, 0x011c,
1702         0x0180, 0x0188, 0x018a, 0x0190, 0x0192, 0x0199,
1703         0x019a, 0x019c, 0x0000, 0x0098, 0x00a0, 0x00a8,
1704         0x009a, 0x00a2, 0x00aa, 0x0120, 0x0128, 0x0128,
1705         0x0130, 0x0138, 0x0138, 0x0140, 0x0122, 0x012a,
1706         0x012a, 0x0132, 0x013a, 0x013a, 0x0142, 0x01a8,
1707         0x01b0, 0x01b8, 0x01b0, 0x01b8, 0x01c0, 0x01c8,
1708         0x01c0, 0x01c8, 0x01d0, 0x01d0, 0x01d8, 0x01aa,
1709         0x01b2, 0x01ba, 0x01b2, 0x01ba, 0x01c2, 0x01ca,
1710         0x01c2, 0x01ca, 0x01d2, 0x01d2, 0x01da, 0x0001,
1711         0x0002, 0x0004, 0x0009, 0x000c, 0x0011, 0x0014,
1712         0x0018, 0x0020, 0x0021, 0x0022, 0x0024, 0x0081,
1713         0x0082, 0x0084, 0x0089, 0x008c, 0x0091, 0x0094,
1714         0x0098, 0x00a0, 0x00a1, 0x00a2, 0x00a4, 0x0007,
1715         0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007,
1716         0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007,
1717         0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007,
1718         0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007,
1719         0x0007, 0x0007,
1720 };
1721
1722 static const u32 b43_ntab_tdi20a0_r3[] = {
1723         0x00091226, 0x000a1429, 0x000b56ad, 0x000c58b0,
1724         0x000d5ab3, 0x000e9cb6, 0x000f9eba, 0x0000c13d,
1725         0x00020301, 0x00030504, 0x00040708, 0x0005090b,
1726         0x00064b8e, 0x00095291, 0x000a5494, 0x000b9718,
1727         0x000c9927, 0x000d9b2a, 0x000edd2e, 0x000fdf31,
1728         0x000101b4, 0x000243b7, 0x000345bb, 0x000447be,
1729         0x00058982, 0x00068c05, 0x00099309, 0x000a950c,
1730         0x000bd78f, 0x000cd992, 0x000ddb96, 0x000f1d99,
1731         0x00005fa8, 0x0001422c, 0x0002842f, 0x00038632,
1732         0x00048835, 0x0005ca38, 0x0006ccbc, 0x0009d3bf,
1733         0x000b1603, 0x000c1806, 0x000d1a0a, 0x000e1c0d,
1734         0x000f5e10, 0x00008093, 0x00018297, 0x0002c49a,
1735         0x0003c680, 0x0004c880, 0x00060b00, 0x00070d00,
1736         0x00000000, 0x00000000, 0x00000000,
1737 };
1738
1739 static const u32 b43_ntab_tdi20a1_r3[] = {
1740         0x00014b26, 0x00028d29, 0x000393ad, 0x00049630,
1741         0x0005d833, 0x0006da36, 0x00099c3a, 0x000a9e3d,
1742         0x000bc081, 0x000cc284, 0x000dc488, 0x000f068b,
1743         0x0000488e, 0x00018b91, 0x0002d214, 0x0003d418,
1744         0x0004d6a7, 0x000618aa, 0x00071aae, 0x0009dcb1,
1745         0x000b1eb4, 0x000c0137, 0x000d033b, 0x000e053e,
1746         0x000f4702, 0x00008905, 0x00020c09, 0x0003128c,
1747         0x0004148f, 0x00051712, 0x00065916, 0x00091b19,
1748         0x000a1d28, 0x000b5f2c, 0x000c41af, 0x000d43b2,
1749         0x000e85b5, 0x000f87b8, 0x0000c9bc, 0x00024cbf,
1750         0x00035303, 0x00045506, 0x0005978a, 0x0006998d,
1751         0x00095b90, 0x000a5d93, 0x000b9f97, 0x000c821a,
1752         0x000d8400, 0x000ec600, 0x000fc800, 0x00010a00,
1753         0x00000000, 0x00000000, 0x00000000,
1754 };
1755
1756 static const u32 b43_ntab_tdi40a0_r3[] = {
1757         0x0011a346, 0x00136ccf, 0x0014f5d9, 0x001641e2,
1758         0x0017cb6b, 0x00195475, 0x001b2383, 0x001cad0c,
1759         0x001e7616, 0x0000821f, 0x00020ba8, 0x0003d4b2,
1760         0x00056447, 0x00072dd0, 0x0008b6da, 0x000a02e3,
1761         0x000b8c6c, 0x000d15f6, 0x0011e484, 0x0013ae0d,
1762         0x00153717, 0x00168320, 0x00180ca9, 0x00199633,
1763         0x001b6548, 0x001ceed1, 0x001eb7db, 0x0000c3e4,
1764         0x00024d6d, 0x000416f7, 0x0005a585, 0x00076f0f,
1765         0x0008f818, 0x000a4421, 0x000bcdab, 0x000d9734,
1766         0x00122649, 0x0013efd2, 0x001578dc, 0x0016c4e5,
1767         0x00184e6e, 0x001a17f8, 0x001ba686, 0x001d3010,
1768         0x001ef999, 0x00010522, 0x00028eac, 0x00045835,
1769         0x0005e74a, 0x0007b0d3, 0x00093a5d, 0x000a85e6,
1770         0x000c0f6f, 0x000dd8f9, 0x00126787, 0x00143111,
1771         0x0015ba9a, 0x00170623, 0x00188fad, 0x001a5936,
1772         0x001be84b, 0x001db1d4, 0x001f3b5e, 0x000146e7,
1773         0x00031070, 0x000499fa, 0x00062888, 0x0007f212,
1774         0x00097b9b, 0x000ac7a4, 0x000c50ae, 0x000e1a37,
1775         0x0012a94c, 0x001472d5, 0x0015fc5f, 0x00174868,
1776         0x0018d171, 0x001a9afb, 0x001c2989, 0x001df313,
1777         0x001f7c9c, 0x000188a5, 0x000351af, 0x0004db38,
1778         0x0006aa4d, 0x000833d7, 0x0009bd60, 0x000b0969,
1779         0x000c9273, 0x000e5bfc, 0x00132a8a, 0x0014b414,
1780         0x00163d9d, 0x001789a6, 0x001912b0, 0x001adc39,
1781         0x001c6bce, 0x001e34d8, 0x001fbe61, 0x0001ca6a,
1782         0x00039374, 0x00051cfd, 0x0006ec0b, 0x00087515,
1783         0x0009fe9e, 0x000b4aa7, 0x000cd3b1, 0x000e9d3a,
1784         0x00000000, 0x00000000,
1785 };
1786
1787 static const u32 b43_ntab_tdi40a1_r3[] = {
1788         0x001edb36, 0x000129ca, 0x0002b353, 0x00047cdd,
1789         0x0005c8e6, 0x000791ef, 0x00091bf9, 0x000aaa07,
1790         0x000c3391, 0x000dfd1a, 0x00120923, 0x0013d22d,
1791         0x00155c37, 0x0016eacb, 0x00187454, 0x001a3dde,
1792         0x001b89e7, 0x001d12f0, 0x001f1cfa, 0x00016b88,
1793         0x00033492, 0x0004be1b, 0x00060a24, 0x0007d32e,
1794         0x00095d38, 0x000aec4c, 0x000c7555, 0x000e3edf,
1795         0x00124ae8, 0x001413f1, 0x0015a37b, 0x00172c89,
1796         0x0018b593, 0x001a419c, 0x001bcb25, 0x001d942f,
1797         0x001f63b9, 0x0001ad4d, 0x00037657, 0x0004c260,
1798         0x00068be9, 0x000814f3, 0x0009a47c, 0x000b2d8a,
1799         0x000cb694, 0x000e429d, 0x00128c26, 0x001455b0,
1800         0x0015e4ba, 0x00176e4e, 0x0018f758, 0x001a8361,
1801         0x001c0cea, 0x001dd674, 0x001fa57d, 0x0001ee8b,
1802         0x0003b795, 0x0005039e, 0x0006cd27, 0x000856b1,
1803         0x0009e5c6, 0x000b6f4f, 0x000cf859, 0x000e8462,
1804         0x00130deb, 0x00149775, 0x00162603, 0x0017af8c,
1805         0x00193896, 0x001ac49f, 0x001c4e28, 0x001e17b2,
1806         0x0000a6c7, 0x00023050, 0x0003f9da, 0x00054563,
1807         0x00070eec, 0x00089876, 0x000a2704, 0x000bb08d,
1808         0x000d3a17, 0x001185a0, 0x00134f29, 0x0014d8b3,
1809         0x001667c8, 0x0017f151, 0x00197adb, 0x001b0664,
1810         0x001c8fed, 0x001e5977, 0x0000e805, 0x0002718f,
1811         0x00043b18, 0x000586a1, 0x0007502b, 0x0008d9b4,
1812         0x000a68c9, 0x000bf252, 0x000dbbdc, 0x0011c7e5,
1813         0x001390ee, 0x00151a78, 0x0016a906, 0x00183290,
1814         0x0019bc19, 0x001b4822, 0x001cd12c, 0x001e9ab5,
1815         0x00000000, 0x00000000,
1816 };
1817
1818 static const u32 b43_ntab_pilotlt_r3[] = {
1819         0x76540213, 0x62407351, 0x76543210, 0x76540213,
1820         0x76540213, 0x76430521,
1821 };
1822
1823 static const u32 b43_ntab_channelest_r3[] = {
1824         0x44444444, 0x44444444, 0x44444444, 0x44444444,
1825         0x44444444, 0x44444444, 0x44444444, 0x44444444,
1826         0x10101010, 0x10101010, 0x10101010, 0x10101010,
1827         0x10101010, 0x10101010, 0x10101010, 0x10101010,
1828         0x44444444, 0x44444444, 0x44444444, 0x44444444,
1829         0x44444444, 0x44444444, 0x44444444, 0x44444444,
1830         0x10101010, 0x10101010, 0x10101010, 0x10101010,
1831         0x10101010, 0x10101010, 0x10101010, 0x10101010,
1832         0x44444444, 0x44444444, 0x44444444, 0x44444444,
1833         0x44444444, 0x44444444, 0x44444444, 0x44444444,
1834         0x44444444, 0x44444444, 0x44444444, 0x44444444,
1835         0x44444444, 0x44444444, 0x44444444, 0x44444444,
1836         0x10101010, 0x10101010, 0x10101010, 0x10101010,
1837         0x10101010, 0x10101010, 0x10101010, 0x10101010,
1838         0x10101010, 0x10101010, 0x10101010, 0x10101010,
1839         0x10101010, 0x10101010, 0x10101010, 0x10101010,
1840         0x44444444, 0x44444444, 0x44444444, 0x44444444,
1841         0x44444444, 0x44444444, 0x44444444, 0x44444444,
1842         0x44444444, 0x44444444, 0x44444444, 0x44444444,
1843         0x44444444, 0x44444444, 0x44444444, 0x44444444,
1844         0x10101010, 0x10101010, 0x10101010, 0x10101010,
1845         0x10101010, 0x10101010, 0x10101010, 0x10101010,
1846         0x10101010, 0x10101010, 0x10101010, 0x10101010,
1847         0x10101010, 0x10101010, 0x10101010, 0x10101010,
1848 };
1849
1850 static const u8 b43_ntab_framelookup_r3[] = {
1851         0x02, 0x04, 0x14, 0x14, 0x03, 0x05, 0x16, 0x16,
1852         0x0a, 0x0c, 0x1c, 0x1c, 0x0b, 0x0d, 0x1e, 0x1e,
1853         0x06, 0x08, 0x18, 0x18, 0x07, 0x09, 0x1a, 0x1a,
1854         0x0e, 0x10, 0x20, 0x28, 0x0f, 0x11, 0x22, 0x2a,
1855 };
1856
1857 static const u8 b43_ntab_estimatepowerlt0_r3[] = {
1858         0x55, 0x54, 0x54, 0x53, 0x52, 0x52, 0x51, 0x51,
1859         0x50, 0x4f, 0x4f, 0x4e, 0x4e, 0x4d, 0x4c, 0x4c,
1860         0x4b, 0x4a, 0x49, 0x49, 0x48, 0x47, 0x46, 0x46,
1861         0x45, 0x44, 0x43, 0x42, 0x41, 0x40, 0x40, 0x3f,
1862         0x3e, 0x3d, 0x3c, 0x3a, 0x39, 0x38, 0x37, 0x36,
1863         0x35, 0x33, 0x32, 0x31, 0x2f, 0x2e, 0x2c, 0x2b,
1864         0x29, 0x27, 0x25, 0x23, 0x21, 0x1f, 0x1d, 0x1a,
1865         0x18, 0x15, 0x12, 0x0e, 0x0b, 0x07, 0x02, 0xfd,
1866 };
1867
1868 static const u8 b43_ntab_estimatepowerlt1_r3[] = {
1869         0x55, 0x54, 0x54, 0x53, 0x52, 0x52, 0x51, 0x51,
1870         0x50, 0x4f, 0x4f, 0x4e, 0x4e, 0x4d, 0x4c, 0x4c,
1871         0x4b, 0x4a, 0x49, 0x49, 0x48, 0x47, 0x46, 0x46,
1872         0x45, 0x44, 0x43, 0x42, 0x41, 0x40, 0x40, 0x3f,
1873         0x3e, 0x3d, 0x3c, 0x3a, 0x39, 0x38, 0x37, 0x36,
1874         0x35, 0x33, 0x32, 0x31, 0x2f, 0x2e, 0x2c, 0x2b,
1875         0x29, 0x27, 0x25, 0x23, 0x21, 0x1f, 0x1d, 0x1a,
1876         0x18, 0x15, 0x12, 0x0e, 0x0b, 0x07, 0x02, 0xfd,
1877 };
1878
1879 static const u8 b43_ntab_adjustpower0_r3[] = {
1880         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1881         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1882         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1883         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1884         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1885         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1886         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1887         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1888         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1889         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1890         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1891         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1892         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1893         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1894         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1895         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1896 };
1897
1898 static const u8 b43_ntab_adjustpower1_r3[] = {
1899         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1900         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1901         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1902         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1903         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1904         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1905         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1906         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1907         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1908         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1909         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1910         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1911         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1912         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1913         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1914         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1915 };
1916
1917 static const u32 b43_ntab_gainctl0_r3[] = {
1918         0x5bf70044, 0x5bf70042, 0x5bf70040, 0x5bf7003e,
1919         0x5bf7003c, 0x5bf7003b, 0x5bf70039, 0x5bf70037,
1920         0x5bf70036, 0x5bf70034, 0x5bf70033, 0x5bf70031,
1921         0x5bf70030, 0x5ba70044, 0x5ba70042, 0x5ba70040,
1922         0x5ba7003e, 0x5ba7003c, 0x5ba7003b, 0x5ba70039,
1923         0x5ba70037, 0x5ba70036, 0x5ba70034, 0x5ba70033,
1924         0x5b770044, 0x5b770042, 0x5b770040, 0x5b77003e,
1925         0x5b77003c, 0x5b77003b, 0x5b770039, 0x5b770037,
1926         0x5b770036, 0x5b770034, 0x5b770033, 0x5b770031,
1927         0x5b770030, 0x5b77002f, 0x5b77002d, 0x5b77002c,
1928         0x5b470044, 0x5b470042, 0x5b470040, 0x5b47003e,
1929         0x5b47003c, 0x5b47003b, 0x5b470039, 0x5b470037,
1930         0x5b470036, 0x5b470034, 0x5b470033, 0x5b470031,
1931         0x5b470030, 0x5b47002f, 0x5b47002d, 0x5b47002c,
1932         0x5b47002b, 0x5b47002a, 0x5b270044, 0x5b270042,
1933         0x5b270040, 0x5b27003e, 0x5b27003c, 0x5b27003b,
1934         0x5b270039, 0x5b270037, 0x5b270036, 0x5b270034,
1935         0x5b270033, 0x5b270031, 0x5b270030, 0x5b27002f,
1936         0x5b170044, 0x5b170042, 0x5b170040, 0x5b17003e,
1937         0x5b17003c, 0x5b17003b, 0x5b170039, 0x5b170037,
1938         0x5b170036, 0x5b170034, 0x5b170033, 0x5b170031,
1939         0x5b170030, 0x5b17002f, 0x5b17002d, 0x5b17002c,
1940         0x5b17002b, 0x5b17002a, 0x5b170028, 0x5b170027,
1941         0x5b170026, 0x5b170025, 0x5b170024, 0x5b170023,
1942         0x5b070044, 0x5b070042, 0x5b070040, 0x5b07003e,
1943         0x5b07003c, 0x5b07003b, 0x5b070039, 0x5b070037,
1944         0x5b070036, 0x5b070034, 0x5b070033, 0x5b070031,
1945         0x5b070030, 0x5b07002f, 0x5b07002d, 0x5b07002c,
1946         0x5b07002b, 0x5b07002a, 0x5b070028, 0x5b070027,
1947         0x5b070026, 0x5b070025, 0x5b070024, 0x5b070023,
1948         0x5b070022, 0x5b070021, 0x5b070020, 0x5b07001f,
1949         0x5b07001e, 0x5b07001d, 0x5b07001d, 0x5b07001c,
1950 };
1951
1952 static const u32 b43_ntab_gainctl1_r3[] = {
1953         0x5bf70044, 0x5bf70042, 0x5bf70040, 0x5bf7003e,
1954         0x5bf7003c, 0x5bf7003b, 0x5bf70039, 0x5bf70037,
1955         0x5bf70036, 0x5bf70034, 0x5bf70033, 0x5bf70031,
1956         0x5bf70030, 0x5ba70044, 0x5ba70042, 0x5ba70040,
1957         0x5ba7003e, 0x5ba7003c, 0x5ba7003b, 0x5ba70039,
1958         0x5ba70037, 0x5ba70036, 0x5ba70034, 0x5ba70033,
1959         0x5b770044, 0x5b770042, 0x5b770040, 0x5b77003e,
1960         0x5b77003c, 0x5b77003b, 0x5b770039, 0x5b770037,
1961         0x5b770036, 0x5b770034, 0x5b770033, 0x5b770031,
1962         0x5b770030, 0x5b77002f, 0x5b77002d, 0x5b77002c,
1963         0x5b470044, 0x5b470042, 0x5b470040, 0x5b47003e,
1964         0x5b47003c, 0x5b47003b, 0x5b470039, 0x5b470037,
1965         0x5b470036, 0x5b470034, 0x5b470033, 0x5b470031,
1966         0x5b470030, 0x5b47002f, 0x5b47002d, 0x5b47002c,
1967         0x5b47002b, 0x5b47002a, 0x5b270044, 0x5b270042,
1968         0x5b270040, 0x5b27003e, 0x5b27003c, 0x5b27003b,
1969         0x5b270039, 0x5b270037, 0x5b270036, 0x5b270034,
1970         0x5b270033, 0x5b270031, 0x5b270030, 0x5b27002f,
1971         0x5b170044, 0x5b170042, 0x5b170040, 0x5b17003e,
1972         0x5b17003c, 0x5b17003b, 0x5b170039, 0x5b170037,
1973         0x5b170036, 0x5b170034, 0x5b170033, 0x5b170031,
1974         0x5b170030, 0x5b17002f, 0x5b17002d, 0x5b17002c,
1975         0x5b17002b, 0x5b17002a, 0x5b170028, 0x5b170027,
1976         0x5b170026, 0x5b170025, 0x5b170024, 0x5b170023,
1977         0x5b070044, 0x5b070042, 0x5b070040, 0x5b07003e,
1978         0x5b07003c, 0x5b07003b, 0x5b070039, 0x5b070037,
1979         0x5b070036, 0x5b070034, 0x5b070033, 0x5b070031,
1980         0x5b070030, 0x5b07002f, 0x5b07002d, 0x5b07002c,
1981         0x5b07002b, 0x5b07002a, 0x5b070028, 0x5b070027,
1982         0x5b070026, 0x5b070025, 0x5b070024, 0x5b070023,
1983         0x5b070022, 0x5b070021, 0x5b070020, 0x5b07001f,
1984         0x5b07001e, 0x5b07001d, 0x5b07001d, 0x5b07001c,
1985 };
1986
1987 static const u32 b43_ntab_iqlt0_r3[] = {
1988         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1989         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1990         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1991         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1992         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1993         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1994         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1995         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1996         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1997         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1998         0x00000000, 0x00000000, 0x00000000, 0x00000000,
1999         0x00000000, 0x00000000, 0x00000000, 0x00000000,
2000         0x00000000, 0x00000000, 0x00000000, 0x00000000,
2001         0x00000000, 0x00000000, 0x00000000, 0x00000000,
2002         0x00000000, 0x00000000, 0x00000000, 0x00000000,
2003         0x00000000, 0x00000000, 0x00000000, 0x00000000,
2004         0x00000000, 0x00000000, 0x00000000, 0x00000000,
2005         0x00000000, 0x00000000, 0x00000000, 0x00000000,
2006         0x00000000, 0x00000000, 0x00000000, 0x00000000,
2007         0x00000000, 0x00000000, 0x00000000, 0x00000000,
2008         0x00000000, 0x00000000, 0x00000000, 0x00000000,
2009         0x00000000, 0x00000000, 0x00000000, 0x00000000,
2010         0x00000000, 0x00000000, 0x00000000, 0x00000000,
2011         0x00000000, 0x00000000, 0x00000000, 0x00000000,
2012         0x00000000, 0x00000000, 0x00000000, 0x00000000,
2013         0x00000000, 0x00000000, 0x00000000, 0x00000000,
2014         0x00000000, 0x00000000, 0x00000000, 0x00000000,
2015         0x00000000, 0x00000000, 0x00000000, 0x00000000,
2016         0x00000000, 0x00000000, 0x00000000, 0x00000000,
2017         0x00000000, 0x00000000, 0x00000000, 0x00000000,
2018         0x00000000, 0x00000000, 0x00000000, 0x00000000,
2019         0x00000000, 0x00000000, 0x00000000, 0x00000000,
2020 };
2021
2022 static const u32 b43_ntab_iqlt1_r3[] = {
2023         0x00000000, 0x00000000, 0x00000000, 0x00000000,
2024         0x00000000, 0x00000000, 0x00000000, 0x00000000,
2025         0x00000000, 0x00000000, 0x00000000, 0x00000000,
2026         0x00000000, 0x00000000, 0x00000000, 0x00000000,
2027         0x00000000, 0x00000000, 0x00000000, 0x00000000,
2028         0x00000000, 0x00000000, 0x00000000, 0x00000000,
2029         0x00000000, 0x00000000, 0x00000000, 0x00000000,
2030         0x00000000, 0x00000000, 0x00000000, 0x00000000,
2031         0x00000000, 0x00000000, 0x00000000, 0x00000000,
2032         0x00000000, 0x00000000, 0x00000000, 0x00000000,
2033         0x00000000, 0x00000000, 0x00000000, 0x00000000,
2034         0x00000000, 0x00000000, 0x00000000, 0x00000000,
2035         0x00000000, 0x00000000, 0x00000000, 0x00000000,
2036         0x00000000, 0x00000000, 0x00000000, 0x00000000,
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 };
2056
2057 static const u16 b43_ntab_loftlt0_r3[] = {
2058         0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
2059         0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
2060         0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
2061         0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
2062         0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
2063         0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
2064         0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
2065         0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
2066         0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
2067         0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
2068         0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
2069         0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
2070         0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
2071         0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
2072         0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
2073         0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
2074         0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
2075         0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
2076         0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
2077         0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
2078         0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
2079         0x0000, 0x0000,
2080 };
2081
2082 static const u16 b43_ntab_loftlt1_r3[] = {
2083         0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
2084         0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
2085         0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
2086         0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
2087         0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
2088         0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
2089         0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
2090         0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
2091         0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
2092         0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
2093         0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
2094         0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
2095         0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
2096         0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
2097         0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
2098         0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
2099         0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
2100         0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
2101         0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
2102         0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
2103         0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
2104         0x0000, 0x0000,
2105 };
2106
2107 /* volatile  tables, PHY revision >= 3 */
2108
2109 /* indexed by antswctl2g */
2110 static const u16 b43_ntab_antswctl_r3[4][32] = {
2111         {
2112                 0x0082, 0x0082, 0x0211, 0x0222, 0x0328,
2113                 0x0000, 0x0000, 0x0000, 0x0144, 0x0000,
2114                 0x0000, 0x0000, 0x0188, 0x0000, 0x0000,
2115                 0x0000, 0x0082, 0x0082, 0x0211, 0x0222,
2116                 0x0328, 0x0000, 0x0000, 0x0000, 0x0144,
2117                 0x0000, 0x0000, 0x0000, 0x0188, 0x0000,
2118                 0x0000, 0x0000,
2119         },
2120         {
2121                 0x0022, 0x0022, 0x0011, 0x0022, 0x0022,
2122                 0x0000, 0x0000, 0x0000, 0x0011, 0x0000,
2123                 0x0000, 0x0000, 0x0022, 0x0000, 0x0000,
2124                 0x0000, 0x0022, 0x0022, 0x0011, 0x0022,
2125                 0x0022, 0x0000, 0x0000, 0x0000, 0x0011,
2126                 0x0000, 0x0000, 0x0000, 0x0022, 0x0000,
2127                 0x0000, 0x0000,
2128         },
2129         {
2130                 0x0088, 0x0088, 0x0044, 0x0088, 0x0088,
2131                 0x0000, 0x0000, 0x0000, 0x0044, 0x0000,
2132                 0x0000, 0x0000, 0x0088, 0x0000, 0x0000,
2133                 0x0000, 0x0088, 0x0088, 0x0044, 0x0088,
2134                 0x0088, 0x0000, 0x0000, 0x0000, 0x0044,
2135                 0x0000, 0x0000, 0x0000, 0x0088, 0x0000,
2136                 0x0000, 0x0000,
2137         },
2138         {
2139                 0x0022, 0x0022, 0x0011, 0x0022, 0x0000,
2140                 0x0000, 0x0000, 0x0000, 0x0011, 0x0000,
2141                 0x0000, 0x0000, 0x0022, 0x0000, 0x0000,
2142                 0x03cc, 0x0022, 0x0022, 0x0011, 0x0022,
2143                 0x0000, 0x0000, 0x0000, 0x0000, 0x0011,
2144                 0x0000, 0x0000, 0x0000, 0x0022, 0x0000,
2145                 0x0000, 0x03cc,
2146         }
2147 };
2148
2149 /* TX gain tables */
2150 static const u32 b43_ntab_tx_gain_rev0_1_2[] = {
2151         0x03cc2b44, 0x03cc2b42, 0x03cc2a44, 0x03cc2a42,
2152         0x03cc2944, 0x03c82b44, 0x03c82b42, 0x03c82a44,
2153         0x03c82a42, 0x03c82944, 0x03c82942, 0x03c82844,
2154         0x03c82842, 0x03c42b44, 0x03c42b42, 0x03c42a44,
2155         0x03c42a42, 0x03c42944, 0x03c42942, 0x03c42844,
2156         0x03c42842, 0x03c42744, 0x03c42742, 0x03c42644,
2157         0x03c42642, 0x03c42544, 0x03c42542, 0x03c42444,
2158         0x03c42442, 0x03c02b44, 0x03c02b42, 0x03c02a44,
2159         0x03c02a42, 0x03c02944, 0x03c02942, 0x03c02844,
2160         0x03c02842, 0x03c02744, 0x03c02742, 0x03b02b44,
2161         0x03b02b42, 0x03b02a44, 0x03b02a42, 0x03b02944,
2162         0x03b02942, 0x03b02844, 0x03b02842, 0x03b02744,
2163         0x03b02742, 0x03b02644, 0x03b02642, 0x03b02544,
2164         0x03b02542, 0x03a02b44, 0x03a02b42, 0x03a02a44,
2165         0x03a02a42, 0x03a02944, 0x03a02942, 0x03a02844,
2166         0x03a02842, 0x03a02744, 0x03a02742, 0x03902b44,
2167         0x03902b42, 0x03902a44, 0x03902a42, 0x03902944,
2168         0x03902942, 0x03902844, 0x03902842, 0x03902744,
2169         0x03902742, 0x03902644, 0x03902642, 0x03902544,
2170         0x03902542, 0x03802b44, 0x03802b42, 0x03802a44,
2171         0x03802a42, 0x03802944, 0x03802942, 0x03802844,
2172         0x03802842, 0x03802744, 0x03802742, 0x03802644,
2173         0x03802642, 0x03802544, 0x03802542, 0x03802444,
2174         0x03802442, 0x03802344, 0x03802342, 0x03802244,
2175         0x03802242, 0x03802144, 0x03802142, 0x03802044,
2176         0x03802042, 0x03801f44, 0x03801f42, 0x03801e44,
2177         0x03801e42, 0x03801d44, 0x03801d42, 0x03801c44,
2178         0x03801c42, 0x03801b44, 0x03801b42, 0x03801a44,
2179         0x03801a42, 0x03801944, 0x03801942, 0x03801844,
2180         0x03801842, 0x03801744, 0x03801742, 0x03801644,
2181         0x03801642, 0x03801544, 0x03801542, 0x03801444,
2182         0x03801442, 0x03801344, 0x03801342, 0x00002b00,
2183 };
2184
2185 static const u32 b43_ntab_tx_gain_rev3plus_2ghz[] = {
2186         0x1f410044, 0x1f410042, 0x1f410040, 0x1f41003e,
2187         0x1f41003c, 0x1f41003b, 0x1f410039, 0x1f410037,
2188         0x1e410044, 0x1e410042, 0x1e410040, 0x1e41003e,
2189         0x1e41003c, 0x1e41003b, 0x1e410039, 0x1e410037,
2190         0x1d410044, 0x1d410042, 0x1d410040, 0x1d41003e,
2191         0x1d41003c, 0x1d41003b, 0x1d410039, 0x1d410037,
2192         0x1c410044, 0x1c410042, 0x1c410040, 0x1c41003e,
2193         0x1c41003c, 0x1c41003b, 0x1c410039, 0x1c410037,
2194         0x1b410044, 0x1b410042, 0x1b410040, 0x1b41003e,
2195         0x1b41003c, 0x1b41003b, 0x1b410039, 0x1b410037,
2196         0x1a410044, 0x1a410042, 0x1a410040, 0x1a41003e,
2197         0x1a41003c, 0x1a41003b, 0x1a410039, 0x1a410037,
2198         0x19410044, 0x19410042, 0x19410040, 0x1941003e,
2199         0x1941003c, 0x1941003b, 0x19410039, 0x19410037,
2200         0x18410044, 0x18410042, 0x18410040, 0x1841003e,
2201         0x1841003c, 0x1841003b, 0x18410039, 0x18410037,
2202         0x17410044, 0x17410042, 0x17410040, 0x1741003e,
2203         0x1741003c, 0x1741003b, 0x17410039, 0x17410037,
2204         0x16410044, 0x16410042, 0x16410040, 0x1641003e,
2205         0x1641003c, 0x1641003b, 0x16410039, 0x16410037,
2206         0x15410044, 0x15410042, 0x15410040, 0x1541003e,
2207         0x1541003c, 0x1541003b, 0x15410039, 0x15410037,
2208         0x14410044, 0x14410042, 0x14410040, 0x1441003e,
2209         0x1441003c, 0x1441003b, 0x14410039, 0x14410037,
2210         0x13410044, 0x13410042, 0x13410040, 0x1341003e,
2211         0x1341003c, 0x1341003b, 0x13410039, 0x13410037,
2212         0x12410044, 0x12410042, 0x12410040, 0x1241003e,
2213         0x1241003c, 0x1241003b, 0x12410039, 0x12410037,
2214         0x11410044, 0x11410042, 0x11410040, 0x1141003e,
2215         0x1141003c, 0x1141003b, 0x11410039, 0x11410037,
2216         0x10410044, 0x10410042, 0x10410040, 0x1041003e,
2217         0x1041003c, 0x1041003b, 0x10410039, 0x10410037,
2218 };
2219
2220 static const u32 b43_ntab_tx_gain_rev3_5ghz[] = {
2221         0xcff70044, 0xcff70042, 0xcff70040, 0xcff7003e,
2222         0xcff7003c, 0xcff7003b, 0xcff70039, 0xcff70037,
2223         0xcef70044, 0xcef70042, 0xcef70040, 0xcef7003e,
2224         0xcef7003c, 0xcef7003b, 0xcef70039, 0xcef70037,
2225         0xcdf70044, 0xcdf70042, 0xcdf70040, 0xcdf7003e,
2226         0xcdf7003c, 0xcdf7003b, 0xcdf70039, 0xcdf70037,
2227         0xccf70044, 0xccf70042, 0xccf70040, 0xccf7003e,
2228         0xccf7003c, 0xccf7003b, 0xccf70039, 0xccf70037,
2229         0xcbf70044, 0xcbf70042, 0xcbf70040, 0xcbf7003e,
2230         0xcbf7003c, 0xcbf7003b, 0xcbf70039, 0xcbf70037,
2231         0xcaf70044, 0xcaf70042, 0xcaf70040, 0xcaf7003e,
2232         0xcaf7003c, 0xcaf7003b, 0xcaf70039, 0xcaf70037,
2233         0xc9f70044, 0xc9f70042, 0xc9f70040, 0xc9f7003e,
2234         0xc9f7003c, 0xc9f7003b, 0xc9f70039, 0xc9f70037,
2235         0xc8f70044, 0xc8f70042, 0xc8f70040, 0xc8f7003e,
2236         0xc8f7003c, 0xc8f7003b, 0xc8f70039, 0xc8f70037,
2237         0xc7f70044, 0xc7f70042, 0xc7f70040, 0xc7f7003e,
2238         0xc7f7003c, 0xc7f7003b, 0xc7f70039, 0xc7f70037,
2239         0xc6f70044, 0xc6f70042, 0xc6f70040, 0xc6f7003e,
2240         0xc6f7003c, 0xc6f7003b, 0xc6f70039, 0xc6f70037,
2241         0xc5f70044, 0xc5f70042, 0xc5f70040, 0xc5f7003e,
2242         0xc5f7003c, 0xc5f7003b, 0xc5f70039, 0xc5f70037,
2243         0xc4f70044, 0xc4f70042, 0xc4f70040, 0xc4f7003e,
2244         0xc4f7003c, 0xc4f7003b, 0xc4f70039, 0xc4f70037,
2245         0xc3f70044, 0xc3f70042, 0xc3f70040, 0xc3f7003e,
2246         0xc3f7003c, 0xc3f7003b, 0xc3f70039, 0xc3f70037,
2247         0xc2f70044, 0xc2f70042, 0xc2f70040, 0xc2f7003e,
2248         0xc2f7003c, 0xc2f7003b, 0xc2f70039, 0xc2f70037,
2249         0xc1f70044, 0xc1f70042, 0xc1f70040, 0xc1f7003e,
2250         0xc1f7003c, 0xc1f7003b, 0xc1f70039, 0xc1f70037,
2251         0xc0f70044, 0xc0f70042, 0xc0f70040, 0xc0f7003e,
2252         0xc0f7003c, 0xc0f7003b, 0xc0f70039, 0xc0f70037,
2253 };
2254
2255 static const u32 b43_ntab_tx_gain_rev4_5ghz[] = {
2256         0x2ff20044, 0x2ff20042, 0x2ff20040, 0x2ff2003e,
2257         0x2ff2003c, 0x2ff2003b, 0x2ff20039, 0x2ff20037,
2258         0x2ef20044, 0x2ef20042, 0x2ef20040, 0x2ef2003e,
2259         0x2ef2003c, 0x2ef2003b, 0x2ef20039, 0x2ef20037,
2260         0x2df20044, 0x2df20042, 0x2df20040, 0x2df2003e,
2261         0x2df2003c, 0x2df2003b, 0x2df20039, 0x2df20037,
2262         0x2cf20044, 0x2cf20042, 0x2cf20040, 0x2cf2003e,
2263         0x2cf2003c, 0x2cf2003b, 0x2cf20039, 0x2cf20037,
2264         0x2bf20044, 0x2bf20042, 0x2bf20040, 0x2bf2003e,
2265         0x2bf2003c, 0x2bf2003b, 0x2bf20039, 0x2bf20037,
2266         0x2af20044, 0x2af20042, 0x2af20040, 0x2af2003e,
2267         0x2af2003c, 0x2af2003b, 0x2af20039, 0x2af20037,
2268         0x29f20044, 0x29f20042, 0x29f20040, 0x29f2003e,
2269         0x29f2003c, 0x29f2003b, 0x29f20039, 0x29f20037,
2270         0x28f20044, 0x28f20042, 0x28f20040, 0x28f2003e,
2271         0x28f2003c, 0x28f2003b, 0x28f20039, 0x28f20037,
2272         0x27f20044, 0x27f20042, 0x27f20040, 0x27f2003e,
2273         0x27f2003c, 0x27f2003b, 0x27f20039, 0x27f20037,
2274         0x26f20044, 0x26f20042, 0x26f20040, 0x26f2003e,
2275         0x26f2003c, 0x26f2003b, 0x26f20039, 0x26f20037,
2276         0x25f20044, 0x25f20042, 0x25f20040, 0x25f2003e,
2277         0x25f2003c, 0x25f2003b, 0x25f20039, 0x25f20037,
2278         0x24f20044, 0x24f20042, 0x24f20040, 0x24f2003e,
2279         0x24f2003c, 0x24f2003b, 0x24f20039, 0x24f20038,
2280         0x23f20041, 0x23f20040, 0x23f2003f, 0x23f2003e,
2281         0x23f2003c, 0x23f2003b, 0x23f20039, 0x23f20037,
2282         0x22f20044, 0x22f20042, 0x22f20040, 0x22f2003e,
2283         0x22f2003c, 0x22f2003b, 0x22f20039, 0x22f20037,
2284         0x21f20044, 0x21f20042, 0x21f20040, 0x21f2003e,
2285         0x21f2003c, 0x21f2003b, 0x21f20039, 0x21f20037,
2286         0x20d20043, 0x20d20041, 0x20d2003e, 0x20d2003c,
2287         0x20d2003a, 0x20d20038, 0x20d20036, 0x20d20034,
2288 };
2289
2290 static const u32 b43_ntab_tx_gain_rev5plus_5ghz[] = {
2291         0x0f62004a, 0x0f620048, 0x0f620046, 0x0f620044,
2292         0x0f620042, 0x0f620040, 0x0f62003e, 0x0f62003c,
2293         0x0e620044, 0x0e620042, 0x0e620040, 0x0e62003e,
2294         0x0e62003c, 0x0e62003d, 0x0e62003b, 0x0e62003a,
2295         0x0d620043, 0x0d620041, 0x0d620040, 0x0d62003e,
2296         0x0d62003d, 0x0d62003c, 0x0d62003b, 0x0d62003a,
2297         0x0c620041, 0x0c620040, 0x0c62003f, 0x0c62003e,
2298         0x0c62003c, 0x0c62003b, 0x0c620039, 0x0c620037,
2299         0x0b620046, 0x0b620044, 0x0b620042, 0x0b620040,
2300         0x0b62003e, 0x0b62003c, 0x0b62003b, 0x0b62003a,
2301         0x0a620041, 0x0a620040, 0x0a62003e, 0x0a62003c,
2302         0x0a62003b, 0x0a62003a, 0x0a620039, 0x0a620038,
2303         0x0962003e, 0x0962003d, 0x0962003c, 0x0962003b,
2304         0x09620039, 0x09620037, 0x09620035, 0x09620033,
2305         0x08620044, 0x08620042, 0x08620040, 0x0862003e,
2306         0x0862003c, 0x0862003b, 0x0862003a, 0x08620039,
2307         0x07620043, 0x07620042, 0x07620040, 0x0762003f,
2308         0x0762003d, 0x0762003b, 0x0762003a, 0x07620039,
2309         0x0662003e, 0x0662003d, 0x0662003c, 0x0662003b,
2310         0x06620039, 0x06620037, 0x06620035, 0x06620033,
2311         0x05620046, 0x05620044, 0x05620042, 0x05620040,
2312         0x0562003e, 0x0562003c, 0x0562003b, 0x05620039,
2313         0x04620044, 0x04620042, 0x04620040, 0x0462003e,
2314         0x0462003c, 0x0462003b, 0x04620039, 0x04620038,
2315         0x0362003c, 0x0362003b, 0x0362003a, 0x03620039,
2316         0x03620038, 0x03620037, 0x03620035, 0x03620033,
2317         0x0262004c, 0x0262004a, 0x02620048, 0x02620047,
2318         0x02620046, 0x02620044, 0x02620043, 0x02620042,
2319         0x0162004a, 0x01620048, 0x01620046, 0x01620044,
2320         0x01620043, 0x01620042, 0x01620041, 0x01620040,
2321         0x00620042, 0x00620040, 0x0062003e, 0x0062003c,
2322         0x0062003b, 0x00620039, 0x00620037, 0x00620035,
2323 };
2324
2325 static const u32 txpwrctrl_tx_gain_ipa[] = {
2326         0x5ff7002d, 0x5ff7002b, 0x5ff7002a, 0x5ff70029,
2327         0x5ff70028, 0x5ff70027, 0x5ff70026, 0x5ff70025,
2328         0x5ef7002d, 0x5ef7002b, 0x5ef7002a, 0x5ef70029,
2329         0x5ef70028, 0x5ef70027, 0x5ef70026, 0x5ef70025,
2330         0x5df7002d, 0x5df7002b, 0x5df7002a, 0x5df70029,
2331         0x5df70028, 0x5df70027, 0x5df70026, 0x5df70025,
2332         0x5cf7002d, 0x5cf7002b, 0x5cf7002a, 0x5cf70029,
2333         0x5cf70028, 0x5cf70027, 0x5cf70026, 0x5cf70025,
2334         0x5bf7002d, 0x5bf7002b, 0x5bf7002a, 0x5bf70029,
2335         0x5bf70028, 0x5bf70027, 0x5bf70026, 0x5bf70025,
2336         0x5af7002d, 0x5af7002b, 0x5af7002a, 0x5af70029,
2337         0x5af70028, 0x5af70027, 0x5af70026, 0x5af70025,
2338         0x59f7002d, 0x59f7002b, 0x59f7002a, 0x59f70029,
2339         0x59f70028, 0x59f70027, 0x59f70026, 0x59f70025,
2340         0x58f7002d, 0x58f7002b, 0x58f7002a, 0x58f70029,
2341         0x58f70028, 0x58f70027, 0x58f70026, 0x58f70025,
2342         0x57f7002d, 0x57f7002b, 0x57f7002a, 0x57f70029,
2343         0x57f70028, 0x57f70027, 0x57f70026, 0x57f70025,
2344         0x56f7002d, 0x56f7002b, 0x56f7002a, 0x56f70029,
2345         0x56f70028, 0x56f70027, 0x56f70026, 0x56f70025,
2346         0x55f7002d, 0x55f7002b, 0x55f7002a, 0x55f70029,
2347         0x55f70028, 0x55f70027, 0x55f70026, 0x55f70025,
2348         0x54f7002d, 0x54f7002b, 0x54f7002a, 0x54f70029,
2349         0x54f70028, 0x54f70027, 0x54f70026, 0x54f70025,
2350         0x53f7002d, 0x53f7002b, 0x53f7002a, 0x53f70029,
2351         0x53f70028, 0x53f70027, 0x53f70026, 0x53f70025,
2352         0x52f7002d, 0x52f7002b, 0x52f7002a, 0x52f70029,
2353         0x52f70028, 0x52f70027, 0x52f70026, 0x52f70025,
2354         0x51f7002d, 0x51f7002b, 0x51f7002a, 0x51f70029,
2355         0x51f70028, 0x51f70027, 0x51f70026, 0x51f70025,
2356         0x50f7002d, 0x50f7002b, 0x50f7002a, 0x50f70029,
2357         0x50f70028, 0x50f70027, 0x50f70026, 0x50f70025,
2358 };
2359
2360 static const u32 txpwrctrl_tx_gain_ipa_rev5[] = {
2361         0x1ff7002d, 0x1ff7002b, 0x1ff7002a, 0x1ff70029,
2362         0x1ff70028, 0x1ff70027, 0x1ff70026, 0x1ff70025,
2363         0x1ef7002d, 0x1ef7002b, 0x1ef7002a, 0x1ef70029,
2364         0x1ef70028, 0x1ef70027, 0x1ef70026, 0x1ef70025,
2365         0x1df7002d, 0x1df7002b, 0x1df7002a, 0x1df70029,
2366         0x1df70028, 0x1df70027, 0x1df70026, 0x1df70025,
2367         0x1cf7002d, 0x1cf7002b, 0x1cf7002a, 0x1cf70029,
2368         0x1cf70028, 0x1cf70027, 0x1cf70026, 0x1cf70025,
2369         0x1bf7002d, 0x1bf7002b, 0x1bf7002a, 0x1bf70029,
2370         0x1bf70028, 0x1bf70027, 0x1bf70026, 0x1bf70025,
2371         0x1af7002d, 0x1af7002b, 0x1af7002a, 0x1af70029,
2372         0x1af70028, 0x1af70027, 0x1af70026, 0x1af70025,
2373         0x19f7002d, 0x19f7002b, 0x19f7002a, 0x19f70029,
2374         0x19f70028, 0x19f70027, 0x19f70026, 0x19f70025,
2375         0x18f7002d, 0x18f7002b, 0x18f7002a, 0x18f70029,
2376         0x18f70028, 0x18f70027, 0x18f70026, 0x18f70025,
2377         0x17f7002d, 0x17f7002b, 0x17f7002a, 0x17f70029,
2378         0x17f70028, 0x17f70027, 0x17f70026, 0x17f70025,
2379         0x16f7002d, 0x16f7002b, 0x16f7002a, 0x16f70029,
2380         0x16f70028, 0x16f70027, 0x16f70026, 0x16f70025,
2381         0x15f7002d, 0x15f7002b, 0x15f7002a, 0x15f70029,
2382         0x15f70028, 0x15f70027, 0x15f70026, 0x15f70025,
2383         0x14f7002d, 0x14f7002b, 0x14f7002a, 0x14f70029,
2384         0x14f70028, 0x14f70027, 0x14f70026, 0x14f70025,
2385         0x13f7002d, 0x13f7002b, 0x13f7002a, 0x13f70029,
2386         0x13f70028, 0x13f70027, 0x13f70026, 0x13f70025,
2387         0x12f7002d, 0x12f7002b, 0x12f7002a, 0x12f70029,
2388         0x12f70028, 0x12f70027, 0x12f70026, 0x12f70025,
2389         0x11f7002d, 0x11f7002b, 0x11f7002a, 0x11f70029,
2390         0x11f70028, 0x11f70027, 0x11f70026, 0x11f70025,
2391         0x10f7002d, 0x10f7002b, 0x10f7002a, 0x10f70029,
2392         0x10f70028, 0x10f70027, 0x10f70026, 0x10f70025,
2393 };
2394
2395 static const u32 txpwrctrl_tx_gain_ipa_rev6[] = {
2396         0x0ff7002d, 0x0ff7002b, 0x0ff7002a, 0x0ff70029,
2397         0x0ff70028, 0x0ff70027, 0x0ff70026, 0x0ff70025,
2398         0x0ef7002d, 0x0ef7002b, 0x0ef7002a, 0x0ef70029,
2399         0x0ef70028, 0x0ef70027, 0x0ef70026, 0x0ef70025,
2400         0x0df7002d, 0x0df7002b, 0x0df7002a, 0x0df70029,
2401         0x0df70028, 0x0df70027, 0x0df70026, 0x0df70025,
2402         0x0cf7002d, 0x0cf7002b, 0x0cf7002a, 0x0cf70029,
2403         0x0cf70028, 0x0cf70027, 0x0cf70026, 0x0cf70025,
2404         0x0bf7002d, 0x0bf7002b, 0x0bf7002a, 0x0bf70029,
2405         0x0bf70028, 0x0bf70027, 0x0bf70026, 0x0bf70025,
2406         0x0af7002d, 0x0af7002b, 0x0af7002a, 0x0af70029,
2407         0x0af70028, 0x0af70027, 0x0af70026, 0x0af70025,
2408         0x09f7002d, 0x09f7002b, 0x09f7002a, 0x09f70029,
2409         0x09f70028, 0x09f70027, 0x09f70026, 0x09f70025,
2410         0x08f7002d, 0x08f7002b, 0x08f7002a, 0x08f70029,
2411         0x08f70028, 0x08f70027, 0x08f70026, 0x08f70025,
2412         0x07f7002d, 0x07f7002b, 0x07f7002a, 0x07f70029,
2413         0x07f70028, 0x07f70027, 0x07f70026, 0x07f70025,
2414         0x06f7002d, 0x06f7002b, 0x06f7002a, 0x06f70029,
2415         0x06f70028, 0x06f70027, 0x06f70026, 0x06f70025,
2416         0x05f7002d, 0x05f7002b, 0x05f7002a, 0x05f70029,
2417         0x05f70028, 0x05f70027, 0x05f70026, 0x05f70025,
2418         0x04f7002d, 0x04f7002b, 0x04f7002a, 0x04f70029,
2419         0x04f70028, 0x04f70027, 0x04f70026, 0x04f70025,
2420         0x03f7002d, 0x03f7002b, 0x03f7002a, 0x03f70029,
2421         0x03f70028, 0x03f70027, 0x03f70026, 0x03f70025,
2422         0x02f7002d, 0x02f7002b, 0x02f7002a, 0x02f70029,
2423         0x02f70028, 0x02f70027, 0x02f70026, 0x02f70025,
2424         0x01f7002d, 0x01f7002b, 0x01f7002a, 0x01f70029,
2425         0x01f70028, 0x01f70027, 0x01f70026, 0x01f70025,
2426         0x00f7002d, 0x00f7002b, 0x00f7002a, 0x00f70029,
2427         0x00f70028, 0x00f70027, 0x00f70026, 0x00f70025,
2428 };
2429
2430 static const u32 txpwrctrl_tx_gain_ipa_5g[] = {
2431         0x7ff70035, 0x7ff70033, 0x7ff70032, 0x7ff70031,
2432         0x7ff7002f, 0x7ff7002e, 0x7ff7002d, 0x7ff7002b,
2433         0x7ff7002a, 0x7ff70029, 0x7ff70028, 0x7ff70027,
2434         0x7ff70026, 0x7ff70024, 0x7ff70023, 0x7ff70022,
2435         0x7ef70028, 0x7ef70027, 0x7ef70026, 0x7ef70025,
2436         0x7ef70024, 0x7ef70023, 0x7df70028, 0x7df70027,
2437         0x7df70026, 0x7df70025, 0x7df70024, 0x7df70023,
2438         0x7df70022, 0x7cf70029, 0x7cf70028, 0x7cf70027,
2439         0x7cf70026, 0x7cf70025, 0x7cf70023, 0x7cf70022,
2440         0x7bf70029, 0x7bf70028, 0x7bf70026, 0x7bf70025,
2441         0x7bf70024, 0x7bf70023, 0x7bf70022, 0x7bf70021,
2442         0x7af70029, 0x7af70028, 0x7af70027, 0x7af70026,
2443         0x7af70025, 0x7af70024, 0x7af70023, 0x7af70022,
2444         0x79f70029, 0x79f70028, 0x79f70027, 0x79f70026,
2445         0x79f70025, 0x79f70024, 0x79f70023, 0x79f70022,
2446         0x78f70029, 0x78f70028, 0x78f70027, 0x78f70026,
2447         0x78f70025, 0x78f70024, 0x78f70023, 0x78f70022,
2448         0x77f70029, 0x77f70028, 0x77f70027, 0x77f70026,
2449         0x77f70025, 0x77f70024, 0x77f70023, 0x77f70022,
2450         0x76f70029, 0x76f70028, 0x76f70027, 0x76f70026,
2451         0x76f70024, 0x76f70023, 0x76f70022, 0x76f70021,
2452         0x75f70029, 0x75f70028, 0x75f70027, 0x75f70026,
2453         0x75f70025, 0x75f70024, 0x75f70023, 0x74f70029,
2454         0x74f70028, 0x74f70026, 0x74f70025, 0x74f70024,
2455         0x74f70023, 0x74f70022, 0x73f70029, 0x73f70027,
2456         0x73f70026, 0x73f70025, 0x73f70024, 0x73f70023,
2457         0x73f70022, 0x72f70028, 0x72f70027, 0x72f70026,
2458         0x72f70025, 0x72f70024, 0x72f70023, 0x72f70022,
2459         0x71f70028, 0x71f70027, 0x71f70026, 0x71f70025,
2460         0x71f70024, 0x71f70023, 0x70f70028, 0x70f70027,
2461         0x70f70026, 0x70f70024, 0x70f70023, 0x70f70022,
2462         0x70f70021, 0x70f70020, 0x70f70020, 0x70f7001f,
2463 };
2464
2465 const s8 b43_ntab_papd_pga_gain_delta_ipa_2g[] = {
2466         -114, -108, -98, -91, -84, -78, -70, -62,
2467         -54, -46, -39, -31, -23, -15, -8, 0
2468 };
2469
2470 const u16 tbl_iqcal_gainparams[2][9][8] = {
2471         {
2472                 { 0x000, 0, 0, 2, 0x69, 0x69, 0x69, 0x69 },
2473                 { 0x700, 7, 0, 0, 0x69, 0x69, 0x69, 0x69 },
2474                 { 0x710, 7, 1, 0, 0x68, 0x68, 0x68, 0x68 },
2475                 { 0x720, 7, 2, 0, 0x67, 0x67, 0x67, 0x67 },
2476                 { 0x730, 7, 3, 0, 0x66, 0x66, 0x66, 0x66 },
2477                 { 0x740, 7, 4, 0, 0x65, 0x65, 0x65, 0x65 },
2478                 { 0x741, 7, 4, 1, 0x65, 0x65, 0x65, 0x65 },
2479                 { 0x742, 7, 4, 2, 0x65, 0x65, 0x65, 0x65 },
2480                 { 0x743, 7, 4, 3, 0x65, 0x65, 0x65, 0x65 }
2481         },
2482         {
2483                 { 0x000, 7, 0, 0, 0x79, 0x79, 0x79, 0x79 },
2484                 { 0x700, 7, 0, 0, 0x79, 0x79, 0x79, 0x79 },
2485                 { 0x710, 7, 1, 0, 0x79, 0x79, 0x79, 0x79 },
2486                 { 0x720, 7, 2, 0, 0x78, 0x78, 0x78, 0x78 },
2487                 { 0x730, 7, 3, 0, 0x78, 0x78, 0x78, 0x78 },
2488                 { 0x740, 7, 4, 0, 0x78, 0x78, 0x78, 0x78 },
2489                 { 0x741, 7, 4, 1, 0x78, 0x78, 0x78, 0x78 },
2490                 { 0x742, 7, 4, 2, 0x78, 0x78, 0x78, 0x78 },
2491                 { 0x743, 7, 4, 3, 0x78, 0x78, 0x78, 0x78 }
2492         }
2493 };
2494
2495 const struct nphy_txiqcal_ladder ladder_lo[] = {
2496         { 3, 0 },
2497         { 4, 0 },
2498         { 6, 0 },
2499         { 9, 0 },
2500         { 13, 0 },
2501         { 18, 0 },
2502         { 25, 0 },
2503         { 25, 1 },
2504         { 25, 2 },
2505         { 25, 3 },
2506         { 25, 4 },
2507         { 25, 5 },
2508         { 25, 6 },
2509         { 25, 7 },
2510         { 35, 7 },
2511         { 50, 7 },
2512         { 71, 7 },
2513         { 100, 7 }
2514 };
2515
2516 const struct nphy_txiqcal_ladder ladder_iq[] = {
2517         { 3, 0 },
2518         { 4, 0 },
2519         { 6, 0 },
2520         { 9, 0 },
2521         { 13, 0 },
2522         { 18, 0 },
2523         { 25, 0 },
2524         { 35, 0 },
2525         { 50, 0 },
2526         { 71, 0 },
2527         { 100, 0 },
2528         { 100, 1 },
2529         { 100, 2 },
2530         { 100, 3 },
2531         { 100, 4 },
2532         { 100, 5 },
2533         { 100, 6 },
2534         { 100, 7 }
2535 };
2536
2537 const u16 loscale[] = {
2538         256, 256, 271, 271,
2539         287, 256, 256, 271,
2540         271, 287, 287, 304,
2541         304, 256, 256, 271,
2542         271, 287, 287, 304,
2543         304, 322, 322, 341,
2544         341, 362, 362, 383,
2545         383, 256, 256, 271,
2546         271, 287, 287, 304,
2547         304, 322, 322, 256,
2548         256, 271, 271, 287,
2549         287, 304, 304, 322,
2550         322, 341, 341, 362,
2551         362, 256, 256, 271,
2552         271, 287, 287, 304,
2553         304, 322, 322, 256,
2554         256, 271, 271, 287,
2555         287, 304, 304, 322,
2556         322, 341, 341, 362,
2557         362, 256, 256, 271,
2558         271, 287, 287, 304,
2559         304, 322, 322, 341,
2560         341, 362, 362, 383,
2561         383, 406, 406, 430,
2562         430, 455, 455, 482,
2563         482, 511, 511, 541,
2564         541, 573, 573, 607,
2565         607, 643, 643, 681,
2566         681, 722, 722, 764,
2567         764, 810, 810, 858,
2568         858, 908, 908, 962,
2569         962, 1019, 1019, 256
2570 };
2571
2572 const u16 tbl_tx_iqlo_cal_loft_ladder_40[] = {
2573         0x0200, 0x0300, 0x0400, 0x0700,
2574         0x0900, 0x0c00, 0x1200, 0x1201,
2575         0x1202, 0x1203, 0x1204, 0x1205,
2576         0x1206, 0x1207, 0x1907, 0x2307,
2577         0x3207, 0x4707
2578 };
2579
2580 const u16 tbl_tx_iqlo_cal_loft_ladder_20[] = {
2581         0x0300, 0x0500, 0x0700, 0x0900,
2582         0x0d00, 0x1100, 0x1900, 0x1901,
2583         0x1902, 0x1903, 0x1904, 0x1905,
2584         0x1906, 0x1907, 0x2407, 0x3207,
2585         0x4607, 0x6407
2586 };
2587
2588 const u16 tbl_tx_iqlo_cal_iqimb_ladder_40[] = {
2589         0x0100, 0x0200, 0x0400, 0x0700,
2590         0x0900, 0x0c00, 0x1200, 0x1900,
2591         0x2300, 0x3200, 0x4700, 0x4701,
2592         0x4702, 0x4703, 0x4704, 0x4705,
2593         0x4706, 0x4707
2594 };
2595
2596 const u16 tbl_tx_iqlo_cal_iqimb_ladder_20[] = {
2597         0x0200, 0x0300, 0x0600, 0x0900,
2598         0x0d00, 0x1100, 0x1900, 0x2400,
2599         0x3200, 0x4600, 0x6400, 0x6401,
2600         0x6402, 0x6403, 0x6404, 0x6405,
2601         0x6406, 0x6407
2602 };
2603
2604 const u16 tbl_tx_iqlo_cal_startcoefs_nphyrev3[B43_NTAB_TX_IQLO_CAL_STARTCOEFS_REV3] = { };
2605
2606 const u16 tbl_tx_iqlo_cal_startcoefs[B43_NTAB_TX_IQLO_CAL_STARTCOEFS] = { };
2607
2608 const u16 tbl_tx_iqlo_cal_cmds_recal_nphyrev3[] = {
2609         0x8423, 0x8323, 0x8073, 0x8256,
2610         0x8045, 0x8223, 0x9423, 0x9323,
2611         0x9073, 0x9256, 0x9045, 0x9223
2612 };
2613
2614 const u16 tbl_tx_iqlo_cal_cmds_recal[] = {
2615         0x8101, 0x8253, 0x8053, 0x8234,
2616         0x8034, 0x9101, 0x9253, 0x9053,
2617         0x9234, 0x9034
2618 };
2619
2620 const u16 tbl_tx_iqlo_cal_cmds_fullcal[] = {
2621         0x8123, 0x8264, 0x8086, 0x8245,
2622         0x8056, 0x9123, 0x9264, 0x9086,
2623         0x9245, 0x9056
2624 };
2625
2626 const u16 tbl_tx_iqlo_cal_cmds_fullcal_nphyrev3[] = {
2627         0x8434, 0x8334, 0x8084, 0x8267,
2628         0x8056, 0x8234, 0x9434, 0x9334,
2629         0x9084, 0x9267, 0x9056, 0x9234
2630 };
2631
2632 const s16 tbl_tx_filter_coef_rev4[7][15] = {
2633         {  -377,   137,  -407,   208, -1527,
2634             956,    93,   186,    93,   230,
2635             -44,   230,   201,  -191,   201 },
2636         {   -77,    20,   -98,    49,   -93,
2637              60,    56,   111,    56,    26,
2638              -5,    26,    34,   -32,    34 },
2639         {  -360,   164,  -376,   164, -1533,
2640             576,   308,  -314,   308,   121,
2641             -73,   121,    91,   124,    91 },
2642         {  -295,   200,  -363,   142, -1391,
2643             826,   151,   301,   151,   151,
2644             301,   151,   602,  -752,   602 },
2645         {   -92,    58,   -96,    49,  -104,
2646              44,    17,    35,    17,    12,
2647              25,    12,    13,    27,    13 },
2648         {  -375,   136,  -399,   209, -1479,
2649             949,   130,   260,   130,   230,
2650             -44,   230,   201,  -191,   201 },
2651         { 0xed9,  0xc8, 0xe95,  0x8e, 0xa91,
2652           0x33a,  0x97, 0x12d,  0x97,  0x97,
2653           0x12d,  0x97, 0x25a, 0xd10, 0x25a }
2654 };
2655
2656 /* addr0,  addr1,  bmask,  shift */
2657 const struct nphy_rf_control_override_rev2 tbl_rf_control_override_rev2[] = {
2658         { 0x78, 0x78, 0x0038,  3 }, /* for field == 0x0002 (fls == 2) */
2659         { 0x7A, 0x7D, 0x0001,  0 }, /* for field == 0x0004 (fls == 3) */
2660         { 0x7A, 0x7D, 0x0002,  1 }, /* for field == 0x0008 (fls == 4) */
2661         { 0x7A, 0x7D, 0x0004,  2 }, /* for field == 0x0010 (fls == 5) */
2662         { 0x7A, 0x7D, 0x0030,  4 }, /* for field == 0x0020 (fls == 6) */
2663         { 0x7A, 0x7D, 0x00C0,  6 }, /* for field == 0x0040 (fls == 7) */
2664         { 0x7A, 0x7D, 0x0100,  8 }, /* for field == 0x0080 (fls == 8) */
2665         { 0x7A, 0x7D, 0x0200,  9 }, /* for field == 0x0100 (fls == 9) */
2666         { 0x78, 0x78, 0x0004,  2 }, /* for field == 0x0200 (fls == 10) */
2667         { 0x7B, 0x7E, 0x01FF,  0 }, /* for field == 0x0400 (fls == 11) */
2668         { 0x7C, 0x7F, 0x01FF,  0 }, /* for field == 0x0800 (fls == 12) */
2669         { 0x78, 0x78, 0x0100,  8 }, /* for field == 0x1000 (fls == 13) */
2670         { 0x78, 0x78, 0x0200,  9 }, /* for field == 0x2000 (fls == 14) */
2671         { 0x78, 0x78, 0xF000, 12 }  /* for field == 0x4000 (fls == 15) */
2672 };
2673
2674 /* val_mask, val_shift, en_addr0, val_addr0, en_addr1, val_addr1 */
2675 const struct nphy_rf_control_override_rev3 tbl_rf_control_override_rev3[] = {
2676         { 0x8000, 15, 0xE5, 0xF9, 0xE6, 0xFB }, /* field == 0x0001 (fls 1) */
2677         { 0x0001,  0, 0xE7, 0x7A, 0xEC, 0x7D }, /* field == 0x0002 (fls 2) */
2678         { 0x0002,  1, 0xE7, 0x7A, 0xEC, 0x7D }, /* field == 0x0004 (fls 3) */
2679         { 0x0004,  2, 0xE7, 0x7A, 0xEC, 0x7D }, /* field == 0x0008 (fls 4) */
2680         { 0x0010,  4, 0xE7, 0x7A, 0xEC, 0x7D }, /* field == 0x0010 (fls 5) */
2681         { 0x0020,  5, 0xE7, 0x7A, 0xEC, 0x7D }, /* field == 0x0020 (fls 6) */
2682         { 0x0040,  6, 0xE7, 0x7A, 0xEC, 0x7D }, /* field == 0x0040 (fls 7) */
2683         { 0x0080,  7, 0xE7, 0x7A, 0xEC, 0x7D }, /* field == 0x0080 (fls 8) */
2684         { 0x0100,  8, 0xE7, 0x7A, 0xEC, 0x7D }, /* field == 0x0100 (fls 9) */
2685         { 0x0007,  0, 0xE7, 0xF8, 0xEC, 0xFA }, /* field == 0x0200 (fls 10) */
2686         { 0x0070,  4, 0xE7, 0xF8, 0xEC, 0xFA }, /* field == 0x0400 (fls 11) */
2687         { 0xE000, 13, 0xE7, 0x7A, 0xEC, 0x7D }, /* field == 0x0800 (fls 12) */
2688         { 0xFFFF,  0, 0xE7, 0x7B, 0xEC, 0x7E }, /* field == 0x1000 (fls 13) */
2689         { 0xFFFF,  0, 0xE7, 0x7C, 0xEC, 0x7F }, /* field == 0x2000 (fls 14) */
2690         { 0x00C0,  6, 0xE7, 0xF9, 0xEC, 0xFB }  /* field == 0x4000 (fls 15) */
2691 };
2692
2693 /* field, val_addr_core0, val_addr_core1, val_mask, val_shift */
2694 static const struct nphy_rf_control_override_rev7
2695                         tbl_rf_control_override_rev7_over0[] = {
2696         { 0x0004, 0x07A, 0x07D, 0x0002, 1 },
2697         { 0x0008, 0x07A, 0x07D, 0x0004, 2 },
2698         { 0x0010, 0x07A, 0x07D, 0x0010, 4 },
2699         { 0x0020, 0x07A, 0x07D, 0x0020, 5 },
2700         { 0x0040, 0x07A, 0x07D, 0x0040, 6 },
2701         { 0x0080, 0x0F8, 0x0FA, 0x0080, 7 },
2702         { 0x0400, 0x0F8, 0x0FA, 0x0070, 4 },
2703         { 0x0800, 0x07B, 0x07E, 0xFFFF, 0 },
2704         { 0x1000, 0x07C, 0x07F, 0xFFFF, 0 },
2705         { 0x6000, 0x348, 0x349, 0xFFFF, 0 },
2706         { 0x2000, 0x348, 0x349, 0x000F, 0 },
2707 };
2708
2709 /* field, val_addr_core0, val_addr_core1, val_mask, val_shift */
2710 static const struct nphy_rf_control_override_rev7
2711                         tbl_rf_control_override_rev7_over1[] = {
2712         { 0x0002, 0x340, 0x341, 0x0002, 1 },
2713         { 0x0008, 0x340, 0x341, 0x0008, 3 },
2714         { 0x0020, 0x340, 0x341, 0x0020, 5 },
2715         { 0x0010, 0x340, 0x341, 0x0010, 4 },
2716         { 0x0004, 0x340, 0x341, 0x0004, 2 },
2717         { 0x0080, 0x340, 0x341, 0x0700, 8 },
2718         { 0x0800, 0x340, 0x341, 0x4000, 14 },
2719         { 0x0400, 0x340, 0x341, 0x2000, 13 },
2720         { 0x0200, 0x340, 0x341, 0x0800, 12 },
2721         { 0x0100, 0x340, 0x341, 0x0100, 11 },
2722         { 0x0040, 0x340, 0x341, 0x0040, 6 },
2723         { 0x0001, 0x340, 0x341, 0x0001, 0 },
2724 };
2725
2726 /* field, val_addr_core0, val_addr_core1, val_mask, val_shift */
2727 static const struct nphy_rf_control_override_rev7
2728                         tbl_rf_control_override_rev7_over2[] = {
2729         { 0x0008, 0x344, 0x345, 0x0008, 3 },
2730         { 0x0002, 0x344, 0x345, 0x0002, 1 },
2731         { 0x0001, 0x344, 0x345, 0x0001, 0 },
2732         { 0x0004, 0x344, 0x345, 0x0004, 2 },
2733         { 0x0010, 0x344, 0x345, 0x0010, 4 },
2734 };
2735
2736 static struct nphy_gain_ctl_workaround_entry nphy_gain_ctl_wa_phy6_radio11_ghz2 = {
2737         { 10, 14, 19, 27 },
2738         { -5, 6, 10, 15 },
2739         { 0xA, 0xA, 0xA, 0xA, 0xA, 0xA, 0xA, 0xA, 0xA, 0xA },
2740         { 3, 3, 3, 3, 3, 3, 3, 3, 3, 3 },
2741         0x427E,
2742         { 0x413F, 0x413F, 0x413F, 0x413F },
2743         0x007E, 0x0066, 0x1074,
2744         0x18, 0x18, 0x18,
2745         0x01D0, 0x5,
2746 };
2747 static struct nphy_gain_ctl_workaround_entry nphy_gain_ctl_workaround[2][4] = {
2748         { /* 2GHz */
2749                 { /* PHY rev 3 */
2750                         { 7, 11, 16, 23 },
2751                         { -5, 6, 10, 14 },
2752                         { 0xA, 0xA, 0xA, 0xA, 0xA, 0xA, 0xA, 0xA, 0xA, 0xA },
2753                         { 3, 3, 3, 3, 3, 3, 3, 3, 3, 3 },
2754                         0x627E,
2755                         { 0x613F, 0x613F, 0x613F, 0x613F },
2756                         0x107E, 0x0066, 0x0074,
2757                         0x18, 0x18, 0x18,
2758                         0x020D, 0x5,
2759                 },
2760                 { /* PHY rev 4 */
2761                         { 8, 12, 17, 25 },
2762                         { -5, 6, 10, 14 },
2763                         { 0xA, 0xA, 0xA, 0xA, 0xA, 0xA, 0xA, 0xA, 0xA, 0xA },
2764                         { 3, 3, 3, 3, 3, 3, 3, 3, 3, 3 },
2765                         0x527E,
2766                         { 0x513F, 0x513F, 0x513F, 0x513F },
2767                         0x007E, 0x0066, 0x0074,
2768                         0x18, 0x18, 0x18,
2769                         0x01A1, 0x5,
2770                 },
2771                 { /* PHY rev 5 */
2772                         { 9, 13, 18, 26 },
2773                         { -3, 7, 11, 16 },
2774                         { 0xA, 0xA, 0xA, 0xA, 0xA, 0xA, 0xA, 0xA, 0xA, 0xA },
2775                         { 3, 3, 3, 3, 3, 3, 3, 3, 3, 3 },
2776                         0x427E, /* invalid for external LNA! */
2777                         { 0x413F, 0x413F, 0x413F, 0x413F }, /* invalid for external LNA! */
2778                         0x1076, 0x0066, 0x0000, /* low is invalid (the last one) */
2779                         0x18, 0x18, 0x18,
2780                         0x01D0, 0x9,
2781                 },
2782                 { /* PHY rev 6+ */
2783                         { 8, 13, 18, 25 },
2784                         { -5, 6, 10, 14 },
2785                         { 0xA, 0xA, 0xA, 0xA, 0xA, 0xA, 0xA, 0xA, 0xA, 0xA },
2786                         { 3, 3, 3, 3, 3, 3, 3, 3, 3, 3 },
2787                         0x527E, /* invalid for external LNA! */
2788                         { 0x513F, 0x513F, 0x513F, 0x513F }, /* invalid for external LNA! */
2789                         0x1076, 0x0066, 0x0000, /* low is invalid (the last one) */
2790                         0x18, 0x18, 0x18,
2791                         0x01D0, 0x5,
2792                 },
2793         },
2794         { /* 5GHz */
2795                 { /* PHY rev 3 */
2796                         { 7, 11, 17, 23 },
2797                         { -6, 2, 6, 10 },
2798                         { 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13 },
2799                         { 6, 6, 6, 6, 6, 6, 6, 6, 6, 6 },
2800                         0x52DE,
2801                         { 0x516F, 0x516F, 0x516F, 0x516F },
2802                         0x00DE, 0x00CA, 0x00CC,
2803                         0x1E, 0x1E, 0x1E,
2804                         0x01A1, 25,
2805                 },
2806                 { /* PHY rev 4 */
2807                         { 8, 12, 18, 23 },
2808                         { -5, 2, 6, 10 },
2809                         { 0xD, 0xD, 0xD, 0xD, 0xD, 0xD, 0xD, 0xD, 0xD, 0xD },
2810                         { 4, 4, 4, 4, 4, 4, 4, 4, 4, 4 },
2811                         0x629E,
2812                         { 0x614F, 0x614F, 0x614F, 0x614F },
2813                         0x029E, 0x1084, 0x0086,
2814                         0x24, 0x24, 0x24,
2815                         0x0107, 25,
2816                 },
2817                 { /* PHY rev 5 */
2818                         { 6, 10, 16, 21 },
2819                         { -7, 0, 4, 8 },
2820                         { 0xD, 0xD, 0xD, 0xD, 0xD, 0xD, 0xD, 0xD, 0xD, 0xD },
2821                         { 4, 4, 4, 4, 4, 4, 4, 4, 4, 4 },
2822                         0x729E,
2823                         { 0x714F, 0x714F, 0x714F, 0x714F },
2824                         0x029E, 0x2084, 0x2086,
2825                         0x24, 0x24, 0x24,
2826                         0x00A9, 25,
2827                 },
2828                 { /* PHY rev 6+ */
2829                         { 6, 10, 16, 21 },
2830                         { -7, 0, 4, 8 },
2831                         { 0xD, 0xD, 0xD, 0xD, 0xD, 0xD, 0xD, 0xD, 0xD, 0xD },
2832                         { 4, 4, 4, 4, 4, 4, 4, 4, 4, 4 },
2833                         0x729E,
2834                         { 0x714F, 0x714F, 0x714F, 0x714F },
2835                         0x029E, 0x2084, 0x2086,
2836                         0x24, 0x24, 0x24, /* low is invalid for radio rev 11! */
2837                         0x00F0, 25,
2838                 },
2839         },
2840 };
2841
2842 static inline void assert_ntab_array_sizes(void)
2843 {
2844 #undef check
2845 #define check(table, size)      \
2846         BUILD_BUG_ON(ARRAY_SIZE(b43_ntab_##table) != B43_NTAB_##size##_SIZE)
2847
2848         check(adjustpower0, C0_ADJPLT);
2849         check(adjustpower1, C1_ADJPLT);
2850         check(bdi, BDI);
2851         check(channelest, CHANEST);
2852         check(estimatepowerlt0, C0_ESTPLT);
2853         check(estimatepowerlt1, C1_ESTPLT);
2854         check(framelookup, FRAMELT);
2855         check(framestruct, FRAMESTRUCT);
2856         check(gainctl0, C0_GAINCTL);
2857         check(gainctl1, C1_GAINCTL);
2858         check(intlevel, INTLEVEL);
2859         check(iqlt0, C0_IQLT);
2860         check(iqlt1, C1_IQLT);
2861         check(loftlt0, C0_LOFEEDTH);
2862         check(loftlt1, C1_LOFEEDTH);
2863         check(mcs, MCS);
2864         check(noisevar10, NOISEVAR10);
2865         check(noisevar11, NOISEVAR11);
2866         check(pilot, PILOT);
2867         check(pilotlt, PILOTLT);
2868         check(tdi20a0, TDI20A0);
2869         check(tdi20a1, TDI20A1);
2870         check(tdi40a0, TDI40A0);
2871         check(tdi40a1, TDI40A1);
2872         check(tdtrn, TDTRN);
2873         check(tmap, TMAP);
2874
2875 #undef check
2876 }
2877
2878 u32 b43_ntab_read(struct b43_wldev *dev, u32 offset)
2879 {
2880         u32 type, value;
2881
2882         type = offset & B43_NTAB_TYPEMASK;
2883         offset &= ~B43_NTAB_TYPEMASK;
2884         B43_WARN_ON(offset > 0xFFFF);
2885
2886         switch (type) {
2887         case B43_NTAB_8BIT:
2888                 b43_phy_write(dev, B43_NPHY_TABLE_ADDR, offset);
2889                 value = b43_phy_read(dev, B43_NPHY_TABLE_DATALO) & 0xFF;
2890                 break;
2891         case B43_NTAB_16BIT:
2892                 b43_phy_write(dev, B43_NPHY_TABLE_ADDR, offset);
2893                 value = b43_phy_read(dev, B43_NPHY_TABLE_DATALO);
2894                 break;
2895         case B43_NTAB_32BIT:
2896                 b43_phy_write(dev, B43_NPHY_TABLE_ADDR, offset);
2897                 value = b43_phy_read(dev, B43_NPHY_TABLE_DATALO);
2898                 value |= b43_phy_read(dev, B43_NPHY_TABLE_DATAHI) << 16;
2899                 break;
2900         default:
2901                 B43_WARN_ON(1);
2902                 value = 0;
2903         }
2904
2905         return value;
2906 }
2907
2908 void b43_ntab_read_bulk(struct b43_wldev *dev, u32 offset,
2909                          unsigned int nr_elements, void *_data)
2910 {
2911         u32 type;
2912         u8 *data = _data;
2913         unsigned int i;
2914
2915         type = offset & B43_NTAB_TYPEMASK;
2916         offset &= ~B43_NTAB_TYPEMASK;
2917         B43_WARN_ON(offset > 0xFFFF);
2918
2919         b43_phy_write(dev, B43_NPHY_TABLE_ADDR, offset);
2920
2921         for (i = 0; i < nr_elements; i++) {
2922                 /* Auto increment broken + caching issue on BCM43224? */
2923                 if (dev->dev->chip_id == 43224 && dev->dev->chip_rev == 1) {
2924                         b43_phy_read(dev, B43_NPHY_TABLE_DATALO);
2925                         b43_phy_write(dev, B43_NPHY_TABLE_ADDR, offset + i);
2926                 }
2927
2928                 switch (type) {
2929                 case B43_NTAB_8BIT:
2930                         *data = b43_phy_read(dev, B43_NPHY_TABLE_DATALO) & 0xFF;
2931                         data++;
2932                         break;
2933                 case B43_NTAB_16BIT:
2934                         *((u16 *)data) = b43_phy_read(dev, B43_NPHY_TABLE_DATALO);
2935                         data += 2;
2936                         break;
2937                 case B43_NTAB_32BIT:
2938                         *((u32 *)data) =
2939                                 b43_phy_read(dev, B43_NPHY_TABLE_DATALO);
2940                         *((u32 *)data) |=
2941                                 b43_phy_read(dev, B43_NPHY_TABLE_DATAHI) << 16;
2942                         data += 4;
2943                         break;
2944                 default:
2945                         B43_WARN_ON(1);
2946                 }
2947         }
2948 }
2949
2950 void b43_ntab_write(struct b43_wldev *dev, u32 offset, u32 value)
2951 {
2952         u32 type;
2953
2954         type = offset & B43_NTAB_TYPEMASK;
2955         offset &= 0xFFFF;
2956
2957         switch (type) {
2958         case B43_NTAB_8BIT:
2959                 B43_WARN_ON(value & ~0xFF);
2960                 b43_phy_write(dev, B43_NPHY_TABLE_ADDR, offset);
2961                 b43_phy_write(dev, B43_NPHY_TABLE_DATALO, value);
2962                 break;
2963         case B43_NTAB_16BIT:
2964                 B43_WARN_ON(value & ~0xFFFF);
2965                 b43_phy_write(dev, B43_NPHY_TABLE_ADDR, offset);
2966                 b43_phy_write(dev, B43_NPHY_TABLE_DATALO, value);
2967                 break;
2968         case B43_NTAB_32BIT:
2969                 b43_phy_write(dev, B43_NPHY_TABLE_ADDR, offset);
2970                 b43_phy_write(dev, B43_NPHY_TABLE_DATAHI, value >> 16);
2971                 b43_phy_write(dev, B43_NPHY_TABLE_DATALO, value & 0xFFFF);
2972                 break;
2973         default:
2974                 B43_WARN_ON(1);
2975         }
2976
2977         return;
2978
2979         /* Some compiletime assertions... */
2980         assert_ntab_array_sizes();
2981 }
2982
2983 void b43_ntab_write_bulk(struct b43_wldev *dev, u32 offset,
2984                           unsigned int nr_elements, const void *_data)
2985 {
2986         u32 type, value;
2987         const u8 *data = _data;
2988         unsigned int i;
2989
2990         type = offset & B43_NTAB_TYPEMASK;
2991         offset &= ~B43_NTAB_TYPEMASK;
2992         B43_WARN_ON(offset > 0xFFFF);
2993
2994         b43_phy_write(dev, B43_NPHY_TABLE_ADDR, offset);
2995
2996         for (i = 0; i < nr_elements; i++) {
2997                 /* Auto increment broken + caching issue on BCM43224? */
2998                 if ((offset >> 10) == 9 && dev->dev->chip_id == 43224 &&
2999                     dev->dev->chip_rev == 1) {
3000                         b43_phy_read(dev, B43_NPHY_TABLE_DATALO);
3001                         b43_phy_write(dev, B43_NPHY_TABLE_ADDR, offset + i);
3002                 }
3003
3004                 switch (type) {
3005                 case B43_NTAB_8BIT:
3006                         value = *data;
3007                         data++;
3008                         B43_WARN_ON(value & ~0xFF);
3009                         b43_phy_write(dev, B43_NPHY_TABLE_DATALO, value);
3010                         break;
3011                 case B43_NTAB_16BIT:
3012                         value = *((u16 *)data);
3013                         data += 2;
3014                         B43_WARN_ON(value & ~0xFFFF);
3015                         b43_phy_write(dev, B43_NPHY_TABLE_DATALO, value);
3016                         break;
3017                 case B43_NTAB_32BIT:
3018                         value = *((u32 *)data);
3019                         data += 4;
3020                         b43_phy_write(dev, B43_NPHY_TABLE_DATAHI, value >> 16);
3021                         b43_phy_write(dev, B43_NPHY_TABLE_DATALO,
3022                                         value & 0xFFFF);
3023                         break;
3024                 default:
3025                         B43_WARN_ON(1);
3026                 }
3027         }
3028 }
3029
3030 #define ntab_upload(dev, offset, data) do { \
3031                 b43_ntab_write_bulk(dev, offset, ARRAY_SIZE(data), data); \
3032         } while (0)
3033
3034 static void b43_nphy_tables_init_rev3(struct b43_wldev *dev)
3035 {
3036         struct ssb_sprom *sprom = dev->dev->bus_sprom;
3037         u8 antswlut;
3038
3039         if (b43_current_band(dev->wl) == IEEE80211_BAND_5GHZ)
3040                 antswlut = sprom->fem.ghz5.antswlut;
3041         else
3042                 antswlut = sprom->fem.ghz2.antswlut;
3043
3044         /* Static tables */
3045         if (dev->phy.do_full_init) {
3046                 ntab_upload(dev, B43_NTAB_FRAMESTRUCT_R3, b43_ntab_framestruct_r3);
3047                 ntab_upload(dev, B43_NTAB_PILOT_R3, b43_ntab_pilot_r3);
3048                 ntab_upload(dev, B43_NTAB_TMAP_R3, b43_ntab_tmap_r3);
3049                 ntab_upload(dev, B43_NTAB_INTLEVEL_R3, b43_ntab_intlevel_r3);
3050                 ntab_upload(dev, B43_NTAB_TDTRN_R3, b43_ntab_tdtrn_r3);
3051                 ntab_upload(dev, B43_NTAB_NOISEVAR_R3, b43_ntab_noisevar_r3);
3052                 ntab_upload(dev, B43_NTAB_MCS_R3, b43_ntab_mcs_r3);
3053                 ntab_upload(dev, B43_NTAB_TDI20A0_R3, b43_ntab_tdi20a0_r3);
3054                 ntab_upload(dev, B43_NTAB_TDI20A1_R3, b43_ntab_tdi20a1_r3);
3055                 ntab_upload(dev, B43_NTAB_TDI40A0_R3, b43_ntab_tdi40a0_r3);
3056                 ntab_upload(dev, B43_NTAB_TDI40A1_R3, b43_ntab_tdi40a1_r3);
3057                 ntab_upload(dev, B43_NTAB_PILOTLT_R3, b43_ntab_pilotlt_r3);
3058                 ntab_upload(dev, B43_NTAB_CHANEST_R3, b43_ntab_channelest_r3);
3059                 ntab_upload(dev, B43_NTAB_FRAMELT_R3, b43_ntab_framelookup_r3);
3060                 ntab_upload(dev, B43_NTAB_C0_ESTPLT_R3, b43_ntab_estimatepowerlt0_r3);
3061                 ntab_upload(dev, B43_NTAB_C1_ESTPLT_R3, b43_ntab_estimatepowerlt1_r3);
3062                 ntab_upload(dev, B43_NTAB_C0_ADJPLT_R3, b43_ntab_adjustpower0_r3);
3063                 ntab_upload(dev, B43_NTAB_C1_ADJPLT_R3, b43_ntab_adjustpower1_r3);
3064                 ntab_upload(dev, B43_NTAB_C0_GAINCTL_R3, b43_ntab_gainctl0_r3);
3065                 ntab_upload(dev, B43_NTAB_C1_GAINCTL_R3, b43_ntab_gainctl1_r3);
3066                 ntab_upload(dev, B43_NTAB_C0_IQLT_R3, b43_ntab_iqlt0_r3);
3067                 ntab_upload(dev, B43_NTAB_C1_IQLT_R3, b43_ntab_iqlt1_r3);
3068                 ntab_upload(dev, B43_NTAB_C0_LOFEEDTH_R3, b43_ntab_loftlt0_r3);
3069                 ntab_upload(dev, B43_NTAB_C1_LOFEEDTH_R3, b43_ntab_loftlt1_r3);
3070         }
3071
3072         /* Volatile tables */
3073         if (antswlut < ARRAY_SIZE(b43_ntab_antswctl_r3))
3074                 ntab_upload(dev, B43_NTAB_ANT_SW_CTL_R3,
3075                             b43_ntab_antswctl_r3[antswlut]);
3076         else
3077                 B43_WARN_ON(1);
3078 }
3079
3080 static void b43_nphy_tables_init_rev0(struct b43_wldev *dev)
3081 {
3082         /* Static tables */
3083         if (dev->phy.do_full_init) {
3084                 ntab_upload(dev, B43_NTAB_FRAMESTRUCT, b43_ntab_framestruct);
3085                 ntab_upload(dev, B43_NTAB_FRAMELT, b43_ntab_framelookup);
3086                 ntab_upload(dev, B43_NTAB_TMAP, b43_ntab_tmap);
3087                 ntab_upload(dev, B43_NTAB_TDTRN, b43_ntab_tdtrn);
3088                 ntab_upload(dev, B43_NTAB_INTLEVEL, b43_ntab_intlevel);
3089                 ntab_upload(dev, B43_NTAB_PILOT, b43_ntab_pilot);
3090                 ntab_upload(dev, B43_NTAB_TDI20A0, b43_ntab_tdi20a0);
3091                 ntab_upload(dev, B43_NTAB_TDI20A1, b43_ntab_tdi20a1);
3092                 ntab_upload(dev, B43_NTAB_TDI40A0, b43_ntab_tdi40a0);
3093                 ntab_upload(dev, B43_NTAB_TDI40A1, b43_ntab_tdi40a1);
3094                 ntab_upload(dev, B43_NTAB_CHANEST, b43_ntab_channelest);
3095                 ntab_upload(dev, B43_NTAB_MCS, b43_ntab_mcs);
3096                 ntab_upload(dev, B43_NTAB_NOISEVAR10, b43_ntab_noisevar10);
3097                 ntab_upload(dev, B43_NTAB_NOISEVAR11, b43_ntab_noisevar11);
3098         }
3099
3100         /* Volatile tables */
3101         ntab_upload(dev, B43_NTAB_BDI, b43_ntab_bdi);
3102         ntab_upload(dev, B43_NTAB_PILOTLT, b43_ntab_pilotlt);
3103         ntab_upload(dev, B43_NTAB_C0_GAINCTL, b43_ntab_gainctl0);
3104         ntab_upload(dev, B43_NTAB_C1_GAINCTL, b43_ntab_gainctl1);
3105         ntab_upload(dev, B43_NTAB_C0_ESTPLT, b43_ntab_estimatepowerlt0);
3106         ntab_upload(dev, B43_NTAB_C1_ESTPLT, b43_ntab_estimatepowerlt1);
3107         ntab_upload(dev, B43_NTAB_C0_ADJPLT, b43_ntab_adjustpower0);
3108         ntab_upload(dev, B43_NTAB_C1_ADJPLT, b43_ntab_adjustpower1);
3109         ntab_upload(dev, B43_NTAB_C0_IQLT, b43_ntab_iqlt0);
3110         ntab_upload(dev, B43_NTAB_C1_IQLT, b43_ntab_iqlt1);
3111         ntab_upload(dev, B43_NTAB_C0_LOFEEDTH, b43_ntab_loftlt0);
3112         ntab_upload(dev, B43_NTAB_C1_LOFEEDTH, b43_ntab_loftlt1);
3113 }
3114
3115 /* http://bcm-v4.sipsolutions.net/802.11/PHY/N/InitTables */
3116 void b43_nphy_tables_init(struct b43_wldev *dev)
3117 {
3118         if (dev->phy.rev >= 3)
3119                 b43_nphy_tables_init_rev3(dev);
3120         else
3121                 b43_nphy_tables_init_rev0(dev);
3122 }
3123
3124 /* http://bcm-v4.sipsolutions.net/802.11/PHY/N/GetIpaGainTbl */
3125 static const u32 *b43_nphy_get_ipa_gain_table(struct b43_wldev *dev)
3126 {
3127         if (b43_current_band(dev->wl) == IEEE80211_BAND_2GHZ) {
3128                 if (dev->phy.rev >= 6) {
3129                         if (dev->dev->chip_id == 47162)
3130                                 return txpwrctrl_tx_gain_ipa_rev5;
3131                         return txpwrctrl_tx_gain_ipa_rev6;
3132                 } else if (dev->phy.rev >= 5) {
3133                         return txpwrctrl_tx_gain_ipa_rev5;
3134                 } else {
3135                         return txpwrctrl_tx_gain_ipa;
3136                 }
3137         } else {
3138                 return txpwrctrl_tx_gain_ipa_5g;
3139         }
3140 }
3141
3142 const u32 *b43_nphy_get_tx_gain_table(struct b43_wldev *dev)
3143 {
3144         enum ieee80211_band band = b43_current_band(dev->wl);
3145         struct ssb_sprom *sprom = dev->dev->bus_sprom;
3146
3147         if (dev->phy.rev < 3)
3148                 return b43_ntab_tx_gain_rev0_1_2;
3149
3150         /* rev 3+ */
3151         if ((dev->phy.n->ipa2g_on && band == IEEE80211_BAND_2GHZ) ||
3152             (dev->phy.n->ipa5g_on && band == IEEE80211_BAND_5GHZ)) {
3153                 return b43_nphy_get_ipa_gain_table(dev);
3154         } else if (b43_current_band(dev->wl) == IEEE80211_BAND_5GHZ) {
3155                 if (dev->phy.rev == 3)
3156                         return b43_ntab_tx_gain_rev3_5ghz;
3157                 if (dev->phy.rev == 4)
3158                         return sprom->fem.ghz5.extpa_gain == 3 ?
3159                                 b43_ntab_tx_gain_rev4_5ghz :
3160                                 b43_ntab_tx_gain_rev4_5ghz; /* FIXME */
3161                 else
3162                         return b43_ntab_tx_gain_rev5plus_5ghz;
3163         } else {
3164                 if (dev->phy.rev >= 5 && sprom->fem.ghz5.extpa_gain == 3)
3165                         return b43_ntab_tx_gain_rev3plus_2ghz; /* FIXME */
3166                 else
3167                         return b43_ntab_tx_gain_rev3plus_2ghz;
3168         }
3169 }
3170
3171 struct nphy_gain_ctl_workaround_entry *b43_nphy_get_gain_ctl_workaround_ent(
3172         struct b43_wldev *dev, bool ghz5, bool ext_lna)
3173 {
3174         struct nphy_gain_ctl_workaround_entry *e;
3175         u8 phy_idx;
3176
3177         if (!ghz5 && dev->phy.rev >= 6 && dev->phy.radio_rev == 11)
3178                 return &nphy_gain_ctl_wa_phy6_radio11_ghz2;
3179
3180         B43_WARN_ON(dev->phy.rev < 3);
3181         if (dev->phy.rev >= 6)
3182                 phy_idx = 3;
3183         else if (dev->phy.rev == 5)
3184                 phy_idx = 2;
3185         else if (dev->phy.rev == 4)
3186                 phy_idx = 1;
3187         else
3188                 phy_idx = 0;
3189         e = &nphy_gain_ctl_workaround[ghz5][phy_idx];
3190
3191         /* Some workarounds to the workarounds... */
3192         if (ghz5 && dev->phy.rev >= 6) {
3193                 if (dev->phy.radio_rev == 11 &&
3194                     !b43_channel_type_is_40mhz(dev->phy.channel_type))
3195                         e->cliplo_gain = 0x2d;
3196         } else if (!ghz5 && dev->phy.rev >= 5) {
3197                 static const int gain_data[] = {0x0062, 0x0064, 0x006a, 0x106a,
3198                                                 0x106c, 0x1074, 0x107c, 0x207c};
3199                 u8 tr_iso = dev->dev->bus_sprom->fem.ghz2.tr_iso;
3200
3201                 if (ext_lna) {
3202                         e->rfseq_init[0] &= ~0x4000;
3203                         e->rfseq_init[1] &= ~0x4000;
3204                         e->rfseq_init[2] &= ~0x4000;
3205                         e->rfseq_init[3] &= ~0x4000;
3206                         e->init_gain &= ~0x4000;
3207                 }
3208                 if (tr_iso > 7)
3209                         tr_iso = 3;
3210                 e->cliplo_gain = gain_data[tr_iso];
3211
3212         } else if (ghz5 && dev->phy.rev == 4 && ext_lna) {
3213                 e->rfseq_init[0] &= ~0x4000;
3214                 e->rfseq_init[1] &= ~0x4000;
3215                 e->rfseq_init[2] &= ~0x4000;
3216                 e->rfseq_init[3] &= ~0x4000;
3217                 e->init_gain &= ~0x4000;
3218                 e->rfseq_init[0] |= 0x1000;
3219                 e->rfseq_init[1] |= 0x1000;
3220                 e->rfseq_init[2] |= 0x1000;
3221                 e->rfseq_init[3] |= 0x1000;
3222                 e->init_gain |= 0x1000;
3223         }
3224
3225         return e;
3226 }
3227
3228 const struct nphy_rf_control_override_rev7 *b43_nphy_get_rf_ctl_over_rev7(
3229         struct b43_wldev *dev, u16 field, u8 override)
3230 {
3231         const struct nphy_rf_control_override_rev7 *e;
3232         u8 size, i;
3233
3234         switch (override) {
3235         case 0:
3236                 e = tbl_rf_control_override_rev7_over0;
3237                 size = ARRAY_SIZE(tbl_rf_control_override_rev7_over0);
3238                 break;
3239         case 1:
3240                 e = tbl_rf_control_override_rev7_over1;
3241                 size = ARRAY_SIZE(tbl_rf_control_override_rev7_over1);
3242                 break;
3243         case 2:
3244                 e = tbl_rf_control_override_rev7_over2;
3245                 size = ARRAY_SIZE(tbl_rf_control_override_rev7_over2);
3246                 break;
3247         default:
3248                 b43err(dev->wl, "Invalid override value %d\n", override);
3249                 return NULL;
3250         }
3251
3252         for (i = 0; i < size; i++) {
3253                 if (e[i].field == field)
3254                         return &e[i];
3255         }
3256
3257         return NULL;
3258 }