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