1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35#include "mac.h"
36#include "srom.h"
37#include "rf.h"
38#include "baseband.h"
39
40
41
42
43
44#define BY_RF2959_REG_LEN 23
45#define CB_RF2959_INIT_SEQ 15
46#define SWITCH_CHANNEL_DELAY_RF2959 200
47#define RF2959_PWR_IDX_LEN 32
48
49#define BY_MA2825_REG_LEN 23
50#define CB_MA2825_INIT_SEQ 13
51#define SWITCH_CHANNEL_DELAY_MA2825 200
52#define MA2825_PWR_IDX_LEN 31
53
54#define BY_AL2230_REG_LEN 23
55#define CB_AL2230_INIT_SEQ 15
56#define SWITCH_CHANNEL_DELAY_AL2230 200
57#define AL2230_PWR_IDX_LEN 64
58
59
60#define BY_UW2451_REG_LEN 23
61#define CB_UW2451_INIT_SEQ 6
62#define SWITCH_CHANNEL_DELAY_UW2451 200
63#define UW2451_PWR_IDX_LEN 25
64
65
66#define BY_MA2829_REG_LEN 23
67#define CB_MA2829_INIT_SEQ 13
68#define SWITCH_CHANNEL_DELAY_MA2829 200
69#define MA2829_PWR_IDX_LEN 64
70
71
72
73#define BY_AL7230_REG_LEN 23
74#define CB_AL7230_INIT_SEQ 16
75#define SWITCH_CHANNEL_DELAY_AL7230 200
76#define AL7230_PWR_IDX_LEN 64
77
78
79
80#define BY_UW2452_REG_LEN 23
81#define CB_UW2452_INIT_SEQ 5
82#define SWITCH_CHANNEL_DELAY_UW2452 100
83#define UW2452_PWR_IDX_LEN 64
84
85
86#define BY_VT3226_REG_LEN 23
87#define CB_VT3226_INIT_SEQ 12
88#define SWITCH_CHANNEL_DELAY_VT3226 200
89#define VT3226_PWR_IDX_LEN 16
90
91
92
93
94
95
96
97const DWORD dwAL2230InitTable[CB_AL2230_INIT_SEQ] = {
98 0x03F79000+(BY_AL2230_REG_LEN<<3)+IFREGCTL_REGW,
99 0x03333100+(BY_AL2230_REG_LEN<<3)+IFREGCTL_REGW,
100 0x01A00200+(BY_AL2230_REG_LEN<<3)+IFREGCTL_REGW,
101 0x00FFF300+(BY_AL2230_REG_LEN<<3)+IFREGCTL_REGW,
102 0x0005A400+(BY_AL2230_REG_LEN<<3)+IFREGCTL_REGW,
103 0x0F4DC500+(BY_AL2230_REG_LEN<<3)+IFREGCTL_REGW,
104 0x0805B600+(BY_AL2230_REG_LEN<<3)+IFREGCTL_REGW,
105 0x0146C700+(BY_AL2230_REG_LEN<<3)+IFREGCTL_REGW,
106 0x00068800+(BY_AL2230_REG_LEN<<3)+IFREGCTL_REGW,
107 0x0403B900+(BY_AL2230_REG_LEN<<3)+IFREGCTL_REGW,
108 0x00DBBA00+(BY_AL2230_REG_LEN<<3)+IFREGCTL_REGW,
109 0x00099B00+(BY_AL2230_REG_LEN<<3)+IFREGCTL_REGW,
110 0x0BDFFC00+(BY_AL2230_REG_LEN<<3)+IFREGCTL_REGW,
111 0x00000D00+(BY_AL2230_REG_LEN<<3)+IFREGCTL_REGW,
112 0x00580F00+(BY_AL2230_REG_LEN<<3)+IFREGCTL_REGW
113 };
114
115const DWORD dwAL2230ChannelTable0[CB_MAX_CHANNEL] = {
116 0x03F79000+(BY_AL2230_REG_LEN<<3)+IFREGCTL_REGW,
117 0x03F79000+(BY_AL2230_REG_LEN<<3)+IFREGCTL_REGW,
118 0x03E79000+(BY_AL2230_REG_LEN<<3)+IFREGCTL_REGW,
119 0x03E79000+(BY_AL2230_REG_LEN<<3)+IFREGCTL_REGW,
120 0x03F7A000+(BY_AL2230_REG_LEN<<3)+IFREGCTL_REGW,
121 0x03F7A000+(BY_AL2230_REG_LEN<<3)+IFREGCTL_REGW,
122 0x03E7A000+(BY_AL2230_REG_LEN<<3)+IFREGCTL_REGW,
123 0x03E7A000+(BY_AL2230_REG_LEN<<3)+IFREGCTL_REGW,
124 0x03F7B000+(BY_AL2230_REG_LEN<<3)+IFREGCTL_REGW,
125 0x03F7B000+(BY_AL2230_REG_LEN<<3)+IFREGCTL_REGW,
126 0x03E7B000+(BY_AL2230_REG_LEN<<3)+IFREGCTL_REGW,
127 0x03E7B000+(BY_AL2230_REG_LEN<<3)+IFREGCTL_REGW,
128 0x03F7C000+(BY_AL2230_REG_LEN<<3)+IFREGCTL_REGW,
129 0x03E7C000+(BY_AL2230_REG_LEN<<3)+IFREGCTL_REGW
130 };
131
132const DWORD dwAL2230ChannelTable1[CB_MAX_CHANNEL] = {
133 0x03333100+(BY_AL2230_REG_LEN<<3)+IFREGCTL_REGW,
134 0x0B333100+(BY_AL2230_REG_LEN<<3)+IFREGCTL_REGW,
135 0x03333100+(BY_AL2230_REG_LEN<<3)+IFREGCTL_REGW,
136 0x0B333100+(BY_AL2230_REG_LEN<<3)+IFREGCTL_REGW,
137 0x03333100+(BY_AL2230_REG_LEN<<3)+IFREGCTL_REGW,
138 0x0B333100+(BY_AL2230_REG_LEN<<3)+IFREGCTL_REGW,
139 0x03333100+(BY_AL2230_REG_LEN<<3)+IFREGCTL_REGW,
140 0x0B333100+(BY_AL2230_REG_LEN<<3)+IFREGCTL_REGW,
141 0x03333100+(BY_AL2230_REG_LEN<<3)+IFREGCTL_REGW,
142 0x0B333100+(BY_AL2230_REG_LEN<<3)+IFREGCTL_REGW,
143 0x03333100+(BY_AL2230_REG_LEN<<3)+IFREGCTL_REGW,
144 0x0B333100+(BY_AL2230_REG_LEN<<3)+IFREGCTL_REGW,
145 0x03333100+(BY_AL2230_REG_LEN<<3)+IFREGCTL_REGW,
146 0x06666100+(BY_AL2230_REG_LEN<<3)+IFREGCTL_REGW
147 };
148
149DWORD dwAL2230PowerTable[AL2230_PWR_IDX_LEN] = {
150 0x04040900+(BY_AL2230_REG_LEN<<3)+IFREGCTL_REGW,
151 0x04041900+(BY_AL2230_REG_LEN<<3)+IFREGCTL_REGW,
152 0x04042900+(BY_AL2230_REG_LEN<<3)+IFREGCTL_REGW,
153 0x04043900+(BY_AL2230_REG_LEN<<3)+IFREGCTL_REGW,
154 0x04044900+(BY_AL2230_REG_LEN<<3)+IFREGCTL_REGW,
155 0x04045900+(BY_AL2230_REG_LEN<<3)+IFREGCTL_REGW,
156 0x04046900+(BY_AL2230_REG_LEN<<3)+IFREGCTL_REGW,
157 0x04047900+(BY_AL2230_REG_LEN<<3)+IFREGCTL_REGW,
158 0x04048900+(BY_AL2230_REG_LEN<<3)+IFREGCTL_REGW,
159 0x04049900+(BY_AL2230_REG_LEN<<3)+IFREGCTL_REGW,
160 0x0404A900+(BY_AL2230_REG_LEN<<3)+IFREGCTL_REGW,
161 0x0404B900+(BY_AL2230_REG_LEN<<3)+IFREGCTL_REGW,
162 0x0404C900+(BY_AL2230_REG_LEN<<3)+IFREGCTL_REGW,
163 0x0404D900+(BY_AL2230_REG_LEN<<3)+IFREGCTL_REGW,
164 0x0404E900+(BY_AL2230_REG_LEN<<3)+IFREGCTL_REGW,
165 0x0404F900+(BY_AL2230_REG_LEN<<3)+IFREGCTL_REGW,
166 0x04050900+(BY_AL2230_REG_LEN<<3)+IFREGCTL_REGW,
167 0x04051900+(BY_AL2230_REG_LEN<<3)+IFREGCTL_REGW,
168 0x04052900+(BY_AL2230_REG_LEN<<3)+IFREGCTL_REGW,
169 0x04053900+(BY_AL2230_REG_LEN<<3)+IFREGCTL_REGW,
170 0x04054900+(BY_AL2230_REG_LEN<<3)+IFREGCTL_REGW,
171 0x04055900+(BY_AL2230_REG_LEN<<3)+IFREGCTL_REGW,
172 0x04056900+(BY_AL2230_REG_LEN<<3)+IFREGCTL_REGW,
173 0x04057900+(BY_AL2230_REG_LEN<<3)+IFREGCTL_REGW,
174 0x04058900+(BY_AL2230_REG_LEN<<3)+IFREGCTL_REGW,
175 0x04059900+(BY_AL2230_REG_LEN<<3)+IFREGCTL_REGW,
176 0x0405A900+(BY_AL2230_REG_LEN<<3)+IFREGCTL_REGW,
177 0x0405B900+(BY_AL2230_REG_LEN<<3)+IFREGCTL_REGW,
178 0x0405C900+(BY_AL2230_REG_LEN<<3)+IFREGCTL_REGW,
179 0x0405D900+(BY_AL2230_REG_LEN<<3)+IFREGCTL_REGW,
180 0x0405E900+(BY_AL2230_REG_LEN<<3)+IFREGCTL_REGW,
181 0x0405F900+(BY_AL2230_REG_LEN<<3)+IFREGCTL_REGW,
182 0x04060900+(BY_AL2230_REG_LEN<<3)+IFREGCTL_REGW,
183 0x04061900+(BY_AL2230_REG_LEN<<3)+IFREGCTL_REGW,
184 0x04062900+(BY_AL2230_REG_LEN<<3)+IFREGCTL_REGW,
185 0x04063900+(BY_AL2230_REG_LEN<<3)+IFREGCTL_REGW,
186 0x04064900+(BY_AL2230_REG_LEN<<3)+IFREGCTL_REGW,
187 0x04065900+(BY_AL2230_REG_LEN<<3)+IFREGCTL_REGW,
188 0x04066900+(BY_AL2230_REG_LEN<<3)+IFREGCTL_REGW,
189 0x04067900+(BY_AL2230_REG_LEN<<3)+IFREGCTL_REGW,
190 0x04068900+(BY_AL2230_REG_LEN<<3)+IFREGCTL_REGW,
191 0x04069900+(BY_AL2230_REG_LEN<<3)+IFREGCTL_REGW,
192 0x0406A900+(BY_AL2230_REG_LEN<<3)+IFREGCTL_REGW,
193 0x0406B900+(BY_AL2230_REG_LEN<<3)+IFREGCTL_REGW,
194 0x0406C900+(BY_AL2230_REG_LEN<<3)+IFREGCTL_REGW,
195 0x0406D900+(BY_AL2230_REG_LEN<<3)+IFREGCTL_REGW,
196 0x0406E900+(BY_AL2230_REG_LEN<<3)+IFREGCTL_REGW,
197 0x0406F900+(BY_AL2230_REG_LEN<<3)+IFREGCTL_REGW,
198 0x04070900+(BY_AL2230_REG_LEN<<3)+IFREGCTL_REGW,
199 0x04071900+(BY_AL2230_REG_LEN<<3)+IFREGCTL_REGW,
200 0x04072900+(BY_AL2230_REG_LEN<<3)+IFREGCTL_REGW,
201 0x04073900+(BY_AL2230_REG_LEN<<3)+IFREGCTL_REGW,
202 0x04074900+(BY_AL2230_REG_LEN<<3)+IFREGCTL_REGW,
203 0x04075900+(BY_AL2230_REG_LEN<<3)+IFREGCTL_REGW,
204 0x04076900+(BY_AL2230_REG_LEN<<3)+IFREGCTL_REGW,
205 0x04077900+(BY_AL2230_REG_LEN<<3)+IFREGCTL_REGW,
206 0x04078900+(BY_AL2230_REG_LEN<<3)+IFREGCTL_REGW,
207 0x04079900+(BY_AL2230_REG_LEN<<3)+IFREGCTL_REGW,
208 0x0407A900+(BY_AL2230_REG_LEN<<3)+IFREGCTL_REGW,
209 0x0407B900+(BY_AL2230_REG_LEN<<3)+IFREGCTL_REGW,
210 0x0407C900+(BY_AL2230_REG_LEN<<3)+IFREGCTL_REGW,
211 0x0407D900+(BY_AL2230_REG_LEN<<3)+IFREGCTL_REGW,
212 0x0407E900+(BY_AL2230_REG_LEN<<3)+IFREGCTL_REGW,
213 0x0407F900+(BY_AL2230_REG_LEN<<3)+IFREGCTL_REGW
214 };
215
216
217
218
219const DWORD dwAL7230InitTable[CB_AL7230_INIT_SEQ] = {
220 0x00379000+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
221 0x13333100+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
222 0x841FF200+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
223 0x3FDFA300+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
224 0x7FD78400+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
225
226
227 0x802B5500+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
228 0x56AF3600+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
229 0xCE020700+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
230 0x6EBC0800+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
231 0x221BB900+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
232 0xE0000A00+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
233 0x08031B00+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
234
235
236 0x000A3C00+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
237 0xFFFFFD00+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
238 0x00000E00+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
239 0x1ABA8F00+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW
240 };
241
242const DWORD dwAL7230InitTableAMode[CB_AL7230_INIT_SEQ] = {
243 0x0FF52000+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
244 0x00000100+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
245 0x451FE200+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
246 0x5FDFA300+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
247 0x67F78400+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
248 0x853F5500+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
249 0x56AF3600+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
250 0xCE020700+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
251 0x6EBC0800+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
252 0x221BB900+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
253 0xE0600A00+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
254 0x08031B00+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
255 0x00147C00+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
256 0xFFFFFD00+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
257 0x00000E00+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
258 0x12BACF00+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW
259 };
260
261
262const DWORD dwAL7230ChannelTable0[CB_MAX_CHANNEL] = {
263 0x00379000+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
264 0x00379000+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
265 0x00379000+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
266 0x00379000+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
267 0x0037A000+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
268 0x0037A000+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
269 0x0037A000+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
270 0x0037A000+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
271 0x0037B000+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
272 0x0037B000+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
273 0x0037B000+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
274 0x0037B000+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
275 0x0037C000+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
276 0x0037C000+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
277
278
279 0x0FF52000+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
280 0x0FF52000+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
281 0x0FF52000+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
282 0x0FF52000+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
283 0x0FF52000+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
284 0x0FF52000+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
285 0x0FF53000+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
286 0x0FF53000+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
287
288
289
290
291 0x0FF54000+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
292 0x0FF54000+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
293 0x0FF54000+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
294 0x0FF54000+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
295 0x0FF54000+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
296 0x0FF55000+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
297 0x0FF56000+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
298 0x0FF56000+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
299 0x0FF57000+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
300 0x0FF57000+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
301 0x0FF57000+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
302 0x0FF57000+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
303 0x0FF57000+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
304 0x0FF57000+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
305 0x0FF58000+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
306 0x0FF58000+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
307 0x0FF58000+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
308 0x0FF59000+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
309
310 0x0FF5C000+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
311 0x0FF5C000+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
312 0x0FF5C000+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
313 0x0FF5D000+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
314 0x0FF5D000+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
315 0x0FF5D000+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
316 0x0FF5E000+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
317 0x0FF5E000+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
318 0x0FF5E000+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
319 0x0FF5F000+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
320 0x0FF5F000+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
321 0x0FF60000+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
322 0x0FF60000+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
323 0x0FF60000+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
324 0x0FF61000+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
325 0x0FF61000+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW
326 };
327
328const DWORD dwAL7230ChannelTable1[CB_MAX_CHANNEL] = {
329 0x13333100+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
330 0x1B333100+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
331 0x03333100+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
332 0x0B333100+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
333 0x13333100+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
334 0x1B333100+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
335 0x03333100+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
336 0x0B333100+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
337 0x13333100+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
338 0x1B333100+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
339 0x03333100+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
340 0x0B333100+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
341 0x13333100+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
342 0x06666100+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
343
344
345 0x1D555100+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
346 0x00000100+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
347 0x02AAA100+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
348 0x08000100+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
349 0x0AAAA100+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
350 0x0D555100+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
351 0x15555100+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
352 0x00000100+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
353
354
355
356 0x1D555100+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
357 0x00000100+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
358 0x02AAA100+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
359 0x08000100+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
360 0x0AAAA100+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
361 0x15555100+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
362 0x05555100+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
363 0x0AAAA100+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
364 0x10000100+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
365 0x15555100+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
366 0x1AAAA100+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
367 0x00000100+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
368 0x05555100+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
369 0x0AAAA100+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
370 0x15555100+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
371 0x00000100+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
372 0x0AAAA100+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
373 0x15555100+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
374 0x15555100+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
375 0x00000100+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
376 0x0AAAA100+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
377 0x15555100+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
378 0x00000100+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
379 0x0AAAA100+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
380 0x15555100+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
381 0x00000100+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
382 0x0AAAA100+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
383 0x15555100+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
384 0x00000100+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
385 0x18000100+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
386 0x02AAA100+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
387 0x0D555100+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
388 0x18000100+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
389 0x02AAA100+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW
390 };
391
392const DWORD dwAL7230ChannelTable2[CB_MAX_CHANNEL] = {
393 0x7FD78400+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
394 0x7FD78400+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
395 0x7FD78400+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
396 0x7FD78400+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
397 0x7FD78400+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
398 0x7FD78400+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
399 0x7FD78400+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
400 0x7FD78400+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
401 0x7FD78400+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
402 0x7FD78400+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
403 0x7FD78400+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
404 0x7FD78400+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
405 0x7FD78400+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
406 0x7FD78400+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
407
408
409 0x77D78400+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
410 0x67D78400+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
411 0x77D78400+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
412 0x77D78400+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
413 0x77D78400+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
414 0x77D78400+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
415 0x77D78400+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
416 0x67D78400+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
417
418
419
420 0x77D78400+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
421 0x67D78400+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
422 0x77D78400+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
423 0x77D78400+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
424 0x77D78400+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
425 0x77D78400+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
426 0x77D78400+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
427 0x77D78400+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
428 0x77D78400+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
429 0x77D78400+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
430 0x77D78400+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
431 0x67D78400+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
432 0x77D78400+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
433 0x77D78400+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
434 0x77D78400+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
435 0x67D78400+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
436 0x77D78400+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
437 0x77D78400+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
438 0x77D78400+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
439 0x67D78400+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
440 0x77D78400+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
441 0x77D78400+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
442 0x67D78400+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
443 0x77D78400+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
444 0x77D78400+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
445 0x67D78400+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
446 0x77D78400+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
447 0x77D78400+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
448 0x67D78400+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
449 0x77D78400+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
450 0x77D78400+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
451 0x77D78400+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
452 0x77D78400+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW,
453 0x77D78400+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW
454 };
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477BOOL s_bAL7230Init (DWORD_PTR dwIoBase)
478{
479 int ii;
480 BOOL bResult;
481
482 bResult = TRUE;
483
484
485 VNSvOutPortB(dwIoBase + MAC_REG_SOFTPWRCTL, 0);
486
487 MACvWordRegBitsOn(dwIoBase, MAC_REG_SOFTPWRCTL, (SOFTPWRCTL_SWPECTI |
488 SOFTPWRCTL_TXPEINV));
489 BBvPowerSaveModeOFF(dwIoBase);
490
491 for (ii = 0; ii < CB_AL7230_INIT_SEQ; ii++)
492 bResult &= IFRFbWriteEmbeded(dwIoBase, dwAL7230InitTable[ii]);
493
494
495 MACvWordRegBitsOn(dwIoBase, MAC_REG_SOFTPWRCTL, SOFTPWRCTL_SWPE3);
496
497
498 MACvTimer0MicroSDelay(dwIoBase, 150);
499 bResult &= IFRFbWriteEmbeded(dwIoBase, (0x9ABA8F00+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW));
500 MACvTimer0MicroSDelay(dwIoBase, 30);
501 bResult &= IFRFbWriteEmbeded(dwIoBase, (0x3ABA8F00+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW));
502 MACvTimer0MicroSDelay(dwIoBase, 30);
503 bResult &= IFRFbWriteEmbeded(dwIoBase, dwAL7230InitTable[CB_AL7230_INIT_SEQ-1]);
504
505 MACvWordRegBitsOn(dwIoBase, MAC_REG_SOFTPWRCTL, (SOFTPWRCTL_SWPE3 |
506 SOFTPWRCTL_SWPE2 |
507 SOFTPWRCTL_SWPECTI |
508 SOFTPWRCTL_TXPEINV));
509
510 BBvPowerSaveModeON(dwIoBase);
511
512
513
514 VNSvOutPortB(dwIoBase + MAC_REG_PSPWRSIG, (PSSIG_WPE3 | PSSIG_WPE2));
515
516 return bResult;
517}
518
519
520BOOL s_bAL7230SelectChannel (DWORD_PTR dwIoBase, BYTE byChannel)
521{
522 BOOL bResult;
523
524 bResult = TRUE;
525
526
527 MACvWordRegBitsOff(dwIoBase, MAC_REG_SOFTPWRCTL, SOFTPWRCTL_SWPE3);
528
529 bResult &= IFRFbWriteEmbeded (dwIoBase, dwAL7230ChannelTable0[byChannel-1]);
530 bResult &= IFRFbWriteEmbeded (dwIoBase, dwAL7230ChannelTable1[byChannel-1]);
531 bResult &= IFRFbWriteEmbeded (dwIoBase, dwAL7230ChannelTable2[byChannel-1]);
532
533
534 MACvWordRegBitsOn(dwIoBase, MAC_REG_SOFTPWRCTL, SOFTPWRCTL_SWPE3);
535
536
537 VNSvOutPortB(dwIoBase + MAC_REG_CHANNEL, (byChannel & 0x7F));
538 MACvTimer0MicroSDelay(dwIoBase, SWITCH_CHANNEL_DELAY_AL7230);
539
540 VNSvOutPortB(dwIoBase + MAC_REG_CHANNEL, (byChannel | 0x80));
541
542 return bResult;
543}
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625BOOL IFRFbWriteEmbeded (DWORD_PTR dwIoBase, DWORD dwData)
626{
627 WORD ww;
628 DWORD dwValue;
629
630 VNSvOutPortD(dwIoBase + MAC_REG_IFREGCTL, dwData);
631
632
633 for (ww = 0; ww < W_MAX_TIMEOUT; ww++) {
634 VNSvInPortD(dwIoBase + MAC_REG_IFREGCTL, &dwValue);
635 if (dwValue & IFREGCTL_DONE)
636 break;
637 }
638
639 if (ww == W_MAX_TIMEOUT) {
640
641 return FALSE;
642 }
643 return TRUE;
644}
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687BOOL RFbAL2230Init (DWORD_PTR dwIoBase)
688{
689 int ii;
690 BOOL bResult;
691
692 bResult = TRUE;
693
694
695 VNSvOutPortB(dwIoBase + MAC_REG_SOFTPWRCTL, 0);
696
697 MACvWordRegBitsOn(dwIoBase, MAC_REG_SOFTPWRCTL, (SOFTPWRCTL_SWPECTI |
698 SOFTPWRCTL_TXPEINV));
699
700
701
702 MACvWordRegBitsOff(dwIoBase, MAC_REG_SOFTPWRCTL, SOFTPWRCTL_SWPE3);
703
704
705
706
707
708 IFRFbWriteEmbeded(dwIoBase, (0x07168700+(BY_AL2230_REG_LEN<<3)+IFREGCTL_REGW));
709
710
711 for (ii = 0; ii < CB_AL2230_INIT_SEQ; ii++)
712 bResult &= IFRFbWriteEmbeded(dwIoBase, dwAL2230InitTable[ii]);
713
714MACvTimer0MicroSDelay(dwIoBase, 30);
715
716
717 MACvWordRegBitsOn(dwIoBase, MAC_REG_SOFTPWRCTL, SOFTPWRCTL_SWPE3);
718
719 MACvTimer0MicroSDelay(dwIoBase, 150);
720 bResult &= IFRFbWriteEmbeded(dwIoBase, (0x00d80f00+(BY_AL2230_REG_LEN<<3)+IFREGCTL_REGW));
721 MACvTimer0MicroSDelay(dwIoBase, 30);
722 bResult &= IFRFbWriteEmbeded(dwIoBase, (0x00780f00+(BY_AL2230_REG_LEN<<3)+IFREGCTL_REGW));
723 MACvTimer0MicroSDelay(dwIoBase, 30);
724 bResult &= IFRFbWriteEmbeded(dwIoBase, dwAL2230InitTable[CB_AL2230_INIT_SEQ-1]);
725
726 MACvWordRegBitsOn(dwIoBase, MAC_REG_SOFTPWRCTL, (SOFTPWRCTL_SWPE3 |
727 SOFTPWRCTL_SWPE2 |
728 SOFTPWRCTL_SWPECTI |
729 SOFTPWRCTL_TXPEINV));
730
731
732 VNSvOutPortB(dwIoBase + MAC_REG_PSPWRSIG, (PSSIG_WPE3 | PSSIG_WPE2));
733
734 return bResult;
735}
736
737BOOL RFbAL2230SelectChannel (DWORD_PTR dwIoBase, BYTE byChannel)
738{
739 BOOL bResult;
740
741 bResult = TRUE;
742
743 bResult &= IFRFbWriteEmbeded (dwIoBase, dwAL2230ChannelTable0[byChannel-1]);
744 bResult &= IFRFbWriteEmbeded (dwIoBase, dwAL2230ChannelTable1[byChannel-1]);
745
746
747 VNSvOutPortB(dwIoBase + MAC_REG_CHANNEL, (byChannel & 0x7F));
748 MACvTimer0MicroSDelay(dwIoBase, SWITCH_CHANNEL_DELAY_AL2230);
749
750 VNSvOutPortB(dwIoBase + MAC_REG_CHANNEL, (byChannel | 0x80));
751
752 return bResult;
753}
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810BOOL RFbInit (
811 IN PSDevice pDevice
812 )
813{
814BOOL bResult = TRUE;
815 switch (pDevice->byRFType) {
816 case RF_AIROHA :
817 case RF_AL2230S:
818 pDevice->byMaxPwrLevel = AL2230_PWR_IDX_LEN;
819 bResult = RFbAL2230Init(pDevice->PortOffset);
820 break;
821 case RF_AIROHA7230 :
822 pDevice->byMaxPwrLevel = AL7230_PWR_IDX_LEN;
823 bResult = s_bAL7230Init(pDevice->PortOffset);
824 break;
825 case RF_NOTHING :
826 bResult = TRUE;
827 break;
828 default :
829 bResult = FALSE;
830 break;
831 }
832 return bResult;
833}
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848BOOL RFbShutDown (
849 IN PSDevice pDevice
850 )
851{
852BOOL bResult = TRUE;
853
854 switch (pDevice->byRFType) {
855 case RF_AIROHA7230 :
856 bResult = IFRFbWriteEmbeded (pDevice->PortOffset, 0x1ABAEF00+(BY_AL7230_REG_LEN<<3)+IFREGCTL_REGW);
857 break;
858 default :
859 bResult = TRUE;
860 break;
861 }
862 return bResult;
863}
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878BOOL RFbSelectChannel (DWORD_PTR dwIoBase, BYTE byRFType, BYTE byChannel)
879{
880BOOL bResult = TRUE;
881 switch (byRFType) {
882
883 case RF_AIROHA :
884 case RF_AL2230S:
885 bResult = RFbAL2230SelectChannel(dwIoBase, byChannel);
886 break;
887
888 case RF_AIROHA7230 :
889 bResult = s_bAL7230SelectChannel(dwIoBase, byChannel);
890 break;
891
892 case RF_NOTHING :
893 bResult = TRUE;
894 break;
895 default:
896 bResult = FALSE;
897 break;
898 }
899 return bResult;
900}
901
902
903
904
905
906
907
908
909
910
911
912
913
914BOOL RFvWriteWakeProgSyn (DWORD_PTR dwIoBase, BYTE byRFType, UINT uChannel)
915{
916 int ii;
917 BYTE byInitCount = 0;
918 BYTE bySleepCount = 0;
919
920 VNSvOutPortW(dwIoBase + MAC_REG_MISCFFNDEX, 0);
921 switch (byRFType) {
922 case RF_AIROHA:
923 case RF_AL2230S:
924
925 if (uChannel > CB_MAX_CHANNEL_24G)
926 return FALSE;
927
928 byInitCount = CB_AL2230_INIT_SEQ + 2;
929 bySleepCount = 0;
930 if (byInitCount > (MISCFIFO_SYNDATASIZE - bySleepCount)) {
931 return FALSE;
932 }
933
934 for (ii = 0; ii < CB_AL2230_INIT_SEQ; ii++ ) {
935 MACvSetMISCFifo(dwIoBase, (WORD)(MISCFIFO_SYNDATA_IDX + ii), dwAL2230InitTable[ii]);
936 }
937 MACvSetMISCFifo(dwIoBase, (WORD)(MISCFIFO_SYNDATA_IDX + ii), dwAL2230ChannelTable0[uChannel-1]);
938 ii ++;
939 MACvSetMISCFifo(dwIoBase, (WORD)(MISCFIFO_SYNDATA_IDX + ii), dwAL2230ChannelTable1[uChannel-1]);
940 break;
941
942
943
944 case RF_AIROHA7230:
945 byInitCount = CB_AL7230_INIT_SEQ + 3;
946 bySleepCount = 0;
947 if (byInitCount > (MISCFIFO_SYNDATASIZE - bySleepCount)) {
948 return FALSE;
949 }
950
951 if (uChannel <= CB_MAX_CHANNEL_24G)
952 {
953 for (ii = 0; ii < CB_AL7230_INIT_SEQ; ii++ ) {
954 MACvSetMISCFifo(dwIoBase, (WORD)(MISCFIFO_SYNDATA_IDX + ii), dwAL7230InitTable[ii]);
955 }
956 }
957 else
958 {
959 for (ii = 0; ii < CB_AL7230_INIT_SEQ; ii++ ) {
960 MACvSetMISCFifo(dwIoBase, (WORD)(MISCFIFO_SYNDATA_IDX + ii), dwAL7230InitTableAMode[ii]);
961 }
962 }
963
964 MACvSetMISCFifo(dwIoBase, (WORD)(MISCFIFO_SYNDATA_IDX + ii), dwAL7230ChannelTable0[uChannel-1]);
965 ii ++;
966 MACvSetMISCFifo(dwIoBase, (WORD)(MISCFIFO_SYNDATA_IDX + ii), dwAL7230ChannelTable1[uChannel-1]);
967 ii ++;
968 MACvSetMISCFifo(dwIoBase, (WORD)(MISCFIFO_SYNDATA_IDX + ii), dwAL7230ChannelTable2[uChannel-1]);
969 break;
970
971
972 case RF_NOTHING :
973 return TRUE;
974 break;
975
976 default:
977 return FALSE;
978 break;
979 }
980
981 MACvSetMISCFifo(dwIoBase, MISCFIFO_SYNINFO_IDX, (DWORD)MAKEWORD(bySleepCount, byInitCount));
982
983 return TRUE;
984}
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999BOOL RFbSetPower (
1000 IN PSDevice pDevice,
1001 IN UINT uRATE,
1002 IN UINT uCH
1003 )
1004{
1005BOOL bResult = TRUE;
1006BYTE byPwr = 0;
1007BYTE byDec = 0;
1008BYTE byPwrdBm = 0;
1009
1010 if (pDevice->dwDiagRefCount != 0) {
1011 return TRUE;
1012 }
1013 if ((uCH < 1) || (uCH > CB_MAX_CHANNEL)) {
1014 return FALSE;
1015 }
1016
1017 switch (uRATE) {
1018 case RATE_1M:
1019 case RATE_2M:
1020 case RATE_5M:
1021 case RATE_11M:
1022 byPwr = pDevice->abyCCKPwrTbl[uCH];
1023 byPwrdBm = pDevice->abyCCKDefaultPwr[uCH];
1024
1025
1026
1027
1028
1029 break;
1030 case RATE_6M:
1031 case RATE_9M:
1032 case RATE_18M:
1033 byPwr = pDevice->abyOFDMPwrTbl[uCH];
1034 if (pDevice->byRFType == RF_UW2452) {
1035 byDec = byPwr + 14;
1036 } else {
1037 byDec = byPwr + 10;
1038 }
1039 if (byDec >= pDevice->byMaxPwrLevel) {
1040 byDec = pDevice->byMaxPwrLevel-1;
1041 }
1042 if (pDevice->byRFType == RF_UW2452) {
1043 byPwrdBm = byDec - byPwr;
1044 byPwrdBm /= 3;
1045 } else {
1046 byPwrdBm = byDec - byPwr;
1047 byPwrdBm >>= 1;
1048 }
1049 byPwrdBm += pDevice->abyOFDMDefaultPwr[uCH];
1050 byPwr = byDec;
1051
1052
1053
1054
1055
1056 break;
1057 case RATE_24M:
1058 case RATE_36M:
1059 case RATE_48M:
1060 case RATE_54M:
1061 byPwr = pDevice->abyOFDMPwrTbl[uCH];
1062 byPwrdBm = pDevice->abyOFDMDefaultPwr[uCH];
1063
1064
1065
1066
1067 break;
1068 }
1069
1070#if 0
1071
1072
1073 if (pDevice->bLinkPass == TRUE) {
1074
1075 if (byPwrdBm > pDevice->abyLocalPwr[uCH]) {
1076 pDevice->byCurPwrdBm = pDevice->abyLocalPwr[uCH];
1077 byDec = byPwrdBm - pDevice->abyLocalPwr[uCH];
1078 if (pDevice->byRFType == RF_UW2452) {
1079 byDec *= 3;
1080 } else {
1081 byDec <<= 1;
1082 }
1083 if (byPwr > byDec) {
1084 byPwr -= byDec;
1085 } else {
1086 byPwr = 0;
1087 }
1088 } else {
1089 pDevice->byCurPwrdBm = byPwrdBm;
1090 }
1091 } else {
1092
1093 if (byPwrdBm > pDevice->abyRegPwr[uCH]) {
1094 pDevice->byCurPwrdBm = pDevice->abyRegPwr[uCH];
1095 byDec = byPwrdBm - pDevice->abyRegPwr[uCH];
1096 if (pDevice->byRFType == RF_UW2452) {
1097 byDec *= 3;
1098 } else {
1099 byDec <<= 1;
1100 }
1101 if (byPwr > byDec) {
1102 byPwr -= byDec;
1103 } else {
1104 byPwr = 0;
1105 }
1106 } else {
1107 pDevice->byCurPwrdBm = byPwrdBm;
1108 }
1109 }
1110#endif
1111
1112
1113 if (pDevice->byCurPwr == byPwr) {
1114 return TRUE;
1115 }
1116 bResult = RFbRawSetPower(pDevice, byPwr, uRATE);
1117
1118 if (bResult == TRUE) {
1119 pDevice->byCurPwr = byPwr;
1120 }
1121 return bResult;
1122}
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138BOOL RFbRawSetPower (
1139 IN PSDevice pDevice,
1140 IN BYTE byPwr,
1141 IN UINT uRATE
1142 )
1143{
1144BOOL bResult = TRUE;
1145DWORD dwMax7230Pwr = 0;
1146
1147 if (byPwr >= pDevice->byMaxPwrLevel) {
1148 return (FALSE);
1149 }
1150 switch (pDevice->byRFType) {
1151
1152 case RF_AIROHA :
1153 bResult &= IFRFbWriteEmbeded(pDevice->PortOffset, dwAL2230PowerTable[byPwr]);
1154 if (uRATE <= RATE_11M) {
1155 bResult &= IFRFbWriteEmbeded(pDevice->PortOffset, 0x0001B400+(BY_AL2230_REG_LEN<<3)+IFREGCTL_REGW);
1156 } else {
1157 bResult &= IFRFbWriteEmbeded(pDevice->PortOffset, 0x0005A400+(BY_AL2230_REG_LEN<<3)+IFREGCTL_REGW);
1158 }
1159 break;
1160
1161
1162 case RF_AL2230S :
1163 bResult &= IFRFbWriteEmbeded(pDevice->PortOffset, dwAL2230PowerTable[byPwr]);
1164 if (uRATE <= RATE_11M) {
1165 bResult &= IFRFbWriteEmbeded(pDevice->PortOffset, 0x040C1400+(BY_AL2230_REG_LEN<<3)+IFREGCTL_REGW);
1166 bResult &= IFRFbWriteEmbeded(pDevice->PortOffset, 0x00299B00+(BY_AL2230_REG_LEN<<3)+IFREGCTL_REGW);
1167 }else {
1168 bResult &= IFRFbWriteEmbeded(pDevice->PortOffset, 0x0005A400+(BY_AL2230_REG_LEN<<3)+IFREGCTL_REGW);
1169 bResult &= IFRFbWriteEmbeded(pDevice->PortOffset, 0x00099B00+(BY_AL2230_REG_LEN<<3)+IFREGCTL_REGW);
1170 }
1171
1172 break;
1173
1174 case RF_AIROHA7230:
1175
1176 dwMax7230Pwr = 0x080C0B00 | ( (byPwr) << 12 ) |
1177 (BY_AL7230_REG_LEN << 3 ) | IFREGCTL_REGW;
1178
1179 bResult &= IFRFbWriteEmbeded(pDevice->PortOffset, dwMax7230Pwr);
1180 break;
1181
1182
1183 default :
1184 break;
1185 }
1186 return bResult;
1187}
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204VOID
1205RFvRSSITodBm (
1206 IN PSDevice pDevice,
1207 IN BYTE byCurrRSSI,
1208 long * pldBm
1209 )
1210{
1211 BYTE byIdx = (((byCurrRSSI & 0xC0) >> 6) & 0x03);
1212 LONG b = (byCurrRSSI & 0x3F);
1213 LONG a = 0;
1214 BYTE abyAIROHARF[4] = {0, 18, 0, 40};
1215
1216 switch (pDevice->byRFType) {
1217 case RF_AIROHA:
1218 case RF_AL2230S:
1219 case RF_AIROHA7230:
1220 a = abyAIROHARF[byIdx];
1221 break;
1222 default:
1223 break;
1224 }
1225
1226 *pldBm = -1 * (a + b * 2);
1227}
1228
1229
1230
1231
1232
1233
1234
1235BOOL RFbAL7230SelectChannelPostProcess (DWORD_PTR dwIoBase, BYTE byOldChannel, BYTE byNewChannel)
1236{
1237 BOOL bResult;
1238
1239 bResult = TRUE;
1240
1241
1242
1243
1244 if( (byOldChannel <= CB_MAX_CHANNEL_24G) && (byNewChannel > CB_MAX_CHANNEL_24G) )
1245 {
1246
1247 bResult &= IFRFbWriteEmbeded(dwIoBase, dwAL7230InitTableAMode[2]);
1248 bResult &= IFRFbWriteEmbeded(dwIoBase, dwAL7230InitTableAMode[3]);
1249 bResult &= IFRFbWriteEmbeded(dwIoBase, dwAL7230InitTableAMode[5]);
1250 bResult &= IFRFbWriteEmbeded(dwIoBase, dwAL7230InitTableAMode[7]);
1251 bResult &= IFRFbWriteEmbeded(dwIoBase, dwAL7230InitTableAMode[10]);
1252 bResult &= IFRFbWriteEmbeded(dwIoBase, dwAL7230InitTableAMode[12]);
1253 bResult &= IFRFbWriteEmbeded(dwIoBase, dwAL7230InitTableAMode[15]);
1254 }
1255 else if( (byOldChannel > CB_MAX_CHANNEL_24G) && (byNewChannel <= CB_MAX_CHANNEL_24G) )
1256 {
1257
1258 bResult &= IFRFbWriteEmbeded(dwIoBase, dwAL7230InitTable[2]);
1259 bResult &= IFRFbWriteEmbeded(dwIoBase, dwAL7230InitTable[3]);
1260 bResult &= IFRFbWriteEmbeded(dwIoBase, dwAL7230InitTable[5]);
1261 bResult &= IFRFbWriteEmbeded(dwIoBase, dwAL7230InitTable[7]);
1262 bResult &= IFRFbWriteEmbeded(dwIoBase, dwAL7230InitTable[10]);
1263 bResult &= IFRFbWriteEmbeded(dwIoBase, dwAL7230InitTable[12]);
1264 bResult &= IFRFbWriteEmbeded(dwIoBase, dwAL7230InitTable[15]);
1265 }
1266
1267 return bResult;
1268}
1269
1270
1271
1272
1273
1274