This source file includes following definitions.
- assert_sizes
- b43_ofdmtab_read16
- b43_ofdmtab_write16
- b43_ofdmtab_read32
- b43_ofdmtab_write32
- b43_gtab_read
- b43_gtab_write
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 #include "b43.h"
16 #include "tables.h"
17 #include "phy_g.h"
18
19
20 const u32 b43_tab_rotor[] = {
21 0xFEB93FFD, 0xFEC63FFD,
22 0xFED23FFD, 0xFEDF3FFD,
23 0xFEEC3FFE, 0xFEF83FFE,
24 0xFF053FFE, 0xFF113FFE,
25 0xFF1E3FFE, 0xFF2A3FFF,
26 0xFF373FFF, 0xFF443FFF,
27 0xFF503FFF, 0xFF5D3FFF,
28 0xFF693FFF, 0xFF763FFF,
29 0xFF824000, 0xFF8F4000,
30 0xFF9B4000, 0xFFA84000,
31 0xFFB54000, 0xFFC14000,
32 0xFFCE4000, 0xFFDA4000,
33 0xFFE74000, 0xFFF34000,
34 0x00004000, 0x000D4000,
35 0x00194000, 0x00264000,
36 0x00324000, 0x003F4000,
37 0x004B4000, 0x00584000,
38 0x00654000, 0x00714000,
39 0x007E4000, 0x008A3FFF,
40 0x00973FFF, 0x00A33FFF,
41 0x00B03FFF, 0x00BC3FFF,
42 0x00C93FFF, 0x00D63FFF,
43 0x00E23FFE, 0x00EF3FFE,
44 0x00FB3FFE, 0x01083FFE,
45 0x01143FFE, 0x01213FFD,
46 0x012E3FFD, 0x013A3FFD,
47 0x01473FFD,
48 };
49
50 const u32 b43_tab_retard[] = {
51 0xDB93CB87, 0xD666CF64,
52 0xD1FDD358, 0xCDA6D826,
53 0xCA38DD9F, 0xC729E2B4,
54 0xC469E88E, 0xC26AEE2B,
55 0xC0DEF46C, 0xC073FA62,
56 0xC01D00D5, 0xC0760743,
57 0xC1560D1E, 0xC2E51369,
58 0xC4ED18FF, 0xC7AC1ED7,
59 0xCB2823B2, 0xCEFA28D9,
60 0xD2F62D3F, 0xD7BB3197,
61 0xDCE53568, 0xE1FE3875,
62 0xE7D13B35, 0xED663D35,
63 0xF39B3EC4, 0xF98E3FA7,
64 0x00004000, 0x06723FA7,
65 0x0C653EC4, 0x129A3D35,
66 0x182F3B35, 0x1E023875,
67 0x231B3568, 0x28453197,
68 0x2D0A2D3F, 0x310628D9,
69 0x34D823B2, 0x38541ED7,
70 0x3B1318FF, 0x3D1B1369,
71 0x3EAA0D1E, 0x3F8A0743,
72 0x3FE300D5, 0x3F8DFA62,
73 0x3F22F46C, 0x3D96EE2B,
74 0x3B97E88E, 0x38D7E2B4,
75 0x35C8DD9F, 0x325AD826,
76 0x2E03D358, 0x299ACF64,
77 0x246DCB87,
78 };
79
80 const u16 b43_tab_finefreqa[] = {
81 0x0082, 0x0082, 0x0102, 0x0182,
82 0x0202, 0x0282, 0x0302, 0x0382,
83 0x0402, 0x0482, 0x0502, 0x0582,
84 0x05E2, 0x0662, 0x06E2, 0x0762,
85 0x07E2, 0x0842, 0x08C2, 0x0942,
86 0x09C2, 0x0A22, 0x0AA2, 0x0B02,
87 0x0B82, 0x0BE2, 0x0C62, 0x0CC2,
88 0x0D42, 0x0DA2, 0x0E02, 0x0E62,
89 0x0EE2, 0x0F42, 0x0FA2, 0x1002,
90 0x1062, 0x10C2, 0x1122, 0x1182,
91 0x11E2, 0x1242, 0x12A2, 0x12E2,
92 0x1342, 0x13A2, 0x1402, 0x1442,
93 0x14A2, 0x14E2, 0x1542, 0x1582,
94 0x15E2, 0x1622, 0x1662, 0x16C1,
95 0x1701, 0x1741, 0x1781, 0x17E1,
96 0x1821, 0x1861, 0x18A1, 0x18E1,
97 0x1921, 0x1961, 0x19A1, 0x19E1,
98 0x1A21, 0x1A61, 0x1AA1, 0x1AC1,
99 0x1B01, 0x1B41, 0x1B81, 0x1BA1,
100 0x1BE1, 0x1C21, 0x1C41, 0x1C81,
101 0x1CA1, 0x1CE1, 0x1D01, 0x1D41,
102 0x1D61, 0x1DA1, 0x1DC1, 0x1E01,
103 0x1E21, 0x1E61, 0x1E81, 0x1EA1,
104 0x1EE1, 0x1F01, 0x1F21, 0x1F41,
105 0x1F81, 0x1FA1, 0x1FC1, 0x1FE1,
106 0x2001, 0x2041, 0x2061, 0x2081,
107 0x20A1, 0x20C1, 0x20E1, 0x2101,
108 0x2121, 0x2141, 0x2161, 0x2181,
109 0x21A1, 0x21C1, 0x21E1, 0x2201,
110 0x2221, 0x2241, 0x2261, 0x2281,
111 0x22A1, 0x22C1, 0x22C1, 0x22E1,
112 0x2301, 0x2321, 0x2341, 0x2361,
113 0x2361, 0x2381, 0x23A1, 0x23C1,
114 0x23E1, 0x23E1, 0x2401, 0x2421,
115 0x2441, 0x2441, 0x2461, 0x2481,
116 0x2481, 0x24A1, 0x24C1, 0x24C1,
117 0x24E1, 0x2501, 0x2501, 0x2521,
118 0x2541, 0x2541, 0x2561, 0x2561,
119 0x2581, 0x25A1, 0x25A1, 0x25C1,
120 0x25C1, 0x25E1, 0x2601, 0x2601,
121 0x2621, 0x2621, 0x2641, 0x2641,
122 0x2661, 0x2661, 0x2681, 0x2681,
123 0x26A1, 0x26A1, 0x26C1, 0x26C1,
124 0x26E1, 0x26E1, 0x2701, 0x2701,
125 0x2721, 0x2721, 0x2740, 0x2740,
126 0x2760, 0x2760, 0x2780, 0x2780,
127 0x2780, 0x27A0, 0x27A0, 0x27C0,
128 0x27C0, 0x27E0, 0x27E0, 0x27E0,
129 0x2800, 0x2800, 0x2820, 0x2820,
130 0x2820, 0x2840, 0x2840, 0x2840,
131 0x2860, 0x2860, 0x2880, 0x2880,
132 0x2880, 0x28A0, 0x28A0, 0x28A0,
133 0x28C0, 0x28C0, 0x28C0, 0x28E0,
134 0x28E0, 0x28E0, 0x2900, 0x2900,
135 0x2900, 0x2920, 0x2920, 0x2920,
136 0x2940, 0x2940, 0x2940, 0x2960,
137 0x2960, 0x2960, 0x2960, 0x2980,
138 0x2980, 0x2980, 0x29A0, 0x29A0,
139 0x29A0, 0x29A0, 0x29C0, 0x29C0,
140 0x29C0, 0x29E0, 0x29E0, 0x29E0,
141 0x29E0, 0x2A00, 0x2A00, 0x2A00,
142 0x2A00, 0x2A20, 0x2A20, 0x2A20,
143 0x2A20, 0x2A40, 0x2A40, 0x2A40,
144 0x2A40, 0x2A60, 0x2A60, 0x2A60,
145 };
146
147 const u16 b43_tab_finefreqg[] = {
148 0x0089, 0x02E9, 0x0409, 0x04E9,
149 0x05A9, 0x0669, 0x0709, 0x0789,
150 0x0829, 0x08A9, 0x0929, 0x0989,
151 0x0A09, 0x0A69, 0x0AC9, 0x0B29,
152 0x0BA9, 0x0BE9, 0x0C49, 0x0CA9,
153 0x0D09, 0x0D69, 0x0DA9, 0x0E09,
154 0x0E69, 0x0EA9, 0x0F09, 0x0F49,
155 0x0FA9, 0x0FE9, 0x1029, 0x1089,
156 0x10C9, 0x1109, 0x1169, 0x11A9,
157 0x11E9, 0x1229, 0x1289, 0x12C9,
158 0x1309, 0x1349, 0x1389, 0x13C9,
159 0x1409, 0x1449, 0x14A9, 0x14E9,
160 0x1529, 0x1569, 0x15A9, 0x15E9,
161 0x1629, 0x1669, 0x16A9, 0x16E8,
162 0x1728, 0x1768, 0x17A8, 0x17E8,
163 0x1828, 0x1868, 0x18A8, 0x18E8,
164 0x1928, 0x1968, 0x19A8, 0x19E8,
165 0x1A28, 0x1A68, 0x1AA8, 0x1AE8,
166 0x1B28, 0x1B68, 0x1BA8, 0x1BE8,
167 0x1C28, 0x1C68, 0x1CA8, 0x1CE8,
168 0x1D28, 0x1D68, 0x1DC8, 0x1E08,
169 0x1E48, 0x1E88, 0x1EC8, 0x1F08,
170 0x1F48, 0x1F88, 0x1FE8, 0x2028,
171 0x2068, 0x20A8, 0x2108, 0x2148,
172 0x2188, 0x21C8, 0x2228, 0x2268,
173 0x22C8, 0x2308, 0x2348, 0x23A8,
174 0x23E8, 0x2448, 0x24A8, 0x24E8,
175 0x2548, 0x25A8, 0x2608, 0x2668,
176 0x26C8, 0x2728, 0x2787, 0x27E7,
177 0x2847, 0x28C7, 0x2947, 0x29A7,
178 0x2A27, 0x2AC7, 0x2B47, 0x2BE7,
179 0x2CA7, 0x2D67, 0x2E47, 0x2F67,
180 0x3247, 0x3526, 0x3646, 0x3726,
181 0x3806, 0x38A6, 0x3946, 0x39E6,
182 0x3A66, 0x3AE6, 0x3B66, 0x3BC6,
183 0x3C45, 0x3CA5, 0x3D05, 0x3D85,
184 0x3DE5, 0x3E45, 0x3EA5, 0x3EE5,
185 0x3F45, 0x3FA5, 0x4005, 0x4045,
186 0x40A5, 0x40E5, 0x4145, 0x4185,
187 0x41E5, 0x4225, 0x4265, 0x42C5,
188 0x4305, 0x4345, 0x43A5, 0x43E5,
189 0x4424, 0x4464, 0x44C4, 0x4504,
190 0x4544, 0x4584, 0x45C4, 0x4604,
191 0x4644, 0x46A4, 0x46E4, 0x4724,
192 0x4764, 0x47A4, 0x47E4, 0x4824,
193 0x4864, 0x48A4, 0x48E4, 0x4924,
194 0x4964, 0x49A4, 0x49E4, 0x4A24,
195 0x4A64, 0x4AA4, 0x4AE4, 0x4B23,
196 0x4B63, 0x4BA3, 0x4BE3, 0x4C23,
197 0x4C63, 0x4CA3, 0x4CE3, 0x4D23,
198 0x4D63, 0x4DA3, 0x4DE3, 0x4E23,
199 0x4E63, 0x4EA3, 0x4EE3, 0x4F23,
200 0x4F63, 0x4FC3, 0x5003, 0x5043,
201 0x5083, 0x50C3, 0x5103, 0x5143,
202 0x5183, 0x51E2, 0x5222, 0x5262,
203 0x52A2, 0x52E2, 0x5342, 0x5382,
204 0x53C2, 0x5402, 0x5462, 0x54A2,
205 0x5502, 0x5542, 0x55A2, 0x55E2,
206 0x5642, 0x5682, 0x56E2, 0x5722,
207 0x5782, 0x57E1, 0x5841, 0x58A1,
208 0x5901, 0x5961, 0x59C1, 0x5A21,
209 0x5AA1, 0x5B01, 0x5B81, 0x5BE1,
210 0x5C61, 0x5D01, 0x5D80, 0x5E20,
211 0x5EE0, 0x5FA0, 0x6080, 0x61C0,
212 };
213
214 const u16 b43_tab_noisea2[] = {
215 0x0001, 0x0001, 0x0001, 0xFFFE,
216 0xFFFE, 0x3FFF, 0x1000, 0x0393,
217 };
218
219 const u16 b43_tab_noisea3[] = {
220 0x5E5E, 0x5E5E, 0x5E5E, 0x3F48,
221 0x4C4C, 0x4C4C, 0x4C4C, 0x2D36,
222 };
223
224 const u16 b43_tab_noiseg1[] = {
225 0x013C, 0x01F5, 0x031A, 0x0631,
226 0x0001, 0x0001, 0x0001, 0x0001,
227 };
228
229 const u16 b43_tab_noiseg2[] = {
230 0x5484, 0x3C40, 0x0000, 0x0000,
231 0x0000, 0x0000, 0x0000, 0x0000,
232 };
233
234 const u16 b43_tab_noisescalea2[] = {
235 0x6767, 0x6767, 0x6767, 0x6767,
236 0x6767, 0x6767, 0x6767, 0x6767,
237 0x6767, 0x6767, 0x6767, 0x6767,
238 0x6767, 0x6700, 0x6767, 0x6767,
239 0x6767, 0x6767, 0x6767, 0x6767,
240 0x6767, 0x6767, 0x6767, 0x6767,
241 0x6767, 0x6767, 0x0067,
242 };
243
244 const u16 b43_tab_noisescalea3[] = {
245 0x2323, 0x2323, 0x2323, 0x2323,
246 0x2323, 0x2323, 0x2323, 0x2323,
247 0x2323, 0x2323, 0x2323, 0x2323,
248 0x2323, 0x2300, 0x2323, 0x2323,
249 0x2323, 0x2323, 0x2323, 0x2323,
250 0x2323, 0x2323, 0x2323, 0x2323,
251 0x2323, 0x2323, 0x0023,
252 };
253
254 const u16 b43_tab_noisescaleg1[] = {
255 0x6C77, 0x5162, 0x3B40, 0x3335,
256 0x2F2D, 0x2A2A, 0x2527, 0x1F21,
257 0x1A1D, 0x1719, 0x1616, 0x1414,
258 0x1414, 0x1400, 0x1414, 0x1614,
259 0x1716, 0x1A19, 0x1F1D, 0x2521,
260 0x2A27, 0x2F2A, 0x332D, 0x3B35,
261 0x5140, 0x6C62, 0x0077,
262 };
263
264 const u16 b43_tab_noisescaleg2[] = {
265 0xD8DD, 0xCBD4, 0xBCC0, 0xB6B7,
266 0xB2B0, 0xADAD, 0xA7A9, 0x9FA1,
267 0x969B, 0x9195, 0x8F8F, 0x8A8A,
268 0x8A8A, 0x8A00, 0x8A8A, 0x8F8A,
269 0x918F, 0x9695, 0x9F9B, 0xA7A1,
270 0xADA9, 0xB2AD, 0xB6B0, 0xBCB7,
271 0xCBC0, 0xD8D4, 0x00DD,
272 };
273
274 const u16 b43_tab_noisescaleg3[] = {
275 0xA4A4, 0xA4A4, 0xA4A4, 0xA4A4,
276 0xA4A4, 0xA4A4, 0xA4A4, 0xA4A4,
277 0xA4A4, 0xA4A4, 0xA4A4, 0xA4A4,
278 0xA4A4, 0xA400, 0xA4A4, 0xA4A4,
279 0xA4A4, 0xA4A4, 0xA4A4, 0xA4A4,
280 0xA4A4, 0xA4A4, 0xA4A4, 0xA4A4,
281 0xA4A4, 0xA4A4, 0x00A4,
282 };
283
284 const u16 b43_tab_sigmasqr1[] = {
285 0x007A, 0x0075, 0x0071, 0x006C,
286 0x0067, 0x0063, 0x005E, 0x0059,
287 0x0054, 0x0050, 0x004B, 0x0046,
288 0x0042, 0x003D, 0x003D, 0x003D,
289 0x003D, 0x003D, 0x003D, 0x003D,
290 0x003D, 0x003D, 0x003D, 0x003D,
291 0x003D, 0x003D, 0x0000, 0x003D,
292 0x003D, 0x003D, 0x003D, 0x003D,
293 0x003D, 0x003D, 0x003D, 0x003D,
294 0x003D, 0x003D, 0x003D, 0x003D,
295 0x0042, 0x0046, 0x004B, 0x0050,
296 0x0054, 0x0059, 0x005E, 0x0063,
297 0x0067, 0x006C, 0x0071, 0x0075,
298 0x007A,
299 };
300
301 const u16 b43_tab_sigmasqr2[] = {
302 0x00DE, 0x00DC, 0x00DA, 0x00D8,
303 0x00D6, 0x00D4, 0x00D2, 0x00CF,
304 0x00CD, 0x00CA, 0x00C7, 0x00C4,
305 0x00C1, 0x00BE, 0x00BE, 0x00BE,
306 0x00BE, 0x00BE, 0x00BE, 0x00BE,
307 0x00BE, 0x00BE, 0x00BE, 0x00BE,
308 0x00BE, 0x00BE, 0x0000, 0x00BE,
309 0x00BE, 0x00BE, 0x00BE, 0x00BE,
310 0x00BE, 0x00BE, 0x00BE, 0x00BE,
311 0x00BE, 0x00BE, 0x00BE, 0x00BE,
312 0x00C1, 0x00C4, 0x00C7, 0x00CA,
313 0x00CD, 0x00CF, 0x00D2, 0x00D4,
314 0x00D6, 0x00D8, 0x00DA, 0x00DC,
315 0x00DE,
316 };
317
318 const u16 b43_tab_rssiagc1[] = {
319 0xFFF8, 0xFFF8, 0xFFF8, 0xFFF8,
320 0xFFF8, 0xFFF9, 0xFFFC, 0xFFFE,
321 0xFFF8, 0xFFF8, 0xFFF8, 0xFFF8,
322 0xFFF8, 0xFFF8, 0xFFF8, 0xFFF8,
323 };
324
325 const u16 b43_tab_rssiagc2[] = {
326 0x0820, 0x0820, 0x0920, 0x0C38,
327 0x0820, 0x0820, 0x0820, 0x0820,
328 0x0820, 0x0820, 0x0920, 0x0A38,
329 0x0820, 0x0820, 0x0820, 0x0820,
330 0x0820, 0x0820, 0x0920, 0x0A38,
331 0x0820, 0x0820, 0x0820, 0x0820,
332 0x0820, 0x0820, 0x0920, 0x0A38,
333 0x0820, 0x0820, 0x0820, 0x0820,
334 0x0820, 0x0820, 0x0920, 0x0A38,
335 0x0820, 0x0820, 0x0820, 0x0820,
336 0x0820, 0x0820, 0x0920, 0x0A38,
337 0x0820, 0x0820, 0x0820, 0x0820,
338 };
339
340 static inline void assert_sizes(void)
341 {
342 BUILD_BUG_ON(B43_TAB_ROTOR_SIZE != ARRAY_SIZE(b43_tab_rotor));
343 BUILD_BUG_ON(B43_TAB_RETARD_SIZE != ARRAY_SIZE(b43_tab_retard));
344 BUILD_BUG_ON(B43_TAB_FINEFREQA_SIZE != ARRAY_SIZE(b43_tab_finefreqa));
345 BUILD_BUG_ON(B43_TAB_FINEFREQG_SIZE != ARRAY_SIZE(b43_tab_finefreqg));
346 BUILD_BUG_ON(B43_TAB_NOISEA2_SIZE != ARRAY_SIZE(b43_tab_noisea2));
347 BUILD_BUG_ON(B43_TAB_NOISEA3_SIZE != ARRAY_SIZE(b43_tab_noisea3));
348 BUILD_BUG_ON(B43_TAB_NOISEG1_SIZE != ARRAY_SIZE(b43_tab_noiseg1));
349 BUILD_BUG_ON(B43_TAB_NOISEG2_SIZE != ARRAY_SIZE(b43_tab_noiseg2));
350 BUILD_BUG_ON(B43_TAB_NOISESCALE_SIZE !=
351 ARRAY_SIZE(b43_tab_noisescalea2));
352 BUILD_BUG_ON(B43_TAB_NOISESCALE_SIZE !=
353 ARRAY_SIZE(b43_tab_noisescalea3));
354 BUILD_BUG_ON(B43_TAB_NOISESCALE_SIZE !=
355 ARRAY_SIZE(b43_tab_noisescaleg1));
356 BUILD_BUG_ON(B43_TAB_NOISESCALE_SIZE !=
357 ARRAY_SIZE(b43_tab_noisescaleg2));
358 BUILD_BUG_ON(B43_TAB_NOISESCALE_SIZE !=
359 ARRAY_SIZE(b43_tab_noisescaleg3));
360 BUILD_BUG_ON(B43_TAB_SIGMASQR_SIZE != ARRAY_SIZE(b43_tab_sigmasqr1));
361 BUILD_BUG_ON(B43_TAB_SIGMASQR_SIZE != ARRAY_SIZE(b43_tab_sigmasqr2));
362 BUILD_BUG_ON(B43_TAB_RSSIAGC1_SIZE != ARRAY_SIZE(b43_tab_rssiagc1));
363 BUILD_BUG_ON(B43_TAB_RSSIAGC2_SIZE != ARRAY_SIZE(b43_tab_rssiagc2));
364 }
365
366 u16 b43_ofdmtab_read16(struct b43_wldev *dev, u16 table, u16 offset)
367 {
368 struct b43_phy_g *gphy = dev->phy.g;
369 u16 addr;
370
371 addr = table + offset;
372 if ((gphy->ofdmtab_addr_direction != B43_OFDMTAB_DIRECTION_READ) ||
373 (addr - 1 != gphy->ofdmtab_addr)) {
374
375 b43_phy_write(dev, B43_PHY_OTABLECTL, addr);
376 gphy->ofdmtab_addr_direction = B43_OFDMTAB_DIRECTION_READ;
377 }
378 gphy->ofdmtab_addr = addr;
379
380 return b43_phy_read(dev, B43_PHY_OTABLEI);
381
382
383 assert_sizes();
384 }
385
386 void b43_ofdmtab_write16(struct b43_wldev *dev, u16 table,
387 u16 offset, u16 value)
388 {
389 struct b43_phy_g *gphy = dev->phy.g;
390 u16 addr;
391
392 addr = table + offset;
393 if ((gphy->ofdmtab_addr_direction != B43_OFDMTAB_DIRECTION_WRITE) ||
394 (addr - 1 != gphy->ofdmtab_addr)) {
395
396 b43_phy_write(dev, B43_PHY_OTABLECTL, addr);
397 gphy->ofdmtab_addr_direction = B43_OFDMTAB_DIRECTION_WRITE;
398 }
399 gphy->ofdmtab_addr = addr;
400 b43_phy_write(dev, B43_PHY_OTABLEI, value);
401 }
402
403 u32 b43_ofdmtab_read32(struct b43_wldev *dev, u16 table, u16 offset)
404 {
405 struct b43_phy_g *gphy = dev->phy.g;
406 u32 ret;
407 u16 addr;
408
409 addr = table + offset;
410 if ((gphy->ofdmtab_addr_direction != B43_OFDMTAB_DIRECTION_READ) ||
411 (addr - 1 != gphy->ofdmtab_addr)) {
412
413 b43_phy_write(dev, B43_PHY_OTABLECTL, addr);
414 gphy->ofdmtab_addr_direction = B43_OFDMTAB_DIRECTION_READ;
415 }
416 gphy->ofdmtab_addr = addr;
417 ret = b43_phy_read(dev, B43_PHY_OTABLEQ);
418 ret <<= 16;
419 ret |= b43_phy_read(dev, B43_PHY_OTABLEI);
420
421 return ret;
422 }
423
424 void b43_ofdmtab_write32(struct b43_wldev *dev, u16 table,
425 u16 offset, u32 value)
426 {
427 struct b43_phy_g *gphy = dev->phy.g;
428 u16 addr;
429
430 addr = table + offset;
431 if ((gphy->ofdmtab_addr_direction != B43_OFDMTAB_DIRECTION_WRITE) ||
432 (addr - 1 != gphy->ofdmtab_addr)) {
433
434 b43_phy_write(dev, B43_PHY_OTABLECTL, addr);
435 gphy->ofdmtab_addr_direction = B43_OFDMTAB_DIRECTION_WRITE;
436 }
437 gphy->ofdmtab_addr = addr;
438
439 b43_phy_write(dev, B43_PHY_OTABLEI, value);
440 b43_phy_write(dev, B43_PHY_OTABLEQ, (value >> 16));
441 }
442
443 u16 b43_gtab_read(struct b43_wldev *dev, u16 table, u16 offset)
444 {
445 b43_phy_write(dev, B43_PHY_GTABCTL, table + offset);
446 return b43_phy_read(dev, B43_PHY_GTABDATA);
447 }
448
449 void b43_gtab_write(struct b43_wldev *dev, u16 table, u16 offset, u16 value)
450 {
451 b43_phy_write(dev, B43_PHY_GTABCTL, table + offset);
452 b43_phy_write(dev, B43_PHY_GTABDATA, value);
453 }