1423e3ce3SKalle Valo /*
2423e3ce3SKalle Valo 
3423e3ce3SKalle Valo   Broadcom B43legacy wireless driver
4423e3ce3SKalle Valo 
5423e3ce3SKalle Valo   Copyright (c) 2005 Martin Langer <martin-langer@gmx.de>,
6423e3ce3SKalle Valo 		     Stefano Brivio <stefano.brivio@polimi.it>
7423e3ce3SKalle Valo 		     Michael Buesch <m@bues.ch>
8423e3ce3SKalle Valo 		     Danny van Dyk <kugelfang@gentoo.org>
9423e3ce3SKalle Valo 		     Andreas Jaggi <andreas.jaggi@waterwave.ch>
10423e3ce3SKalle Valo 
11423e3ce3SKalle Valo   This program is free software; you can redistribute it and/or modify
12423e3ce3SKalle Valo   it under the terms of the GNU General Public License as published by
13423e3ce3SKalle Valo   the Free Software Foundation; either version 2 of the License, or
14423e3ce3SKalle Valo   (at your option) any later version.
15423e3ce3SKalle Valo 
16423e3ce3SKalle Valo   This program is distributed in the hope that it will be useful,
17423e3ce3SKalle Valo   but WITHOUT ANY WARRANTY; without even the implied warranty of
18423e3ce3SKalle Valo   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
19423e3ce3SKalle Valo   GNU General Public License for more details.
20423e3ce3SKalle Valo 
21423e3ce3SKalle Valo   You should have received a copy of the GNU General Public License
22423e3ce3SKalle Valo   along with this program; see the file COPYING.  If not, write to
23423e3ce3SKalle Valo   the Free Software Foundation, Inc., 51 Franklin Steet, Fifth Floor,
24423e3ce3SKalle Valo   Boston, MA 02110-1301, USA.
25423e3ce3SKalle Valo 
26423e3ce3SKalle Valo */
27423e3ce3SKalle Valo 
28423e3ce3SKalle Valo #include "b43legacy.h"
29423e3ce3SKalle Valo #include "ilt.h"
30423e3ce3SKalle Valo #include "phy.h"
31423e3ce3SKalle Valo 
32423e3ce3SKalle Valo 
33423e3ce3SKalle Valo /**** Initial Internal Lookup Tables ****/
34423e3ce3SKalle Valo 
35423e3ce3SKalle Valo const u32 b43legacy_ilt_rotor[B43legacy_ILT_ROTOR_SIZE] = {
36423e3ce3SKalle Valo 	0xFEB93FFD, 0xFEC63FFD, /* 0 */
37423e3ce3SKalle Valo 	0xFED23FFD, 0xFEDF3FFD,
38423e3ce3SKalle Valo 	0xFEEC3FFE, 0xFEF83FFE,
39423e3ce3SKalle Valo 	0xFF053FFE, 0xFF113FFE,
40423e3ce3SKalle Valo 	0xFF1E3FFE, 0xFF2A3FFF, /* 8 */
41423e3ce3SKalle Valo 	0xFF373FFF, 0xFF443FFF,
42423e3ce3SKalle Valo 	0xFF503FFF, 0xFF5D3FFF,
43423e3ce3SKalle Valo 	0xFF693FFF, 0xFF763FFF,
44423e3ce3SKalle Valo 	0xFF824000, 0xFF8F4000, /* 16 */
45423e3ce3SKalle Valo 	0xFF9B4000, 0xFFA84000,
46423e3ce3SKalle Valo 	0xFFB54000, 0xFFC14000,
47423e3ce3SKalle Valo 	0xFFCE4000, 0xFFDA4000,
48423e3ce3SKalle Valo 	0xFFE74000, 0xFFF34000, /* 24 */
49423e3ce3SKalle Valo 	0x00004000, 0x000D4000,
50423e3ce3SKalle Valo 	0x00194000, 0x00264000,
51423e3ce3SKalle Valo 	0x00324000, 0x003F4000,
52423e3ce3SKalle Valo 	0x004B4000, 0x00584000, /* 32 */
53423e3ce3SKalle Valo 	0x00654000, 0x00714000,
54423e3ce3SKalle Valo 	0x007E4000, 0x008A3FFF,
55423e3ce3SKalle Valo 	0x00973FFF, 0x00A33FFF,
56423e3ce3SKalle Valo 	0x00B03FFF, 0x00BC3FFF, /* 40 */
57423e3ce3SKalle Valo 	0x00C93FFF, 0x00D63FFF,
58423e3ce3SKalle Valo 	0x00E23FFE, 0x00EF3FFE,
59423e3ce3SKalle Valo 	0x00FB3FFE, 0x01083FFE,
60423e3ce3SKalle Valo 	0x01143FFE, 0x01213FFD, /* 48 */
61423e3ce3SKalle Valo 	0x012E3FFD, 0x013A3FFD,
62423e3ce3SKalle Valo 	0x01473FFD,
63423e3ce3SKalle Valo };
64423e3ce3SKalle Valo 
65423e3ce3SKalle Valo const u32 b43legacy_ilt_retard[B43legacy_ILT_RETARD_SIZE] = {
66423e3ce3SKalle Valo 	0xDB93CB87, 0xD666CF64, /* 0 */
67423e3ce3SKalle Valo 	0xD1FDD358, 0xCDA6D826,
68423e3ce3SKalle Valo 	0xCA38DD9F, 0xC729E2B4,
69423e3ce3SKalle Valo 	0xC469E88E, 0xC26AEE2B,
70423e3ce3SKalle Valo 	0xC0DEF46C, 0xC073FA62, /* 8 */
71423e3ce3SKalle Valo 	0xC01D00D5, 0xC0760743,
72423e3ce3SKalle Valo 	0xC1560D1E, 0xC2E51369,
73423e3ce3SKalle Valo 	0xC4ED18FF, 0xC7AC1ED7,
74423e3ce3SKalle Valo 	0xCB2823B2, 0xCEFA28D9, /* 16 */
75423e3ce3SKalle Valo 	0xD2F62D3F, 0xD7BB3197,
76423e3ce3SKalle Valo 	0xDCE53568, 0xE1FE3875,
77423e3ce3SKalle Valo 	0xE7D13B35, 0xED663D35,
78423e3ce3SKalle Valo 	0xF39B3EC4, 0xF98E3FA7, /* 24 */
79423e3ce3SKalle Valo 	0x00004000, 0x06723FA7,
80423e3ce3SKalle Valo 	0x0C653EC4, 0x129A3D35,
81423e3ce3SKalle Valo 	0x182F3B35, 0x1E023875,
82423e3ce3SKalle Valo 	0x231B3568, 0x28453197, /* 32 */
83423e3ce3SKalle Valo 	0x2D0A2D3F, 0x310628D9,
84423e3ce3SKalle Valo 	0x34D823B2, 0x38541ED7,
85423e3ce3SKalle Valo 	0x3B1318FF, 0x3D1B1369,
86423e3ce3SKalle Valo 	0x3EAA0D1E, 0x3F8A0743, /* 40 */
87423e3ce3SKalle Valo 	0x3FE300D5, 0x3F8DFA62,
88423e3ce3SKalle Valo 	0x3F22F46C, 0x3D96EE2B,
89423e3ce3SKalle Valo 	0x3B97E88E, 0x38D7E2B4,
90423e3ce3SKalle Valo 	0x35C8DD9F, 0x325AD826, /* 48 */
91423e3ce3SKalle Valo 	0x2E03D358, 0x299ACF64,
92423e3ce3SKalle Valo 	0x246DCB87,
93423e3ce3SKalle Valo };
94423e3ce3SKalle Valo 
95423e3ce3SKalle Valo const u16 b43legacy_ilt_finefreqa[B43legacy_ILT_FINEFREQA_SIZE] = {
96423e3ce3SKalle Valo 	0x0082, 0x0082, 0x0102, 0x0182, /* 0 */
97423e3ce3SKalle Valo 	0x0202, 0x0282, 0x0302, 0x0382,
98423e3ce3SKalle Valo 	0x0402, 0x0482, 0x0502, 0x0582,
99423e3ce3SKalle Valo 	0x05E2, 0x0662, 0x06E2, 0x0762,
100423e3ce3SKalle Valo 	0x07E2, 0x0842, 0x08C2, 0x0942, /* 16 */
101423e3ce3SKalle Valo 	0x09C2, 0x0A22, 0x0AA2, 0x0B02,
102423e3ce3SKalle Valo 	0x0B82, 0x0BE2, 0x0C62, 0x0CC2,
103423e3ce3SKalle Valo 	0x0D42, 0x0DA2, 0x0E02, 0x0E62,
104423e3ce3SKalle Valo 	0x0EE2, 0x0F42, 0x0FA2, 0x1002, /* 32 */
105423e3ce3SKalle Valo 	0x1062, 0x10C2, 0x1122, 0x1182,
106423e3ce3SKalle Valo 	0x11E2, 0x1242, 0x12A2, 0x12E2,
107423e3ce3SKalle Valo 	0x1342, 0x13A2, 0x1402, 0x1442,
108423e3ce3SKalle Valo 	0x14A2, 0x14E2, 0x1542, 0x1582, /* 48 */
109423e3ce3SKalle Valo 	0x15E2, 0x1622, 0x1662, 0x16C1,
110423e3ce3SKalle Valo 	0x1701, 0x1741, 0x1781, 0x17E1,
111423e3ce3SKalle Valo 	0x1821, 0x1861, 0x18A1, 0x18E1,
112423e3ce3SKalle Valo 	0x1921, 0x1961, 0x19A1, 0x19E1, /* 64 */
113423e3ce3SKalle Valo 	0x1A21, 0x1A61, 0x1AA1, 0x1AC1,
114423e3ce3SKalle Valo 	0x1B01, 0x1B41, 0x1B81, 0x1BA1,
115423e3ce3SKalle Valo 	0x1BE1, 0x1C21, 0x1C41, 0x1C81,
116423e3ce3SKalle Valo 	0x1CA1, 0x1CE1, 0x1D01, 0x1D41, /* 80 */
117423e3ce3SKalle Valo 	0x1D61, 0x1DA1, 0x1DC1, 0x1E01,
118423e3ce3SKalle Valo 	0x1E21, 0x1E61, 0x1E81, 0x1EA1,
119423e3ce3SKalle Valo 	0x1EE1, 0x1F01, 0x1F21, 0x1F41,
120423e3ce3SKalle Valo 	0x1F81, 0x1FA1, 0x1FC1, 0x1FE1, /* 96 */
121423e3ce3SKalle Valo 	0x2001, 0x2041, 0x2061, 0x2081,
122423e3ce3SKalle Valo 	0x20A1, 0x20C1, 0x20E1, 0x2101,
123423e3ce3SKalle Valo 	0x2121, 0x2141, 0x2161, 0x2181,
124423e3ce3SKalle Valo 	0x21A1, 0x21C1, 0x21E1, 0x2201, /* 112 */
125423e3ce3SKalle Valo 	0x2221, 0x2241, 0x2261, 0x2281,
126423e3ce3SKalle Valo 	0x22A1, 0x22C1, 0x22C1, 0x22E1,
127423e3ce3SKalle Valo 	0x2301, 0x2321, 0x2341, 0x2361,
128423e3ce3SKalle Valo 	0x2361, 0x2381, 0x23A1, 0x23C1, /* 128 */
129423e3ce3SKalle Valo 	0x23E1, 0x23E1, 0x2401, 0x2421,
130423e3ce3SKalle Valo 	0x2441, 0x2441, 0x2461, 0x2481,
131423e3ce3SKalle Valo 	0x2481, 0x24A1, 0x24C1, 0x24C1,
132423e3ce3SKalle Valo 	0x24E1, 0x2501, 0x2501, 0x2521, /* 144 */
133423e3ce3SKalle Valo 	0x2541, 0x2541, 0x2561, 0x2561,
134423e3ce3SKalle Valo 	0x2581, 0x25A1, 0x25A1, 0x25C1,
135423e3ce3SKalle Valo 	0x25C1, 0x25E1, 0x2601, 0x2601,
136423e3ce3SKalle Valo 	0x2621, 0x2621, 0x2641, 0x2641, /* 160 */
137423e3ce3SKalle Valo 	0x2661, 0x2661, 0x2681, 0x2681,
138423e3ce3SKalle Valo 	0x26A1, 0x26A1, 0x26C1, 0x26C1,
139423e3ce3SKalle Valo 	0x26E1, 0x26E1, 0x2701, 0x2701,
140423e3ce3SKalle Valo 	0x2721, 0x2721, 0x2740, 0x2740, /* 176 */
141423e3ce3SKalle Valo 	0x2760, 0x2760, 0x2780, 0x2780,
142423e3ce3SKalle Valo 	0x2780, 0x27A0, 0x27A0, 0x27C0,
143423e3ce3SKalle Valo 	0x27C0, 0x27E0, 0x27E0, 0x27E0,
144423e3ce3SKalle Valo 	0x2800, 0x2800, 0x2820, 0x2820, /* 192 */
145423e3ce3SKalle Valo 	0x2820, 0x2840, 0x2840, 0x2840,
146423e3ce3SKalle Valo 	0x2860, 0x2860, 0x2880, 0x2880,
147423e3ce3SKalle Valo 	0x2880, 0x28A0, 0x28A0, 0x28A0,
148423e3ce3SKalle Valo 	0x28C0, 0x28C0, 0x28C0, 0x28E0, /* 208 */
149423e3ce3SKalle Valo 	0x28E0, 0x28E0, 0x2900, 0x2900,
150423e3ce3SKalle Valo 	0x2900, 0x2920, 0x2920, 0x2920,
151423e3ce3SKalle Valo 	0x2940, 0x2940, 0x2940, 0x2960,
152423e3ce3SKalle Valo 	0x2960, 0x2960, 0x2960, 0x2980, /* 224 */
153423e3ce3SKalle Valo 	0x2980, 0x2980, 0x29A0, 0x29A0,
154423e3ce3SKalle Valo 	0x29A0, 0x29A0, 0x29C0, 0x29C0,
155423e3ce3SKalle Valo 	0x29C0, 0x29E0, 0x29E0, 0x29E0,
156423e3ce3SKalle Valo 	0x29E0, 0x2A00, 0x2A00, 0x2A00, /* 240 */
157423e3ce3SKalle Valo 	0x2A00, 0x2A20, 0x2A20, 0x2A20,
158423e3ce3SKalle Valo 	0x2A20, 0x2A40, 0x2A40, 0x2A40,
159423e3ce3SKalle Valo 	0x2A40, 0x2A60, 0x2A60, 0x2A60,
160423e3ce3SKalle Valo };
161423e3ce3SKalle Valo 
162423e3ce3SKalle Valo const u16 b43legacy_ilt_finefreqg[B43legacy_ILT_FINEFREQG_SIZE] = {
163423e3ce3SKalle Valo 	0x0089, 0x02E9, 0x0409, 0x04E9, /* 0 */
164423e3ce3SKalle Valo 	0x05A9, 0x0669, 0x0709, 0x0789,
165423e3ce3SKalle Valo 	0x0829, 0x08A9, 0x0929, 0x0989,
166423e3ce3SKalle Valo 	0x0A09, 0x0A69, 0x0AC9, 0x0B29,
167423e3ce3SKalle Valo 	0x0BA9, 0x0BE9, 0x0C49, 0x0CA9, /* 16 */
168423e3ce3SKalle Valo 	0x0D09, 0x0D69, 0x0DA9, 0x0E09,
169423e3ce3SKalle Valo 	0x0E69, 0x0EA9, 0x0F09, 0x0F49,
170423e3ce3SKalle Valo 	0x0FA9, 0x0FE9, 0x1029, 0x1089,
171423e3ce3SKalle Valo 	0x10C9, 0x1109, 0x1169, 0x11A9, /* 32 */
172423e3ce3SKalle Valo 	0x11E9, 0x1229, 0x1289, 0x12C9,
173423e3ce3SKalle Valo 	0x1309, 0x1349, 0x1389, 0x13C9,
174423e3ce3SKalle Valo 	0x1409, 0x1449, 0x14A9, 0x14E9,
175423e3ce3SKalle Valo 	0x1529, 0x1569, 0x15A9, 0x15E9, /* 48 */
176423e3ce3SKalle Valo 	0x1629, 0x1669, 0x16A9, 0x16E8,
177423e3ce3SKalle Valo 	0x1728, 0x1768, 0x17A8, 0x17E8,
178423e3ce3SKalle Valo 	0x1828, 0x1868, 0x18A8, 0x18E8,
179423e3ce3SKalle Valo 	0x1928, 0x1968, 0x19A8, 0x19E8, /* 64 */
180423e3ce3SKalle Valo 	0x1A28, 0x1A68, 0x1AA8, 0x1AE8,
181423e3ce3SKalle Valo 	0x1B28, 0x1B68, 0x1BA8, 0x1BE8,
182423e3ce3SKalle Valo 	0x1C28, 0x1C68, 0x1CA8, 0x1CE8,
183423e3ce3SKalle Valo 	0x1D28, 0x1D68, 0x1DC8, 0x1E08, /* 80 */
184423e3ce3SKalle Valo 	0x1E48, 0x1E88, 0x1EC8, 0x1F08,
185423e3ce3SKalle Valo 	0x1F48, 0x1F88, 0x1FE8, 0x2028,
186423e3ce3SKalle Valo 	0x2068, 0x20A8, 0x2108, 0x2148,
187423e3ce3SKalle Valo 	0x2188, 0x21C8, 0x2228, 0x2268, /* 96 */
188423e3ce3SKalle Valo 	0x22C8, 0x2308, 0x2348, 0x23A8,
189423e3ce3SKalle Valo 	0x23E8, 0x2448, 0x24A8, 0x24E8,
190423e3ce3SKalle Valo 	0x2548, 0x25A8, 0x2608, 0x2668,
191423e3ce3SKalle Valo 	0x26C8, 0x2728, 0x2787, 0x27E7, /* 112 */
192423e3ce3SKalle Valo 	0x2847, 0x28C7, 0x2947, 0x29A7,
193423e3ce3SKalle Valo 	0x2A27, 0x2AC7, 0x2B47, 0x2BE7,
194423e3ce3SKalle Valo 	0x2CA7, 0x2D67, 0x2E47, 0x2F67,
195423e3ce3SKalle Valo 	0x3247, 0x3526, 0x3646, 0x3726, /* 128 */
196423e3ce3SKalle Valo 	0x3806, 0x38A6, 0x3946, 0x39E6,
197423e3ce3SKalle Valo 	0x3A66, 0x3AE6, 0x3B66, 0x3BC6,
198423e3ce3SKalle Valo 	0x3C45, 0x3CA5, 0x3D05, 0x3D85,
199423e3ce3SKalle Valo 	0x3DE5, 0x3E45, 0x3EA5, 0x3EE5, /* 144 */
200423e3ce3SKalle Valo 	0x3F45, 0x3FA5, 0x4005, 0x4045,
201423e3ce3SKalle Valo 	0x40A5, 0x40E5, 0x4145, 0x4185,
202423e3ce3SKalle Valo 	0x41E5, 0x4225, 0x4265, 0x42C5,
203423e3ce3SKalle Valo 	0x4305, 0x4345, 0x43A5, 0x43E5, /* 160 */
204423e3ce3SKalle Valo 	0x4424, 0x4464, 0x44C4, 0x4504,
205423e3ce3SKalle Valo 	0x4544, 0x4584, 0x45C4, 0x4604,
206423e3ce3SKalle Valo 	0x4644, 0x46A4, 0x46E4, 0x4724,
207423e3ce3SKalle Valo 	0x4764, 0x47A4, 0x47E4, 0x4824, /* 176 */
208423e3ce3SKalle Valo 	0x4864, 0x48A4, 0x48E4, 0x4924,
209423e3ce3SKalle Valo 	0x4964, 0x49A4, 0x49E4, 0x4A24,
210423e3ce3SKalle Valo 	0x4A64, 0x4AA4, 0x4AE4, 0x4B23,
211423e3ce3SKalle Valo 	0x4B63, 0x4BA3, 0x4BE3, 0x4C23, /* 192 */
212423e3ce3SKalle Valo 	0x4C63, 0x4CA3, 0x4CE3, 0x4D23,
213423e3ce3SKalle Valo 	0x4D63, 0x4DA3, 0x4DE3, 0x4E23,
214423e3ce3SKalle Valo 	0x4E63, 0x4EA3, 0x4EE3, 0x4F23,
215423e3ce3SKalle Valo 	0x4F63, 0x4FC3, 0x5003, 0x5043, /* 208 */
216423e3ce3SKalle Valo 	0x5083, 0x50C3, 0x5103, 0x5143,
217423e3ce3SKalle Valo 	0x5183, 0x51E2, 0x5222, 0x5262,
218423e3ce3SKalle Valo 	0x52A2, 0x52E2, 0x5342, 0x5382,
219423e3ce3SKalle Valo 	0x53C2, 0x5402, 0x5462, 0x54A2, /* 224 */
220423e3ce3SKalle Valo 	0x5502, 0x5542, 0x55A2, 0x55E2,
221423e3ce3SKalle Valo 	0x5642, 0x5682, 0x56E2, 0x5722,
222423e3ce3SKalle Valo 	0x5782, 0x57E1, 0x5841, 0x58A1,
223423e3ce3SKalle Valo 	0x5901, 0x5961, 0x59C1, 0x5A21, /* 240 */
224423e3ce3SKalle Valo 	0x5AA1, 0x5B01, 0x5B81, 0x5BE1,
225423e3ce3SKalle Valo 	0x5C61, 0x5D01, 0x5D80, 0x5E20,
226423e3ce3SKalle Valo 	0x5EE0, 0x5FA0, 0x6080, 0x61C0,
227423e3ce3SKalle Valo };
228423e3ce3SKalle Valo 
229423e3ce3SKalle Valo const u16 b43legacy_ilt_noisea2[B43legacy_ILT_NOISEA2_SIZE] = {
230423e3ce3SKalle Valo 	0x0001, 0x0001, 0x0001, 0xFFFE,
231423e3ce3SKalle Valo 	0xFFFE, 0x3FFF, 0x1000, 0x0393,
232423e3ce3SKalle Valo };
233423e3ce3SKalle Valo 
234423e3ce3SKalle Valo const u16 b43legacy_ilt_noisea3[B43legacy_ILT_NOISEA3_SIZE] = {
235423e3ce3SKalle Valo 	0x4C4C, 0x4C4C, 0x4C4C, 0x2D36,
236423e3ce3SKalle Valo 	0x4C4C, 0x4C4C, 0x4C4C, 0x2D36,
237423e3ce3SKalle Valo };
238423e3ce3SKalle Valo 
239423e3ce3SKalle Valo const u16 b43legacy_ilt_noiseg1[B43legacy_ILT_NOISEG1_SIZE] = {
240423e3ce3SKalle Valo 	0x013C, 0x01F5, 0x031A, 0x0631,
241423e3ce3SKalle Valo 	0x0001, 0x0001, 0x0001, 0x0001,
242423e3ce3SKalle Valo };
243423e3ce3SKalle Valo 
244423e3ce3SKalle Valo const u16 b43legacy_ilt_noiseg2[B43legacy_ILT_NOISEG2_SIZE] = {
245423e3ce3SKalle Valo 	0x5484, 0x3C40, 0x0000, 0x0000,
246423e3ce3SKalle Valo 	0x0000, 0x0000, 0x0000, 0x0000,
247423e3ce3SKalle Valo };
248423e3ce3SKalle Valo 
249423e3ce3SKalle Valo const u16 b43legacy_ilt_noisescaleg1[B43legacy_ILT_NOISESCALEG_SIZE] = {
250423e3ce3SKalle Valo 	0x6C77, 0x5162, 0x3B40, 0x3335, /* 0 */
251423e3ce3SKalle Valo 	0x2F2D, 0x2A2A, 0x2527, 0x1F21,
252423e3ce3SKalle Valo 	0x1A1D, 0x1719, 0x1616, 0x1414,
253423e3ce3SKalle Valo 	0x1414, 0x1400, 0x1414, 0x1614,
254423e3ce3SKalle Valo 	0x1716, 0x1A19, 0x1F1D, 0x2521, /* 16 */
255423e3ce3SKalle Valo 	0x2A27, 0x2F2A, 0x332D, 0x3B35,
256423e3ce3SKalle Valo 	0x5140, 0x6C62, 0x0077,
257423e3ce3SKalle Valo };
258423e3ce3SKalle Valo 
259423e3ce3SKalle Valo const u16 b43legacy_ilt_noisescaleg2[B43legacy_ILT_NOISESCALEG_SIZE] = {
260423e3ce3SKalle Valo 	0xD8DD, 0xCBD4, 0xBCC0, 0XB6B7, /* 0 */
261423e3ce3SKalle Valo 	0xB2B0, 0xADAD, 0xA7A9, 0x9FA1,
262423e3ce3SKalle Valo 	0x969B, 0x9195, 0x8F8F, 0x8A8A,
263423e3ce3SKalle Valo 	0x8A8A, 0x8A00, 0x8A8A, 0x8F8A,
264423e3ce3SKalle Valo 	0x918F, 0x9695, 0x9F9B, 0xA7A1, /* 16 */
265423e3ce3SKalle Valo 	0xADA9, 0xB2AD, 0xB6B0, 0xBCB7,
266423e3ce3SKalle Valo 	0xCBC0, 0xD8D4, 0x00DD,
267423e3ce3SKalle Valo };
268423e3ce3SKalle Valo 
269423e3ce3SKalle Valo const u16 b43legacy_ilt_noisescaleg3[B43legacy_ILT_NOISESCALEG_SIZE] = {
270423e3ce3SKalle Valo 	0xA4A4, 0xA4A4, 0xA4A4, 0xA4A4, /* 0 */
271423e3ce3SKalle Valo 	0xA4A4, 0xA4A4, 0xA4A4, 0xA4A4,
272423e3ce3SKalle Valo 	0xA4A4, 0xA4A4, 0xA4A4, 0xA4A4,
273423e3ce3SKalle Valo 	0xA4A4, 0xA400, 0xA4A4, 0xA4A4,
274423e3ce3SKalle Valo 	0xA4A4, 0xA4A4, 0xA4A4, 0xA4A4, /* 16 */
275423e3ce3SKalle Valo 	0xA4A4, 0xA4A4, 0xA4A4, 0xA4A4,
276423e3ce3SKalle Valo 	0xA4A4, 0xA4A4, 0x00A4,
277423e3ce3SKalle Valo };
278423e3ce3SKalle Valo 
279423e3ce3SKalle Valo const u16 b43legacy_ilt_sigmasqr1[B43legacy_ILT_SIGMASQR_SIZE] = {
280423e3ce3SKalle Valo 	0x007A, 0x0075, 0x0071, 0x006C, /* 0 */
281423e3ce3SKalle Valo 	0x0067, 0x0063, 0x005E, 0x0059,
282423e3ce3SKalle Valo 	0x0054, 0x0050, 0x004B, 0x0046,
283423e3ce3SKalle Valo 	0x0042, 0x003D, 0x003D, 0x003D,
284423e3ce3SKalle Valo 	0x003D, 0x003D, 0x003D, 0x003D, /* 16 */
285423e3ce3SKalle Valo 	0x003D, 0x003D, 0x003D, 0x003D,
286423e3ce3SKalle Valo 	0x003D, 0x003D, 0x0000, 0x003D,
287423e3ce3SKalle Valo 	0x003D, 0x003D, 0x003D, 0x003D,
288423e3ce3SKalle Valo 	0x003D, 0x003D, 0x003D, 0x003D, /* 32 */
289423e3ce3SKalle Valo 	0x003D, 0x003D, 0x003D, 0x003D,
290423e3ce3SKalle Valo 	0x0042, 0x0046, 0x004B, 0x0050,
291423e3ce3SKalle Valo 	0x0054, 0x0059, 0x005E, 0x0063,
292423e3ce3SKalle Valo 	0x0067, 0x006C, 0x0071, 0x0075, /* 48 */
293423e3ce3SKalle Valo 	0x007A,
294423e3ce3SKalle Valo };
295423e3ce3SKalle Valo 
296423e3ce3SKalle Valo const u16 b43legacy_ilt_sigmasqr2[B43legacy_ILT_SIGMASQR_SIZE] = {
297423e3ce3SKalle Valo 	0x00DE, 0x00DC, 0x00DA, 0x00D8, /* 0 */
298423e3ce3SKalle Valo 	0x00D6, 0x00D4, 0x00D2, 0x00CF,
299423e3ce3SKalle Valo 	0x00CD, 0x00CA, 0x00C7, 0x00C4,
300423e3ce3SKalle Valo 	0x00C1, 0x00BE, 0x00BE, 0x00BE,
301423e3ce3SKalle Valo 	0x00BE, 0x00BE, 0x00BE, 0x00BE, /* 16 */
302423e3ce3SKalle Valo 	0x00BE, 0x00BE, 0x00BE, 0x00BE,
303423e3ce3SKalle Valo 	0x00BE, 0x00BE, 0x0000, 0x00BE,
304423e3ce3SKalle Valo 	0x00BE, 0x00BE, 0x00BE, 0x00BE,
305423e3ce3SKalle Valo 	0x00BE, 0x00BE, 0x00BE, 0x00BE, /* 32 */
306423e3ce3SKalle Valo 	0x00BE, 0x00BE, 0x00BE, 0x00BE,
307423e3ce3SKalle Valo 	0x00C1, 0x00C4, 0x00C7, 0x00CA,
308423e3ce3SKalle Valo 	0x00CD, 0x00CF, 0x00D2, 0x00D4,
309423e3ce3SKalle Valo 	0x00D6, 0x00D8, 0x00DA, 0x00DC, /* 48 */
310423e3ce3SKalle Valo 	0x00DE,
311423e3ce3SKalle Valo };
312423e3ce3SKalle Valo 
313423e3ce3SKalle Valo /**** Helper functions to access the device Internal Lookup Tables ****/
314423e3ce3SKalle Valo 
315423e3ce3SKalle Valo void b43legacy_ilt_write(struct b43legacy_wldev *dev, u16 offset, u16 val)
316423e3ce3SKalle Valo {
317423e3ce3SKalle Valo 	b43legacy_phy_write(dev, B43legacy_PHY_ILT_G_CTRL, offset);
318423e3ce3SKalle Valo 	mmiowb();
319423e3ce3SKalle Valo 	b43legacy_phy_write(dev, B43legacy_PHY_ILT_G_DATA1, val);
320423e3ce3SKalle Valo }
321423e3ce3SKalle Valo 
322423e3ce3SKalle Valo void b43legacy_ilt_write32(struct b43legacy_wldev *dev, u16 offset, u32 val)
323423e3ce3SKalle Valo {
324423e3ce3SKalle Valo 	b43legacy_phy_write(dev, B43legacy_PHY_ILT_G_CTRL, offset);
325423e3ce3SKalle Valo 	mmiowb();
326423e3ce3SKalle Valo 	b43legacy_phy_write(dev, B43legacy_PHY_ILT_G_DATA2,
327423e3ce3SKalle Valo 			    (val & 0xFFFF0000) >> 16);
328423e3ce3SKalle Valo 	b43legacy_phy_write(dev, B43legacy_PHY_ILT_G_DATA1,
329423e3ce3SKalle Valo 			    val & 0x0000FFFF);
330423e3ce3SKalle Valo }
331423e3ce3SKalle Valo 
332423e3ce3SKalle Valo u16 b43legacy_ilt_read(struct b43legacy_wldev *dev, u16 offset)
333423e3ce3SKalle Valo {
334423e3ce3SKalle Valo 	b43legacy_phy_write(dev, B43legacy_PHY_ILT_G_CTRL, offset);
335423e3ce3SKalle Valo 	return b43legacy_phy_read(dev, B43legacy_PHY_ILT_G_DATA1);
336423e3ce3SKalle Valo }
337