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