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