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