]> Git Repo - linux.git/blob - drivers/net/wireless/b43/tables_nphy.c
tracing: Replace syscall_meta_data struct array with pointer array
[linux.git] / drivers / net / wireless / b43 / tables_nphy.c
1 /*
2
3   Broadcom B43 wireless driver
4   IEEE 802.11n PHY data tables
5
6   Copyright (c) 2008 Michael Buesch <[email protected]>
7
8   This program is free software; you can redistribute it and/or modify
9   it under the terms of the GNU General Public License as published by
10   the Free Software Foundation; either version 2 of the License, or
11   (at your option) any later version.
12
13   This program is distributed in the hope that it will be useful,
14   but WITHOUT ANY WARRANTY; without even the implied warranty of
15   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16   GNU General Public License for more details.
17
18   You should have received a copy of the GNU General Public License
19   along with this program; see the file COPYING.  If not, write to
20   the Free Software Foundation, Inc., 51 Franklin Steet, Fifth Floor,
21   Boston, MA 02110-1301, USA.
22
23 */
24
25 #include "b43.h"
26 #include "tables_nphy.h"
27 #include "phy_common.h"
28 #include "phy_n.h"
29
30 static const u8 b43_ntab_adjustpower0[] = {
31         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
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 };
48
49 static const u8 b43_ntab_adjustpower1[] = {
50         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
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 };
67
68 static const u16 b43_ntab_bdi[] = {
69         0x0070, 0x0126, 0x012C, 0x0246, 0x048D, 0x04D2,
70 };
71
72 static const u32 b43_ntab_channelest[] = {
73         0x44444444, 0x44444444, 0x44444444, 0x44444444,
74         0x44444444, 0x44444444, 0x44444444, 0x44444444,
75         0x10101010, 0x10101010, 0x10101010, 0x10101010,
76         0x10101010, 0x10101010, 0x10101010, 0x10101010,
77         0x44444444, 0x44444444, 0x44444444, 0x44444444,
78         0x44444444, 0x44444444, 0x44444444, 0x44444444,
79         0x10101010, 0x10101010, 0x10101010, 0x10101010,
80         0x10101010, 0x10101010, 0x10101010, 0x10101010,
81         0x44444444, 0x44444444, 0x44444444, 0x44444444,
82         0x44444444, 0x44444444, 0x44444444, 0x44444444,
83         0x44444444, 0x44444444, 0x44444444, 0x44444444,
84         0x44444444, 0x44444444, 0x44444444, 0x44444444,
85         0x10101010, 0x10101010, 0x10101010, 0x10101010,
86         0x10101010, 0x10101010, 0x10101010, 0x10101010,
87         0x10101010, 0x10101010, 0x10101010, 0x10101010,
88         0x10101010, 0x10101010, 0x10101010, 0x10101010,
89         0x44444444, 0x44444444, 0x44444444, 0x44444444,
90         0x44444444, 0x44444444, 0x44444444, 0x44444444,
91         0x44444444, 0x44444444, 0x44444444, 0x44444444,
92         0x44444444, 0x44444444, 0x44444444, 0x44444444,
93         0x10101010, 0x10101010, 0x10101010, 0x10101010,
94         0x10101010, 0x10101010, 0x10101010, 0x10101010,
95         0x10101010, 0x10101010, 0x10101010, 0x10101010,
96         0x10101010, 0x10101010, 0x10101010, 0x10101010,
97 };
98
99 static const u8 b43_ntab_estimatepowerlt0[] = {
100         0x50, 0x4F, 0x4E, 0x4D, 0x4C, 0x4B, 0x4A, 0x49,
101         0x48, 0x47, 0x46, 0x45, 0x44, 0x43, 0x42, 0x41,
102         0x40, 0x3F, 0x3E, 0x3D, 0x3C, 0x3B, 0x3A, 0x39,
103         0x38, 0x37, 0x36, 0x35, 0x34, 0x33, 0x32, 0x31,
104         0x30, 0x2F, 0x2E, 0x2D, 0x2C, 0x2B, 0x2A, 0x29,
105         0x28, 0x27, 0x26, 0x25, 0x24, 0x23, 0x22, 0x21,
106         0x20, 0x1F, 0x1E, 0x1D, 0x1C, 0x1B, 0x1A, 0x19,
107         0x18, 0x17, 0x16, 0x15, 0x14, 0x13, 0x12, 0x11,
108 };
109
110 static const u8 b43_ntab_estimatepowerlt1[] = {
111         0x50, 0x4F, 0x4E, 0x4D, 0x4C, 0x4B, 0x4A, 0x49,
112         0x48, 0x47, 0x46, 0x45, 0x44, 0x43, 0x42, 0x41,
113         0x40, 0x3F, 0x3E, 0x3D, 0x3C, 0x3B, 0x3A, 0x39,
114         0x38, 0x37, 0x36, 0x35, 0x34, 0x33, 0x32, 0x31,
115         0x30, 0x2F, 0x2E, 0x2D, 0x2C, 0x2B, 0x2A, 0x29,
116         0x28, 0x27, 0x26, 0x25, 0x24, 0x23, 0x22, 0x21,
117         0x20, 0x1F, 0x1E, 0x1D, 0x1C, 0x1B, 0x1A, 0x19,
118         0x18, 0x17, 0x16, 0x15, 0x14, 0x13, 0x12, 0x11,
119 };
120
121 static const u8 b43_ntab_framelookup[] = {
122         0x02, 0x04, 0x14, 0x14, 0x03, 0x05, 0x16, 0x16,
123         0x0A, 0x0C, 0x1C, 0x1C, 0x0B, 0x0D, 0x1E, 0x1E,
124         0x06, 0x08, 0x18, 0x18, 0x07, 0x09, 0x1A, 0x1A,
125         0x0E, 0x10, 0x20, 0x28, 0x0F, 0x11, 0x22, 0x2A,
126 };
127
128 static const u32 b43_ntab_framestruct[] = {
129         0x08004A04, 0x00100000, 0x01000A05, 0x00100020,
130         0x09804506, 0x00100030, 0x09804507, 0x00100030,
131         0x00000000, 0x00000000, 0x00000000, 0x00000000,
132         0x00000000, 0x00000000, 0x00000000, 0x00000000,
133         0x08004A0C, 0x00100004, 0x01000A0D, 0x00100024,
134         0x0980450E, 0x00100034, 0x0980450F, 0x00100034,
135         0x00000000, 0x00000000, 0x00000000, 0x00000000,
136         0x00000000, 0x00000000, 0x00000000, 0x00000000,
137         0x00000A04, 0x00100000, 0x11008A05, 0x00100020,
138         0x1980C506, 0x00100030, 0x21810506, 0x00100030,
139         0x21810506, 0x00100030, 0x01800504, 0x00100030,
140         0x11808505, 0x00100030, 0x29814507, 0x01100030,
141         0x00000A04, 0x00100000, 0x11008A05, 0x00100020,
142         0x21810506, 0x00100030, 0x21810506, 0x00100030,
143         0x29814507, 0x01100030, 0x00000000, 0x00000000,
144         0x00000000, 0x00000000, 0x00000000, 0x00000000,
145         0x00000A0C, 0x00100008, 0x11008A0D, 0x00100028,
146         0x1980C50E, 0x00100038, 0x2181050E, 0x00100038,
147         0x2181050E, 0x00100038, 0x0180050C, 0x00100038,
148         0x1180850D, 0x00100038, 0x2981450F, 0x01100038,
149         0x00000A0C, 0x00100008, 0x11008A0D, 0x00100028,
150         0x2181050E, 0x00100038, 0x2181050E, 0x00100038,
151         0x2981450F, 0x01100038, 0x00000000, 0x00000000,
152         0x00000000, 0x00000000, 0x00000000, 0x00000000,
153         0x08004A04, 0x00100000, 0x01000A05, 0x00100020,
154         0x1980C506, 0x00100030, 0x1980C506, 0x00100030,
155         0x11808504, 0x00100030, 0x3981CA05, 0x00100030,
156         0x29814507, 0x01100030, 0x00000000, 0x00000000,
157         0x10008A04, 0x00100000, 0x3981CA05, 0x00100030,
158         0x1980C506, 0x00100030, 0x29814507, 0x01100030,
159         0x00000000, 0x00000000, 0x00000000, 0x00000000,
160         0x00000000, 0x00000000, 0x00000000, 0x00000000,
161         0x08004A0C, 0x00100008, 0x01000A0D, 0x00100028,
162         0x1980C50E, 0x00100038, 0x1980C50E, 0x00100038,
163         0x1180850C, 0x00100038, 0x3981CA0D, 0x00100038,
164         0x2981450F, 0x01100038, 0x00000000, 0x00000000,
165         0x10008A0C, 0x00100008, 0x3981CA0D, 0x00100038,
166         0x1980C50E, 0x00100038, 0x2981450F, 0x01100038,
167         0x00000000, 0x00000000, 0x00000000, 0x00000000,
168         0x00000000, 0x00000000, 0x00000000, 0x00000000,
169         0x40021404, 0x00100000, 0x02001405, 0x00100040,
170         0x0B004A06, 0x01900060, 0x13008A06, 0x01900060,
171         0x13008A06, 0x01900060, 0x43020A04, 0x00100060,
172         0x1B00CA05, 0x00100060, 0x23010A07, 0x01500060,
173         0x40021404, 0x00100000, 0x1A00D405, 0x00100040,
174         0x13008A06, 0x01900060, 0x13008A06, 0x01900060,
175         0x23010A07, 0x01500060, 0x00000000, 0x00000000,
176         0x00000000, 0x00000000, 0x00000000, 0x00000000,
177         0x4002140C, 0x00100010, 0x0200140D, 0x00100050,
178         0x0B004A0E, 0x01900070, 0x13008A0E, 0x01900070,
179         0x13008A0E, 0x01900070, 0x43020A0C, 0x00100070,
180         0x1B00CA0D, 0x00100070, 0x23010A0F, 0x01500070,
181         0x4002140C, 0x00100010, 0x1A00D40D, 0x00100050,
182         0x13008A0E, 0x01900070, 0x13008A0E, 0x01900070,
183         0x23010A0F, 0x01500070, 0x00000000, 0x00000000,
184         0x00000000, 0x00000000, 0x00000000, 0x00000000,
185         0x50029404, 0x00100000, 0x32019405, 0x00100040,
186         0x0B004A06, 0x01900060, 0x0B004A06, 0x01900060,
187         0x5B02CA04, 0x00100060, 0x3B01D405, 0x00100060,
188         0x23010A07, 0x01500060, 0x00000000, 0x00000000,
189         0x5802D404, 0x00100000, 0x3B01D405, 0x00100060,
190         0x0B004A06, 0x01900060, 0x23010A07, 0x01500060,
191         0x00000000, 0x00000000, 0x00000000, 0x00000000,
192         0x00000000, 0x00000000, 0x00000000, 0x00000000,
193         0x5002940C, 0x00100010, 0x3201940D, 0x00100050,
194         0x0B004A0E, 0x01900070, 0x0B004A0E, 0x01900070,
195         0x5B02CA0C, 0x00100070, 0x3B01D40D, 0x00100070,
196         0x23010A0F, 0x01500070, 0x00000000, 0x00000000,
197         0x5802D40C, 0x00100010, 0x3B01D40D, 0x00100070,
198         0x0B004A0E, 0x01900070, 0x23010A0F, 0x01500070,
199         0x00000000, 0x00000000, 0x00000000, 0x00000000,
200         0x00000000, 0x00000000, 0x00000000, 0x00000000,
201         0x40021404, 0x000F4800, 0x62031405, 0x00100040,
202         0x53028A06, 0x01900060, 0x53028A07, 0x01900060,
203         0x00000000, 0x00000000, 0x00000000, 0x00000000,
204         0x00000000, 0x00000000, 0x00000000, 0x00000000,
205         0x4002140C, 0x000F4808, 0x6203140D, 0x00100048,
206         0x53028A0E, 0x01900068, 0x53028A0F, 0x01900068,
207         0x00000000, 0x00000000, 0x00000000, 0x00000000,
208         0x00000000, 0x00000000, 0x00000000, 0x00000000,
209         0x00000A0C, 0x00100004, 0x11008A0D, 0x00100024,
210         0x1980C50E, 0x00100034, 0x2181050E, 0x00100034,
211         0x2181050E, 0x00100034, 0x0180050C, 0x00100038,
212         0x1180850D, 0x00100038, 0x1181850D, 0x00100038,
213         0x2981450F, 0x01100038, 0x00000000, 0x00000000,
214         0x00000000, 0x00000000, 0x00000000, 0x00000000,
215         0x00000000, 0x00000000, 0x00000000, 0x00000000,
216         0x00000000, 0x00000000, 0x00000000, 0x00000000,
217         0x00000A0C, 0x00100008, 0x11008A0D, 0x00100028,
218         0x2181050E, 0x00100038, 0x2181050E, 0x00100038,
219         0x1181850D, 0x00100038, 0x2981450F, 0x01100038,
220         0x00000000, 0x00000000, 0x00000000, 0x00000000,
221         0x00000000, 0x00000000, 0x00000000, 0x00000000,
222         0x00000000, 0x00000000, 0x00000000, 0x00000000,
223         0x00000000, 0x00000000, 0x00000000, 0x00000000,
224         0x00000000, 0x00000000, 0x00000000, 0x00000000,
225         0x08004A04, 0x00100000, 0x01000A05, 0x00100020,
226         0x0180C506, 0x00100030, 0x0180C506, 0x00100030,
227         0x2180C50C, 0x00100030, 0x49820A0D, 0x0016A130,
228         0x41824A0D, 0x0016A130, 0x2981450F, 0x01100030,
229         0x00000000, 0x00000000, 0x00000000, 0x00000000,
230         0x00000000, 0x00000000, 0x00000000, 0x00000000,
231         0x00000000, 0x00000000, 0x00000000, 0x00000000,
232         0x00000000, 0x00000000, 0x00000000, 0x00000000,
233         0x2000CA0C, 0x00100000, 0x49820A0D, 0x0016A130,
234         0x1980C50E, 0x00100030, 0x41824A0D, 0x0016A130,
235         0x2981450F, 0x01100030, 0x00000000, 0x00000000,
236         0x00000000, 0x00000000, 0x00000000, 0x00000000,
237         0x00000000, 0x00000000, 0x00000000, 0x00000000,
238         0x00000000, 0x00000000, 0x00000000, 0x00000000,
239         0x00000000, 0x00000000, 0x00000000, 0x00000000,
240         0x00000000, 0x00000000, 0x00000000, 0x00000000,
241         0x4002140C, 0x00100008, 0x0200140D, 0x00100048,
242         0x0B004A0E, 0x01900068, 0x13008A0E, 0x01900068,
243         0x13008A0E, 0x01900068, 0x43020A0C, 0x00100070,
244         0x1B00CA0D, 0x00100070, 0x1B014A0D, 0x00100070,
245         0x23010A0F, 0x01500070, 0x00000000, 0x00000000,
246         0x00000000, 0x00000000, 0x00000000, 0x00000000,
247         0x00000000, 0x00000000, 0x00000000, 0x00000000,
248         0x00000000, 0x00000000, 0x00000000, 0x00000000,
249         0x4002140C, 0x00100010, 0x1A00D40D, 0x00100050,
250         0x13008A0E, 0x01900070, 0x13008A0E, 0x01900070,
251         0x1B014A0D, 0x00100070, 0x23010A0F, 0x01500070,
252         0x00000000, 0x00000000, 0x00000000, 0x00000000,
253         0x00000000, 0x00000000, 0x00000000, 0x00000000,
254         0x00000000, 0x00000000, 0x00000000, 0x00000000,
255         0x00000000, 0x00000000, 0x00000000, 0x00000000,
256         0x00000000, 0x00000000, 0x00000000, 0x00000000,
257         0x50029404, 0x00100000, 0x32019405, 0x00100040,
258         0x03004A06, 0x01900060, 0x03004A06, 0x01900060,
259         0x6B030A0C, 0x00100060, 0x4B02140D, 0x0016A160,
260         0x4302540D, 0x0016A160, 0x23010A0F, 0x01500060,
261         0x00000000, 0x00000000, 0x00000000, 0x00000000,
262         0x00000000, 0x00000000, 0x00000000, 0x00000000,
263         0x00000000, 0x00000000, 0x00000000, 0x00000000,
264         0x00000000, 0x00000000, 0x00000000, 0x00000000,
265         0x6B03140C, 0x00100060, 0x4B02140D, 0x0016A160,
266         0x0B004A0E, 0x01900060, 0x4302540D, 0x0016A160,
267         0x23010A0F, 0x01500060, 0x00000000, 0x00000000,
268         0x00000000, 0x00000000, 0x00000000, 0x00000000,
269         0x00000000, 0x00000000, 0x00000000, 0x00000000,
270         0x00000000, 0x00000000, 0x00000000, 0x00000000,
271         0x00000000, 0x00000000, 0x00000000, 0x00000000,
272         0x00000000, 0x00000000, 0x00000000, 0x00000000,
273         0x40021404, 0x00100000, 0x1A00D405, 0x00100040,
274         0x53028A06, 0x01900060, 0x5B02CA06, 0x01900060,
275         0x5B02CA06, 0x01900060, 0x43020A04, 0x00100060,
276         0x1B00CA05, 0x00100060, 0x53028A07, 0x0190C060,
277         0x00000000, 0x00000000, 0x00000000, 0x00000000,
278         0x00000000, 0x00000000, 0x00000000, 0x00000000,
279         0x00000000, 0x00000000, 0x00000000, 0x00000000,
280         0x00000000, 0x00000000, 0x00000000, 0x00000000,
281         0x4002140C, 0x00100010, 0x1A00D40D, 0x00100050,
282         0x53028A0E, 0x01900070, 0x5B02CA0E, 0x01900070,
283         0x5B02CA0E, 0x01900070, 0x43020A0C, 0x00100070,
284         0x1B00CA0D, 0x00100070, 0x53028A0F, 0x0190C070,
285         0x00000000, 0x00000000, 0x00000000, 0x00000000,
286         0x00000000, 0x00000000, 0x00000000, 0x00000000,
287         0x00000000, 0x00000000, 0x00000000, 0x00000000,
288         0x00000000, 0x00000000, 0x00000000, 0x00000000,
289         0x40021404, 0x00100000, 0x1A00D405, 0x00100040,
290         0x5B02CA06, 0x01900060, 0x5B02CA06, 0x01900060,
291         0x53028A07, 0x0190C060, 0x00000000, 0x00000000,
292         0x00000000, 0x00000000, 0x00000000, 0x00000000,
293         0x00000000, 0x00000000, 0x00000000, 0x00000000,
294         0x00000000, 0x00000000, 0x00000000, 0x00000000,
295         0x00000000, 0x00000000, 0x00000000, 0x00000000,
296         0x00000000, 0x00000000, 0x00000000, 0x00000000,
297         0x4002140C, 0x00100010, 0x1A00D40D, 0x00100050,
298         0x5B02CA0E, 0x01900070, 0x5B02CA0E, 0x01900070,
299         0x53028A0F, 0x0190C070, 0x00000000, 0x00000000,
300         0x00000000, 0x00000000, 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 };
338
339 static const u32 b43_ntab_gainctl0[] = {
340         0x03CC2B44, 0x03CC2B42, 0x03CC2B40, 0x03CC2B3E,
341         0x03CC2B3D, 0x03CC2B3B, 0x03C82B44, 0x03C82B42,
342         0x03C82B40, 0x03C82B3E, 0x03C82B3D, 0x03C82B3B,
343         0x03C82B39, 0x03C82B38, 0x03C82B36, 0x03C82B34,
344         0x03C42B44, 0x03C42B42, 0x03C42B40, 0x03C42B3E,
345         0x03C42B3D, 0x03C42B3B, 0x03C42B39, 0x03C42B38,
346         0x03C42B36, 0x03C42B34, 0x03C42B33, 0x03C42B32,
347         0x03C42B30, 0x03C42B2F, 0x03C42B2D, 0x03C02B44,
348         0x03C02B42, 0x03C02B40, 0x03C02B3E, 0x03C02B3D,
349         0x03C02B3B, 0x03C02B39, 0x03C02B38, 0x03C02B36,
350         0x03C02B34, 0x03B02B44, 0x03B02B42, 0x03B02B40,
351         0x03B02B3E, 0x03B02B3D, 0x03B02B3B, 0x03B02B39,
352         0x03B02B38, 0x03B02B36, 0x03B02B34, 0x03B02B33,
353         0x03B02B32, 0x03B02B30, 0x03B02B2F, 0x03B02B2D,
354         0x03A02B44, 0x03A02B42, 0x03A02B40, 0x03A02B3E,
355         0x03A02B3D, 0x03A02B3B, 0x03A02B39, 0x03A02B38,
356         0x03A02B36, 0x03A02B34, 0x03902B44, 0x03902B42,
357         0x03902B40, 0x03902B3E, 0x03902B3D, 0x03902B3B,
358         0x03902B39, 0x03902B38, 0x03902B36, 0x03902B34,
359         0x03902B33, 0x03902B32, 0x03902B30, 0x03802B44,
360         0x03802B42, 0x03802B40, 0x03802B3E, 0x03802B3D,
361         0x03802B3B, 0x03802B39, 0x03802B38, 0x03802B36,
362         0x03802B34, 0x03802B33, 0x03802B32, 0x03802B30,
363         0x03802B2F, 0x03802B2D, 0x03802B2C, 0x03802B2B,
364         0x03802B2A, 0x03802B29, 0x03802B27, 0x03802B26,
365         0x03802B25, 0x03802B24, 0x03802B23, 0x03802B22,
366         0x03802B21, 0x03802B20, 0x03802B1F, 0x03802B1E,
367         0x03802B1E, 0x03802B1D, 0x03802B1C, 0x03802B1B,
368         0x03802B1A, 0x03802B1A, 0x03802B19, 0x03802B18,
369         0x03802B18, 0x03802B18, 0x03802B18, 0x03802B18,
370         0x03802B18, 0x03802B18, 0x03802B18, 0x03802B18,
371         0x03802B18, 0x03802B18, 0x03802B18, 0x00002B00,
372 };
373
374 static const u32 b43_ntab_gainctl1[] = {
375         0x03CC2B44, 0x03CC2B42, 0x03CC2B40, 0x03CC2B3E,
376         0x03CC2B3D, 0x03CC2B3B, 0x03C82B44, 0x03C82B42,
377         0x03C82B40, 0x03C82B3E, 0x03C82B3D, 0x03C82B3B,
378         0x03C82B39, 0x03C82B38, 0x03C82B36, 0x03C82B34,
379         0x03C42B44, 0x03C42B42, 0x03C42B40, 0x03C42B3E,
380         0x03C42B3D, 0x03C42B3B, 0x03C42B39, 0x03C42B38,
381         0x03C42B36, 0x03C42B34, 0x03C42B33, 0x03C42B32,
382         0x03C42B30, 0x03C42B2F, 0x03C42B2D, 0x03C02B44,
383         0x03C02B42, 0x03C02B40, 0x03C02B3E, 0x03C02B3D,
384         0x03C02B3B, 0x03C02B39, 0x03C02B38, 0x03C02B36,
385         0x03C02B34, 0x03B02B44, 0x03B02B42, 0x03B02B40,
386         0x03B02B3E, 0x03B02B3D, 0x03B02B3B, 0x03B02B39,
387         0x03B02B38, 0x03B02B36, 0x03B02B34, 0x03B02B33,
388         0x03B02B32, 0x03B02B30, 0x03B02B2F, 0x03B02B2D,
389         0x03A02B44, 0x03A02B42, 0x03A02B40, 0x03A02B3E,
390         0x03A02B3D, 0x03A02B3B, 0x03A02B39, 0x03A02B38,
391         0x03A02B36, 0x03A02B34, 0x03902B44, 0x03902B42,
392         0x03902B40, 0x03902B3E, 0x03902B3D, 0x03902B3B,
393         0x03902B39, 0x03902B38, 0x03902B36, 0x03902B34,
394         0x03902B33, 0x03902B32, 0x03902B30, 0x03802B44,
395         0x03802B42, 0x03802B40, 0x03802B3E, 0x03802B3D,
396         0x03802B3B, 0x03802B39, 0x03802B38, 0x03802B36,
397         0x03802B34, 0x03802B33, 0x03802B32, 0x03802B30,
398         0x03802B2F, 0x03802B2D, 0x03802B2C, 0x03802B2B,
399         0x03802B2A, 0x03802B29, 0x03802B27, 0x03802B26,
400         0x03802B25, 0x03802B24, 0x03802B23, 0x03802B22,
401         0x03802B21, 0x03802B20, 0x03802B1F, 0x03802B1E,
402         0x03802B1E, 0x03802B1D, 0x03802B1C, 0x03802B1B,
403         0x03802B1A, 0x03802B1A, 0x03802B19, 0x03802B18,
404         0x03802B18, 0x03802B18, 0x03802B18, 0x03802B18,
405         0x03802B18, 0x03802B18, 0x03802B18, 0x03802B18,
406         0x03802B18, 0x03802B18, 0x03802B18, 0x00002B00,
407 };
408
409 static const u32 b43_ntab_intlevel[] = {
410         0x00802070, 0x0671188D, 0x0A60192C, 0x0A300E46,
411         0x00C1188D, 0x080024D2, 0x00000070,
412 };
413
414 static const u32 b43_ntab_iqlt0[] = {
415         0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F,
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 };
448
449 static const u32 b43_ntab_iqlt1[] = {
450         0x0000007F, 0x0000007F, 0x0000007F, 0x0000007F,
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 };
483
484 static const u16 b43_ntab_loftlt0[] = {
485         0x0000, 0x0101, 0x0002, 0x0103, 0x0000, 0x0101,
486         0x0002, 0x0103, 0x0000, 0x0101, 0x0002, 0x0103,
487         0x0000, 0x0101, 0x0002, 0x0103, 0x0000, 0x0101,
488         0x0002, 0x0103, 0x0000, 0x0101, 0x0002, 0x0103,
489         0x0000, 0x0101, 0x0002, 0x0103, 0x0000, 0x0101,
490         0x0002, 0x0103, 0x0000, 0x0101, 0x0002, 0x0103,
491         0x0000, 0x0101, 0x0002, 0x0103, 0x0000, 0x0101,
492         0x0002, 0x0103, 0x0000, 0x0101, 0x0002, 0x0103,
493         0x0000, 0x0101, 0x0002, 0x0103, 0x0000, 0x0101,
494         0x0002, 0x0103, 0x0000, 0x0101, 0x0002, 0x0103,
495         0x0000, 0x0101, 0x0002, 0x0103, 0x0000, 0x0101,
496         0x0002, 0x0103, 0x0000, 0x0101, 0x0002, 0x0103,
497         0x0000, 0x0101, 0x0002, 0x0103, 0x0000, 0x0101,
498         0x0002, 0x0103, 0x0000, 0x0101, 0x0002, 0x0103,
499         0x0000, 0x0101, 0x0002, 0x0103, 0x0000, 0x0101,
500         0x0002, 0x0103, 0x0000, 0x0101, 0x0002, 0x0103,
501         0x0000, 0x0101, 0x0002, 0x0103, 0x0000, 0x0101,
502         0x0002, 0x0103, 0x0000, 0x0101, 0x0002, 0x0103,
503         0x0000, 0x0101, 0x0002, 0x0103, 0x0000, 0x0101,
504         0x0002, 0x0103, 0x0000, 0x0101, 0x0002, 0x0103,
505         0x0000, 0x0101, 0x0002, 0x0103, 0x0000, 0x0101,
506         0x0002, 0x0103,
507 };
508
509 static const u16 b43_ntab_loftlt1[] = {
510         0x0000, 0x0101, 0x0002, 0x0103, 0x0000, 0x0101,
511         0x0002, 0x0103, 0x0000, 0x0101, 0x0002, 0x0103,
512         0x0000, 0x0101, 0x0002, 0x0103, 0x0000, 0x0101,
513         0x0002, 0x0103, 0x0000, 0x0101, 0x0002, 0x0103,
514         0x0000, 0x0101, 0x0002, 0x0103, 0x0000, 0x0101,
515         0x0002, 0x0103, 0x0000, 0x0101, 0x0002, 0x0103,
516         0x0000, 0x0101, 0x0002, 0x0103, 0x0000, 0x0101,
517         0x0002, 0x0103, 0x0000, 0x0101, 0x0002, 0x0103,
518         0x0000, 0x0101, 0x0002, 0x0103, 0x0000, 0x0101,
519         0x0002, 0x0103, 0x0000, 0x0101, 0x0002, 0x0103,
520         0x0000, 0x0101, 0x0002, 0x0103, 0x0000, 0x0101,
521         0x0002, 0x0103, 0x0000, 0x0101, 0x0002, 0x0103,
522         0x0000, 0x0101, 0x0002, 0x0103, 0x0000, 0x0101,
523         0x0002, 0x0103, 0x0000, 0x0101, 0x0002, 0x0103,
524         0x0000, 0x0101, 0x0002, 0x0103, 0x0000, 0x0101,
525         0x0002, 0x0103, 0x0000, 0x0101, 0x0002, 0x0103,
526         0x0000, 0x0101, 0x0002, 0x0103, 0x0000, 0x0101,
527         0x0002, 0x0103, 0x0000, 0x0101, 0x0002, 0x0103,
528         0x0000, 0x0101, 0x0002, 0x0103, 0x0000, 0x0101,
529         0x0002, 0x0103, 0x0000, 0x0101, 0x0002, 0x0103,
530         0x0000, 0x0101, 0x0002, 0x0103, 0x0000, 0x0101,
531         0x0002, 0x0103,
532 };
533
534 static const u8 b43_ntab_mcs[] = {
535         0x00, 0x08, 0x0A, 0x10, 0x12, 0x19, 0x1A, 0x1C,
536         0x40, 0x48, 0x4A, 0x50, 0x52, 0x59, 0x5A, 0x5C,
537         0x80, 0x88, 0x8A, 0x90, 0x92, 0x99, 0x9A, 0x9C,
538         0xC0, 0xC8, 0xCA, 0xD0, 0xD2, 0xD9, 0xDA, 0xDC,
539         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
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, 0x01, 0x02, 0x04, 0x08, 0x09, 0x0A, 0x0C,
544         0x10, 0x11, 0x12, 0x14, 0x18, 0x19, 0x1A, 0x1C,
545         0x20, 0x21, 0x22, 0x24, 0x40, 0x41, 0x42, 0x44,
546         0x48, 0x49, 0x4A, 0x4C, 0x50, 0x51, 0x52, 0x54,
547         0x58, 0x59, 0x5A, 0x5C, 0x60, 0x61, 0x62, 0x64,
548         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
549         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
550         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
551 };
552
553 static const u32 b43_ntab_noisevar10[] = {
554         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
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 };
619
620 static const u32 b43_ntab_noisevar11[] = {
621         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
622         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
623         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
624         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
625         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
626         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
627         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
628         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
629         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
630         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
631         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
632         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
633         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
634         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
635         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
636         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
637         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
638         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
639         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
640         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
641         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
642         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
643         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
644         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
645         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
646         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
647         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
648         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
649         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
650         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
651         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
652         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
653         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
654         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
655         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
656         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
657         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
658         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
659         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
660         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
661         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
662         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
663         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
664         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
665         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
666         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
667         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
668         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
669         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
670         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
671         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
672         0x020C020C, 0x0000014D, 0x020C020C, 0x0000014D,
673         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 };
686
687 static const u16 b43_ntab_pilot[] = {
688         0xFF08, 0xFF08, 0xFF08, 0xFF08, 0xFF08, 0xFF08,
689         0xFF08, 0xFF08, 0x80D5, 0x80D5, 0x80D5, 0x80D5,
690         0x80D5, 0x80D5, 0x80D5, 0x80D5, 0xFF0A, 0xFF82,
691         0xFFA0, 0xFF28, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
692         0xFF82, 0xFFA0, 0xFF28, 0xFF0A, 0xFFFF, 0xFFFF,
693         0xFFFF, 0xFFFF, 0xF83F, 0xFA1F, 0xFA97, 0xFAB5,
694         0xF2BD, 0xF0BF, 0xFFFF, 0xFFFF, 0xF017, 0xF815,
695         0xF215, 0xF095, 0xF035, 0xF01D, 0xFFFF, 0xFFFF,
696         0xFF08, 0xFF02, 0xFF80, 0xFF20, 0xFF08, 0xFF02,
697         0xFF80, 0xFF20, 0xF01F, 0xF817, 0xFA15, 0xF295,
698         0xF0B5, 0xF03D, 0xFFFF, 0xFFFF, 0xF82A, 0xFA0A,
699         0xFA82, 0xFAA0, 0xF2A8, 0xF0AA, 0xFFFF, 0xFFFF,
700         0xF002, 0xF800, 0xF200, 0xF080, 0xF020, 0xF008,
701         0xFFFF, 0xFFFF, 0xF00A, 0xF802, 0xFA00, 0xF280,
702         0xF0A0, 0xF028, 0xFFFF, 0xFFFF,
703 };
704
705 static const u32 b43_ntab_pilotlt[] = {
706         0x76540123, 0x62407351, 0x76543201, 0x76540213,
707         0x76540123, 0x76430521,
708 };
709
710 static const u32 b43_ntab_tdi20a0[] = {
711         0x00091226, 0x000A1429, 0x000B56AD, 0x000C58B0,
712         0x000D5AB3, 0x000E9CB6, 0x000F9EBA, 0x0000C13D,
713         0x00020301, 0x00030504, 0x00040708, 0x0005090B,
714         0x00064B8E, 0x00095291, 0x000A5494, 0x000B9718,
715         0x000C9927, 0x000D9B2A, 0x000EDD2E, 0x000FDF31,
716         0x000101B4, 0x000243B7, 0x000345BB, 0x000447BE,
717         0x00058982, 0x00068C05, 0x00099309, 0x000A950C,
718         0x000BD78F, 0x000CD992, 0x000DDB96, 0x000F1D99,
719         0x00005FA8, 0x0001422C, 0x0002842F, 0x00038632,
720         0x00048835, 0x0005CA38, 0x0006CCBC, 0x0009D3BF,
721         0x000B1603, 0x000C1806, 0x000D1A0A, 0x000E1C0D,
722         0x000F5E10, 0x00008093, 0x00018297, 0x0002C49A,
723         0x0003C680, 0x0004C880, 0x00060B00, 0x00070D00,
724         0x00000000, 0x00000000, 0x00000000,
725 };
726
727 static const u32 b43_ntab_tdi20a1[] = {
728         0x00014B26, 0x00028D29, 0x000393AD, 0x00049630,
729         0x0005D833, 0x0006DA36, 0x00099C3A, 0x000A9E3D,
730         0x000BC081, 0x000CC284, 0x000DC488, 0x000F068B,
731         0x0000488E, 0x00018B91, 0x0002D214, 0x0003D418,
732         0x0004D6A7, 0x000618AA, 0x00071AAE, 0x0009DCB1,
733         0x000B1EB4, 0x000C0137, 0x000D033B, 0x000E053E,
734         0x000F4702, 0x00008905, 0x00020C09, 0x0003128C,
735         0x0004148F, 0x00051712, 0x00065916, 0x00091B19,
736         0x000A1D28, 0x000B5F2C, 0x000C41AF, 0x000D43B2,
737         0x000E85B5, 0x000F87B8, 0x0000C9BC, 0x00024CBF,
738         0x00035303, 0x00045506, 0x0005978A, 0x0006998D,
739         0x00095B90, 0x000A5D93, 0x000B9F97, 0x000C821A,
740         0x000D8400, 0x000EC600, 0x000FC800, 0x00010A00,
741         0x00000000, 0x00000000, 0x00000000,
742 };
743
744 static const u32 b43_ntab_tdi40a0[] = {
745         0x0011A346, 0x00136CCF, 0x0014F5D9, 0x001641E2,
746         0x0017CB6B, 0x00195475, 0x001B2383, 0x001CAD0C,
747         0x001E7616, 0x0000821F, 0x00020BA8, 0x0003D4B2,
748         0x00056447, 0x00072DD0, 0x0008B6DA, 0x000A02E3,
749         0x000B8C6C, 0x000D15F6, 0x0011E484, 0x0013AE0D,
750         0x00153717, 0x00168320, 0x00180CA9, 0x00199633,
751         0x001B6548, 0x001CEED1, 0x001EB7DB, 0x0000C3E4,
752         0x00024D6D, 0x000416F7, 0x0005A585, 0x00076F0F,
753         0x0008F818, 0x000A4421, 0x000BCDAB, 0x000D9734,
754         0x00122649, 0x0013EFD2, 0x001578DC, 0x0016C4E5,
755         0x00184E6E, 0x001A17F8, 0x001BA686, 0x001D3010,
756         0x001EF999, 0x00010522, 0x00028EAC, 0x00045835,
757         0x0005E74A, 0x0007B0D3, 0x00093A5D, 0x000A85E6,
758         0x000C0F6F, 0x000DD8F9, 0x00126787, 0x00143111,
759         0x0015BA9A, 0x00170623, 0x00188FAD, 0x001A5936,
760         0x001BE84B, 0x001DB1D4, 0x001F3B5E, 0x000146E7,
761         0x00031070, 0x000499FA, 0x00062888, 0x0007F212,
762         0x00097B9B, 0x000AC7A4, 0x000C50AE, 0x000E1A37,
763         0x0012A94C, 0x001472D5, 0x0015FC5F, 0x00174868,
764         0x0018D171, 0x001A9AFB, 0x001C2989, 0x001DF313,
765         0x001F7C9C, 0x000188A5, 0x000351AF, 0x0004DB38,
766         0x0006AA4D, 0x000833D7, 0x0009BD60, 0x000B0969,
767         0x000C9273, 0x000E5BFC, 0x00132A8A, 0x0014B414,
768         0x00163D9D, 0x001789A6, 0x001912B0, 0x001ADC39,
769         0x001C6BCE, 0x001E34D8, 0x001FBE61, 0x0001CA6A,
770         0x00039374, 0x00051CFD, 0x0006EC0B, 0x00087515,
771         0x0009FE9E, 0x000B4AA7, 0x000CD3B1, 0x000E9D3A,
772         0x00000000, 0x00000000,
773 };
774
775 static const u32 b43_ntab_tdi40a1[] = {
776         0x001EDB36, 0x000129CA, 0x0002B353, 0x00047CDD,
777         0x0005C8E6, 0x000791EF, 0x00091BF9, 0x000AAA07,
778         0x000C3391, 0x000DFD1A, 0x00120923, 0x0013D22D,
779         0x00155C37, 0x0016EACB, 0x00187454, 0x001A3DDE,
780         0x001B89E7, 0x001D12F0, 0x001F1CFA, 0x00016B88,
781         0x00033492, 0x0004BE1B, 0x00060A24, 0x0007D32E,
782         0x00095D38, 0x000AEC4C, 0x000C7555, 0x000E3EDF,
783         0x00124AE8, 0x001413F1, 0x0015A37B, 0x00172C89,
784         0x0018B593, 0x001A419C, 0x001BCB25, 0x001D942F,
785         0x001F63B9, 0x0001AD4D, 0x00037657, 0x0004C260,
786         0x00068BE9, 0x000814F3, 0x0009A47C, 0x000B2D8A,
787         0x000CB694, 0x000E429D, 0x00128C26, 0x001455B0,
788         0x0015E4BA, 0x00176E4E, 0x0018F758, 0x001A8361,
789         0x001C0CEA, 0x001DD674, 0x001FA57D, 0x0001EE8B,
790         0x0003B795, 0x0005039E, 0x0006CD27, 0x000856B1,
791         0x0009E5C6, 0x000B6F4F, 0x000CF859, 0x000E8462,
792         0x00130DEB, 0x00149775, 0x00162603, 0x0017AF8C,
793         0x00193896, 0x001AC49F, 0x001C4E28, 0x001E17B2,
794         0x0000A6C7, 0x00023050, 0x0003F9DA, 0x00054563,
795         0x00070EEC, 0x00089876, 0x000A2704, 0x000BB08D,
796         0x000D3A17, 0x001185A0, 0x00134F29, 0x0014D8B3,
797         0x001667C8, 0x0017F151, 0x00197ADB, 0x001B0664,
798         0x001C8FED, 0x001E5977, 0x0000E805, 0x0002718F,
799         0x00043B18, 0x000586A1, 0x0007502B, 0x0008D9B4,
800         0x000A68C9, 0x000BF252, 0x000DBBDC, 0x0011C7E5,
801         0x001390EE, 0x00151A78, 0x0016A906, 0x00183290,
802         0x0019BC19, 0x001B4822, 0x001CD12C, 0x001E9AB5,
803         0x00000000, 0x00000000,
804 };
805
806 static const u32 b43_ntab_tdtrn[] = {
807         0x061C061C, 0x0050EE68, 0xF592FE36, 0xFE5212F6,
808         0x00000C38, 0xFE5212F6, 0xF592FE36, 0x0050EE68,
809         0x061C061C, 0xEE680050, 0xFE36F592, 0x12F6FE52,
810         0x0C380000, 0x12F6FE52, 0xFE36F592, 0xEE680050,
811         0x061C061C, 0x0050EE68, 0xF592FE36, 0xFE5212F6,
812         0x00000C38, 0xFE5212F6, 0xF592FE36, 0x0050EE68,
813         0x061C061C, 0xEE680050, 0xFE36F592, 0x12F6FE52,
814         0x0C380000, 0x12F6FE52, 0xFE36F592, 0xEE680050,
815         0x05E305E3, 0x004DEF0C, 0xF5F3FE47, 0xFE611246,
816         0x00000BC7, 0xFE611246, 0xF5F3FE47, 0x004DEF0C,
817         0x05E305E3, 0xEF0C004D, 0xFE47F5F3, 0x1246FE61,
818         0x0BC70000, 0x1246FE61, 0xFE47F5F3, 0xEF0C004D,
819         0x05E305E3, 0x004DEF0C, 0xF5F3FE47, 0xFE611246,
820         0x00000BC7, 0xFE611246, 0xF5F3FE47, 0x004DEF0C,
821         0x05E305E3, 0xEF0C004D, 0xFE47F5F3, 0x1246FE61,
822         0x0BC70000, 0x1246FE61, 0xFE47F5F3, 0xEF0C004D,
823         0xFA58FA58, 0xF895043B, 0xFF4C09C0, 0xFBC6FFA8,
824         0xFB84F384, 0x0798F6F9, 0x05760122, 0x058409F6,
825         0x0B500000, 0x05B7F542, 0x08860432, 0x06DDFEE7,
826         0xFB84F384, 0xF9D90664, 0xF7E8025C, 0x00FFF7BD,
827         0x05A805A8, 0xF7BD00FF, 0x025CF7E8, 0x0664F9D9,
828         0xF384FB84, 0xFEE706DD, 0x04320886, 0xF54205B7,
829         0x00000B50, 0x09F60584, 0x01220576, 0xF6F90798,
830         0xF384FB84, 0xFFA8FBC6, 0x09C0FF4C, 0x043BF895,
831         0x02D402D4, 0x07DE0270, 0xFC96079C, 0xF90AFE94,
832         0xFE00FF2C, 0x02D4065D, 0x092A0096, 0x0014FBB8,
833         0xFD2CFD2C, 0x076AFB3C, 0x0096F752, 0xF991FD87,
834         0xFB2C0200, 0xFEB8F960, 0x08E0FC96, 0x049802A8,
835         0xFD2CFD2C, 0x02A80498, 0xFC9608E0, 0xF960FEB8,
836         0x0200FB2C, 0xFD87F991, 0xF7520096, 0xFB3C076A,
837         0xFD2CFD2C, 0xFBB80014, 0x0096092A, 0x065D02D4,
838         0xFF2CFE00, 0xFE94F90A, 0x079CFC96, 0x027007DE,
839         0x02D402D4, 0x027007DE, 0x079CFC96, 0xFE94F90A,
840         0xFF2CFE00, 0x065D02D4, 0x0096092A, 0xFBB80014,
841         0xFD2CFD2C, 0xFB3C076A, 0xF7520096, 0xFD87F991,
842         0x0200FB2C, 0xF960FEB8, 0xFC9608E0, 0x02A80498,
843         0xFD2CFD2C, 0x049802A8, 0x08E0FC96, 0xFEB8F960,
844         0xFB2C0200, 0xF991FD87, 0x0096F752, 0x076AFB3C,
845         0xFD2CFD2C, 0x0014FBB8, 0x092A0096, 0x02D4065D,
846         0xFE00FF2C, 0xF90AFE94, 0xFC96079C, 0x07DE0270,
847         0x00000000, 0x00000000, 0x00000000, 0x00000000,
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         0x062A0000, 0xFEFA0759, 0x08B80908, 0xF396FC2D,
872         0xF9D6045C, 0xFC4EF608, 0xF748F596, 0x07B207BF,
873         0x062A062A, 0xF84EF841, 0xF748F596, 0x03B209F8,
874         0xF9D6045C, 0x0C6A03D3, 0x08B80908, 0x0106F8A7,
875         0x062A0000, 0xFEFAF8A7, 0x08B8F6F8, 0xF39603D3,
876         0xF9D6FBA4, 0xFC4E09F8, 0xF7480A6A, 0x07B2F841,
877         0x062AF9D6, 0xF84E07BF, 0xF7480A6A, 0x03B2F608,
878         0xF9D6FBA4, 0x0C6AFC2D, 0x08B8F6F8, 0x01060759,
879         0x062A0000, 0xFEFA0759, 0x08B80908, 0xF396FC2D,
880         0xF9D6045C, 0xFC4EF608, 0xF748F596, 0x07B207BF,
881         0x062A062A, 0xF84EF841, 0xF748F596, 0x03B209F8,
882         0xF9D6045C, 0x0C6A03D3, 0x08B80908, 0x0106F8A7,
883         0x062A0000, 0xFEFAF8A7, 0x08B8F6F8, 0xF39603D3,
884         0xF9D6FBA4, 0xFC4E09F8, 0xF7480A6A, 0x07B2F841,
885         0x062AF9D6, 0xF84E07BF, 0xF7480A6A, 0x03B2F608,
886         0xF9D6FBA4, 0x0C6AFC2D, 0x08B8F6F8, 0x01060759,
887         0x061C061C, 0xFF30009D, 0xFFB21141, 0xFD87FB54,
888         0xF65DFE59, 0x02EEF99E, 0x0166F03C, 0xFFF809B6,
889         0x000008A4, 0x000AF42B, 0x00EFF577, 0xFA840BF2,
890         0xFC02FF51, 0x08260F67, 0xFFF0036F, 0x0842F9C3,
891         0x00000000, 0x063DF7BE, 0xFC910010, 0xF099F7DA,
892         0x00AF03FE, 0xF40E057C, 0x0A89FF11, 0x0BD5FFF6,
893         0xF75C0000, 0xF64A0008, 0x0FC4FE9A, 0x0662FD12,
894         0x01A709A3, 0x04AC0279, 0xEEBF004E, 0xFF6300D0,
895         0xF9E4F9E4, 0x00D0FF63, 0x004EEEBF, 0x027904AC,
896         0x09A301A7, 0xFD120662, 0xFE9A0FC4, 0x0008F64A,
897         0x0000F75C, 0xFFF60BD5, 0xFF110A89, 0x057CF40E,
898         0x03FE00AF, 0xF7DAF099, 0x0010FC91, 0xF7BE063D,
899         0x00000000, 0xF9C30842, 0x036FFFF0, 0x0F670826,
900         0xFF51FC02, 0x0BF2FA84, 0xF57700EF, 0xF42B000A,
901         0x08A40000, 0x09B6FFF8, 0xF03C0166, 0xF99E02EE,
902         0xFE59F65D, 0xFB54FD87, 0x1141FFB2, 0x009DFF30,
903         0x05E30000, 0xFF060705, 0x085408A0, 0xF425FC59,
904         0xFA1D042A, 0xFC78F67A, 0xF7ACF60E, 0x075A0766,
905         0x05E305E3, 0xF8A6F89A, 0xF7ACF60E, 0x03880986,
906         0xFA1D042A, 0x0BDB03A7, 0x085408A0, 0x00FAF8FB,
907         0x05E30000, 0xFF06F8FB, 0x0854F760, 0xF42503A7,
908         0xFA1DFBD6, 0xFC780986, 0xF7AC09F2, 0x075AF89A,
909         0x05E3FA1D, 0xF8A60766, 0xF7AC09F2, 0x0388F67A,
910         0xFA1DFBD6, 0x0BDBFC59, 0x0854F760, 0x00FA0705,
911         0x05E30000, 0xFF060705, 0x085408A0, 0xF425FC59,
912         0xFA1D042A, 0xFC78F67A, 0xF7ACF60E, 0x075A0766,
913         0x05E305E3, 0xF8A6F89A, 0xF7ACF60E, 0x03880986,
914         0xFA1D042A, 0x0BDB03A7, 0x085408A0, 0x00FAF8FB,
915         0x05E30000, 0xFF06F8FB, 0x0854F760, 0xF42503A7,
916         0xFA1DFBD6, 0xFC780986, 0xF7AC09F2, 0x075AF89A,
917         0x05E3FA1D, 0xF8A60766, 0xF7AC09F2, 0x0388F67A,
918         0xFA1DFBD6, 0x0BDBFC59, 0x0854F760, 0x00FA0705,
919         0xFA58FA58, 0xF8F0FE00, 0x0448073D, 0xFDC9FE46,
920         0xF9910258, 0x089D0407, 0xFD5CF71A, 0x02AFFDE0,
921         0x083E0496, 0xFF5A0740, 0xFF7AFD97, 0x00FE01F1,
922         0x0009082E, 0xFA94FF75, 0xFECDF8EA, 0xFFB0F693,
923         0xFD2CFA58, 0x0433FF16, 0xFBA405DD, 0xFA610341,
924         0x06A606CB, 0x0039FD2D, 0x0677FA97, 0x01FA05E0,
925         0xF896003E, 0x075A068B, 0x012CFC3E, 0xFA23F98D,
926         0xFC7CFD43, 0xFF90FC0D, 0x01C10982, 0x00C601D6,
927         0xFD2CFD2C, 0x01D600C6, 0x098201C1, 0xFC0DFF90,
928         0xFD43FC7C, 0xF98DFA23, 0xFC3E012C, 0x068B075A,
929         0x003EF896, 0x05E001FA, 0xFA970677, 0xFD2D0039,
930         0x06CB06A6, 0x0341FA61, 0x05DDFBA4, 0xFF160433,
931         0xFA58FD2C, 0xF693FFB0, 0xF8EAFECD, 0xFF75FA94,
932         0x082E0009, 0x01F100FE, 0xFD97FF7A, 0x0740FF5A,
933         0x0496083E, 0xFDE002AF, 0xF71AFD5C, 0x0407089D,
934         0x0258F991, 0xFE46FDC9, 0x073D0448, 0xFE00F8F0,
935         0xFD2CFD2C, 0xFCE00500, 0xFC09FDDC, 0xFE680157,
936         0x04C70571, 0xFC3AFF21, 0xFCD70228, 0x056D0277,
937         0x0200FE00, 0x0022F927, 0xFE3C032B, 0xFC44FF3C,
938         0x03E9FBDB, 0x04570313, 0x04C9FF5C, 0x000D03B8,
939         0xFA580000, 0xFBE900D2, 0xF9D0FE0B, 0x0125FDF9,
940         0x042501BF, 0x0328FA2B, 0xFFA902F0, 0xFA250157,
941         0x0200FE00, 0x03740438, 0xFF0405FD, 0x030CFE52,
942         0x0037FB39, 0xFF6904C5, 0x04F8FD23, 0xFD31FC1B,
943         0xFD2CFD2C, 0xFC1BFD31, 0xFD2304F8, 0x04C5FF69,
944         0xFB390037, 0xFE52030C, 0x05FDFF04, 0x04380374,
945         0xFE000200, 0x0157FA25, 0x02F0FFA9, 0xFA2B0328,
946         0x01BF0425, 0xFDF90125, 0xFE0BF9D0, 0x00D2FBE9,
947         0x0000FA58, 0x03B8000D, 0xFF5C04C9, 0x03130457,
948         0xFBDB03E9, 0xFF3CFC44, 0x032BFE3C, 0xF9270022,
949         0xFE000200, 0x0277056D, 0x0228FCD7, 0xFF21FC3A,
950         0x057104C7, 0x0157FE68, 0xFDDCFC09, 0x0500FCE0,
951         0xFD2CFD2C, 0x0500FCE0, 0xFDDCFC09, 0x0157FE68,
952         0x057104C7, 0xFF21FC3A, 0x0228FCD7, 0x0277056D,
953         0xFE000200, 0xF9270022, 0x032BFE3C, 0xFF3CFC44,
954         0xFBDB03E9, 0x03130457, 0xFF5C04C9, 0x03B8000D,
955         0x0000FA58, 0x00D2FBE9, 0xFE0BF9D0, 0xFDF90125,
956         0x01BF0425, 0xFA2B0328, 0x02F0FFA9, 0x0157FA25,
957         0xFE000200, 0x04380374, 0x05FDFF04, 0xFE52030C,
958         0xFB390037, 0x04C5FF69, 0xFD2304F8, 0xFC1BFD31,
959         0xFD2CFD2C, 0xFD31FC1B, 0x04F8FD23, 0xFF6904C5,
960         0x0037FB39, 0x030CFE52, 0xFF0405FD, 0x03740438,
961         0x0200FE00, 0xFA250157, 0xFFA902F0, 0x0328FA2B,
962         0x042501BF, 0x0125FDF9, 0xF9D0FE0B, 0xFBE900D2,
963         0xFA580000, 0x000D03B8, 0x04C9FF5C, 0x04570313,
964         0x03E9FBDB, 0xFC44FF3C, 0xFE3C032B, 0x0022F927,
965         0x0200FE00, 0x056D0277, 0xFCD70228, 0xFC3AFF21,
966         0x04C70571, 0xFE680157, 0xFC09FDDC, 0xFCE00500,
967         0x05A80000, 0xFF1006BE, 0x0800084A, 0xF49CFC7E,
968         0xFA580400, 0xFC9CF6DA, 0xF800F672, 0x0710071C,
969         0x05A805A8, 0xF8F0F8E4, 0xF800F672, 0x03640926,
970         0xFA580400, 0x0B640382, 0x0800084A, 0x00F0F942,
971         0x05A80000, 0xFF10F942, 0x0800F7B6, 0xF49C0382,
972         0xFA58FC00, 0xFC9C0926, 0xF800098E, 0x0710F8E4,
973         0x05A8FA58, 0xF8F0071C, 0xF800098E, 0x0364F6DA,
974         0xFA58FC00, 0x0B64FC7E, 0x0800F7B6, 0x00F006BE,
975         0x05A80000, 0xFF1006BE, 0x0800084A, 0xF49CFC7E,
976         0xFA580400, 0xFC9CF6DA, 0xF800F672, 0x0710071C,
977         0x05A805A8, 0xF8F0F8E4, 0xF800F672, 0x03640926,
978         0xFA580400, 0x0B640382, 0x0800084A, 0x00F0F942,
979         0x05A80000, 0xFF10F942, 0x0800F7B6, 0xF49C0382,
980         0xFA58FC00, 0xFC9C0926, 0xF800098E, 0x0710F8E4,
981         0x05A8FA58, 0xF8F0071C, 0xF800098E, 0x0364F6DA,
982         0xFA58FC00, 0x0B64FC7E, 0x0800F7B6, 0x00F006BE,
983 };
984
985 static const u32 b43_ntab_tmap[] = {
986         0x8A88AA80, 0x8AAAAA8A, 0x8A8A8AA8, 0x00000888,
987         0x88000000, 0x8A8A88AA, 0x8AA88888, 0x8888A8A8,
988         0xF1111110, 0x11111111, 0x11F11111, 0x00000111,
989         0x11000000, 0x1111F111, 0x11111111, 0x111111F1,
990         0x8A88AA80, 0x8AAAAA8A, 0x8A8A8AA8, 0x000AA888,
991         0x88880000, 0x8A8A88AA, 0x8AA88888, 0x8888A8A8,
992         0xA1111110, 0x11111111, 0x11C11111, 0x00000111,
993         0x11000000, 0x1111A111, 0x11111111, 0x111111A1,
994         0xA2222220, 0x22222222, 0x22C22222, 0x00000222,
995         0x22000000, 0x2222A222, 0x22222222, 0x222222A2,
996         0xF1111110, 0x11111111, 0x11F11111, 0x00011111,
997         0x11110000, 0x1111F111, 0x11111111, 0x111111F1,
998         0xA8AA88A0, 0xA88888A8, 0xA8A8A88A, 0x00088AAA,
999         0xAAAA0000, 0xA8A8AA88, 0xA88AAAAA, 0xAAAA8A8A,
1000         0xAAA8AAA0, 0x8AAA8AAA, 0xAA8A8A8A, 0x000AAA88,
1001         0x8AAA0000, 0xAAA8A888, 0x8AA88A8A, 0x8A88A888,
1002         0x08080A00, 0x0A08080A, 0x080A0A08, 0x00080808,
1003         0x080A0000, 0x080A0808, 0x080A0808, 0x0A0A0A08,
1004         0xA0A0A0A0, 0x80A0A080, 0x8080A0A0, 0x00008080,
1005         0x80A00000, 0x80A080A0, 0xA080A0A0, 0x8080A0A0,
1006         0x00000000, 0x00000000, 0x00000000, 0x00000000,
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         0x99999000, 0x9B9B99BB, 0x9BB99999, 0x9999B9B9,
1019         0x9B99BB90, 0x9BBBBB9B, 0x9B9B9BB9, 0x00000999,
1020         0x88000000, 0x8A8A88AA, 0x8AA88888, 0x8888A8A8,
1021         0x8A88AA80, 0x8AAAAA8A, 0x8A8A8AA8, 0x00AAA888,
1022         0x22000000, 0x2222B222, 0x22222222, 0x222222B2,
1023         0xB2222220, 0x22222222, 0x22D22222, 0x00000222,
1024         0x11000000, 0x1111A111, 0x11111111, 0x111111A1,
1025         0xA1111110, 0x11111111, 0x11C11111, 0x00000111,
1026         0x33000000, 0x3333B333, 0x33333333, 0x333333B3,
1027         0xB3333330, 0x33333333, 0x33D33333, 0x00000333,
1028         0x22000000, 0x2222A222, 0x22222222, 0x222222A2,
1029         0xA2222220, 0x22222222, 0x22C22222, 0x00000222,
1030         0x99B99B00, 0x9B9B99BB, 0x9BB99999, 0x9999B9B9,
1031         0x9B99BB99, 0x9BBBBB9B, 0x9B9B9BB9, 0x00000999,
1032         0x88000000, 0x8A8A88AA, 0x8AA88888, 0x8888A8A8,
1033         0x8A88AA88, 0x8AAAAA8A, 0x8A8A8AA8, 0x08AAA888,
1034         0x22222200, 0x2222F222, 0x22222222, 0x222222F2,
1035         0x22222222, 0x22222222, 0x22F22222, 0x00000222,
1036         0x11000000, 0x1111F111, 0x11111111, 0x11111111,
1037         0xF1111111, 0x11111111, 0x11F11111, 0x01111111,
1038         0xBB9BB900, 0xB9B9BB99, 0xB99BBBBB, 0xBBBB9B9B,
1039         0xB9BB99BB, 0xB99999B9, 0xB9B9B99B, 0x00000BBB,
1040         0xAA000000, 0xA8A8AA88, 0xA88AAAAA, 0xAAAA8A8A,
1041         0xA8AA88AA, 0xA88888A8, 0xA8A8A88A, 0x0A888AAA,
1042         0xAA000000, 0xA8A8AA88, 0xA88AAAAA, 0xAAAA8A8A,
1043         0xA8AA88A0, 0xA88888A8, 0xA8A8A88A, 0x00000AAA,
1044         0x88000000, 0x8A8A88AA, 0x8AA88888, 0x8888A8A8,
1045         0x8A88AA80, 0x8AAAAA8A, 0x8A8A8AA8, 0x00000888,
1046         0xBBBBBB00, 0x999BBBBB, 0x9BB99B9B, 0xB9B9B9BB,
1047         0xB9B99BBB, 0xB9B9B9BB, 0xB9BB9B99, 0x00000999,
1048         0x8A000000, 0xAA88A888, 0xA88888AA, 0xA88A8A88,
1049         0xA88AA88A, 0x88A8AAAA, 0xA8AA8AAA, 0x0888A88A,
1050         0x0B0B0B00, 0x090B0B0B, 0x0B090B0B, 0x0909090B,
1051         0x09090B0B, 0x09090B0B, 0x09090B09, 0x00000909,
1052         0x0A000000, 0x0A080808, 0x080A080A, 0x080A0A08,
1053         0x080A080A, 0x0808080A, 0x0A0A0A08, 0x0808080A,
1054         0xB0B0B000, 0x9090B0B0, 0x90B09090, 0xB0B0B090,
1055         0xB0B090B0, 0x90B0B0B0, 0xB0B09090, 0x00000090,
1056         0x80000000, 0xA080A080, 0xA08080A0, 0xA0808080,
1057         0xA080A080, 0x80A0A0A0, 0xA0A080A0, 0x00A0A0A0,
1058         0x22000000, 0x2222F222, 0x22222222, 0x222222F2,
1059         0xF2222220, 0x22222222, 0x22F22222, 0x00000222,
1060         0x11000000, 0x1111F111, 0x11111111, 0x111111F1,
1061         0xF1111110, 0x11111111, 0x11F11111, 0x00000111,
1062         0x33000000, 0x3333F333, 0x33333333, 0x333333F3,
1063         0xF3333330, 0x33333333, 0x33F33333, 0x00000333,
1064         0x22000000, 0x2222F222, 0x22222222, 0x222222F2,
1065         0xF2222220, 0x22222222, 0x22F22222, 0x00000222,
1066         0x99000000, 0x9B9B99BB, 0x9BB99999, 0x9999B9B9,
1067         0x9B99BB90, 0x9BBBBB9B, 0x9B9B9BB9, 0x00000999,
1068         0x88000000, 0x8A8A88AA, 0x8AA88888, 0x8888A8A8,
1069         0x8A88AA80, 0x8AAAAA8A, 0x8A8A8AA8, 0x00000888,
1070         0x88888000, 0x8A8A88AA, 0x8AA88888, 0x8888A8A8,
1071         0x8A88AA80, 0x8AAAAA8A, 0x8A8A8AA8, 0x00000888,
1072         0x88000000, 0x8A8A88AA, 0x8AA88888, 0x8888A8A8,
1073         0x8A88AA80, 0x8AAAAA8A, 0x8A8A8AA8, 0x00AAA888,
1074         0x88A88A00, 0x8A8A88AA, 0x8AA88888, 0x8888A8A8,
1075         0x8A88AA88, 0x8AAAAA8A, 0x8A8A8AA8, 0x00000888,
1076         0x88000000, 0x8A8A88AA, 0x8AA88888, 0x8888A8A8,
1077         0x8A88AA88, 0x8AAAAA8A, 0x8A8A8AA8, 0x08AAA888,
1078         0x11000000, 0x1111A111, 0x11111111, 0x111111A1,
1079         0xA1111110, 0x11111111, 0x11C11111, 0x00000111,
1080         0x11000000, 0x1111A111, 0x11111111, 0x111111A1,
1081         0xA1111110, 0x11111111, 0x11C11111, 0x00000111,
1082         0x88000000, 0x8A8A88AA, 0x8AA88888, 0x8888A8A8,
1083         0x8A88AA80, 0x8AAAAA8A, 0x8A8A8AA8, 0x00000888,
1084         0x88000000, 0x8A8A88AA, 0x8AA88888, 0x8888A8A8,
1085         0x8A88AA80, 0x8AAAAA8A, 0x8A8A8AA8, 0x00000888,
1086         0x00000000, 0x00000000, 0x00000000, 0x00000000,
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 };
1099
1100 const u32 b43_ntab_tx_gain_rev0_1_2[] = {
1101         0x03cc2b44, 0x03cc2b42, 0x03cc2a44, 0x03cc2a42,
1102         0x03cc2944, 0x03c82b44, 0x03c82b42, 0x03c82a44,
1103         0x03c82a42, 0x03c82944, 0x03c82942, 0x03c82844,
1104         0x03c82842, 0x03c42b44, 0x03c42b42, 0x03c42a44,
1105         0x03c42a42, 0x03c42944, 0x03c42942, 0x03c42844,
1106         0x03c42842, 0x03c42744, 0x03c42742, 0x03c42644,
1107         0x03c42642, 0x03c42544, 0x03c42542, 0x03c42444,
1108         0x03c42442, 0x03c02b44, 0x03c02b42, 0x03c02a44,
1109         0x03c02a42, 0x03c02944, 0x03c02942, 0x03c02844,
1110         0x03c02842, 0x03c02744, 0x03c02742, 0x03b02b44,
1111         0x03b02b42, 0x03b02a44, 0x03b02a42, 0x03b02944,
1112         0x03b02942, 0x03b02844, 0x03b02842, 0x03b02744,
1113         0x03b02742, 0x03b02644, 0x03b02642, 0x03b02544,
1114         0x03b02542, 0x03a02b44, 0x03a02b42, 0x03a02a44,
1115         0x03a02a42, 0x03a02944, 0x03a02942, 0x03a02844,
1116         0x03a02842, 0x03a02744, 0x03a02742, 0x03902b44,
1117         0x03902b42, 0x03902a44, 0x03902a42, 0x03902944,
1118         0x03902942, 0x03902844, 0x03902842, 0x03902744,
1119         0x03902742, 0x03902644, 0x03902642, 0x03902544,
1120         0x03902542, 0x03802b44, 0x03802b42, 0x03802a44,
1121         0x03802a42, 0x03802944, 0x03802942, 0x03802844,
1122         0x03802842, 0x03802744, 0x03802742, 0x03802644,
1123         0x03802642, 0x03802544, 0x03802542, 0x03802444,
1124         0x03802442, 0x03802344, 0x03802342, 0x03802244,
1125         0x03802242, 0x03802144, 0x03802142, 0x03802044,
1126         0x03802042, 0x03801f44, 0x03801f42, 0x03801e44,
1127         0x03801e42, 0x03801d44, 0x03801d42, 0x03801c44,
1128         0x03801c42, 0x03801b44, 0x03801b42, 0x03801a44,
1129         0x03801a42, 0x03801944, 0x03801942, 0x03801844,
1130         0x03801842, 0x03801744, 0x03801742, 0x03801644,
1131         0x03801642, 0x03801544, 0x03801542, 0x03801444,
1132         0x03801442, 0x03801344, 0x03801342, 0x00002b00,
1133 };
1134
1135 const u32 b43_ntab_tx_gain_rev3plus_2ghz[] = {
1136         0x1f410044, 0x1f410042, 0x1f410040, 0x1f41003e,
1137         0x1f41003c, 0x1f41003b, 0x1f410039, 0x1f410037,
1138         0x1e410044, 0x1e410042, 0x1e410040, 0x1e41003e,
1139         0x1e41003c, 0x1e41003b, 0x1e410039, 0x1e410037,
1140         0x1d410044, 0x1d410042, 0x1d410040, 0x1d41003e,
1141         0x1d41003c, 0x1d41003b, 0x1d410039, 0x1d410037,
1142         0x1c410044, 0x1c410042, 0x1c410040, 0x1c41003e,
1143         0x1c41003c, 0x1c41003b, 0x1c410039, 0x1c410037,
1144         0x1b410044, 0x1b410042, 0x1b410040, 0x1b41003e,
1145         0x1b41003c, 0x1b41003b, 0x1b410039, 0x1b410037,
1146         0x1a410044, 0x1a410042, 0x1a410040, 0x1a41003e,
1147         0x1a41003c, 0x1a41003b, 0x1a410039, 0x1a410037,
1148         0x19410044, 0x19410042, 0x19410040, 0x1941003e,
1149         0x1941003c, 0x1941003b, 0x19410039, 0x19410037,
1150         0x18410044, 0x18410042, 0x18410040, 0x1841003e,
1151         0x1841003c, 0x1841003b, 0x18410039, 0x18410037,
1152         0x17410044, 0x17410042, 0x17410040, 0x1741003e,
1153         0x1741003c, 0x1741003b, 0x17410039, 0x17410037,
1154         0x16410044, 0x16410042, 0x16410040, 0x1641003e,
1155         0x1641003c, 0x1641003b, 0x16410039, 0x16410037,
1156         0x15410044, 0x15410042, 0x15410040, 0x1541003e,
1157         0x1541003c, 0x1541003b, 0x15410039, 0x15410037,
1158         0x14410044, 0x14410042, 0x14410040, 0x1441003e,
1159         0x1441003c, 0x1441003b, 0x14410039, 0x14410037,
1160         0x13410044, 0x13410042, 0x13410040, 0x1341003e,
1161         0x1341003c, 0x1341003b, 0x13410039, 0x13410037,
1162         0x12410044, 0x12410042, 0x12410040, 0x1241003e,
1163         0x1241003c, 0x1241003b, 0x12410039, 0x12410037,
1164         0x11410044, 0x11410042, 0x11410040, 0x1141003e,
1165         0x1141003c, 0x1141003b, 0x11410039, 0x11410037,
1166         0x10410044, 0x10410042, 0x10410040, 0x1041003e,
1167         0x1041003c, 0x1041003b, 0x10410039, 0x10410037,
1168 };
1169
1170 const u32 b43_ntab_tx_gain_rev3_5ghz[] = {
1171         0xcff70044, 0xcff70042, 0xcff70040, 0xcff7003e,
1172         0xcff7003c, 0xcff7003b, 0xcff70039, 0xcff70037,
1173         0xcef70044, 0xcef70042, 0xcef70040, 0xcef7003e,
1174         0xcef7003c, 0xcef7003b, 0xcef70039, 0xcef70037,
1175         0xcdf70044, 0xcdf70042, 0xcdf70040, 0xcdf7003e,
1176         0xcdf7003c, 0xcdf7003b, 0xcdf70039, 0xcdf70037,
1177         0xccf70044, 0xccf70042, 0xccf70040, 0xccf7003e,
1178         0xccf7003c, 0xccf7003b, 0xccf70039, 0xccf70037,
1179         0xcbf70044, 0xcbf70042, 0xcbf70040, 0xcbf7003e,
1180         0xcbf7003c, 0xcbf7003b, 0xcbf70039, 0xcbf70037,
1181         0xcaf70044, 0xcaf70042, 0xcaf70040, 0xcaf7003e,
1182         0xcaf7003c, 0xcaf7003b, 0xcaf70039, 0xcaf70037,
1183         0xc9f70044, 0xc9f70042, 0xc9f70040, 0xc9f7003e,
1184         0xc9f7003c, 0xc9f7003b, 0xc9f70039, 0xc9f70037,
1185         0xc8f70044, 0xc8f70042, 0xc8f70040, 0xc8f7003e,
1186         0xc8f7003c, 0xc8f7003b, 0xc8f70039, 0xc8f70037,
1187         0xc7f70044, 0xc7f70042, 0xc7f70040, 0xc7f7003e,
1188         0xc7f7003c, 0xc7f7003b, 0xc7f70039, 0xc7f70037,
1189         0xc6f70044, 0xc6f70042, 0xc6f70040, 0xc6f7003e,
1190         0xc6f7003c, 0xc6f7003b, 0xc6f70039, 0xc6f70037,
1191         0xc5f70044, 0xc5f70042, 0xc5f70040, 0xc5f7003e,
1192         0xc5f7003c, 0xc5f7003b, 0xc5f70039, 0xc5f70037,
1193         0xc4f70044, 0xc4f70042, 0xc4f70040, 0xc4f7003e,
1194         0xc4f7003c, 0xc4f7003b, 0xc4f70039, 0xc4f70037,
1195         0xc3f70044, 0xc3f70042, 0xc3f70040, 0xc3f7003e,
1196         0xc3f7003c, 0xc3f7003b, 0xc3f70039, 0xc3f70037,
1197         0xc2f70044, 0xc2f70042, 0xc2f70040, 0xc2f7003e,
1198         0xc2f7003c, 0xc2f7003b, 0xc2f70039, 0xc2f70037,
1199         0xc1f70044, 0xc1f70042, 0xc1f70040, 0xc1f7003e,
1200         0xc1f7003c, 0xc1f7003b, 0xc1f70039, 0xc1f70037,
1201         0xc0f70044, 0xc0f70042, 0xc0f70040, 0xc0f7003e,
1202         0xc0f7003c, 0xc0f7003b, 0xc0f70039, 0xc0f70037,
1203 };
1204
1205 const u32 b43_ntab_tx_gain_rev4_5ghz[] = {
1206         0x2ff20044, 0x2ff20042, 0x2ff20040, 0x2ff2003e,
1207         0x2ff2003c, 0x2ff2003b, 0x2ff20039, 0x2ff20037,
1208         0x2ef20044, 0x2ef20042, 0x2ef20040, 0x2ef2003e,
1209         0x2ef2003c, 0x2ef2003b, 0x2ef20039, 0x2ef20037,
1210         0x2df20044, 0x2df20042, 0x2df20040, 0x2df2003e,
1211         0x2df2003c, 0x2df2003b, 0x2df20039, 0x2df20037,
1212         0x2cf20044, 0x2cf20042, 0x2cf20040, 0x2cf2003e,
1213         0x2cf2003c, 0x2cf2003b, 0x2cf20039, 0x2cf20037,
1214         0x2bf20044, 0x2bf20042, 0x2bf20040, 0x2bf2003e,
1215         0x2bf2003c, 0x2bf2003b, 0x2bf20039, 0x2bf20037,
1216         0x2af20044, 0x2af20042, 0x2af20040, 0x2af2003e,
1217         0x2af2003c, 0x2af2003b, 0x2af20039, 0x2af20037,
1218         0x29f20044, 0x29f20042, 0x29f20040, 0x29f2003e,
1219         0x29f2003c, 0x29f2003b, 0x29f20039, 0x29f20037,
1220         0x28f20044, 0x28f20042, 0x28f20040, 0x28f2003e,
1221         0x28f2003c, 0x28f2003b, 0x28f20039, 0x28f20037,
1222         0x27f20044, 0x27f20042, 0x27f20040, 0x27f2003e,
1223         0x27f2003c, 0x27f2003b, 0x27f20039, 0x27f20037,
1224         0x26f20044, 0x26f20042, 0x26f20040, 0x26f2003e,
1225         0x26f2003c, 0x26f2003b, 0x26f20039, 0x26f20037,
1226         0x25f20044, 0x25f20042, 0x25f20040, 0x25f2003e,
1227         0x25f2003c, 0x25f2003b, 0x25f20039, 0x25f20037,
1228         0x24f20044, 0x24f20042, 0x24f20040, 0x24f2003e,
1229         0x24f2003c, 0x24f2003b, 0x24f20039, 0x24f20038,
1230         0x23f20041, 0x23f20040, 0x23f2003f, 0x23f2003e,
1231         0x23f2003c, 0x23f2003b, 0x23f20039, 0x23f20037,
1232         0x22f20044, 0x22f20042, 0x22f20040, 0x22f2003e,
1233         0x22f2003c, 0x22f2003b, 0x22f20039, 0x22f20037,
1234         0x21f20044, 0x21f20042, 0x21f20040, 0x21f2003e,
1235         0x21f2003c, 0x21f2003b, 0x21f20039, 0x21f20037,
1236         0x20d20043, 0x20d20041, 0x20d2003e, 0x20d2003c,
1237         0x20d2003a, 0x20d20038, 0x20d20036, 0x20d20034,
1238 };
1239
1240 const u32 b43_ntab_tx_gain_rev5plus_5ghz[] = {
1241         0x0f62004a, 0x0f620048, 0x0f620046, 0x0f620044,
1242         0x0f620042, 0x0f620040, 0x0f62003e, 0x0f62003c,
1243         0x0e620044, 0x0e620042, 0x0e620040, 0x0e62003e,
1244         0x0e62003c, 0x0e62003d, 0x0e62003b, 0x0e62003a,
1245         0x0d620043, 0x0d620041, 0x0d620040, 0x0d62003e,
1246         0x0d62003d, 0x0d62003c, 0x0d62003b, 0x0d62003a,
1247         0x0c620041, 0x0c620040, 0x0c62003f, 0x0c62003e,
1248         0x0c62003c, 0x0c62003b, 0x0c620039, 0x0c620037,
1249         0x0b620046, 0x0b620044, 0x0b620042, 0x0b620040,
1250         0x0b62003e, 0x0b62003c, 0x0b62003b, 0x0b62003a,
1251         0x0a620041, 0x0a620040, 0x0a62003e, 0x0a62003c,
1252         0x0a62003b, 0x0a62003a, 0x0a620039, 0x0a620038,
1253         0x0962003e, 0x0962003d, 0x0962003c, 0x0962003b,
1254         0x09620039, 0x09620037, 0x09620035, 0x09620033,
1255         0x08620044, 0x08620042, 0x08620040, 0x0862003e,
1256         0x0862003c, 0x0862003b, 0x0862003a, 0x08620039,
1257         0x07620043, 0x07620042, 0x07620040, 0x0762003f,
1258         0x0762003d, 0x0762003b, 0x0762003a, 0x07620039,
1259         0x0662003e, 0x0662003d, 0x0662003c, 0x0662003b,
1260         0x06620039, 0x06620037, 0x06620035, 0x06620033,
1261         0x05620046, 0x05620044, 0x05620042, 0x05620040,
1262         0x0562003e, 0x0562003c, 0x0562003b, 0x05620039,
1263         0x04620044, 0x04620042, 0x04620040, 0x0462003e,
1264         0x0462003c, 0x0462003b, 0x04620039, 0x04620038,
1265         0x0362003c, 0x0362003b, 0x0362003a, 0x03620039,
1266         0x03620038, 0x03620037, 0x03620035, 0x03620033,
1267         0x0262004c, 0x0262004a, 0x02620048, 0x02620047,
1268         0x02620046, 0x02620044, 0x02620043, 0x02620042,
1269         0x0162004a, 0x01620048, 0x01620046, 0x01620044,
1270         0x01620043, 0x01620042, 0x01620041, 0x01620040,
1271         0x00620042, 0x00620040, 0x0062003e, 0x0062003c,
1272         0x0062003b, 0x00620039, 0x00620037, 0x00620035,
1273 };
1274
1275 const u32 txpwrctrl_tx_gain_ipa[] = {
1276         0x5ff7002d, 0x5ff7002b, 0x5ff7002a, 0x5ff70029,
1277         0x5ff70028, 0x5ff70027, 0x5ff70026, 0x5ff70025,
1278         0x5ef7002d, 0x5ef7002b, 0x5ef7002a, 0x5ef70029,
1279         0x5ef70028, 0x5ef70027, 0x5ef70026, 0x5ef70025,
1280         0x5df7002d, 0x5df7002b, 0x5df7002a, 0x5df70029,
1281         0x5df70028, 0x5df70027, 0x5df70026, 0x5df70025,
1282         0x5cf7002d, 0x5cf7002b, 0x5cf7002a, 0x5cf70029,
1283         0x5cf70028, 0x5cf70027, 0x5cf70026, 0x5cf70025,
1284         0x5bf7002d, 0x5bf7002b, 0x5bf7002a, 0x5bf70029,
1285         0x5bf70028, 0x5bf70027, 0x5bf70026, 0x5bf70025,
1286         0x5af7002d, 0x5af7002b, 0x5af7002a, 0x5af70029,
1287         0x5af70028, 0x5af70027, 0x5af70026, 0x5af70025,
1288         0x59f7002d, 0x59f7002b, 0x59f7002a, 0x59f70029,
1289         0x59f70028, 0x59f70027, 0x59f70026, 0x59f70025,
1290         0x58f7002d, 0x58f7002b, 0x58f7002a, 0x58f70029,
1291         0x58f70028, 0x58f70027, 0x58f70026, 0x58f70025,
1292         0x57f7002d, 0x57f7002b, 0x57f7002a, 0x57f70029,
1293         0x57f70028, 0x57f70027, 0x57f70026, 0x57f70025,
1294         0x56f7002d, 0x56f7002b, 0x56f7002a, 0x56f70029,
1295         0x56f70028, 0x56f70027, 0x56f70026, 0x56f70025,
1296         0x55f7002d, 0x55f7002b, 0x55f7002a, 0x55f70029,
1297         0x55f70028, 0x55f70027, 0x55f70026, 0x55f70025,
1298         0x54f7002d, 0x54f7002b, 0x54f7002a, 0x54f70029,
1299         0x54f70028, 0x54f70027, 0x54f70026, 0x54f70025,
1300         0x53f7002d, 0x53f7002b, 0x53f7002a, 0x53f70029,
1301         0x53f70028, 0x53f70027, 0x53f70026, 0x53f70025,
1302         0x52f7002d, 0x52f7002b, 0x52f7002a, 0x52f70029,
1303         0x52f70028, 0x52f70027, 0x52f70026, 0x52f70025,
1304         0x51f7002d, 0x51f7002b, 0x51f7002a, 0x51f70029,
1305         0x51f70028, 0x51f70027, 0x51f70026, 0x51f70025,
1306         0x50f7002d, 0x50f7002b, 0x50f7002a, 0x50f70029,
1307         0x50f70028, 0x50f70027, 0x50f70026, 0x50f70025,
1308 };
1309
1310 const u32 txpwrctrl_tx_gain_ipa_rev5[] = {
1311         0x1ff7002d, 0x1ff7002b, 0x1ff7002a, 0x1ff70029,
1312         0x1ff70028, 0x1ff70027, 0x1ff70026, 0x1ff70025,
1313         0x1ef7002d, 0x1ef7002b, 0x1ef7002a, 0x1ef70029,
1314         0x1ef70028, 0x1ef70027, 0x1ef70026, 0x1ef70025,
1315         0x1df7002d, 0x1df7002b, 0x1df7002a, 0x1df70029,
1316         0x1df70028, 0x1df70027, 0x1df70026, 0x1df70025,
1317         0x1cf7002d, 0x1cf7002b, 0x1cf7002a, 0x1cf70029,
1318         0x1cf70028, 0x1cf70027, 0x1cf70026, 0x1cf70025,
1319         0x1bf7002d, 0x1bf7002b, 0x1bf7002a, 0x1bf70029,
1320         0x1bf70028, 0x1bf70027, 0x1bf70026, 0x1bf70025,
1321         0x1af7002d, 0x1af7002b, 0x1af7002a, 0x1af70029,
1322         0x1af70028, 0x1af70027, 0x1af70026, 0x1af70025,
1323         0x19f7002d, 0x19f7002b, 0x19f7002a, 0x19f70029,
1324         0x19f70028, 0x19f70027, 0x19f70026, 0x19f70025,
1325         0x18f7002d, 0x18f7002b, 0x18f7002a, 0x18f70029,
1326         0x18f70028, 0x18f70027, 0x18f70026, 0x18f70025,
1327         0x17f7002d, 0x17f7002b, 0x17f7002a, 0x17f70029,
1328         0x17f70028, 0x17f70027, 0x17f70026, 0x17f70025,
1329         0x16f7002d, 0x16f7002b, 0x16f7002a, 0x16f70029,
1330         0x16f70028, 0x16f70027, 0x16f70026, 0x16f70025,
1331         0x15f7002d, 0x15f7002b, 0x15f7002a, 0x15f70029,
1332         0x15f70028, 0x15f70027, 0x15f70026, 0x15f70025,
1333         0x14f7002d, 0x14f7002b, 0x14f7002a, 0x14f70029,
1334         0x14f70028, 0x14f70027, 0x14f70026, 0x14f70025,
1335         0x13f7002d, 0x13f7002b, 0x13f7002a, 0x13f70029,
1336         0x13f70028, 0x13f70027, 0x13f70026, 0x13f70025,
1337         0x12f7002d, 0x12f7002b, 0x12f7002a, 0x12f70029,
1338         0x12f70028, 0x12f70027, 0x12f70026, 0x12f70025,
1339         0x11f7002d, 0x11f7002b, 0x11f7002a, 0x11f70029,
1340         0x11f70028, 0x11f70027, 0x11f70026, 0x11f70025,
1341         0x10f7002d, 0x10f7002b, 0x10f7002a, 0x10f70029,
1342         0x10f70028, 0x10f70027, 0x10f70026, 0x10f70025,
1343 };
1344
1345 const u32 txpwrctrl_tx_gain_ipa_rev6[] = {
1346         0x0ff7002d, 0x0ff7002b, 0x0ff7002a, 0x0ff70029,
1347         0x0ff70028, 0x0ff70027, 0x0ff70026, 0x0ff70025,
1348         0x0ef7002d, 0x0ef7002b, 0x0ef7002a, 0x0ef70029,
1349         0x0ef70028, 0x0ef70027, 0x0ef70026, 0x0ef70025,
1350         0x0df7002d, 0x0df7002b, 0x0df7002a, 0x0df70029,
1351         0x0df70028, 0x0df70027, 0x0df70026, 0x0df70025,
1352         0x0cf7002d, 0x0cf7002b, 0x0cf7002a, 0x0cf70029,
1353         0x0cf70028, 0x0cf70027, 0x0cf70026, 0x0cf70025,
1354         0x0bf7002d, 0x0bf7002b, 0x0bf7002a, 0x0bf70029,
1355         0x0bf70028, 0x0bf70027, 0x0bf70026, 0x0bf70025,
1356         0x0af7002d, 0x0af7002b, 0x0af7002a, 0x0af70029,
1357         0x0af70028, 0x0af70027, 0x0af70026, 0x0af70025,
1358         0x09f7002d, 0x09f7002b, 0x09f7002a, 0x09f70029,
1359         0x09f70028, 0x09f70027, 0x09f70026, 0x09f70025,
1360         0x08f7002d, 0x08f7002b, 0x08f7002a, 0x08f70029,
1361         0x08f70028, 0x08f70027, 0x08f70026, 0x08f70025,
1362         0x07f7002d, 0x07f7002b, 0x07f7002a, 0x07f70029,
1363         0x07f70028, 0x07f70027, 0x07f70026, 0x07f70025,
1364         0x06f7002d, 0x06f7002b, 0x06f7002a, 0x06f70029,
1365         0x06f70028, 0x06f70027, 0x06f70026, 0x06f70025,
1366         0x05f7002d, 0x05f7002b, 0x05f7002a, 0x05f70029,
1367         0x05f70028, 0x05f70027, 0x05f70026, 0x05f70025,
1368         0x04f7002d, 0x04f7002b, 0x04f7002a, 0x04f70029,
1369         0x04f70028, 0x04f70027, 0x04f70026, 0x04f70025,
1370         0x03f7002d, 0x03f7002b, 0x03f7002a, 0x03f70029,
1371         0x03f70028, 0x03f70027, 0x03f70026, 0x03f70025,
1372         0x02f7002d, 0x02f7002b, 0x02f7002a, 0x02f70029,
1373         0x02f70028, 0x02f70027, 0x02f70026, 0x02f70025,
1374         0x01f7002d, 0x01f7002b, 0x01f7002a, 0x01f70029,
1375         0x01f70028, 0x01f70027, 0x01f70026, 0x01f70025,
1376         0x00f7002d, 0x00f7002b, 0x00f7002a, 0x00f70029,
1377         0x00f70028, 0x00f70027, 0x00f70026, 0x00f70025,
1378 };
1379
1380 const u32 txpwrctrl_tx_gain_ipa_5g[] = {
1381         0x7ff70035, 0x7ff70033, 0x7ff70032, 0x7ff70031,
1382         0x7ff7002f, 0x7ff7002e, 0x7ff7002d, 0x7ff7002b,
1383         0x7ff7002a, 0x7ff70029, 0x7ff70028, 0x7ff70027,
1384         0x7ff70026, 0x7ff70024, 0x7ff70023, 0x7ff70022,
1385         0x7ef70028, 0x7ef70027, 0x7ef70026, 0x7ef70025,
1386         0x7ef70024, 0x7ef70023, 0x7df70028, 0x7df70027,
1387         0x7df70026, 0x7df70025, 0x7df70024, 0x7df70023,
1388         0x7df70022, 0x7cf70029, 0x7cf70028, 0x7cf70027,
1389         0x7cf70026, 0x7cf70025, 0x7cf70023, 0x7cf70022,
1390         0x7bf70029, 0x7bf70028, 0x7bf70026, 0x7bf70025,
1391         0x7bf70024, 0x7bf70023, 0x7bf70022, 0x7bf70021,
1392         0x7af70029, 0x7af70028, 0x7af70027, 0x7af70026,
1393         0x7af70025, 0x7af70024, 0x7af70023, 0x7af70022,
1394         0x79f70029, 0x79f70028, 0x79f70027, 0x79f70026,
1395         0x79f70025, 0x79f70024, 0x79f70023, 0x79f70022,
1396         0x78f70029, 0x78f70028, 0x78f70027, 0x78f70026,
1397         0x78f70025, 0x78f70024, 0x78f70023, 0x78f70022,
1398         0x77f70029, 0x77f70028, 0x77f70027, 0x77f70026,
1399         0x77f70025, 0x77f70024, 0x77f70023, 0x77f70022,
1400         0x76f70029, 0x76f70028, 0x76f70027, 0x76f70026,
1401         0x76f70024, 0x76f70023, 0x76f70022, 0x76f70021,
1402         0x75f70029, 0x75f70028, 0x75f70027, 0x75f70026,
1403         0x75f70025, 0x75f70024, 0x75f70023, 0x74f70029,
1404         0x74f70028, 0x74f70026, 0x74f70025, 0x74f70024,
1405         0x74f70023, 0x74f70022, 0x73f70029, 0x73f70027,
1406         0x73f70026, 0x73f70025, 0x73f70024, 0x73f70023,
1407         0x73f70022, 0x72f70028, 0x72f70027, 0x72f70026,
1408         0x72f70025, 0x72f70024, 0x72f70023, 0x72f70022,
1409         0x71f70028, 0x71f70027, 0x71f70026, 0x71f70025,
1410         0x71f70024, 0x71f70023, 0x70f70028, 0x70f70027,
1411         0x70f70026, 0x70f70024, 0x70f70023, 0x70f70022,
1412         0x70f70021, 0x70f70020, 0x70f70020, 0x70f7001f,
1413 };
1414
1415 const u16 tbl_iqcal_gainparams[2][9][8] = {
1416         {
1417                 { 0x000, 0, 0, 2, 0x69, 0x69, 0x69, 0x69 },
1418                 { 0x700, 7, 0, 0, 0x69, 0x69, 0x69, 0x69 },
1419                 { 0x710, 7, 1, 0, 0x68, 0x68, 0x68, 0x68 },
1420                 { 0x720, 7, 2, 0, 0x67, 0x67, 0x67, 0x67 },
1421                 { 0x730, 7, 3, 0, 0x66, 0x66, 0x66, 0x66 },
1422                 { 0x740, 7, 4, 0, 0x65, 0x65, 0x65, 0x65 },
1423                 { 0x741, 7, 4, 1, 0x65, 0x65, 0x65, 0x65 },
1424                 { 0x742, 7, 4, 2, 0x65, 0x65, 0x65, 0x65 },
1425                 { 0x743, 7, 4, 3, 0x65, 0x65, 0x65, 0x65 }
1426         },
1427         {
1428                 { 0x000, 7, 0, 0, 0x79, 0x79, 0x79, 0x79 },
1429                 { 0x700, 7, 0, 0, 0x79, 0x79, 0x79, 0x79 },
1430                 { 0x710, 7, 1, 0, 0x79, 0x79, 0x79, 0x79 },
1431                 { 0x720, 7, 2, 0, 0x78, 0x78, 0x78, 0x78 },
1432                 { 0x730, 7, 3, 0, 0x78, 0x78, 0x78, 0x78 },
1433                 { 0x740, 7, 4, 0, 0x78, 0x78, 0x78, 0x78 },
1434                 { 0x741, 7, 4, 1, 0x78, 0x78, 0x78, 0x78 },
1435                 { 0x742, 7, 4, 2, 0x78, 0x78, 0x78, 0x78 },
1436                 { 0x743, 7, 4, 3, 0x78, 0x78, 0x78, 0x78 }
1437         }
1438 };
1439
1440 const struct nphy_txiqcal_ladder ladder_lo[] = {
1441         { 3, 0 },
1442         { 4, 0 },
1443         { 6, 0 },
1444         { 9, 0 },
1445         { 13, 0 },
1446         { 18, 0 },
1447         { 25, 0 },
1448         { 25, 1 },
1449         { 25, 2 },
1450         { 25, 3 },
1451         { 25, 4 },
1452         { 25, 5 },
1453         { 25, 6 },
1454         { 25, 7 },
1455         { 35, 7 },
1456         { 50, 7 },
1457         { 71, 7 },
1458         { 100, 7 }
1459 };
1460
1461 const struct nphy_txiqcal_ladder ladder_iq[] = {
1462         { 3, 0 },
1463         { 4, 0 },
1464         { 6, 0 },
1465         { 9, 0 },
1466         { 13, 0 },
1467         { 18, 0 },
1468         { 25, 0 },
1469         { 35, 0 },
1470         { 50, 0 },
1471         { 71, 0 },
1472         { 100, 0 },
1473         { 100, 1 },
1474         { 100, 2 },
1475         { 100, 3 },
1476         { 100, 4 },
1477         { 100, 5 },
1478         { 100, 6 },
1479         { 100, 7 }
1480 };
1481
1482 const u16 loscale[] = {
1483         256, 256, 271, 271,
1484         287, 256, 256, 271,
1485         271, 287, 287, 304,
1486         304, 256, 256, 271,
1487         271, 287, 287, 304,
1488         304, 322, 322, 341,
1489         341, 362, 362, 383,
1490         383, 256, 256, 271,
1491         271, 287, 287, 304,
1492         304, 322, 322, 256,
1493         256, 271, 271, 287,
1494         287, 304, 304, 322,
1495         322, 341, 341, 362,
1496         362, 256, 256, 271,
1497         271, 287, 287, 304,
1498         304, 322, 322, 256,
1499         256, 271, 271, 287,
1500         287, 304, 304, 322,
1501         322, 341, 341, 362,
1502         362, 256, 256, 271,
1503         271, 287, 287, 304,
1504         304, 322, 322, 341,
1505         341, 362, 362, 383,
1506         383, 406, 406, 430,
1507         430, 455, 455, 482,
1508         482, 511, 511, 541,
1509         541, 573, 573, 607,
1510         607, 643, 643, 681,
1511         681, 722, 722, 764,
1512         764, 810, 810, 858,
1513         858, 908, 908, 962,
1514         962, 1019, 1019, 256
1515 };
1516
1517 const u16 tbl_tx_iqlo_cal_loft_ladder_40[] = {
1518         0x0200, 0x0300, 0x0400, 0x0700,
1519         0x0900, 0x0c00, 0x1200, 0x1201,
1520         0x1202, 0x1203, 0x1204, 0x1205,
1521         0x1206, 0x1207, 0x1907, 0x2307,
1522         0x3207, 0x4707
1523 };
1524
1525 const u16 tbl_tx_iqlo_cal_loft_ladder_20[] = {
1526         0x0300, 0x0500, 0x0700, 0x0900,
1527         0x0d00, 0x1100, 0x1900, 0x1901,
1528         0x1902, 0x1903, 0x1904, 0x1905,
1529         0x1906, 0x1907, 0x2407, 0x3207,
1530         0x4607, 0x6407
1531 };
1532
1533 const u16 tbl_tx_iqlo_cal_iqimb_ladder_40[] = {
1534         0x0100, 0x0200, 0x0400, 0x0700,
1535         0x0900, 0x0c00, 0x1200, 0x1900,
1536         0x2300, 0x3200, 0x4700, 0x4701,
1537         0x4702, 0x4703, 0x4704, 0x4705,
1538         0x4706, 0x4707
1539 };
1540
1541 const u16 tbl_tx_iqlo_cal_iqimb_ladder_20[] = {
1542         0x0200, 0x0300, 0x0600, 0x0900,
1543         0x0d00, 0x1100, 0x1900, 0x2400,
1544         0x3200, 0x4600, 0x6400, 0x6401,
1545         0x6402, 0x6403, 0x6404, 0x6405,
1546         0x6406, 0x6407
1547 };
1548
1549 const u16 tbl_tx_iqlo_cal_startcoefs_nphyrev3[B43_NTAB_TX_IQLO_CAL_STARTCOEFS_REV3] = { };
1550
1551 const u16 tbl_tx_iqlo_cal_startcoefs[B43_NTAB_TX_IQLO_CAL_STARTCOEFS] = { };
1552
1553 const u16 tbl_tx_iqlo_cal_cmds_recal_nphyrev3[] = {
1554         0x8423, 0x8323, 0x8073, 0x8256,
1555         0x8045, 0x8223, 0x9423, 0x9323,
1556         0x9073, 0x9256, 0x9045, 0x9223
1557 };
1558
1559 const u16 tbl_tx_iqlo_cal_cmds_recal[] = {
1560         0x8101, 0x8253, 0x8053, 0x8234,
1561         0x8034, 0x9101, 0x9253, 0x9053,
1562         0x9234, 0x9034
1563 };
1564
1565 const u16 tbl_tx_iqlo_cal_cmds_fullcal[] = {
1566         0x8123, 0x8264, 0x8086, 0x8245,
1567         0x8056, 0x9123, 0x9264, 0x9086,
1568         0x9245, 0x9056
1569 };
1570
1571 const u16 tbl_tx_iqlo_cal_cmds_fullcal_nphyrev3[] = {
1572         0x8434, 0x8334, 0x8084, 0x8267,
1573         0x8056, 0x8234, 0x9434, 0x9334,
1574         0x9084, 0x9267, 0x9056, 0x9234
1575 };
1576
1577 const s16 tbl_tx_filter_coef_rev4[7][15] = {
1578         {  -377,   137,  -407,   208, -1527,
1579             956,    93,   186,    93,   230,
1580             -44,   230,    20,  -191,   201 },
1581         {   -77,    20,   -98,    49,   -93,
1582              60,    56,   111,    56,    26,
1583              -5,    26,    34,   -32,    34 },
1584         {  -360,   164,  -376,   164, -1533,
1585             576,   308,  -314,   308,   121,
1586             -73,   121,    91,   124,    91 },
1587         {  -295,   200,  -363,   142, -1391,
1588             826,   151,   301,   151,   151,
1589             301,   151,   602,  -752,   602 },
1590         {   -92,    58,   -96,    49,  -104,
1591              44,    17,    35,    17,    12,
1592              25,    12,    13,    27,    13 },
1593         {  -375,   136,  -399,   209, -1479,
1594             949,   130,   260,   130,   230,
1595             -44,   230,   201,  -191,   201 },
1596         { 0xed9,  0xc8, 0xe95,  0x8e, 0xa91,
1597           0x33a,  0x97, 0x12d,  0x97,  0x97,
1598           0x12d,  0x97, 0x25a, 0xd10, 0x25a }
1599 };
1600
1601 /* addr0,  addr1,  bmask,  shift */
1602 const struct nphy_rf_control_override_rev2 tbl_rf_control_override_rev2[] = {
1603         { 0x78, 0x78, 0x0038,  3 }, /* for field == 0x0002 (fls == 2) */
1604         { 0x7A, 0x7D, 0x0001,  0 }, /* for field == 0x0004 (fls == 3) */
1605         { 0x7A, 0x7D, 0x0002,  1 }, /* for field == 0x0008 (fls == 4) */
1606         { 0x7A, 0x7D, 0x0004,  2 }, /* for field == 0x0010 (fls == 5) */
1607         { 0x7A, 0x7D, 0x0030,  4 }, /* for field == 0x0020 (fls == 6) */
1608         { 0x7A, 0x7D, 0x00C0,  6 }, /* for field == 0x0040 (fls == 7) */
1609         { 0x7A, 0x7D, 0x0100,  8 }, /* for field == 0x0080 (fls == 8) */
1610         { 0x7A, 0x7D, 0x0200,  9 }, /* for field == 0x0100 (fls == 9) */
1611         { 0x78, 0x78, 0x0004,  2 }, /* for field == 0x0200 (fls == 10) */
1612         { 0x7B, 0x7E, 0x01FF,  0 }, /* for field == 0x0400 (fls == 11) */
1613         { 0x7C, 0x7F, 0x01FF,  0 }, /* for field == 0x0800 (fls == 12) */
1614         { 0x78, 0x78, 0x0100,  8 }, /* for field == 0x1000 (fls == 13) */
1615         { 0x78, 0x78, 0x0200,  9 }, /* for field == 0x2000 (fls == 14) */
1616         { 0x78, 0x78, 0xF000, 12 }  /* for field == 0x4000 (fls == 15) */
1617 };
1618
1619 /* val_mask, val_shift, en_addr0, val_addr0, en_addr1, val_addr1 */
1620 const struct nphy_rf_control_override_rev3 tbl_rf_control_override_rev3[] = {
1621         { 0x8000, 15, 0xE5, 0xF9, 0xE6, 0xFB }, /* field == 0x0001 (fls 1) */
1622         { 0x0001,  0, 0xE7, 0x7A, 0xEC, 0x7D }, /* field == 0x0002 (fls 2) */
1623         { 0x0002,  1, 0xE7, 0x7A, 0xEC, 0x7D }, /* field == 0x0004 (fls 3) */
1624         { 0x0004,  2, 0xE7, 0x7A, 0xEC, 0x7D }, /* field == 0x0008 (fls 4) */
1625         { 0x0016,  4, 0xE7, 0x7A, 0xEC, 0x7D }, /* field == 0x0010 (fls 5) */
1626         { 0x0020,  5, 0xE7, 0x7A, 0xEC, 0x7D }, /* field == 0x0020 (fls 6) */
1627         { 0x0040,  6, 0xE7, 0x7A, 0xEC, 0x7D }, /* field == 0x0040 (fls 7) */
1628         { 0x0080,  6, 0xE7, 0x7A, 0xEC, 0x7D }, /* field == 0x0080 (fls 8) */
1629         { 0x0100,  7, 0xE7, 0x7A, 0xEC, 0x7D }, /* field == 0x0100 (fls 9) */
1630         { 0x0007,  0, 0xE7, 0xF8, 0xEC, 0xFA }, /* field == 0x0200 (fls 10) */
1631         { 0x0070,  4, 0xE7, 0xF8, 0xEC, 0xFA }, /* field == 0x0400 (fls 11) */
1632         { 0xE000, 13, 0xE7, 0x7A, 0xEC, 0x7D }, /* field == 0x0800 (fls 12) */
1633         { 0xFFFF,  0, 0xE7, 0x7B, 0xEC, 0x7E }, /* field == 0x1000 (fls 13) */
1634         { 0xFFFF,  0, 0xE7, 0x7C, 0xEC, 0x7F }, /* field == 0x2000 (fls 14) */
1635         { 0x00C0,  6, 0xE7, 0xF9, 0xEC, 0xFB }  /* field == 0x4000 (fls 15) */
1636 };
1637
1638 static inline void assert_ntab_array_sizes(void)
1639 {
1640 #undef check
1641 #define check(table, size)      \
1642         BUILD_BUG_ON(ARRAY_SIZE(b43_ntab_##table) != B43_NTAB_##size##_SIZE)
1643
1644         check(adjustpower0, C0_ADJPLT);
1645         check(adjustpower1, C1_ADJPLT);
1646         check(bdi, BDI);
1647         check(channelest, CHANEST);
1648         check(estimatepowerlt0, C0_ESTPLT);
1649         check(estimatepowerlt1, C1_ESTPLT);
1650         check(framelookup, FRAMELT);
1651         check(framestruct, FRAMESTRUCT);
1652         check(gainctl0, C0_GAINCTL);
1653         check(gainctl1, C1_GAINCTL);
1654         check(intlevel, INTLEVEL);
1655         check(iqlt0, C0_IQLT);
1656         check(iqlt1, C1_IQLT);
1657         check(loftlt0, C0_LOFEEDTH);
1658         check(loftlt1, C1_LOFEEDTH);
1659         check(mcs, MCS);
1660         check(noisevar10, NOISEVAR10);
1661         check(noisevar11, NOISEVAR11);
1662         check(pilot, PILOT);
1663         check(pilotlt, PILOTLT);
1664         check(tdi20a0, TDI20A0);
1665         check(tdi20a1, TDI20A1);
1666         check(tdi40a0, TDI40A0);
1667         check(tdi40a1, TDI40A1);
1668         check(tdtrn, TDTRN);
1669         check(tmap, TMAP);
1670
1671 #undef check
1672 }
1673
1674 u32 b43_ntab_read(struct b43_wldev *dev, u32 offset)
1675 {
1676         u32 type, value;
1677
1678         type = offset & B43_NTAB_TYPEMASK;
1679         offset &= ~B43_NTAB_TYPEMASK;
1680         B43_WARN_ON(offset > 0xFFFF);
1681
1682         switch (type) {
1683         case B43_NTAB_8BIT:
1684                 b43_phy_write(dev, B43_NPHY_TABLE_ADDR, offset);
1685                 value = b43_phy_read(dev, B43_NPHY_TABLE_DATALO) & 0xFF;
1686                 break;
1687         case B43_NTAB_16BIT:
1688                 b43_phy_write(dev, B43_NPHY_TABLE_ADDR, offset);
1689                 value = b43_phy_read(dev, B43_NPHY_TABLE_DATALO);
1690                 break;
1691         case B43_NTAB_32BIT:
1692                 b43_phy_write(dev, B43_NPHY_TABLE_ADDR, offset);
1693                 value = b43_phy_read(dev, B43_NPHY_TABLE_DATAHI);
1694                 value <<= 16;
1695                 value |= b43_phy_read(dev, B43_NPHY_TABLE_DATALO);
1696                 break;
1697         default:
1698                 B43_WARN_ON(1);
1699                 value = 0;
1700         }
1701
1702         return value;
1703 }
1704
1705 void b43_ntab_read_bulk(struct b43_wldev *dev, u32 offset,
1706                          unsigned int nr_elements, void *_data)
1707 {
1708         u32 type;
1709         u8 *data = _data;
1710         unsigned int i;
1711
1712         type = offset & B43_NTAB_TYPEMASK;
1713         offset &= ~B43_NTAB_TYPEMASK;
1714         B43_WARN_ON(offset > 0xFFFF);
1715
1716         b43_phy_write(dev, B43_NPHY_TABLE_ADDR, offset);
1717
1718         for (i = 0; i < nr_elements; i++) {
1719                 switch (type) {
1720                 case B43_NTAB_8BIT:
1721                         *data = b43_phy_read(dev, B43_NPHY_TABLE_DATALO) & 0xFF;
1722                         data++;
1723                         break;
1724                 case B43_NTAB_16BIT:
1725                         *((u16 *)data) = b43_phy_read(dev, B43_NPHY_TABLE_DATALO);
1726                         data += 2;
1727                         break;
1728                 case B43_NTAB_32BIT:
1729                         *((u32 *)data) = b43_phy_read(dev, B43_NPHY_TABLE_DATAHI);
1730                         *((u32 *)data) <<= 16;
1731                         *((u32 *)data) |= b43_phy_read(dev, B43_NPHY_TABLE_DATALO);
1732                         data += 4;
1733                         break;
1734                 default:
1735                         B43_WARN_ON(1);
1736                 }
1737         }
1738 }
1739
1740 void b43_ntab_write(struct b43_wldev *dev, u32 offset, u32 value)
1741 {
1742         u32 type;
1743
1744         type = offset & B43_NTAB_TYPEMASK;
1745         offset &= 0xFFFF;
1746
1747         switch (type) {
1748         case B43_NTAB_8BIT:
1749                 B43_WARN_ON(value & ~0xFF);
1750                 b43_phy_write(dev, B43_NPHY_TABLE_ADDR, offset);
1751                 b43_phy_write(dev, B43_NPHY_TABLE_DATALO, value);
1752                 break;
1753         case B43_NTAB_16BIT:
1754                 B43_WARN_ON(value & ~0xFFFF);
1755                 b43_phy_write(dev, B43_NPHY_TABLE_ADDR, offset);
1756                 b43_phy_write(dev, B43_NPHY_TABLE_DATALO, value);
1757                 break;
1758         case B43_NTAB_32BIT:
1759                 b43_phy_write(dev, B43_NPHY_TABLE_ADDR, offset);
1760                 b43_phy_write(dev, B43_NPHY_TABLE_DATAHI, value >> 16);
1761                 b43_phy_write(dev, B43_NPHY_TABLE_DATALO, value & 0xFFFF);
1762                 break;
1763         default:
1764                 B43_WARN_ON(1);
1765         }
1766
1767         return;
1768
1769         /* Some compiletime assertions... */
1770         assert_ntab_array_sizes();
1771 }
1772
1773 void b43_ntab_write_bulk(struct b43_wldev *dev, u32 offset,
1774                           unsigned int nr_elements, const void *_data)
1775 {
1776         u32 type, value;
1777         const u8 *data = _data;
1778         unsigned int i;
1779
1780         type = offset & B43_NTAB_TYPEMASK;
1781         offset &= ~B43_NTAB_TYPEMASK;
1782         B43_WARN_ON(offset > 0xFFFF);
1783
1784         b43_phy_write(dev, B43_NPHY_TABLE_ADDR, offset);
1785
1786         for (i = 0; i < nr_elements; i++) {
1787                 switch (type) {
1788                 case B43_NTAB_8BIT:
1789                         value = *data;
1790                         data++;
1791                         B43_WARN_ON(value & ~0xFF);
1792                         b43_phy_write(dev, B43_NPHY_TABLE_DATALO, value);
1793                         break;
1794                 case B43_NTAB_16BIT:
1795                         value = *((u16 *)data);
1796                         data += 2;
1797                         B43_WARN_ON(value & ~0xFFFF);
1798                         b43_phy_write(dev, B43_NPHY_TABLE_DATALO, value);
1799                         break;
1800                 case B43_NTAB_32BIT:
1801                         value = *((u32 *)data);
1802                         data += 4;
1803                         b43_phy_write(dev, B43_NPHY_TABLE_DATAHI, value >> 16);
1804                         b43_phy_write(dev, B43_NPHY_TABLE_DATALO,
1805                                         value & 0xFFFF);
1806                         break;
1807                 default:
1808                         B43_WARN_ON(1);
1809                 }
1810         }
1811 }
1812
1813 #define ntab_upload(dev, offset, data) do { \
1814                 b43_ntab_write_bulk(dev, offset, offset##_SIZE, data);  \
1815         } while (0)
1816
1817 void b43_nphy_rev0_1_2_tables_init(struct b43_wldev *dev)
1818 {
1819         /* Static tables */
1820         ntab_upload(dev, B43_NTAB_FRAMESTRUCT, b43_ntab_framestruct);
1821         ntab_upload(dev, B43_NTAB_FRAMELT, b43_ntab_framelookup);
1822         ntab_upload(dev, B43_NTAB_TMAP, b43_ntab_tmap);
1823         ntab_upload(dev, B43_NTAB_TDTRN, b43_ntab_tdtrn);
1824         ntab_upload(dev, B43_NTAB_INTLEVEL, b43_ntab_intlevel);
1825         ntab_upload(dev, B43_NTAB_PILOT, b43_ntab_pilot);
1826         ntab_upload(dev, B43_NTAB_TDI20A0, b43_ntab_tdi20a0);
1827         ntab_upload(dev, B43_NTAB_TDI20A1, b43_ntab_tdi20a1);
1828         ntab_upload(dev, B43_NTAB_TDI40A0, b43_ntab_tdi40a0);
1829         ntab_upload(dev, B43_NTAB_TDI40A1, b43_ntab_tdi40a1);
1830         ntab_upload(dev, B43_NTAB_CHANEST, b43_ntab_channelest);
1831         ntab_upload(dev, B43_NTAB_MCS, b43_ntab_mcs);
1832         ntab_upload(dev, B43_NTAB_NOISEVAR10, b43_ntab_noisevar10);
1833         ntab_upload(dev, B43_NTAB_NOISEVAR11, b43_ntab_noisevar11);
1834
1835         /* Volatile tables */
1836         ntab_upload(dev, B43_NTAB_BDI, b43_ntab_bdi);
1837         ntab_upload(dev, B43_NTAB_PILOTLT, b43_ntab_pilotlt);
1838         ntab_upload(dev, B43_NTAB_C0_GAINCTL, b43_ntab_gainctl0);
1839         ntab_upload(dev, B43_NTAB_C1_GAINCTL, b43_ntab_gainctl1);
1840         ntab_upload(dev, B43_NTAB_C0_ESTPLT, b43_ntab_estimatepowerlt0);
1841         ntab_upload(dev, B43_NTAB_C1_ESTPLT, b43_ntab_estimatepowerlt1);
1842         ntab_upload(dev, B43_NTAB_C0_ADJPLT, b43_ntab_adjustpower0);
1843         ntab_upload(dev, B43_NTAB_C1_ADJPLT, b43_ntab_adjustpower1);
1844         ntab_upload(dev, B43_NTAB_C0_IQLT, b43_ntab_iqlt0);
1845         ntab_upload(dev, B43_NTAB_C1_IQLT, b43_ntab_iqlt1);
1846         ntab_upload(dev, B43_NTAB_C0_LOFEEDTH, b43_ntab_loftlt0);
1847         ntab_upload(dev, B43_NTAB_C1_LOFEEDTH, b43_ntab_loftlt1);
1848 }
1849
1850 void b43_nphy_rev3plus_tables_init(struct b43_wldev *dev)
1851 {
1852         /* Static tables */
1853         /* TODO */
1854
1855         /* Volatile tables */
1856         /* TODO */
1857 }
This page took 0.136133 seconds and 4 git commands to generate.