cfg80211: remove enum ieee80211_band
[cascardo/linux.git] / drivers / net / wireless / broadcom / 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 /* static tables, PHY revision >= 7 */
2150
2151 /* Copied from brcmsmac (5.75.11) */
2152 static const u32 b43_ntab_tmap_r7[] = {
2153         0x8a88aa80, 0x8aaaaa8a, 0x8a8a8aa8, 0x00000888,
2154         0x88000000, 0x8a8a88aa, 0x8aa88888, 0x8888a8a8,
2155         0xf1111110, 0x11111111, 0x11f11111, 0x00000111,
2156         0x11000000, 0x1111f111, 0x11111111, 0x111111f1,
2157         0x8a88aa80, 0x8aaaaa8a, 0x8a8a8aa8, 0x000aa888,
2158         0x88880000, 0x8a8a88aa, 0x8aa88888, 0x8888a8a8,
2159         0xa1111110, 0x11111111, 0x11c11111, 0x00000111,
2160         0x11000000, 0x1111a111, 0x11111111, 0x111111a1,
2161         0xa2222220, 0x22222222, 0x22c22222, 0x00000222,
2162         0x22000000, 0x2222a222, 0x22222222, 0x222222a2,
2163         0xf1111110, 0x11111111, 0x11f11111, 0x00011111,
2164         0x11110000, 0x1111f111, 0x11111111, 0x111111f1,
2165         0xa8aa88a0, 0xa88888a8, 0xa8a8a88a, 0x00088aaa,
2166         0xaaaa0000, 0xa8a8aa88, 0xa88aaaaa, 0xaaaa8a8a,
2167         0xaaa8aaa0, 0x8aaa8aaa, 0xaa8a8a8a, 0x000aaa88,
2168         0x8aaa0000, 0xaaa8a888, 0x8aa88a8a, 0x8a88a888,
2169         0x08080a00, 0x0a08080a, 0x080a0a08, 0x00080808,
2170         0x080a0000, 0x080a0808, 0x080a0808, 0x0a0a0a08,
2171         0xa0a0a0a0, 0x80a0a080, 0x8080a0a0, 0x00008080,
2172         0x80a00000, 0x80a080a0, 0xa080a0a0, 0x8080a0a0,
2173         0x00000000, 0x00000000, 0x00000000, 0x00000000,
2174         0x00000000, 0x00000000, 0x00000000, 0x00000000,
2175         0x00000000, 0x00000000, 0x00000000, 0x00000000,
2176         0x00000000, 0x00000000, 0x00000000, 0x00000000,
2177         0x00000000, 0x00000000, 0x00000000, 0x00000000,
2178         0x00000000, 0x00000000, 0x00000000, 0x00000000,
2179         0x00000000, 0x00000000, 0x00000000, 0x00000000,
2180         0x00000000, 0x00000000, 0x00000000, 0x00000000,
2181         0x00000000, 0x00000000, 0x00000000, 0x00000000,
2182         0x00000000, 0x00000000, 0x00000000, 0x00000000,
2183         0x00000000, 0x00000000, 0x00000000, 0x00000000,
2184         0x00000000, 0x00000000, 0x00000000, 0x00000000,
2185         0x99999000, 0x9b9b99bb, 0x9bb99999, 0x9999b9b9,
2186         0x9b99bb90, 0x9bbbbb9b, 0x9b9b9bb9, 0x00000999,
2187         0x88000000, 0x8a8a88aa, 0x8aa88888, 0x8888a8a8,
2188         0x8a88aa80, 0x8aaaaa8a, 0x8a8a8aa8, 0x00aaa888,
2189         0x22000000, 0x2222b222, 0x22222222, 0x222222b2,
2190         0xb2222220, 0x22222222, 0x22d22222, 0x00000222,
2191         0x11000000, 0x1111a111, 0x11111111, 0x111111a1,
2192         0xa1111110, 0x11111111, 0x11c11111, 0x00000111,
2193         0x33000000, 0x3333b333, 0x33333333, 0x333333b3,
2194         0xb3333330, 0x33333333, 0x33d33333, 0x00000333,
2195         0x22000000, 0x2222a222, 0x22222222, 0x222222a2,
2196         0xa2222220, 0x22222222, 0x22c22222, 0x00000222,
2197         0x99b99b00, 0x9b9b99bb, 0x9bb99999, 0x9999b9b9,
2198         0x9b99bb99, 0x9bbbbb9b, 0x9b9b9bb9, 0x00000999,
2199         0x88000000, 0x8a8a88aa, 0x8aa88888, 0x8888a8a8,
2200         0x8a88aa88, 0x8aaaaa8a, 0x8a8a8aa8, 0x08aaa888,
2201         0x22222200, 0x2222f222, 0x22222222, 0x222222f2,
2202         0x22222222, 0x22222222, 0x22f22222, 0x00000222,
2203         0x11000000, 0x1111f111, 0x11111111, 0x11111111,
2204         0xf1111111, 0x11111111, 0x11f11111, 0x01111111,
2205         0xbb9bb900, 0xb9b9bb99, 0xb99bbbbb, 0xbbbb9b9b,
2206         0xb9bb99bb, 0xb99999b9, 0xb9b9b99b, 0x00000bbb,
2207         0xaa000000, 0xa8a8aa88, 0xa88aaaaa, 0xaaaa8a8a,
2208         0xa8aa88aa, 0xa88888a8, 0xa8a8a88a, 0x0a888aaa,
2209         0xaa000000, 0xa8a8aa88, 0xa88aaaaa, 0xaaaa8a8a,
2210         0xa8aa88a0, 0xa88888a8, 0xa8a8a88a, 0x00000aaa,
2211         0x88000000, 0x8a8a88aa, 0x8aa88888, 0x8888a8a8,
2212         0x8a88aa80, 0x8aaaaa8a, 0x8a8a8aa8, 0x00000888,
2213         0xbbbbbb00, 0x999bbbbb, 0x9bb99b9b, 0xb9b9b9bb,
2214         0xb9b99bbb, 0xb9b9b9bb, 0xb9bb9b99, 0x00000999,
2215         0x8a000000, 0xaa88a888, 0xa88888aa, 0xa88a8a88,
2216         0xa88aa88a, 0x88a8aaaa, 0xa8aa8aaa, 0x0888a88a,
2217         0x0b0b0b00, 0x090b0b0b, 0x0b090b0b, 0x0909090b,
2218         0x09090b0b, 0x09090b0b, 0x09090b09, 0x00000909,
2219         0x0a000000, 0x0a080808, 0x080a080a, 0x080a0a08,
2220         0x080a080a, 0x0808080a, 0x0a0a0a08, 0x0808080a,
2221         0xb0b0b000, 0x9090b0b0, 0x90b09090, 0xb0b0b090,
2222         0xb0b090b0, 0x90b0b0b0, 0xb0b09090, 0x00000090,
2223         0x80000000, 0xa080a080, 0xa08080a0, 0xa0808080,
2224         0xa080a080, 0x80a0a0a0, 0xa0a080a0, 0x00a0a0a0,
2225         0x22000000, 0x2222f222, 0x22222222, 0x222222f2,
2226         0xf2222220, 0x22222222, 0x22f22222, 0x00000222,
2227         0x11000000, 0x1111f111, 0x11111111, 0x111111f1,
2228         0xf1111110, 0x11111111, 0x11f11111, 0x00000111,
2229         0x33000000, 0x3333f333, 0x33333333, 0x333333f3,
2230         0xf3333330, 0x33333333, 0x33f33333, 0x00000333,
2231         0x22000000, 0x2222f222, 0x22222222, 0x222222f2,
2232         0xf2222220, 0x22222222, 0x22f22222, 0x00000222,
2233         0x99000000, 0x9b9b99bb, 0x9bb99999, 0x9999b9b9,
2234         0x9b99bb90, 0x9bbbbb9b, 0x9b9b9bb9, 0x00000999,
2235         0x88000000, 0x8a8a88aa, 0x8aa88888, 0x8888a8a8,
2236         0x8a88aa80, 0x8aaaaa8a, 0x8a8a8aa8, 0x00000888,
2237         0x88888000, 0x8a8a88aa, 0x8aa88888, 0x8888a8a8,
2238         0x8a88aa80, 0x8aaaaa8a, 0x8a8a8aa8, 0x00000888,
2239         0x88000000, 0x8a8a88aa, 0x8aa88888, 0x8888a8a8,
2240         0x8a88aa80, 0x8aaaaa8a, 0x8a8a8aa8, 0x00aaa888,
2241         0x88a88a00, 0x8a8a88aa, 0x8aa88888, 0x8888a8a8,
2242         0x8a88aa88, 0x8aaaaa8a, 0x8a8a8aa8, 0x000aa888,
2243         0x88880000, 0x8a8a88aa, 0x8aa88888, 0x8888a8a8,
2244         0x8a88aa88, 0x8aaaaa8a, 0x8a8a8aa8, 0x08aaa888,
2245         0x11000000, 0x1111a111, 0x11111111, 0x111111a1,
2246         0xa1111110, 0x11111111, 0x11c11111, 0x00000111,
2247         0x11000000, 0x1111a111, 0x11111111, 0x111111a1,
2248         0xa1111110, 0x11111111, 0x11c11111, 0x00000111,
2249         0x88000000, 0x8a8a88aa, 0x8aa88888, 0x8888a8a8,
2250         0x8a88aa80, 0x8aaaaa8a, 0x8a8a8aa8, 0x00000888,
2251         0x88000000, 0x8a8a88aa, 0x8aa88888, 0x8888a8a8,
2252         0x8a88aa80, 0x8aaaaa8a, 0x8a8a8aa8, 0x00000888,
2253         0x00000000, 0x00000000, 0x00000000, 0x00000000,
2254         0x00000000, 0x00000000, 0x00000000, 0x00000000,
2255         0x00000000, 0x00000000, 0x00000000, 0x00000000,
2256         0x00000000, 0x00000000, 0x00000000, 0x00000000,
2257         0x00000000, 0x00000000, 0x00000000, 0x00000000,
2258         0x00000000, 0x00000000, 0x00000000, 0x00000000,
2259         0x00000000, 0x00000000, 0x00000000, 0x00000000,
2260         0x00000000, 0x00000000, 0x00000000, 0x00000000,
2261         0x00000000, 0x00000000, 0x00000000, 0x00000000,
2262         0x00000000, 0x00000000, 0x00000000, 0x00000000,
2263         0x00000000, 0x00000000, 0x00000000, 0x00000000,
2264         0x00000000, 0x00000000, 0x00000000, 0x00000000,
2265 };
2266
2267 /* Extracted from MMIO dump of 6.30.223.141 */
2268 static const u32 b43_ntab_noisevar_r7[] = {
2269         0x020c020c, 0x0000014d, 0x020c020c, 0x0000014d,
2270         0x020c020c, 0x0000014d, 0x020c020c, 0x0000014d,
2271         0x020c020c, 0x0000014d, 0x020c020c, 0x0000014d,
2272         0x020c020c, 0x0000014d, 0x020c020c, 0x0000014d,
2273         0x020c020c, 0x0000014d, 0x020c020c, 0x0000014d,
2274         0x020c020c, 0x0000014d, 0x020c020c, 0x0000014d,
2275         0x020c020c, 0x0000014d, 0x020c020c, 0x0000014d,
2276         0x020c020c, 0x0000014d, 0x020c020c, 0x0000014d,
2277         0x020c020c, 0x0000014d, 0x020c020c, 0x0000014d,
2278         0x020c020c, 0x0000014d, 0x020c020c, 0x0000014d,
2279         0x020c020c, 0x0000014d, 0x020c020c, 0x0000014d,
2280         0x020c020c, 0x0000014d, 0x020c020c, 0x0000014d,
2281         0x020c020c, 0x0000014d, 0x020c020c, 0x0000014d,
2282         0x020c020c, 0x0000014d, 0x020c020c, 0x0000014d,
2283         0x020c020c, 0x0000014d, 0x020c020c, 0x0000014d,
2284         0x020c020c, 0x0000014d, 0x020c020c, 0x0000014d,
2285         0x020c020c, 0x0000014d, 0x020c020c, 0x0000014d,
2286         0x020c020c, 0x0000014d, 0x020c020c, 0x0000014d,
2287         0x020c020c, 0x0000014d, 0x020c020c, 0x0000014d,
2288         0x020c020c, 0x0000014d, 0x020c020c, 0x0000014d,
2289         0x020c020c, 0x0000014d, 0x020c020c, 0x0000014d,
2290         0x020c020c, 0x0000014d, 0x020c020c, 0x0000014d,
2291         0x020c020c, 0x0000014d, 0x020c020c, 0x0000014d,
2292         0x020c020c, 0x0000014d, 0x020c020c, 0x0000014d,
2293         0x020c020c, 0x0000014d, 0x020c020c, 0x0000014d,
2294         0x020c020c, 0x0000014d, 0x020c020c, 0x0000014d,
2295         0x020c020c, 0x0000014d, 0x020c020c, 0x0000014d,
2296         0x020c020c, 0x0000014d, 0x020c020c, 0x0000014d,
2297         0x020c020c, 0x0000014d, 0x020c020c, 0x0000014d,
2298         0x020c020c, 0x0000014d, 0x020c020c, 0x0000014d,
2299         0x020c020c, 0x0000014d, 0x020c020c, 0x0000014d,
2300         0x020c020c, 0x0000014d, 0x020c020c, 0x0000014d,
2301         0x020c020c, 0x0000014d, 0x020c020c, 0x0000014d,
2302         0x020c020c, 0x0000014d, 0x020c020c, 0x0000014d,
2303         0x020c020c, 0x0000014d, 0x020c020c, 0x0000014d,
2304         0x020c020c, 0x0000014d, 0x020c020c, 0x0000014d,
2305         0x020c020c, 0x0000014d, 0x020c020c, 0x0000014d,
2306         0x020c020c, 0x0000014d, 0x020c020c, 0x0000014d,
2307         0x020c020c, 0x0000014d, 0x020c020c, 0x0000014d,
2308         0x020c020c, 0x0000014d, 0x020c020c, 0x0000014d,
2309         0x020c020c, 0x0000014d, 0x020c020c, 0x0000014d,
2310         0x020c020c, 0x0000014d, 0x020c020c, 0x0000014d,
2311         0x020c020c, 0x0000014d, 0x020c020c, 0x0000014d,
2312         0x020c020c, 0x0000014d, 0x020c020c, 0x0000014d,
2313         0x020c020c, 0x0000014d, 0x020c020c, 0x0000014d,
2314         0x020c020c, 0x0000014d, 0x020c020c, 0x0000014d,
2315         0x020c020c, 0x0000014d, 0x020c020c, 0x0000014d,
2316         0x020c020c, 0x0000014d, 0x020c020c, 0x0000014d,
2317         0x020c020c, 0x0000014d, 0x020c020c, 0x0000014d,
2318         0x020c020c, 0x0000014d, 0x020c020c, 0x0000014d,
2319         0x020c020c, 0x0000014d, 0x020c020c, 0x0000014d,
2320         0x020c020c, 0x0000014d, 0x020c020c, 0x0000014d,
2321         0x020c020c, 0x0000014d, 0x020c020c, 0x0000014d,
2322         0x020c020c, 0x0000014d, 0x020c020c, 0x0000014d,
2323         0x020c020c, 0x0000014d, 0x020c020c, 0x0000014d,
2324         0x020c020c, 0x0000014d, 0x020c020c, 0x0000014d,
2325         0x020c020c, 0x0000014d, 0x020c020c, 0x0000014d,
2326         0x020c020c, 0x0000014d, 0x020c020c, 0x0000014d,
2327         0x020c020c, 0x0000014d, 0x020c020c, 0x0000014d,
2328         0x020c020c, 0x0000014d, 0x020c020c, 0x0000014d,
2329         0x020c020c, 0x0000014d, 0x020c020c, 0x0000014d,
2330         0x020c020c, 0x0000014d, 0x020c020c, 0x0000014d,
2331         0x020c020c, 0x0000014d, 0x020c020c, 0x0000014d,
2332         0x020c020c, 0x0000014d, 0x020c020c, 0x0000014d,
2333 };
2334
2335 /**************************************************
2336  * TX gain tables
2337  **************************************************/
2338
2339 static const u32 b43_ntab_tx_gain_rev0_1_2[] = {
2340         0x03cc2b44, 0x03cc2b42, 0x03cc2a44, 0x03cc2a42,
2341         0x03cc2944, 0x03c82b44, 0x03c82b42, 0x03c82a44,
2342         0x03c82a42, 0x03c82944, 0x03c82942, 0x03c82844,
2343         0x03c82842, 0x03c42b44, 0x03c42b42, 0x03c42a44,
2344         0x03c42a42, 0x03c42944, 0x03c42942, 0x03c42844,
2345         0x03c42842, 0x03c42744, 0x03c42742, 0x03c42644,
2346         0x03c42642, 0x03c42544, 0x03c42542, 0x03c42444,
2347         0x03c42442, 0x03c02b44, 0x03c02b42, 0x03c02a44,
2348         0x03c02a42, 0x03c02944, 0x03c02942, 0x03c02844,
2349         0x03c02842, 0x03c02744, 0x03c02742, 0x03b02b44,
2350         0x03b02b42, 0x03b02a44, 0x03b02a42, 0x03b02944,
2351         0x03b02942, 0x03b02844, 0x03b02842, 0x03b02744,
2352         0x03b02742, 0x03b02644, 0x03b02642, 0x03b02544,
2353         0x03b02542, 0x03a02b44, 0x03a02b42, 0x03a02a44,
2354         0x03a02a42, 0x03a02944, 0x03a02942, 0x03a02844,
2355         0x03a02842, 0x03a02744, 0x03a02742, 0x03902b44,
2356         0x03902b42, 0x03902a44, 0x03902a42, 0x03902944,
2357         0x03902942, 0x03902844, 0x03902842, 0x03902744,
2358         0x03902742, 0x03902644, 0x03902642, 0x03902544,
2359         0x03902542, 0x03802b44, 0x03802b42, 0x03802a44,
2360         0x03802a42, 0x03802944, 0x03802942, 0x03802844,
2361         0x03802842, 0x03802744, 0x03802742, 0x03802644,
2362         0x03802642, 0x03802544, 0x03802542, 0x03802444,
2363         0x03802442, 0x03802344, 0x03802342, 0x03802244,
2364         0x03802242, 0x03802144, 0x03802142, 0x03802044,
2365         0x03802042, 0x03801f44, 0x03801f42, 0x03801e44,
2366         0x03801e42, 0x03801d44, 0x03801d42, 0x03801c44,
2367         0x03801c42, 0x03801b44, 0x03801b42, 0x03801a44,
2368         0x03801a42, 0x03801944, 0x03801942, 0x03801844,
2369         0x03801842, 0x03801744, 0x03801742, 0x03801644,
2370         0x03801642, 0x03801544, 0x03801542, 0x03801444,
2371         0x03801442, 0x03801344, 0x03801342, 0x00002b00,
2372 };
2373
2374 /* EPA 2 GHz */
2375
2376 static const u32 b43_ntab_tx_gain_epa_rev3_2g[] = {
2377         0x1f410044, 0x1f410042, 0x1f410040, 0x1f41003e,
2378         0x1f41003c, 0x1f41003b, 0x1f410039, 0x1f410037,
2379         0x1e410044, 0x1e410042, 0x1e410040, 0x1e41003e,
2380         0x1e41003c, 0x1e41003b, 0x1e410039, 0x1e410037,
2381         0x1d410044, 0x1d410042, 0x1d410040, 0x1d41003e,
2382         0x1d41003c, 0x1d41003b, 0x1d410039, 0x1d410037,
2383         0x1c410044, 0x1c410042, 0x1c410040, 0x1c41003e,
2384         0x1c41003c, 0x1c41003b, 0x1c410039, 0x1c410037,
2385         0x1b410044, 0x1b410042, 0x1b410040, 0x1b41003e,
2386         0x1b41003c, 0x1b41003b, 0x1b410039, 0x1b410037,
2387         0x1a410044, 0x1a410042, 0x1a410040, 0x1a41003e,
2388         0x1a41003c, 0x1a41003b, 0x1a410039, 0x1a410037,
2389         0x19410044, 0x19410042, 0x19410040, 0x1941003e,
2390         0x1941003c, 0x1941003b, 0x19410039, 0x19410037,
2391         0x18410044, 0x18410042, 0x18410040, 0x1841003e,
2392         0x1841003c, 0x1841003b, 0x18410039, 0x18410037,
2393         0x17410044, 0x17410042, 0x17410040, 0x1741003e,
2394         0x1741003c, 0x1741003b, 0x17410039, 0x17410037,
2395         0x16410044, 0x16410042, 0x16410040, 0x1641003e,
2396         0x1641003c, 0x1641003b, 0x16410039, 0x16410037,
2397         0x15410044, 0x15410042, 0x15410040, 0x1541003e,
2398         0x1541003c, 0x1541003b, 0x15410039, 0x15410037,
2399         0x14410044, 0x14410042, 0x14410040, 0x1441003e,
2400         0x1441003c, 0x1441003b, 0x14410039, 0x14410037,
2401         0x13410044, 0x13410042, 0x13410040, 0x1341003e,
2402         0x1341003c, 0x1341003b, 0x13410039, 0x13410037,
2403         0x12410044, 0x12410042, 0x12410040, 0x1241003e,
2404         0x1241003c, 0x1241003b, 0x12410039, 0x12410037,
2405         0x11410044, 0x11410042, 0x11410040, 0x1141003e,
2406         0x1141003c, 0x1141003b, 0x11410039, 0x11410037,
2407         0x10410044, 0x10410042, 0x10410040, 0x1041003e,
2408         0x1041003c, 0x1041003b, 0x10410039, 0x10410037,
2409 };
2410
2411 static const u32 b43_ntab_tx_gain_epa_rev3_hi_pwr_2g[] = {
2412         0x0f410044, 0x0f410042, 0x0f410040, 0x0f41003e,
2413         0x0f41003c, 0x0f41003b, 0x0f410039, 0x0f410037,
2414         0x0e410044, 0x0e410042, 0x0e410040, 0x0e41003e,
2415         0x0e41003c, 0x0e41003b, 0x0e410039, 0x0e410037,
2416         0x0d410044, 0x0d410042, 0x0d410040, 0x0d41003e,
2417         0x0d41003c, 0x0d41003b, 0x0d410039, 0x0d410037,
2418         0x0c410044, 0x0c410042, 0x0c410040, 0x0c41003e,
2419         0x0c41003c, 0x0c41003b, 0x0c410039, 0x0c410037,
2420         0x0b410044, 0x0b410042, 0x0b410040, 0x0b41003e,
2421         0x0b41003c, 0x0b41003b, 0x0b410039, 0x0b410037,
2422         0x0a410044, 0x0a410042, 0x0a410040, 0x0a41003e,
2423         0x0a41003c, 0x0a41003b, 0x0a410039, 0x0a410037,
2424         0x09410044, 0x09410042, 0x09410040, 0x0941003e,
2425         0x0941003c, 0x0941003b, 0x09410039, 0x09410037,
2426         0x08410044, 0x08410042, 0x08410040, 0x0841003e,
2427         0x0841003c, 0x0841003b, 0x08410039, 0x08410037,
2428         0x07410044, 0x07410042, 0x07410040, 0x0741003e,
2429         0x0741003c, 0x0741003b, 0x07410039, 0x07410037,
2430         0x06410044, 0x06410042, 0x06410040, 0x0641003e,
2431         0x0641003c, 0x0641003b, 0x06410039, 0x06410037,
2432         0x05410044, 0x05410042, 0x05410040, 0x0541003e,
2433         0x0541003c, 0x0541003b, 0x05410039, 0x05410037,
2434         0x04410044, 0x04410042, 0x04410040, 0x0441003e,
2435         0x0441003c, 0x0441003b, 0x04410039, 0x04410037,
2436         0x03410044, 0x03410042, 0x03410040, 0x0341003e,
2437         0x0341003c, 0x0341003b, 0x03410039, 0x03410037,
2438         0x02410044, 0x02410042, 0x02410040, 0x0241003e,
2439         0x0241003c, 0x0241003b, 0x02410039, 0x02410037,
2440         0x01410044, 0x01410042, 0x01410040, 0x0141003e,
2441         0x0141003c, 0x0141003b, 0x01410039, 0x01410037,
2442         0x00410044, 0x00410042, 0x00410040, 0x0041003e,
2443         0x0041003c, 0x0041003b, 0x00410039, 0x00410037
2444 };
2445
2446 /* EPA 5 GHz */
2447
2448 static const u32 b43_ntab_tx_gain_epa_rev3_5g[] = {
2449         0xcff70044, 0xcff70042, 0xcff70040, 0xcff7003e,
2450         0xcff7003c, 0xcff7003b, 0xcff70039, 0xcff70037,
2451         0xcef70044, 0xcef70042, 0xcef70040, 0xcef7003e,
2452         0xcef7003c, 0xcef7003b, 0xcef70039, 0xcef70037,
2453         0xcdf70044, 0xcdf70042, 0xcdf70040, 0xcdf7003e,
2454         0xcdf7003c, 0xcdf7003b, 0xcdf70039, 0xcdf70037,
2455         0xccf70044, 0xccf70042, 0xccf70040, 0xccf7003e,
2456         0xccf7003c, 0xccf7003b, 0xccf70039, 0xccf70037,
2457         0xcbf70044, 0xcbf70042, 0xcbf70040, 0xcbf7003e,
2458         0xcbf7003c, 0xcbf7003b, 0xcbf70039, 0xcbf70037,
2459         0xcaf70044, 0xcaf70042, 0xcaf70040, 0xcaf7003e,
2460         0xcaf7003c, 0xcaf7003b, 0xcaf70039, 0xcaf70037,
2461         0xc9f70044, 0xc9f70042, 0xc9f70040, 0xc9f7003e,
2462         0xc9f7003c, 0xc9f7003b, 0xc9f70039, 0xc9f70037,
2463         0xc8f70044, 0xc8f70042, 0xc8f70040, 0xc8f7003e,
2464         0xc8f7003c, 0xc8f7003b, 0xc8f70039, 0xc8f70037,
2465         0xc7f70044, 0xc7f70042, 0xc7f70040, 0xc7f7003e,
2466         0xc7f7003c, 0xc7f7003b, 0xc7f70039, 0xc7f70037,
2467         0xc6f70044, 0xc6f70042, 0xc6f70040, 0xc6f7003e,
2468         0xc6f7003c, 0xc6f7003b, 0xc6f70039, 0xc6f70037,
2469         0xc5f70044, 0xc5f70042, 0xc5f70040, 0xc5f7003e,
2470         0xc5f7003c, 0xc5f7003b, 0xc5f70039, 0xc5f70037,
2471         0xc4f70044, 0xc4f70042, 0xc4f70040, 0xc4f7003e,
2472         0xc4f7003c, 0xc4f7003b, 0xc4f70039, 0xc4f70037,
2473         0xc3f70044, 0xc3f70042, 0xc3f70040, 0xc3f7003e,
2474         0xc3f7003c, 0xc3f7003b, 0xc3f70039, 0xc3f70037,
2475         0xc2f70044, 0xc2f70042, 0xc2f70040, 0xc2f7003e,
2476         0xc2f7003c, 0xc2f7003b, 0xc2f70039, 0xc2f70037,
2477         0xc1f70044, 0xc1f70042, 0xc1f70040, 0xc1f7003e,
2478         0xc1f7003c, 0xc1f7003b, 0xc1f70039, 0xc1f70037,
2479         0xc0f70044, 0xc0f70042, 0xc0f70040, 0xc0f7003e,
2480         0xc0f7003c, 0xc0f7003b, 0xc0f70039, 0xc0f70037,
2481 };
2482
2483 static const u32 b43_ntab_tx_gain_epa_rev4_5g[] = {
2484         0x2ff20044, 0x2ff20042, 0x2ff20040, 0x2ff2003e,
2485         0x2ff2003c, 0x2ff2003b, 0x2ff20039, 0x2ff20037,
2486         0x2ef20044, 0x2ef20042, 0x2ef20040, 0x2ef2003e,
2487         0x2ef2003c, 0x2ef2003b, 0x2ef20039, 0x2ef20037,
2488         0x2df20044, 0x2df20042, 0x2df20040, 0x2df2003e,
2489         0x2df2003c, 0x2df2003b, 0x2df20039, 0x2df20037,
2490         0x2cf20044, 0x2cf20042, 0x2cf20040, 0x2cf2003e,
2491         0x2cf2003c, 0x2cf2003b, 0x2cf20039, 0x2cf20037,
2492         0x2bf20044, 0x2bf20042, 0x2bf20040, 0x2bf2003e,
2493         0x2bf2003c, 0x2bf2003b, 0x2bf20039, 0x2bf20037,
2494         0x2af20044, 0x2af20042, 0x2af20040, 0x2af2003e,
2495         0x2af2003c, 0x2af2003b, 0x2af20039, 0x2af20037,
2496         0x29f20044, 0x29f20042, 0x29f20040, 0x29f2003e,
2497         0x29f2003c, 0x29f2003b, 0x29f20039, 0x29f20037,
2498         0x28f20044, 0x28f20042, 0x28f20040, 0x28f2003e,
2499         0x28f2003c, 0x28f2003b, 0x28f20039, 0x28f20037,
2500         0x27f20044, 0x27f20042, 0x27f20040, 0x27f2003e,
2501         0x27f2003c, 0x27f2003b, 0x27f20039, 0x27f20037,
2502         0x26f20044, 0x26f20042, 0x26f20040, 0x26f2003e,
2503         0x26f2003c, 0x26f2003b, 0x26f20039, 0x26f20037,
2504         0x25f20044, 0x25f20042, 0x25f20040, 0x25f2003e,
2505         0x25f2003c, 0x25f2003b, 0x25f20039, 0x25f20037,
2506         0x24f20044, 0x24f20042, 0x24f20040, 0x24f2003e,
2507         0x24f2003c, 0x24f2003b, 0x24f20039, 0x24f20038,
2508         0x23f20041, 0x23f20040, 0x23f2003f, 0x23f2003e,
2509         0x23f2003c, 0x23f2003b, 0x23f20039, 0x23f20037,
2510         0x22f20044, 0x22f20042, 0x22f20040, 0x22f2003e,
2511         0x22f2003c, 0x22f2003b, 0x22f20039, 0x22f20037,
2512         0x21f20044, 0x21f20042, 0x21f20040, 0x21f2003e,
2513         0x21f2003c, 0x21f2003b, 0x21f20039, 0x21f20037,
2514         0x20d20043, 0x20d20041, 0x20d2003e, 0x20d2003c,
2515         0x20d2003a, 0x20d20038, 0x20d20036, 0x20d20034,
2516 };
2517
2518 static const u32 b43_ntab_tx_gain_epa_rev4_hi_pwr_5g[] = {
2519         0x2ff10044, 0x2ff10042, 0x2ff10040, 0x2ff1003e,
2520         0x2ff1003c, 0x2ff1003b, 0x2ff10039, 0x2ff10037,
2521         0x2ef10044, 0x2ef10042, 0x2ef10040, 0x2ef1003e,
2522         0x2ef1003c, 0x2ef1003b, 0x2ef10039, 0x2ef10037,
2523         0x2df10044, 0x2df10042, 0x2df10040, 0x2df1003e,
2524         0x2df1003c, 0x2df1003b, 0x2df10039, 0x2df10037,
2525         0x2cf10044, 0x2cf10042, 0x2cf10040, 0x2cf1003e,
2526         0x2cf1003c, 0x2cf1003b, 0x2cf10039, 0x2cf10037,
2527         0x2bf10044, 0x2bf10042, 0x2bf10040, 0x2bf1003e,
2528         0x2bf1003c, 0x2bf1003b, 0x2bf10039, 0x2bf10037,
2529         0x2af10044, 0x2af10042, 0x2af10040, 0x2af1003e,
2530         0x2af1003c, 0x2af1003b, 0x2af10039, 0x2af10037,
2531         0x29f10044, 0x29f10042, 0x29f10040, 0x29f1003e,
2532         0x29f1003c, 0x29f1003b, 0x29f10039, 0x29f10037,
2533         0x28f10044, 0x28f10042, 0x28f10040, 0x28f1003e,
2534         0x28f1003c, 0x28f1003b, 0x28f10039, 0x28f10037,
2535         0x27f10044, 0x27f10042, 0x27f10040, 0x27f1003e,
2536         0x27f1003c, 0x27f1003b, 0x27f10039, 0x27f10037,
2537         0x26f10044, 0x26f10042, 0x26f10040, 0x26f1003e,
2538         0x26f1003c, 0x26f1003b, 0x26f10039, 0x26f10037,
2539         0x25f10044, 0x25f10042, 0x25f10040, 0x25f1003e,
2540         0x25f1003c, 0x25f1003b, 0x25f10039, 0x25f10037,
2541         0x24f10044, 0x24f10042, 0x24f10040, 0x24f1003e,
2542         0x24f1003c, 0x24f1003b, 0x24f10039, 0x24f10038,
2543         0x23f10041, 0x23f10040, 0x23f1003f, 0x23f1003e,
2544         0x23f1003c, 0x23f1003b, 0x23f10039, 0x23f10037,
2545         0x22f10044, 0x22f10042, 0x22f10040, 0x22f1003e,
2546         0x22f1003c, 0x22f1003b, 0x22f10039, 0x22f10037,
2547         0x21f10044, 0x21f10042, 0x21f10040, 0x21f1003e,
2548         0x21f1003c, 0x21f1003b, 0x21f10039, 0x21f10037,
2549         0x20d10043, 0x20d10041, 0x20d1003e, 0x20d1003c,
2550         0x20d1003a, 0x20d10038, 0x20d10036, 0x20d10034
2551 };
2552
2553 static const u32 b43_ntab_tx_gain_epa_rev5_5g[] = {
2554         0x0f62004a, 0x0f620048, 0x0f620046, 0x0f620044,
2555         0x0f620042, 0x0f620040, 0x0f62003e, 0x0f62003c,
2556         0x0e620044, 0x0e620042, 0x0e620040, 0x0e62003e,
2557         0x0e62003c, 0x0e62003d, 0x0e62003b, 0x0e62003a,
2558         0x0d620043, 0x0d620041, 0x0d620040, 0x0d62003e,
2559         0x0d62003d, 0x0d62003c, 0x0d62003b, 0x0d62003a,
2560         0x0c620041, 0x0c620040, 0x0c62003f, 0x0c62003e,
2561         0x0c62003c, 0x0c62003b, 0x0c620039, 0x0c620037,
2562         0x0b620046, 0x0b620044, 0x0b620042, 0x0b620040,
2563         0x0b62003e, 0x0b62003c, 0x0b62003b, 0x0b62003a,
2564         0x0a620041, 0x0a620040, 0x0a62003e, 0x0a62003c,
2565         0x0a62003b, 0x0a62003a, 0x0a620039, 0x0a620038,
2566         0x0962003e, 0x0962003d, 0x0962003c, 0x0962003b,
2567         0x09620039, 0x09620037, 0x09620035, 0x09620033,
2568         0x08620044, 0x08620042, 0x08620040, 0x0862003e,
2569         0x0862003c, 0x0862003b, 0x0862003a, 0x08620039,
2570         0x07620043, 0x07620042, 0x07620040, 0x0762003f,
2571         0x0762003d, 0x0762003b, 0x0762003a, 0x07620039,
2572         0x0662003e, 0x0662003d, 0x0662003c, 0x0662003b,
2573         0x06620039, 0x06620037, 0x06620035, 0x06620033,
2574         0x05620046, 0x05620044, 0x05620042, 0x05620040,
2575         0x0562003e, 0x0562003c, 0x0562003b, 0x05620039,
2576         0x04620044, 0x04620042, 0x04620040, 0x0462003e,
2577         0x0462003c, 0x0462003b, 0x04620039, 0x04620038,
2578         0x0362003c, 0x0362003b, 0x0362003a, 0x03620039,
2579         0x03620038, 0x03620037, 0x03620035, 0x03620033,
2580         0x0262004c, 0x0262004a, 0x02620048, 0x02620047,
2581         0x02620046, 0x02620044, 0x02620043, 0x02620042,
2582         0x0162004a, 0x01620048, 0x01620046, 0x01620044,
2583         0x01620043, 0x01620042, 0x01620041, 0x01620040,
2584         0x00620042, 0x00620040, 0x0062003e, 0x0062003c,
2585         0x0062003b, 0x00620039, 0x00620037, 0x00620035,
2586 };
2587
2588 /* IPA 2 GHz */
2589
2590 static const u32 b43_ntab_tx_gain_ipa_rev3_2g[] = {
2591         0x5ff7002d, 0x5ff7002b, 0x5ff7002a, 0x5ff70029,
2592         0x5ff70028, 0x5ff70027, 0x5ff70026, 0x5ff70025,
2593         0x5ef7002d, 0x5ef7002b, 0x5ef7002a, 0x5ef70029,
2594         0x5ef70028, 0x5ef70027, 0x5ef70026, 0x5ef70025,
2595         0x5df7002d, 0x5df7002b, 0x5df7002a, 0x5df70029,
2596         0x5df70028, 0x5df70027, 0x5df70026, 0x5df70025,
2597         0x5cf7002d, 0x5cf7002b, 0x5cf7002a, 0x5cf70029,
2598         0x5cf70028, 0x5cf70027, 0x5cf70026, 0x5cf70025,
2599         0x5bf7002d, 0x5bf7002b, 0x5bf7002a, 0x5bf70029,
2600         0x5bf70028, 0x5bf70027, 0x5bf70026, 0x5bf70025,
2601         0x5af7002d, 0x5af7002b, 0x5af7002a, 0x5af70029,
2602         0x5af70028, 0x5af70027, 0x5af70026, 0x5af70025,
2603         0x59f7002d, 0x59f7002b, 0x59f7002a, 0x59f70029,
2604         0x59f70028, 0x59f70027, 0x59f70026, 0x59f70025,
2605         0x58f7002d, 0x58f7002b, 0x58f7002a, 0x58f70029,
2606         0x58f70028, 0x58f70027, 0x58f70026, 0x58f70025,
2607         0x57f7002d, 0x57f7002b, 0x57f7002a, 0x57f70029,
2608         0x57f70028, 0x57f70027, 0x57f70026, 0x57f70025,
2609         0x56f7002d, 0x56f7002b, 0x56f7002a, 0x56f70029,
2610         0x56f70028, 0x56f70027, 0x56f70026, 0x56f70025,
2611         0x55f7002d, 0x55f7002b, 0x55f7002a, 0x55f70029,
2612         0x55f70028, 0x55f70027, 0x55f70026, 0x55f70025,
2613         0x54f7002d, 0x54f7002b, 0x54f7002a, 0x54f70029,
2614         0x54f70028, 0x54f70027, 0x54f70026, 0x54f70025,
2615         0x53f7002d, 0x53f7002b, 0x53f7002a, 0x53f70029,
2616         0x53f70028, 0x53f70027, 0x53f70026, 0x53f70025,
2617         0x52f7002d, 0x52f7002b, 0x52f7002a, 0x52f70029,
2618         0x52f70028, 0x52f70027, 0x52f70026, 0x52f70025,
2619         0x51f7002d, 0x51f7002b, 0x51f7002a, 0x51f70029,
2620         0x51f70028, 0x51f70027, 0x51f70026, 0x51f70025,
2621         0x50f7002d, 0x50f7002b, 0x50f7002a, 0x50f70029,
2622         0x50f70028, 0x50f70027, 0x50f70026, 0x50f70025,
2623 };
2624
2625 static const u32 b43_ntab_tx_gain_ipa_rev5_2g[] = {
2626         0x1ff7002d, 0x1ff7002b, 0x1ff7002a, 0x1ff70029,
2627         0x1ff70028, 0x1ff70027, 0x1ff70026, 0x1ff70025,
2628         0x1ef7002d, 0x1ef7002b, 0x1ef7002a, 0x1ef70029,
2629         0x1ef70028, 0x1ef70027, 0x1ef70026, 0x1ef70025,
2630         0x1df7002d, 0x1df7002b, 0x1df7002a, 0x1df70029,
2631         0x1df70028, 0x1df70027, 0x1df70026, 0x1df70025,
2632         0x1cf7002d, 0x1cf7002b, 0x1cf7002a, 0x1cf70029,
2633         0x1cf70028, 0x1cf70027, 0x1cf70026, 0x1cf70025,
2634         0x1bf7002d, 0x1bf7002b, 0x1bf7002a, 0x1bf70029,
2635         0x1bf70028, 0x1bf70027, 0x1bf70026, 0x1bf70025,
2636         0x1af7002d, 0x1af7002b, 0x1af7002a, 0x1af70029,
2637         0x1af70028, 0x1af70027, 0x1af70026, 0x1af70025,
2638         0x19f7002d, 0x19f7002b, 0x19f7002a, 0x19f70029,
2639         0x19f70028, 0x19f70027, 0x19f70026, 0x19f70025,
2640         0x18f7002d, 0x18f7002b, 0x18f7002a, 0x18f70029,
2641         0x18f70028, 0x18f70027, 0x18f70026, 0x18f70025,
2642         0x17f7002d, 0x17f7002b, 0x17f7002a, 0x17f70029,
2643         0x17f70028, 0x17f70027, 0x17f70026, 0x17f70025,
2644         0x16f7002d, 0x16f7002b, 0x16f7002a, 0x16f70029,
2645         0x16f70028, 0x16f70027, 0x16f70026, 0x16f70025,
2646         0x15f7002d, 0x15f7002b, 0x15f7002a, 0x15f70029,
2647         0x15f70028, 0x15f70027, 0x15f70026, 0x15f70025,
2648         0x14f7002d, 0x14f7002b, 0x14f7002a, 0x14f70029,
2649         0x14f70028, 0x14f70027, 0x14f70026, 0x14f70025,
2650         0x13f7002d, 0x13f7002b, 0x13f7002a, 0x13f70029,
2651         0x13f70028, 0x13f70027, 0x13f70026, 0x13f70025,
2652         0x12f7002d, 0x12f7002b, 0x12f7002a, 0x12f70029,
2653         0x12f70028, 0x12f70027, 0x12f70026, 0x12f70025,
2654         0x11f7002d, 0x11f7002b, 0x11f7002a, 0x11f70029,
2655         0x11f70028, 0x11f70027, 0x11f70026, 0x11f70025,
2656         0x10f7002d, 0x10f7002b, 0x10f7002a, 0x10f70029,
2657         0x10f70028, 0x10f70027, 0x10f70026, 0x10f70025,
2658 };
2659
2660 static const u32 b43_ntab_tx_gain_ipa_rev6_2g[] = {
2661         0x0ff7002d, 0x0ff7002b, 0x0ff7002a, 0x0ff70029,
2662         0x0ff70028, 0x0ff70027, 0x0ff70026, 0x0ff70025,
2663         0x0ef7002d, 0x0ef7002b, 0x0ef7002a, 0x0ef70029,
2664         0x0ef70028, 0x0ef70027, 0x0ef70026, 0x0ef70025,
2665         0x0df7002d, 0x0df7002b, 0x0df7002a, 0x0df70029,
2666         0x0df70028, 0x0df70027, 0x0df70026, 0x0df70025,
2667         0x0cf7002d, 0x0cf7002b, 0x0cf7002a, 0x0cf70029,
2668         0x0cf70028, 0x0cf70027, 0x0cf70026, 0x0cf70025,
2669         0x0bf7002d, 0x0bf7002b, 0x0bf7002a, 0x0bf70029,
2670         0x0bf70028, 0x0bf70027, 0x0bf70026, 0x0bf70025,
2671         0x0af7002d, 0x0af7002b, 0x0af7002a, 0x0af70029,
2672         0x0af70028, 0x0af70027, 0x0af70026, 0x0af70025,
2673         0x09f7002d, 0x09f7002b, 0x09f7002a, 0x09f70029,
2674         0x09f70028, 0x09f70027, 0x09f70026, 0x09f70025,
2675         0x08f7002d, 0x08f7002b, 0x08f7002a, 0x08f70029,
2676         0x08f70028, 0x08f70027, 0x08f70026, 0x08f70025,
2677         0x07f7002d, 0x07f7002b, 0x07f7002a, 0x07f70029,
2678         0x07f70028, 0x07f70027, 0x07f70026, 0x07f70025,
2679         0x06f7002d, 0x06f7002b, 0x06f7002a, 0x06f70029,
2680         0x06f70028, 0x06f70027, 0x06f70026, 0x06f70025,
2681         0x05f7002d, 0x05f7002b, 0x05f7002a, 0x05f70029,
2682         0x05f70028, 0x05f70027, 0x05f70026, 0x05f70025,
2683         0x04f7002d, 0x04f7002b, 0x04f7002a, 0x04f70029,
2684         0x04f70028, 0x04f70027, 0x04f70026, 0x04f70025,
2685         0x03f7002d, 0x03f7002b, 0x03f7002a, 0x03f70029,
2686         0x03f70028, 0x03f70027, 0x03f70026, 0x03f70025,
2687         0x02f7002d, 0x02f7002b, 0x02f7002a, 0x02f70029,
2688         0x02f70028, 0x02f70027, 0x02f70026, 0x02f70025,
2689         0x01f7002d, 0x01f7002b, 0x01f7002a, 0x01f70029,
2690         0x01f70028, 0x01f70027, 0x01f70026, 0x01f70025,
2691         0x00f7002d, 0x00f7002b, 0x00f7002a, 0x00f70029,
2692         0x00f70028, 0x00f70027, 0x00f70026, 0x00f70025,
2693 };
2694
2695 /* Copied from brcmsmac (5.75.11): nphy_tpc_txgain_ipa_2g_2057rev5 */
2696 static const u32 b43_ntab_tx_gain_ipa_2057_rev5_2g[] = {
2697         0x30ff0031, 0x30e70031, 0x30e7002e, 0x30cf002e,
2698         0x30bf002e, 0x30af002e, 0x309f002f, 0x307f0033,
2699         0x307f0031, 0x307f002e, 0x3077002e, 0x306f002e,
2700         0x3067002e, 0x305f002f, 0x30570030, 0x3057002d,
2701         0x304f002e, 0x30470031, 0x3047002e, 0x3047002c,
2702         0x30470029, 0x303f002c, 0x303f0029, 0x3037002d,
2703         0x3037002a, 0x30370028, 0x302f002c, 0x302f002a,
2704         0x302f0028, 0x302f0026, 0x3027002c, 0x30270029,
2705         0x30270027, 0x30270025, 0x30270023, 0x301f002c,
2706         0x301f002a, 0x301f0028, 0x301f0025, 0x301f0024,
2707         0x301f0022, 0x301f001f, 0x3017002d, 0x3017002b,
2708         0x30170028, 0x30170026, 0x30170024, 0x30170022,
2709         0x30170020, 0x3017001e, 0x3017001d, 0x3017001b,
2710         0x3017001a, 0x30170018, 0x30170017, 0x30170015,
2711         0x300f002c, 0x300f0029, 0x300f0027, 0x300f0024,
2712         0x300f0022, 0x300f0021, 0x300f001f, 0x300f001d,
2713         0x300f001b, 0x300f001a, 0x300f0018, 0x300f0017,
2714         0x300f0016, 0x300f0015, 0x300f0115, 0x300f0215,
2715         0x300f0315, 0x300f0415, 0x300f0515, 0x300f0615,
2716         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
2717         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
2718         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
2719         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
2720         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
2721         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
2722         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
2723         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
2724         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
2725         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
2726         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
2727         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
2728         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
2729 };
2730
2731 /* Extracted from MMIO dump of 6.30.223.141 */
2732 static const u32 b43_ntab_tx_gain_ipa_2057_rev9_2g[] = {
2733         0x60ff0031, 0x60e7002c, 0x60cf002a, 0x60c70029,
2734         0x60b70029, 0x60a70029, 0x609f002a, 0x6097002b,
2735         0x6087002e, 0x60770031, 0x606f0032, 0x60670034,
2736         0x60670031, 0x605f0033, 0x605f0031, 0x60570033,
2737         0x60570030, 0x6057002d, 0x6057002b, 0x604f002d,
2738         0x604f002b, 0x604f0029, 0x604f0026, 0x60470029,
2739         0x60470027, 0x603f0029, 0x603f0027, 0x603f0025,
2740         0x60370029, 0x60370027, 0x60370024, 0x602f002a,
2741         0x602f0028, 0x602f0026, 0x602f0024, 0x6027002a,
2742         0x60270028, 0x60270026, 0x60270024, 0x60270022,
2743         0x601f002b, 0x601f0029, 0x601f0027, 0x601f0024,
2744         0x601f0022, 0x601f0020, 0x601f001f, 0x601f001d,
2745         0x60170029, 0x60170027, 0x60170025, 0x60170023,
2746         0x60170021, 0x6017001f, 0x6017001d, 0x6017001c,
2747         0x6017001a, 0x60170018, 0x60170018, 0x60170016,
2748         0x60170015, 0x600f0029, 0x600f0027, 0x600f0025,
2749         0x600f0023, 0x600f0021, 0x600f001f, 0x600f001d,
2750         0x600f001c, 0x600f001a, 0x600f0019, 0x600f0018,
2751         0x600f0016, 0x600f0015, 0x600f0115, 0x600f0215,
2752         0x600f0315, 0x600f0415, 0x600f0515, 0x600f0615,
2753         0x600f0715, 0x600f0715, 0x600f0715, 0x600f0715,
2754         0x600f0715, 0x600f0715, 0x600f0715, 0x600f0715,
2755         0x600f0715, 0x600f0715, 0x600f0715, 0x600f0715,
2756         0x600f0715, 0x600f0715, 0x600f0715, 0x600f0715,
2757         0x600f0715, 0x600f0715, 0x600f0715, 0x600f0715,
2758         0x600f0715, 0x600f0715, 0x600f0715, 0x600f0715,
2759         0x600f0715, 0x600f0715, 0x600f0715, 0x600f0715,
2760         0x600f0715, 0x600f0715, 0x600f0715, 0x600f0715,
2761         0x600f0715, 0x600f0715, 0x600f0715, 0x600f0715,
2762         0x600f0715, 0x600f0715, 0x600f0715, 0x600f0715,
2763         0x600f0715, 0x600f0715, 0x600f0715, 0x600f0715,
2764         0x600f0715, 0x600f0715, 0x600f0715, 0x600f0715,
2765 };
2766
2767 /* Extracted from MMIO dump of 6.30.223.248 */
2768 static const u32 b43_ntab_tx_gain_ipa_2057_rev14_2g[] = {
2769         0x50df002e, 0x50cf002d, 0x50bf002c, 0x50b7002b,
2770         0x50af002a, 0x50a70029, 0x509f0029, 0x50970028,
2771         0x508f0027, 0x50870027, 0x507f0027, 0x50770027,
2772         0x506f0027, 0x50670027, 0x505f0028, 0x50570029,
2773         0x504f002b, 0x5047002e, 0x5047002b, 0x50470029,
2774         0x503f002c, 0x503f0029, 0x5037002c, 0x5037002a,
2775         0x50370028, 0x502f002d, 0x502f002b, 0x502f0028,
2776         0x502f0026, 0x5027002d, 0x5027002a, 0x50270028,
2777         0x50270026, 0x50270024, 0x501f002e, 0x501f002b,
2778         0x501f0029, 0x501f0027, 0x501f0024, 0x501f0022,
2779         0x501f0020, 0x501f001f, 0x5017002c, 0x50170029,
2780         0x50170027, 0x50170024, 0x50170022, 0x50170021,
2781         0x5017001f, 0x5017001d, 0x5017001b, 0x5017001a,
2782         0x50170018, 0x50170017, 0x50170015, 0x500f002c,
2783         0x500f002a, 0x500f0027, 0x500f0025, 0x500f0023,
2784         0x500f0022, 0x500f001f, 0x500f001e, 0x500f001c,
2785         0x500f001a, 0x500f0019, 0x500f0018, 0x500f0016,
2786         0x500f0015, 0x500f0015, 0x500f0015, 0x500f0015,
2787         0x500f0015, 0x500f0015, 0x500f0015, 0x500f0015,
2788         0x500f0015, 0x500f0015, 0x500f0015, 0x500f0015,
2789         0x500f0015, 0x500f0015, 0x500f0015, 0x500f0015,
2790         0x500f0015, 0x500f0015, 0x500f0015, 0x500f0015,
2791         0x500f0015, 0x500f0015, 0x500f0015, 0x500f0015,
2792         0x500f0015, 0x500f0015, 0x500f0015, 0x500f0015,
2793         0x500f0015, 0x500f0015, 0x500f0015, 0x500f0015,
2794         0x500f0015, 0x500f0015, 0x500f0015, 0x500f0015,
2795         0x500f0015, 0x500f0015, 0x500f0015, 0x500f0015,
2796         0x500f0015, 0x500f0015, 0x500f0015, 0x500f0015,
2797         0x500f0015, 0x500f0015, 0x500f0015, 0x500f0015,
2798         0x500f0015, 0x500f0015, 0x500f0015, 0x500f0015,
2799         0x500f0015, 0x500f0015, 0x500f0015, 0x500f0015,
2800         0x500f0015, 0x500f0015, 0x500f0015, 0x500f0015,
2801 };
2802
2803 /* IPA 2 5Hz */
2804
2805 static const u32 b43_ntab_tx_gain_ipa_rev3_5g[] = {
2806         0x7ff70035, 0x7ff70033, 0x7ff70032, 0x7ff70031,
2807         0x7ff7002f, 0x7ff7002e, 0x7ff7002d, 0x7ff7002b,
2808         0x7ff7002a, 0x7ff70029, 0x7ff70028, 0x7ff70027,
2809         0x7ff70026, 0x7ff70024, 0x7ff70023, 0x7ff70022,
2810         0x7ef70028, 0x7ef70027, 0x7ef70026, 0x7ef70025,
2811         0x7ef70024, 0x7ef70023, 0x7df70028, 0x7df70027,
2812         0x7df70026, 0x7df70025, 0x7df70024, 0x7df70023,
2813         0x7df70022, 0x7cf70029, 0x7cf70028, 0x7cf70027,
2814         0x7cf70026, 0x7cf70025, 0x7cf70023, 0x7cf70022,
2815         0x7bf70029, 0x7bf70028, 0x7bf70026, 0x7bf70025,
2816         0x7bf70024, 0x7bf70023, 0x7bf70022, 0x7bf70021,
2817         0x7af70029, 0x7af70028, 0x7af70027, 0x7af70026,
2818         0x7af70025, 0x7af70024, 0x7af70023, 0x7af70022,
2819         0x79f70029, 0x79f70028, 0x79f70027, 0x79f70026,
2820         0x79f70025, 0x79f70024, 0x79f70023, 0x79f70022,
2821         0x78f70029, 0x78f70028, 0x78f70027, 0x78f70026,
2822         0x78f70025, 0x78f70024, 0x78f70023, 0x78f70022,
2823         0x77f70029, 0x77f70028, 0x77f70027, 0x77f70026,
2824         0x77f70025, 0x77f70024, 0x77f70023, 0x77f70022,
2825         0x76f70029, 0x76f70028, 0x76f70027, 0x76f70026,
2826         0x76f70024, 0x76f70023, 0x76f70022, 0x76f70021,
2827         0x75f70029, 0x75f70028, 0x75f70027, 0x75f70026,
2828         0x75f70025, 0x75f70024, 0x75f70023, 0x74f70029,
2829         0x74f70028, 0x74f70026, 0x74f70025, 0x74f70024,
2830         0x74f70023, 0x74f70022, 0x73f70029, 0x73f70027,
2831         0x73f70026, 0x73f70025, 0x73f70024, 0x73f70023,
2832         0x73f70022, 0x72f70028, 0x72f70027, 0x72f70026,
2833         0x72f70025, 0x72f70024, 0x72f70023, 0x72f70022,
2834         0x71f70028, 0x71f70027, 0x71f70026, 0x71f70025,
2835         0x71f70024, 0x71f70023, 0x70f70028, 0x70f70027,
2836         0x70f70026, 0x70f70024, 0x70f70023, 0x70f70022,
2837         0x70f70021, 0x70f70020, 0x70f70020, 0x70f7001f,
2838 };
2839
2840 /* Extracted from MMIO dump of 6.30.223.141 */
2841 static const u32 b43_ntab_tx_gain_ipa_2057_rev9_5g[] = {
2842         0x7f7f0053, 0x7f7f004b, 0x7f7f0044, 0x7f7f003f,
2843         0x7f7f0039, 0x7f7f0035, 0x7f7f0032, 0x7f7f0030,
2844         0x7f7f002d, 0x7e7f0030, 0x7e7f002d, 0x7d7f0032,
2845         0x7d7f002f, 0x7d7f002c, 0x7c7f0032, 0x7c7f0030,
2846         0x7c7f002d, 0x7b7f0030, 0x7b7f002e, 0x7b7f002b,
2847         0x7a7f0032, 0x7a7f0030, 0x7a7f002d, 0x7a7f002b,
2848         0x797f0030, 0x797f002e, 0x797f002b, 0x797f0029,
2849         0x787f0030, 0x787f002d, 0x787f002b, 0x777f0032,
2850         0x777f0030, 0x777f002d, 0x777f002b, 0x767f0031,
2851         0x767f002f, 0x767f002c, 0x767f002a, 0x757f0031,
2852         0x757f002f, 0x757f002c, 0x757f002a, 0x747f0030,
2853         0x747f002d, 0x747f002b, 0x737f0032, 0x737f002f,
2854         0x737f002c, 0x737f002a, 0x727f0030, 0x727f002d,
2855         0x727f002b, 0x727f0029, 0x717f0030, 0x717f002d,
2856         0x717f002b, 0x707f0031, 0x707f002f, 0x707f002c,
2857         0x707f002a, 0x707f0027, 0x707f0025, 0x707f0023,
2858         0x707f0021, 0x707f001f, 0x707f001d, 0x707f001c,
2859         0x707f001a, 0x707f0019, 0x707f0017, 0x707f0016,
2860         0x707f0015, 0x707f0014, 0x707f0012, 0x707f0012,
2861         0x707f0011, 0x707f0010, 0x707f000f, 0x707f000e,
2862         0x707f000d, 0x707f000d, 0x707f000c, 0x707f000b,
2863         0x707f000a, 0x707f000a, 0x707f0009, 0x707f0008,
2864         0x707f0008, 0x707f0008, 0x707f0008, 0x707f0007,
2865         0x707f0007, 0x707f0006, 0x707f0006, 0x707f0006,
2866         0x707f0005, 0x707f0005, 0x707f0005, 0x707f0004,
2867         0x707f0004, 0x707f0004, 0x707f0003, 0x707f0003,
2868         0x707f0003, 0x707f0003, 0x707f0003, 0x707f0003,
2869         0x707f0003, 0x707f0003, 0x707f0003, 0x707f0003,
2870         0x707f0002, 0x707f0002, 0x707f0002, 0x707f0002,
2871         0x707f0002, 0x707f0002, 0x707f0002, 0x707f0002,
2872         0x707f0002, 0x707f0001, 0x707f0001, 0x707f0001,
2873         0x707f0001, 0x707f0001, 0x707f0001, 0x707f0001,
2874 };
2875
2876 const s8 b43_ntab_papd_pga_gain_delta_ipa_2g[] = {
2877         -114, -108, -98, -91, -84, -78, -70, -62,
2878         -54, -46, -39, -31, -23, -15, -8, 0
2879 };
2880
2881 /* Extracted from MMIO dump of 6.30.223.248
2882  * Entries: 0, 15, 17, 21, 24, 26, 27, 29, 30 were guessed
2883  */
2884 static const s16 b43_ntab_rf_pwr_offset_2057_rev9_2g[] = {
2885         -133, -133, -107, -92, -81,
2886         -73, -66, -61, -56, -52,
2887         -48, -44, -41, -37, -34,
2888         -31, -28, -25, -22, -19,
2889         -17, -14, -12, -10, -9,
2890         -7, -5, -4, -3, -2,
2891         -1, 0,
2892 };
2893
2894 /* Extracted from MMIO dump of 6.30.223.248 */
2895 static const s16 b43_ntab_rf_pwr_offset_2057_rev9_5g[] = {
2896         -101, -94, -86, -79, -72,
2897         -65, -57, -50, -42, -35,
2898         -28, -21, -16, -9, -4,
2899         0,
2900 };
2901
2902 /* Extracted from MMIO dump of 6.30.223.248
2903  * Entries: 0, 26, 28, 29, 30, 31 were guessed
2904  */
2905 static const s16 b43_ntab_rf_pwr_offset_2057_rev14_2g[] = {
2906         -111, -111, -111, -84, -70,
2907         -59, -52, -45, -40, -36,
2908         -32, -29, -26, -23, -21,
2909         -18, -16, -15, -13, -11,
2910         -10, -8, -7, -6, -5,
2911         -4, -4, -3, -3, -2,
2912         -2, -1,
2913 };
2914
2915 const u16 tbl_iqcal_gainparams[2][9][8] = {
2916         {
2917                 { 0x000, 0, 0, 2, 0x69, 0x69, 0x69, 0x69 },
2918                 { 0x700, 7, 0, 0, 0x69, 0x69, 0x69, 0x69 },
2919                 { 0x710, 7, 1, 0, 0x68, 0x68, 0x68, 0x68 },
2920                 { 0x720, 7, 2, 0, 0x67, 0x67, 0x67, 0x67 },
2921                 { 0x730, 7, 3, 0, 0x66, 0x66, 0x66, 0x66 },
2922                 { 0x740, 7, 4, 0, 0x65, 0x65, 0x65, 0x65 },
2923                 { 0x741, 7, 4, 1, 0x65, 0x65, 0x65, 0x65 },
2924                 { 0x742, 7, 4, 2, 0x65, 0x65, 0x65, 0x65 },
2925                 { 0x743, 7, 4, 3, 0x65, 0x65, 0x65, 0x65 }
2926         },
2927         {
2928                 { 0x000, 7, 0, 0, 0x79, 0x79, 0x79, 0x79 },
2929                 { 0x700, 7, 0, 0, 0x79, 0x79, 0x79, 0x79 },
2930                 { 0x710, 7, 1, 0, 0x79, 0x79, 0x79, 0x79 },
2931                 { 0x720, 7, 2, 0, 0x78, 0x78, 0x78, 0x78 },
2932                 { 0x730, 7, 3, 0, 0x78, 0x78, 0x78, 0x78 },
2933                 { 0x740, 7, 4, 0, 0x78, 0x78, 0x78, 0x78 },
2934                 { 0x741, 7, 4, 1, 0x78, 0x78, 0x78, 0x78 },
2935                 { 0x742, 7, 4, 2, 0x78, 0x78, 0x78, 0x78 },
2936                 { 0x743, 7, 4, 3, 0x78, 0x78, 0x78, 0x78 }
2937         }
2938 };
2939
2940 const struct nphy_txiqcal_ladder ladder_lo[] = {
2941         { 3, 0 },
2942         { 4, 0 },
2943         { 6, 0 },
2944         { 9, 0 },
2945         { 13, 0 },
2946         { 18, 0 },
2947         { 25, 0 },
2948         { 25, 1 },
2949         { 25, 2 },
2950         { 25, 3 },
2951         { 25, 4 },
2952         { 25, 5 },
2953         { 25, 6 },
2954         { 25, 7 },
2955         { 35, 7 },
2956         { 50, 7 },
2957         { 71, 7 },
2958         { 100, 7 }
2959 };
2960
2961 const struct nphy_txiqcal_ladder ladder_iq[] = {
2962         { 3, 0 },
2963         { 4, 0 },
2964         { 6, 0 },
2965         { 9, 0 },
2966         { 13, 0 },
2967         { 18, 0 },
2968         { 25, 0 },
2969         { 35, 0 },
2970         { 50, 0 },
2971         { 71, 0 },
2972         { 100, 0 },
2973         { 100, 1 },
2974         { 100, 2 },
2975         { 100, 3 },
2976         { 100, 4 },
2977         { 100, 5 },
2978         { 100, 6 },
2979         { 100, 7 }
2980 };
2981
2982 const u16 loscale[] = {
2983         256, 256, 271, 271,
2984         287, 256, 256, 271,
2985         271, 287, 287, 304,
2986         304, 256, 256, 271,
2987         271, 287, 287, 304,
2988         304, 322, 322, 341,
2989         341, 362, 362, 383,
2990         383, 256, 256, 271,
2991         271, 287, 287, 304,
2992         304, 322, 322, 256,
2993         256, 271, 271, 287,
2994         287, 304, 304, 322,
2995         322, 341, 341, 362,
2996         362, 256, 256, 271,
2997         271, 287, 287, 304,
2998         304, 322, 322, 256,
2999         256, 271, 271, 287,
3000         287, 304, 304, 322,
3001         322, 341, 341, 362,
3002         362, 256, 256, 271,
3003         271, 287, 287, 304,
3004         304, 322, 322, 341,
3005         341, 362, 362, 383,
3006         383, 406, 406, 430,
3007         430, 455, 455, 482,
3008         482, 511, 511, 541,
3009         541, 573, 573, 607,
3010         607, 643, 643, 681,
3011         681, 722, 722, 764,
3012         764, 810, 810, 858,
3013         858, 908, 908, 962,
3014         962, 1019, 1019, 256
3015 };
3016
3017 const u16 tbl_tx_iqlo_cal_loft_ladder_40[] = {
3018         0x0200, 0x0300, 0x0400, 0x0700,
3019         0x0900, 0x0c00, 0x1200, 0x1201,
3020         0x1202, 0x1203, 0x1204, 0x1205,
3021         0x1206, 0x1207, 0x1907, 0x2307,
3022         0x3207, 0x4707
3023 };
3024
3025 const u16 tbl_tx_iqlo_cal_loft_ladder_20[] = {
3026         0x0300, 0x0500, 0x0700, 0x0900,
3027         0x0d00, 0x1100, 0x1900, 0x1901,
3028         0x1902, 0x1903, 0x1904, 0x1905,
3029         0x1906, 0x1907, 0x2407, 0x3207,
3030         0x4607, 0x6407
3031 };
3032
3033 const u16 tbl_tx_iqlo_cal_iqimb_ladder_40[] = {
3034         0x0100, 0x0200, 0x0400, 0x0700,
3035         0x0900, 0x0c00, 0x1200, 0x1900,
3036         0x2300, 0x3200, 0x4700, 0x4701,
3037         0x4702, 0x4703, 0x4704, 0x4705,
3038         0x4706, 0x4707
3039 };
3040
3041 const u16 tbl_tx_iqlo_cal_iqimb_ladder_20[] = {
3042         0x0200, 0x0300, 0x0600, 0x0900,
3043         0x0d00, 0x1100, 0x1900, 0x2400,
3044         0x3200, 0x4600, 0x6400, 0x6401,
3045         0x6402, 0x6403, 0x6404, 0x6405,
3046         0x6406, 0x6407
3047 };
3048
3049 const u16 tbl_tx_iqlo_cal_startcoefs_nphyrev3[B43_NTAB_TX_IQLO_CAL_STARTCOEFS_REV3] = { };
3050
3051 const u16 tbl_tx_iqlo_cal_startcoefs[B43_NTAB_TX_IQLO_CAL_STARTCOEFS] = { };
3052
3053 const u16 tbl_tx_iqlo_cal_cmds_recal_nphyrev3[] = {
3054         0x8423, 0x8323, 0x8073, 0x8256,
3055         0x8045, 0x8223, 0x9423, 0x9323,
3056         0x9073, 0x9256, 0x9045, 0x9223
3057 };
3058
3059 const u16 tbl_tx_iqlo_cal_cmds_recal[] = {
3060         0x8101, 0x8253, 0x8053, 0x8234,
3061         0x8034, 0x9101, 0x9253, 0x9053,
3062         0x9234, 0x9034
3063 };
3064
3065 const u16 tbl_tx_iqlo_cal_cmds_fullcal[] = {
3066         0x8123, 0x8264, 0x8086, 0x8245,
3067         0x8056, 0x9123, 0x9264, 0x9086,
3068         0x9245, 0x9056
3069 };
3070
3071 const u16 tbl_tx_iqlo_cal_cmds_fullcal_nphyrev3[] = {
3072         0x8434, 0x8334, 0x8084, 0x8267,
3073         0x8056, 0x8234, 0x9434, 0x9334,
3074         0x9084, 0x9267, 0x9056, 0x9234
3075 };
3076
3077 const s16 tbl_tx_filter_coef_rev4[7][15] = {
3078         {  -377,   137,  -407,   208, -1527,
3079             956,    93,   186,    93,   230,
3080             -44,   230,   201,  -191,   201 },
3081         {   -77,    20,   -98,    49,   -93,
3082              60,    56,   111,    56,    26,
3083              -5,    26,    34,   -32,    34 },
3084         {  -360,   164,  -376,   164, -1533,
3085             576,   308,  -314,   308,   121,
3086             -73,   121,    91,   124,    91 },
3087         {  -295,   200,  -363,   142, -1391,
3088             826,   151,   301,   151,   151,
3089             301,   151,   602,  -752,   602 },
3090         {   -92,    58,   -96,    49,  -104,
3091              44,    17,    35,    17,    12,
3092              25,    12,    13,    27,    13 },
3093         {  -375,   136,  -399,   209, -1479,
3094             949,   130,   260,   130,   230,
3095             -44,   230,   201,  -191,   201 },
3096         { 0xed9,  0xc8, 0xe95,  0x8e, 0xa91,
3097           0x33a,  0x97, 0x12d,  0x97,  0x97,
3098           0x12d,  0x97, 0x25a, 0xd10, 0x25a }
3099 };
3100
3101 /* addr0,  addr1,  bmask,  shift */
3102 const struct nphy_rf_control_override_rev2 tbl_rf_control_override_rev2[] = {
3103         { 0x78, 0x78, 0x0038,  3 }, /* for field == 0x0002 (fls == 2) */
3104         { 0x7A, 0x7D, 0x0001,  0 }, /* for field == 0x0004 (fls == 3) */
3105         { 0x7A, 0x7D, 0x0002,  1 }, /* for field == 0x0008 (fls == 4) */
3106         { 0x7A, 0x7D, 0x0004,  2 }, /* for field == 0x0010 (fls == 5) */
3107         { 0x7A, 0x7D, 0x0030,  4 }, /* for field == 0x0020 (fls == 6) */
3108         { 0x7A, 0x7D, 0x00C0,  6 }, /* for field == 0x0040 (fls == 7) */
3109         { 0x7A, 0x7D, 0x0100,  8 }, /* for field == 0x0080 (fls == 8) */
3110         { 0x7A, 0x7D, 0x0200,  9 }, /* for field == 0x0100 (fls == 9) */
3111         { 0x78, 0x78, 0x0004,  2 }, /* for field == 0x0200 (fls == 10) */
3112         { 0x7B, 0x7E, 0x01FF,  0 }, /* for field == 0x0400 (fls == 11) */
3113         { 0x7C, 0x7F, 0x01FF,  0 }, /* for field == 0x0800 (fls == 12) */
3114         { 0x78, 0x78, 0x0100,  8 }, /* for field == 0x1000 (fls == 13) */
3115         { 0x78, 0x78, 0x0200,  9 }, /* for field == 0x2000 (fls == 14) */
3116         { 0x78, 0x78, 0xF000, 12 }  /* for field == 0x4000 (fls == 15) */
3117 };
3118
3119 /* val_mask, val_shift, en_addr0, val_addr0, en_addr1, val_addr1 */
3120 const struct nphy_rf_control_override_rev3 tbl_rf_control_override_rev3[] = {
3121         { 0x8000, 15, 0xE5, 0xF9, 0xE6, 0xFB }, /* field == 0x0001 (fls 1) */
3122         { 0x0001,  0, 0xE7, 0x7A, 0xEC, 0x7D }, /* field == 0x0002 (fls 2) */
3123         { 0x0002,  1, 0xE7, 0x7A, 0xEC, 0x7D }, /* field == 0x0004 (fls 3) */
3124         { 0x0004,  2, 0xE7, 0x7A, 0xEC, 0x7D }, /* field == 0x0008 (fls 4) */
3125         { 0x0010,  4, 0xE7, 0x7A, 0xEC, 0x7D }, /* field == 0x0010 (fls 5) */
3126         { 0x0020,  5, 0xE7, 0x7A, 0xEC, 0x7D }, /* field == 0x0020 (fls 6) */
3127         { 0x0040,  6, 0xE7, 0x7A, 0xEC, 0x7D }, /* field == 0x0040 (fls 7) */
3128         { 0x0080,  7, 0xE7, 0x7A, 0xEC, 0x7D }, /* field == 0x0080 (fls 8) */
3129         { 0x0100,  8, 0xE7, 0x7A, 0xEC, 0x7D }, /* field == 0x0100 (fls 9) */
3130         { 0x0007,  0, 0xE7, 0xF8, 0xEC, 0xFA }, /* field == 0x0200 (fls 10) */
3131         { 0x0070,  4, 0xE7, 0xF8, 0xEC, 0xFA }, /* field == 0x0400 (fls 11) */
3132         { 0xE000, 13, 0xE7, 0x7A, 0xEC, 0x7D }, /* field == 0x0800 (fls 12) */
3133         { 0xFFFF,  0, 0xE7, 0x7B, 0xEC, 0x7E }, /* field == 0x1000 (fls 13) */
3134         { 0xFFFF,  0, 0xE7, 0x7C, 0xEC, 0x7F }, /* field == 0x2000 (fls 14) */
3135         { 0x00C0,  6, 0xE7, 0xF9, 0xEC, 0xFB }  /* field == 0x4000 (fls 15) */
3136 };
3137
3138 /* field, val_addr_core0, val_addr_core1, val_mask, val_shift */
3139 static const struct nphy_rf_control_override_rev7
3140                         tbl_rf_control_override_rev7_over0[] = {
3141         { 0x0004, 0x07A, 0x07D, 0x0002, 1 },
3142         { 0x0008, 0x07A, 0x07D, 0x0004, 2 },
3143         { 0x0010, 0x07A, 0x07D, 0x0010, 4 },
3144         { 0x0020, 0x07A, 0x07D, 0x0020, 5 },
3145         { 0x0040, 0x07A, 0x07D, 0x0040, 6 },
3146         { 0x0080, 0x07A, 0x07D, 0x0080, 7 },
3147         { 0x0400, 0x0F8, 0x0FA, 0x0070, 4 },
3148         { 0x0800, 0x07B, 0x07E, 0xFFFF, 0 },
3149         { 0x1000, 0x07C, 0x07F, 0xFFFF, 0 },
3150         { 0x6000, 0x348, 0x349, 0x00FF, 0 },
3151         { 0x2000, 0x348, 0x349, 0x000F, 0 },
3152 };
3153
3154 /* field, val_addr_core0, val_addr_core1, val_mask, val_shift */
3155 static const struct nphy_rf_control_override_rev7
3156                         tbl_rf_control_override_rev7_over1[] = {
3157         { 0x0002, 0x340, 0x341, 0x0002, 1 },
3158         { 0x0008, 0x340, 0x341, 0x0008, 3 },
3159         { 0x0020, 0x340, 0x341, 0x0020, 5 },
3160         { 0x0010, 0x340, 0x341, 0x0010, 4 },
3161         { 0x0004, 0x340, 0x341, 0x0004, 2 },
3162         { 0x0080, 0x340, 0x341, 0x0700, 8 },
3163         { 0x0800, 0x340, 0x341, 0x4000, 14 },
3164         { 0x0400, 0x340, 0x341, 0x2000, 13 },
3165         { 0x0200, 0x340, 0x341, 0x0800, 12 },
3166         { 0x0100, 0x340, 0x341, 0x0100, 11 },
3167         { 0x0040, 0x340, 0x341, 0x0040, 6 },
3168         { 0x0001, 0x340, 0x341, 0x0001, 0 },
3169 };
3170
3171 /* field, val_addr_core0, val_addr_core1, val_mask, val_shift */
3172 static const struct nphy_rf_control_override_rev7
3173                         tbl_rf_control_override_rev7_over2[] = {
3174         { 0x0008, 0x344, 0x345, 0x0008, 3 },
3175         { 0x0002, 0x344, 0x345, 0x0002, 1 },
3176         { 0x0001, 0x344, 0x345, 0x0001, 0 },
3177         { 0x0004, 0x344, 0x345, 0x0004, 2 },
3178         { 0x0010, 0x344, 0x345, 0x0010, 4 },
3179 };
3180
3181 static struct nphy_gain_ctl_workaround_entry nphy_gain_ctl_wa_phy6_radio11_ghz2 = {
3182         { 10, 14, 19, 27 },
3183         { -5, 6, 10, 15 },
3184         { 0xA, 0xA, 0xA, 0xA, 0xA, 0xA, 0xA, 0xA, 0xA, 0xA },
3185         { 3, 3, 3, 3, 3, 3, 3, 3, 3, 3 },
3186         0x427E,
3187         { 0x413F, 0x413F, 0x413F, 0x413F },
3188         0x007E, 0x0066, 0x1074,
3189         0x18, 0x18, 0x18,
3190         0x01D0, 0x5,
3191 };
3192 static struct nphy_gain_ctl_workaround_entry nphy_gain_ctl_workaround[2][4] = {
3193         { /* 2GHz */
3194                 { /* PHY rev 3 */
3195                         { 7, 11, 16, 23 },
3196                         { -5, 6, 10, 14 },
3197                         { 0xA, 0xA, 0xA, 0xA, 0xA, 0xA, 0xA, 0xA, 0xA, 0xA },
3198                         { 3, 3, 3, 3, 3, 3, 3, 3, 3, 3 },
3199                         0x627E,
3200                         { 0x613F, 0x613F, 0x613F, 0x613F },
3201                         0x107E, 0x0066, 0x0074,
3202                         0x18, 0x18, 0x18,
3203                         0x020D, 0x5,
3204                 },
3205                 { /* PHY rev 4 */
3206                         { 8, 12, 17, 25 },
3207                         { -5, 6, 10, 14 },
3208                         { 0xA, 0xA, 0xA, 0xA, 0xA, 0xA, 0xA, 0xA, 0xA, 0xA },
3209                         { 3, 3, 3, 3, 3, 3, 3, 3, 3, 3 },
3210                         0x527E,
3211                         { 0x513F, 0x513F, 0x513F, 0x513F },
3212                         0x007E, 0x0066, 0x0074,
3213                         0x18, 0x18, 0x18,
3214                         0x01A1, 0x5,
3215                 },
3216                 { /* PHY rev 5 */
3217                         { 9, 13, 18, 26 },
3218                         { -3, 7, 11, 16 },
3219                         { 0xA, 0xA, 0xA, 0xA, 0xA, 0xA, 0xA, 0xA, 0xA, 0xA },
3220                         { 3, 3, 3, 3, 3, 3, 3, 3, 3, 3 },
3221                         0x427E, /* invalid for external LNA! */
3222                         { 0x413F, 0x413F, 0x413F, 0x413F }, /* invalid for external LNA! */
3223                         0x1076, 0x0066, 0x0000, /* low is invalid (the last one) */
3224                         0x18, 0x18, 0x18,
3225                         0x01D0, 0x9,
3226                 },
3227                 { /* PHY rev 6+ */
3228                         { 8, 13, 18, 25 },
3229                         { -5, 6, 10, 14 },
3230                         { 0xA, 0xA, 0xA, 0xA, 0xA, 0xA, 0xA, 0xA, 0xA, 0xA },
3231                         { 3, 3, 3, 3, 3, 3, 3, 3, 3, 3 },
3232                         0x527E, /* invalid for external LNA! */
3233                         { 0x513F, 0x513F, 0x513F, 0x513F }, /* invalid for external LNA! */
3234                         0x007E, 0x0066, 0x0000, /* low is invalid (the last one) */
3235                         0x18, 0x18, 0x18,
3236                         0x01D0, 0x5,
3237                 },
3238         },
3239         { /* 5GHz */
3240                 { /* PHY rev 3 */
3241                         { 7, 11, 17, 23 },
3242                         { -6, 2, 6, 10 },
3243                         { 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13 },
3244                         { 6, 6, 6, 6, 6, 6, 6, 6, 6, 6 },
3245                         0x52DE,
3246                         { 0x516F, 0x516F, 0x516F, 0x516F },
3247                         0x00DE, 0x00CA, 0x00CC,
3248                         0x1E, 0x1E, 0x1E,
3249                         0x01A1, 25,
3250                 },
3251                 { /* PHY rev 4 */
3252                         { 8, 12, 18, 23 },
3253                         { -5, 2, 6, 10 },
3254                         { 0xD, 0xD, 0xD, 0xD, 0xD, 0xD, 0xD, 0xD, 0xD, 0xD },
3255                         { 4, 4, 4, 4, 4, 4, 4, 4, 4, 4 },
3256                         0x629E,
3257                         { 0x614F, 0x614F, 0x614F, 0x614F },
3258                         0x029E, 0x1084, 0x0086,
3259                         0x24, 0x24, 0x24,
3260                         0x0107, 25,
3261                 },
3262                 { /* PHY rev 5 */
3263                         { 6, 10, 16, 21 },
3264                         { -7, 0, 4, 8 },
3265                         { 0xD, 0xD, 0xD, 0xD, 0xD, 0xD, 0xD, 0xD, 0xD, 0xD },
3266                         { 4, 4, 4, 4, 4, 4, 4, 4, 4, 4 },
3267                         0x729E,
3268                         { 0x714F, 0x714F, 0x714F, 0x714F },
3269                         0x029E, 0x2084, 0x2086,
3270                         0x24, 0x24, 0x24,
3271                         0x00A9, 25,
3272                 },
3273                 { /* PHY rev 6+ */
3274                         { 6, 10, 16, 21 },
3275                         { -7, 0, 4, 8 },
3276                         { 0xD, 0xD, 0xD, 0xD, 0xD, 0xD, 0xD, 0xD, 0xD, 0xD },
3277                         { 4, 4, 4, 4, 4, 4, 4, 4, 4, 4 },
3278                         0x729E,
3279                         { 0x714F, 0x714F, 0x714F, 0x714F },
3280                         0x029E, 0x2084, 0x2086,
3281                         0x24, 0x24, 0x24, /* low is invalid for radio rev 11! */
3282                         0x00F0, 25,
3283                 },
3284         },
3285 };
3286
3287 static inline void assert_ntab_array_sizes(void)
3288 {
3289 #undef check
3290 #define check(table, size)      \
3291         BUILD_BUG_ON(ARRAY_SIZE(b43_ntab_##table) != B43_NTAB_##size##_SIZE)
3292
3293         check(adjustpower0, C0_ADJPLT);
3294         check(adjustpower1, C1_ADJPLT);
3295         check(bdi, BDI);
3296         check(channelest, CHANEST);
3297         check(estimatepowerlt0, C0_ESTPLT);
3298         check(estimatepowerlt1, C1_ESTPLT);
3299         check(framelookup, FRAMELT);
3300         check(framestruct, FRAMESTRUCT);
3301         check(gainctl0, C0_GAINCTL);
3302         check(gainctl1, C1_GAINCTL);
3303         check(intlevel, INTLEVEL);
3304         check(iqlt0, C0_IQLT);
3305         check(iqlt1, C1_IQLT);
3306         check(loftlt0, C0_LOFEEDTH);
3307         check(loftlt1, C1_LOFEEDTH);
3308         check(mcs, MCS);
3309         check(noisevar10, NOISEVAR10);
3310         check(noisevar11, NOISEVAR11);
3311         check(pilot, PILOT);
3312         check(pilotlt, PILOTLT);
3313         check(tdi20a0, TDI20A0);
3314         check(tdi20a1, TDI20A1);
3315         check(tdi40a0, TDI40A0);
3316         check(tdi40a1, TDI40A1);
3317         check(tdtrn, TDTRN);
3318         check(tmap, TMAP);
3319
3320 #undef check
3321 }
3322
3323 u32 b43_ntab_read(struct b43_wldev *dev, u32 offset)
3324 {
3325         u32 type, value;
3326
3327         type = offset & B43_NTAB_TYPEMASK;
3328         offset &= ~B43_NTAB_TYPEMASK;
3329         B43_WARN_ON(offset > 0xFFFF);
3330
3331         switch (type) {
3332         case B43_NTAB_8BIT:
3333                 b43_phy_write(dev, B43_NPHY_TABLE_ADDR, offset);
3334                 value = b43_phy_read(dev, B43_NPHY_TABLE_DATALO) & 0xFF;
3335                 break;
3336         case B43_NTAB_16BIT:
3337                 b43_phy_write(dev, B43_NPHY_TABLE_ADDR, offset);
3338                 value = b43_phy_read(dev, B43_NPHY_TABLE_DATALO);
3339                 break;
3340         case B43_NTAB_32BIT:
3341                 b43_phy_write(dev, B43_NPHY_TABLE_ADDR, offset);
3342                 value = b43_phy_read(dev, B43_NPHY_TABLE_DATALO);
3343                 value |= b43_phy_read(dev, B43_NPHY_TABLE_DATAHI) << 16;
3344                 break;
3345         default:
3346                 B43_WARN_ON(1);
3347                 value = 0;
3348         }
3349
3350         return value;
3351 }
3352
3353 void b43_ntab_read_bulk(struct b43_wldev *dev, u32 offset,
3354                          unsigned int nr_elements, void *_data)
3355 {
3356         u32 type;
3357         u8 *data = _data;
3358         unsigned int i;
3359
3360         type = offset & B43_NTAB_TYPEMASK;
3361         offset &= ~B43_NTAB_TYPEMASK;
3362         B43_WARN_ON(offset > 0xFFFF);
3363
3364         b43_phy_write(dev, B43_NPHY_TABLE_ADDR, offset);
3365
3366         for (i = 0; i < nr_elements; i++) {
3367                 /* Auto increment broken + caching issue on BCM43224? */
3368                 if (dev->dev->chip_id == 43224 && dev->dev->chip_rev == 1) {
3369                         b43_phy_read(dev, B43_NPHY_TABLE_DATALO);
3370                         b43_phy_write(dev, B43_NPHY_TABLE_ADDR, offset + i);
3371                 }
3372
3373                 switch (type) {
3374                 case B43_NTAB_8BIT:
3375                         *data = b43_phy_read(dev, B43_NPHY_TABLE_DATALO) & 0xFF;
3376                         data++;
3377                         break;
3378                 case B43_NTAB_16BIT:
3379                         *((u16 *)data) = b43_phy_read(dev, B43_NPHY_TABLE_DATALO);
3380                         data += 2;
3381                         break;
3382                 case B43_NTAB_32BIT:
3383                         *((u32 *)data) =
3384                                 b43_phy_read(dev, B43_NPHY_TABLE_DATALO);
3385                         *((u32 *)data) |=
3386                                 b43_phy_read(dev, B43_NPHY_TABLE_DATAHI) << 16;
3387                         data += 4;
3388                         break;
3389                 default:
3390                         B43_WARN_ON(1);
3391                 }
3392         }
3393 }
3394
3395 void b43_ntab_write(struct b43_wldev *dev, u32 offset, u32 value)
3396 {
3397         u32 type;
3398
3399         type = offset & B43_NTAB_TYPEMASK;
3400         offset &= 0xFFFF;
3401
3402         switch (type) {
3403         case B43_NTAB_8BIT:
3404                 B43_WARN_ON(value & ~0xFF);
3405                 b43_phy_write(dev, B43_NPHY_TABLE_ADDR, offset);
3406                 b43_phy_write(dev, B43_NPHY_TABLE_DATALO, value);
3407                 break;
3408         case B43_NTAB_16BIT:
3409                 B43_WARN_ON(value & ~0xFFFF);
3410                 b43_phy_write(dev, B43_NPHY_TABLE_ADDR, offset);
3411                 b43_phy_write(dev, B43_NPHY_TABLE_DATALO, value);
3412                 break;
3413         case B43_NTAB_32BIT:
3414                 b43_phy_write(dev, B43_NPHY_TABLE_ADDR, offset);
3415                 b43_phy_write(dev, B43_NPHY_TABLE_DATAHI, value >> 16);
3416                 b43_phy_write(dev, B43_NPHY_TABLE_DATALO, value & 0xFFFF);
3417                 break;
3418         default:
3419                 B43_WARN_ON(1);
3420         }
3421
3422         return;
3423
3424         /* Some compiletime assertions... */
3425         assert_ntab_array_sizes();
3426 }
3427
3428 void b43_ntab_write_bulk(struct b43_wldev *dev, u32 offset,
3429                           unsigned int nr_elements, const void *_data)
3430 {
3431         u32 type, value;
3432         const u8 *data = _data;
3433         unsigned int i;
3434
3435         type = offset & B43_NTAB_TYPEMASK;
3436         offset &= ~B43_NTAB_TYPEMASK;
3437         B43_WARN_ON(offset > 0xFFFF);
3438
3439         b43_phy_write(dev, B43_NPHY_TABLE_ADDR, offset);
3440
3441         for (i = 0; i < nr_elements; i++) {
3442                 /* Auto increment broken + caching issue on BCM43224? */
3443                 if ((offset >> 10) == 9 && dev->dev->chip_id == 43224 &&
3444                     dev->dev->chip_rev == 1) {
3445                         b43_phy_read(dev, B43_NPHY_TABLE_DATALO);
3446                         b43_phy_write(dev, B43_NPHY_TABLE_ADDR, offset + i);
3447                 }
3448
3449                 switch (type) {
3450                 case B43_NTAB_8BIT:
3451                         value = *data;
3452                         data++;
3453                         B43_WARN_ON(value & ~0xFF);
3454                         b43_phy_write(dev, B43_NPHY_TABLE_DATALO, value);
3455                         break;
3456                 case B43_NTAB_16BIT:
3457                         value = *((u16 *)data);
3458                         data += 2;
3459                         B43_WARN_ON(value & ~0xFFFF);
3460                         b43_phy_write(dev, B43_NPHY_TABLE_DATALO, value);
3461                         break;
3462                 case B43_NTAB_32BIT:
3463                         value = *((u32 *)data);
3464                         data += 4;
3465                         b43_phy_write(dev, B43_NPHY_TABLE_DATAHI, value >> 16);
3466                         b43_phy_write(dev, B43_NPHY_TABLE_DATALO,
3467                                         value & 0xFFFF);
3468                         break;
3469                 default:
3470                         B43_WARN_ON(1);
3471                 }
3472         }
3473 }
3474
3475 #define ntab_upload(dev, offset, data) do { \
3476                 b43_ntab_write_bulk(dev, offset, ARRAY_SIZE(data), data); \
3477         } while (0)
3478
3479 static void b43_nphy_tables_init_shared_lut(struct b43_wldev *dev)
3480 {
3481         ntab_upload(dev, B43_NTAB_C0_ESTPLT_R3, b43_ntab_estimatepowerlt0_r3);
3482         ntab_upload(dev, B43_NTAB_C1_ESTPLT_R3, b43_ntab_estimatepowerlt1_r3);
3483         ntab_upload(dev, B43_NTAB_C0_ADJPLT_R3, b43_ntab_adjustpower0_r3);
3484         ntab_upload(dev, B43_NTAB_C1_ADJPLT_R3, b43_ntab_adjustpower1_r3);
3485         ntab_upload(dev, B43_NTAB_C0_GAINCTL_R3, b43_ntab_gainctl0_r3);
3486         ntab_upload(dev, B43_NTAB_C1_GAINCTL_R3, b43_ntab_gainctl1_r3);
3487         ntab_upload(dev, B43_NTAB_C0_IQLT_R3, b43_ntab_iqlt0_r3);
3488         ntab_upload(dev, B43_NTAB_C1_IQLT_R3, b43_ntab_iqlt1_r3);
3489         ntab_upload(dev, B43_NTAB_C0_LOFEEDTH_R3, b43_ntab_loftlt0_r3);
3490         ntab_upload(dev, B43_NTAB_C1_LOFEEDTH_R3, b43_ntab_loftlt1_r3);
3491 }
3492
3493 static void b43_nphy_tables_init_rev7_volatile(struct b43_wldev *dev)
3494 {
3495         struct ssb_sprom *sprom = dev->dev->bus_sprom;
3496         u8 antswlut;
3497         int core, offset, i;
3498
3499         const int antswlut0_offsets[] = { 0, 4, 8, }; /* Offsets for values */
3500         const u8 antswlut0_values[][3] = {
3501                 { 0x2, 0x12, 0x8 }, /* Core 0 */
3502                 { 0x2, 0x18, 0x2 }, /* Core 1 */
3503         };
3504
3505         if (b43_current_band(dev->wl) == NL80211_BAND_5GHZ)
3506                 antswlut = sprom->fem.ghz5.antswlut;
3507         else
3508                 antswlut = sprom->fem.ghz2.antswlut;
3509
3510         switch (antswlut) {
3511         case 0:
3512                 for (core = 0; core < 2; core++) {
3513                         for (i = 0; i < ARRAY_SIZE(antswlut0_values[0]); i++) {
3514                                 offset = core ? 0x20 : 0x00;
3515                                 offset += antswlut0_offsets[i];
3516                                 b43_ntab_write(dev, B43_NTAB8(9, offset),
3517                                                antswlut0_values[core][i]);
3518                         }
3519                 }
3520                 break;
3521         default:
3522                 b43err(dev->wl, "Unsupported antswlut: %d\n", antswlut);
3523                 break;
3524         }
3525 }
3526
3527 static void b43_nphy_tables_init_rev16(struct b43_wldev *dev)
3528 {
3529         /* Static tables */
3530         if (dev->phy.do_full_init) {
3531                 ntab_upload(dev, B43_NTAB_NOISEVAR_R7, b43_ntab_noisevar_r7);
3532                 b43_nphy_tables_init_shared_lut(dev);
3533         }
3534
3535         /* Volatile tables */
3536         b43_nphy_tables_init_rev7_volatile(dev);
3537 }
3538
3539 static void b43_nphy_tables_init_rev7(struct b43_wldev *dev)
3540 {
3541         /* Static tables */
3542         if (dev->phy.do_full_init) {
3543                 ntab_upload(dev, B43_NTAB_FRAMESTRUCT_R3, b43_ntab_framestruct_r3);
3544                 ntab_upload(dev, B43_NTAB_PILOT_R3, b43_ntab_pilot_r3);
3545                 ntab_upload(dev, B43_NTAB_TMAP_R7, b43_ntab_tmap_r7);
3546                 ntab_upload(dev, B43_NTAB_INTLEVEL_R3, b43_ntab_intlevel_r3);
3547                 ntab_upload(dev, B43_NTAB_TDTRN_R3, b43_ntab_tdtrn_r3);
3548                 ntab_upload(dev, B43_NTAB_NOISEVAR_R7, b43_ntab_noisevar_r7);
3549                 ntab_upload(dev, B43_NTAB_MCS_R3, b43_ntab_mcs_r3);
3550                 ntab_upload(dev, B43_NTAB_TDI20A0_R3, b43_ntab_tdi20a0_r3);
3551                 ntab_upload(dev, B43_NTAB_TDI20A1_R3, b43_ntab_tdi20a1_r3);
3552                 ntab_upload(dev, B43_NTAB_TDI40A0_R3, b43_ntab_tdi40a0_r3);
3553                 ntab_upload(dev, B43_NTAB_TDI40A1_R3, b43_ntab_tdi40a1_r3);
3554                 ntab_upload(dev, B43_NTAB_PILOTLT_R3, b43_ntab_pilotlt_r3);
3555                 ntab_upload(dev, B43_NTAB_CHANEST_R3, b43_ntab_channelest_r3);
3556                 ntab_upload(dev, B43_NTAB_FRAMELT_R3, b43_ntab_framelookup_r3);
3557                 b43_nphy_tables_init_shared_lut(dev);
3558         }
3559
3560         /* Volatile tables */
3561         b43_nphy_tables_init_rev7_volatile(dev);
3562 }
3563
3564 static void b43_nphy_tables_init_rev3(struct b43_wldev *dev)
3565 {
3566         struct ssb_sprom *sprom = dev->dev->bus_sprom;
3567         u8 antswlut;
3568
3569         if (b43_current_band(dev->wl) == NL80211_BAND_5GHZ)
3570                 antswlut = sprom->fem.ghz5.antswlut;
3571         else
3572                 antswlut = sprom->fem.ghz2.antswlut;
3573
3574         /* Static tables */
3575         if (dev->phy.do_full_init) {
3576                 ntab_upload(dev, B43_NTAB_FRAMESTRUCT_R3, b43_ntab_framestruct_r3);
3577                 ntab_upload(dev, B43_NTAB_PILOT_R3, b43_ntab_pilot_r3);
3578                 ntab_upload(dev, B43_NTAB_TMAP_R3, b43_ntab_tmap_r3);
3579                 ntab_upload(dev, B43_NTAB_INTLEVEL_R3, b43_ntab_intlevel_r3);
3580                 ntab_upload(dev, B43_NTAB_TDTRN_R3, b43_ntab_tdtrn_r3);
3581                 ntab_upload(dev, B43_NTAB_NOISEVAR_R3, b43_ntab_noisevar_r3);
3582                 ntab_upload(dev, B43_NTAB_MCS_R3, b43_ntab_mcs_r3);
3583                 ntab_upload(dev, B43_NTAB_TDI20A0_R3, b43_ntab_tdi20a0_r3);
3584                 ntab_upload(dev, B43_NTAB_TDI20A1_R3, b43_ntab_tdi20a1_r3);
3585                 ntab_upload(dev, B43_NTAB_TDI40A0_R3, b43_ntab_tdi40a0_r3);
3586                 ntab_upload(dev, B43_NTAB_TDI40A1_R3, b43_ntab_tdi40a1_r3);
3587                 ntab_upload(dev, B43_NTAB_PILOTLT_R3, b43_ntab_pilotlt_r3);
3588                 ntab_upload(dev, B43_NTAB_CHANEST_R3, b43_ntab_channelest_r3);
3589                 ntab_upload(dev, B43_NTAB_FRAMELT_R3, b43_ntab_framelookup_r3);
3590                 b43_nphy_tables_init_shared_lut(dev);
3591         }
3592
3593         /* Volatile tables */
3594         if (antswlut < ARRAY_SIZE(b43_ntab_antswctl_r3))
3595                 ntab_upload(dev, B43_NTAB_ANT_SW_CTL_R3,
3596                             b43_ntab_antswctl_r3[antswlut]);
3597         else
3598                 B43_WARN_ON(1);
3599 }
3600
3601 static void b43_nphy_tables_init_rev0(struct b43_wldev *dev)
3602 {
3603         /* Static tables */
3604         if (dev->phy.do_full_init) {
3605                 ntab_upload(dev, B43_NTAB_FRAMESTRUCT, b43_ntab_framestruct);
3606                 ntab_upload(dev, B43_NTAB_FRAMELT, b43_ntab_framelookup);
3607                 ntab_upload(dev, B43_NTAB_TMAP, b43_ntab_tmap);
3608                 ntab_upload(dev, B43_NTAB_TDTRN, b43_ntab_tdtrn);
3609                 ntab_upload(dev, B43_NTAB_INTLEVEL, b43_ntab_intlevel);
3610                 ntab_upload(dev, B43_NTAB_PILOT, b43_ntab_pilot);
3611                 ntab_upload(dev, B43_NTAB_TDI20A0, b43_ntab_tdi20a0);
3612                 ntab_upload(dev, B43_NTAB_TDI20A1, b43_ntab_tdi20a1);
3613                 ntab_upload(dev, B43_NTAB_TDI40A0, b43_ntab_tdi40a0);
3614                 ntab_upload(dev, B43_NTAB_TDI40A1, b43_ntab_tdi40a1);
3615                 ntab_upload(dev, B43_NTAB_CHANEST, b43_ntab_channelest);
3616                 ntab_upload(dev, B43_NTAB_MCS, b43_ntab_mcs);
3617                 ntab_upload(dev, B43_NTAB_NOISEVAR10, b43_ntab_noisevar10);
3618                 ntab_upload(dev, B43_NTAB_NOISEVAR11, b43_ntab_noisevar11);
3619         }
3620
3621         /* Volatile tables */
3622         ntab_upload(dev, B43_NTAB_BDI, b43_ntab_bdi);
3623         ntab_upload(dev, B43_NTAB_PILOTLT, b43_ntab_pilotlt);
3624         ntab_upload(dev, B43_NTAB_C0_GAINCTL, b43_ntab_gainctl0);
3625         ntab_upload(dev, B43_NTAB_C1_GAINCTL, b43_ntab_gainctl1);
3626         ntab_upload(dev, B43_NTAB_C0_ESTPLT, b43_ntab_estimatepowerlt0);
3627         ntab_upload(dev, B43_NTAB_C1_ESTPLT, b43_ntab_estimatepowerlt1);
3628         ntab_upload(dev, B43_NTAB_C0_ADJPLT, b43_ntab_adjustpower0);
3629         ntab_upload(dev, B43_NTAB_C1_ADJPLT, b43_ntab_adjustpower1);
3630         ntab_upload(dev, B43_NTAB_C0_IQLT, b43_ntab_iqlt0);
3631         ntab_upload(dev, B43_NTAB_C1_IQLT, b43_ntab_iqlt1);
3632         ntab_upload(dev, B43_NTAB_C0_LOFEEDTH, b43_ntab_loftlt0);
3633         ntab_upload(dev, B43_NTAB_C1_LOFEEDTH, b43_ntab_loftlt1);
3634 }
3635
3636 /* http://bcm-v4.sipsolutions.net/802.11/PHY/N/InitTables */
3637 void b43_nphy_tables_init(struct b43_wldev *dev)
3638 {
3639         if (dev->phy.rev >= 16)
3640                 b43_nphy_tables_init_rev16(dev);
3641         else if (dev->phy.rev >= 7)
3642                 b43_nphy_tables_init_rev7(dev);
3643         else if (dev->phy.rev >= 3)
3644                 b43_nphy_tables_init_rev3(dev);
3645         else
3646                 b43_nphy_tables_init_rev0(dev);
3647 }
3648
3649 /* http://bcm-v4.sipsolutions.net/802.11/PHY/N/GetIpaGainTbl */
3650 static const u32 *b43_nphy_get_ipa_gain_table(struct b43_wldev *dev)
3651 {
3652         struct b43_phy *phy = &dev->phy;
3653
3654         if (b43_current_band(dev->wl) == NL80211_BAND_2GHZ) {
3655                 switch (phy->rev) {
3656                 case 17:
3657                         if (phy->radio_rev == 14)
3658                                 return b43_ntab_tx_gain_ipa_2057_rev14_2g;
3659                         break;
3660                 case 16:
3661                         if (phy->radio_rev == 9)
3662                                 return b43_ntab_tx_gain_ipa_2057_rev9_2g;
3663                         break;
3664                 case 8:
3665                         if (phy->radio_rev == 5)
3666                                 return b43_ntab_tx_gain_ipa_2057_rev5_2g;
3667                         break;
3668                 case 6:
3669                         if (dev->dev->chip_id == BCMA_CHIP_ID_BCM47162)
3670                                 return b43_ntab_tx_gain_ipa_rev5_2g;
3671                         return b43_ntab_tx_gain_ipa_rev6_2g;
3672                 case 5:
3673                         return b43_ntab_tx_gain_ipa_rev5_2g;
3674                 case 4:
3675                 case 3:
3676                         return b43_ntab_tx_gain_ipa_rev3_2g;
3677                 }
3678
3679                 b43err(dev->wl,
3680                        "No 2GHz IPA gain table available for this device\n");
3681                 return NULL;
3682         } else {
3683                 switch (phy->rev) {
3684                 case 16:
3685                         if (phy->radio_rev == 9)
3686                                 return b43_ntab_tx_gain_ipa_2057_rev9_5g;
3687                         break;
3688                 case 3 ... 6:
3689                         return b43_ntab_tx_gain_ipa_rev3_5g;
3690                 }
3691
3692                 b43err(dev->wl,
3693                        "No 5GHz IPA gain table available for this device\n");
3694                 return NULL;
3695         }
3696 }
3697
3698 const u32 *b43_nphy_get_tx_gain_table(struct b43_wldev *dev)
3699 {
3700         struct b43_phy *phy = &dev->phy;
3701         enum nl80211_band band = b43_current_band(dev->wl);
3702         struct ssb_sprom *sprom = dev->dev->bus_sprom;
3703
3704         if (dev->phy.rev < 3)
3705                 return b43_ntab_tx_gain_rev0_1_2;
3706
3707         /* rev 3+ */
3708         if ((dev->phy.n->ipa2g_on && band == NL80211_BAND_2GHZ) ||
3709             (dev->phy.n->ipa5g_on && band == NL80211_BAND_5GHZ)) {
3710                 return b43_nphy_get_ipa_gain_table(dev);
3711         } else if (b43_current_band(dev->wl) == NL80211_BAND_5GHZ) {
3712                 switch (phy->rev) {
3713                 case 6:
3714                 case 5:
3715                         return b43_ntab_tx_gain_epa_rev5_5g;
3716                 case 4:
3717                         return sprom->fem.ghz5.extpa_gain == 3 ?
3718                                 b43_ntab_tx_gain_epa_rev4_5g :
3719                                 b43_ntab_tx_gain_epa_rev4_hi_pwr_5g;
3720                 case 3:
3721                         return b43_ntab_tx_gain_epa_rev3_5g;
3722                 default:
3723                         b43err(dev->wl,
3724                                "No 5GHz EPA gain table available for this device\n");
3725                         return NULL;
3726                 }
3727         } else {
3728                 switch (phy->rev) {
3729                 case 6:
3730                 case 5:
3731                         if (sprom->fem.ghz2.extpa_gain == 3)
3732                                 return b43_ntab_tx_gain_epa_rev3_hi_pwr_2g;
3733                         /* fall through */
3734                 case 4:
3735                 case 3:
3736                         return b43_ntab_tx_gain_epa_rev3_2g;
3737                 default:
3738                         b43err(dev->wl,
3739                                "No 2GHz EPA gain table available for this device\n");
3740                         return NULL;
3741                 }
3742         }
3743 }
3744
3745 const s16 *b43_ntab_get_rf_pwr_offset_table(struct b43_wldev *dev)
3746 {
3747         struct b43_phy *phy = &dev->phy;
3748
3749         if (b43_current_band(dev->wl) == NL80211_BAND_2GHZ) {
3750                 switch (phy->rev) {
3751                 case 17:
3752                         if (phy->radio_rev == 14)
3753                                 return b43_ntab_rf_pwr_offset_2057_rev14_2g;
3754                         break;
3755                 case 16:
3756                         if (phy->radio_rev == 9)
3757                                 return b43_ntab_rf_pwr_offset_2057_rev9_2g;
3758                         break;
3759                 }
3760
3761                 b43err(dev->wl,
3762                        "No 2GHz RF power table available for this device\n");
3763                 return NULL;
3764         } else {
3765                 switch (phy->rev) {
3766                 case 16:
3767                         if (phy->radio_rev == 9)
3768                                 return b43_ntab_rf_pwr_offset_2057_rev9_5g;
3769                         break;
3770                 }
3771
3772                 b43err(dev->wl,
3773                        "No 5GHz RF power table available for this device\n");
3774                 return NULL;
3775         }
3776 }
3777
3778 struct nphy_gain_ctl_workaround_entry *b43_nphy_get_gain_ctl_workaround_ent(
3779         struct b43_wldev *dev, bool ghz5, bool ext_lna)
3780 {
3781         struct b43_phy *phy = &dev->phy;
3782         struct nphy_gain_ctl_workaround_entry *e;
3783         u8 phy_idx;
3784
3785         if (!ghz5 && dev->phy.rev >= 6 && dev->phy.radio_rev == 11)
3786                 return &nphy_gain_ctl_wa_phy6_radio11_ghz2;
3787
3788         B43_WARN_ON(dev->phy.rev < 3);
3789         if (dev->phy.rev >= 6)
3790                 phy_idx = 3;
3791         else if (dev->phy.rev == 5)
3792                 phy_idx = 2;
3793         else if (dev->phy.rev == 4)
3794                 phy_idx = 1;
3795         else
3796                 phy_idx = 0;
3797         e = &nphy_gain_ctl_workaround[ghz5][phy_idx];
3798
3799         /* Some workarounds to the workarounds... */
3800         if (!ghz5) {
3801                 u8 tr_iso = dev->dev->bus_sprom->fem.ghz2.tr_iso;
3802
3803                 if (tr_iso > 7)
3804                         tr_iso = 3;
3805
3806                 if (phy->rev >= 6) {
3807                         static const int gain_data[] = { 0x106a, 0x106c, 0x1074,
3808                                                          0x107c, 0x007e, 0x107e,
3809                                                          0x207e, 0x307e, };
3810
3811                         e->cliplo_gain = gain_data[tr_iso];
3812                 } else if (phy->rev == 5) {
3813                         static const int gain_data[] = { 0x0062, 0x0064, 0x006a,
3814                                                          0x106a, 0x106c, 0x1074,
3815                                                          0x107c, 0x207c, };
3816
3817                         e->cliplo_gain = gain_data[tr_iso];
3818                 }
3819
3820                 if (phy->rev >= 5 && ext_lna) {
3821                         e->rfseq_init[0] &= ~0x4000;
3822                         e->rfseq_init[1] &= ~0x4000;
3823                         e->rfseq_init[2] &= ~0x4000;
3824                         e->rfseq_init[3] &= ~0x4000;
3825                         e->init_gain &= ~0x4000;
3826                 }
3827         } else {
3828                 if (phy->rev >= 6) {
3829                         if (phy->radio_rev == 11 && !b43_is_40mhz(dev))
3830                                 e->crsminu = 0x2d;
3831                 } else if (phy->rev == 4 && ext_lna) {
3832                         e->rfseq_init[0] &= ~0x4000;
3833                         e->rfseq_init[1] &= ~0x4000;
3834                         e->rfseq_init[2] &= ~0x4000;
3835                         e->rfseq_init[3] &= ~0x4000;
3836                         e->init_gain &= ~0x4000;
3837                         e->rfseq_init[0] |= 0x1000;
3838                         e->rfseq_init[1] |= 0x1000;
3839                         e->rfseq_init[2] |= 0x1000;
3840                         e->rfseq_init[3] |= 0x1000;
3841                         e->init_gain |= 0x1000;
3842                 }
3843         }
3844
3845         return e;
3846 }
3847
3848 const struct nphy_rf_control_override_rev7 *b43_nphy_get_rf_ctl_over_rev7(
3849         struct b43_wldev *dev, u16 field, u8 override)
3850 {
3851         const struct nphy_rf_control_override_rev7 *e;
3852         u8 size, i;
3853
3854         switch (override) {
3855         case 0:
3856                 e = tbl_rf_control_override_rev7_over0;
3857                 size = ARRAY_SIZE(tbl_rf_control_override_rev7_over0);
3858                 break;
3859         case 1:
3860                 e = tbl_rf_control_override_rev7_over1;
3861                 size = ARRAY_SIZE(tbl_rf_control_override_rev7_over1);
3862                 break;
3863         case 2:
3864                 e = tbl_rf_control_override_rev7_over2;
3865                 size = ARRAY_SIZE(tbl_rf_control_override_rev7_over2);
3866                 break;
3867         default:
3868                 b43err(dev->wl, "Invalid override value %d\n", override);
3869                 return NULL;
3870         }
3871
3872         for (i = 0; i < size; i++) {
3873                 if (e[i].field == field)
3874                         return &e[i];
3875         }
3876
3877         return NULL;
3878 }