This source file includes following definitions.
- s_bAL7230Init
- s_bAL7230SelectChannel
- IFRFbWriteEmbedded
- RFbAL2230Init
- RFbAL2230SelectChannel
- RFbInit
- RFbSelectChannel
- RFvWriteWakeProgSyn
- RFbSetPower
- RFbRawSetPower
- RFvRSSITodBm
- RFbAL7230SelectChannelPostProcess
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 #include "mac.h"
24 #include "srom.h"
25 #include "rf.h"
26 #include "baseband.h"
27
28 #define BY_AL2230_REG_LEN 23
29 #define CB_AL2230_INIT_SEQ 15
30 #define SWITCH_CHANNEL_DELAY_AL2230 200
31 #define AL2230_PWR_IDX_LEN 64
32
33 #define BY_AL7230_REG_LEN 23
34 #define CB_AL7230_INIT_SEQ 16
35 #define SWITCH_CHANNEL_DELAY_AL7230 200
36 #define AL7230_PWR_IDX_LEN 64
37
38 static const unsigned long dwAL2230InitTable[CB_AL2230_INIT_SEQ] = {
39 0x03F79000 + (BY_AL2230_REG_LEN << 3) + IFREGCTL_REGW,
40 0x03333100 + (BY_AL2230_REG_LEN << 3) + IFREGCTL_REGW,
41 0x01A00200 + (BY_AL2230_REG_LEN << 3) + IFREGCTL_REGW,
42 0x00FFF300 + (BY_AL2230_REG_LEN << 3) + IFREGCTL_REGW,
43 0x0005A400 + (BY_AL2230_REG_LEN << 3) + IFREGCTL_REGW,
44 0x0F4DC500 + (BY_AL2230_REG_LEN << 3) + IFREGCTL_REGW,
45 0x0805B600 + (BY_AL2230_REG_LEN << 3) + IFREGCTL_REGW,
46 0x0146C700 + (BY_AL2230_REG_LEN << 3) + IFREGCTL_REGW,
47 0x00068800 + (BY_AL2230_REG_LEN << 3) + IFREGCTL_REGW,
48 0x0403B900 + (BY_AL2230_REG_LEN << 3) + IFREGCTL_REGW,
49 0x00DBBA00 + (BY_AL2230_REG_LEN << 3) + IFREGCTL_REGW,
50 0x00099B00 + (BY_AL2230_REG_LEN << 3) + IFREGCTL_REGW,
51 0x0BDFFC00 + (BY_AL2230_REG_LEN << 3) + IFREGCTL_REGW,
52 0x00000D00 + (BY_AL2230_REG_LEN << 3) + IFREGCTL_REGW,
53 0x00580F00 + (BY_AL2230_REG_LEN << 3) + IFREGCTL_REGW
54 };
55
56 static const unsigned long dwAL2230ChannelTable0[CB_MAX_CHANNEL] = {
57 0x03F79000 + (BY_AL2230_REG_LEN << 3) + IFREGCTL_REGW,
58 0x03F79000 + (BY_AL2230_REG_LEN << 3) + IFREGCTL_REGW,
59 0x03E79000 + (BY_AL2230_REG_LEN << 3) + IFREGCTL_REGW,
60 0x03E79000 + (BY_AL2230_REG_LEN << 3) + IFREGCTL_REGW,
61 0x03F7A000 + (BY_AL2230_REG_LEN << 3) + IFREGCTL_REGW,
62 0x03F7A000 + (BY_AL2230_REG_LEN << 3) + IFREGCTL_REGW,
63 0x03E7A000 + (BY_AL2230_REG_LEN << 3) + IFREGCTL_REGW,
64 0x03E7A000 + (BY_AL2230_REG_LEN << 3) + IFREGCTL_REGW,
65 0x03F7B000 + (BY_AL2230_REG_LEN << 3) + IFREGCTL_REGW,
66 0x03F7B000 + (BY_AL2230_REG_LEN << 3) + IFREGCTL_REGW,
67 0x03E7B000 + (BY_AL2230_REG_LEN << 3) + IFREGCTL_REGW,
68 0x03E7B000 + (BY_AL2230_REG_LEN << 3) + IFREGCTL_REGW,
69 0x03F7C000 + (BY_AL2230_REG_LEN << 3) + IFREGCTL_REGW,
70 0x03E7C000 + (BY_AL2230_REG_LEN << 3) + IFREGCTL_REGW
71 };
72
73 static const unsigned long dwAL2230ChannelTable1[CB_MAX_CHANNEL] = {
74 0x03333100 + (BY_AL2230_REG_LEN << 3) + IFREGCTL_REGW,
75 0x0B333100 + (BY_AL2230_REG_LEN << 3) + IFREGCTL_REGW,
76 0x03333100 + (BY_AL2230_REG_LEN << 3) + IFREGCTL_REGW,
77 0x0B333100 + (BY_AL2230_REG_LEN << 3) + IFREGCTL_REGW,
78 0x03333100 + (BY_AL2230_REG_LEN << 3) + IFREGCTL_REGW,
79 0x0B333100 + (BY_AL2230_REG_LEN << 3) + IFREGCTL_REGW,
80 0x03333100 + (BY_AL2230_REG_LEN << 3) + IFREGCTL_REGW,
81 0x0B333100 + (BY_AL2230_REG_LEN << 3) + IFREGCTL_REGW,
82 0x03333100 + (BY_AL2230_REG_LEN << 3) + IFREGCTL_REGW,
83 0x0B333100 + (BY_AL2230_REG_LEN << 3) + IFREGCTL_REGW,
84 0x03333100 + (BY_AL2230_REG_LEN << 3) + IFREGCTL_REGW,
85 0x0B333100 + (BY_AL2230_REG_LEN << 3) + IFREGCTL_REGW,
86 0x03333100 + (BY_AL2230_REG_LEN << 3) + IFREGCTL_REGW,
87 0x06666100 + (BY_AL2230_REG_LEN << 3) + IFREGCTL_REGW
88 };
89
90 static unsigned long dwAL2230PowerTable[AL2230_PWR_IDX_LEN] = {
91 0x04040900 + (BY_AL2230_REG_LEN << 3) + IFREGCTL_REGW,
92 0x04041900 + (BY_AL2230_REG_LEN << 3) + IFREGCTL_REGW,
93 0x04042900 + (BY_AL2230_REG_LEN << 3) + IFREGCTL_REGW,
94 0x04043900 + (BY_AL2230_REG_LEN << 3) + IFREGCTL_REGW,
95 0x04044900 + (BY_AL2230_REG_LEN << 3) + IFREGCTL_REGW,
96 0x04045900 + (BY_AL2230_REG_LEN << 3) + IFREGCTL_REGW,
97 0x04046900 + (BY_AL2230_REG_LEN << 3) + IFREGCTL_REGW,
98 0x04047900 + (BY_AL2230_REG_LEN << 3) + IFREGCTL_REGW,
99 0x04048900 + (BY_AL2230_REG_LEN << 3) + IFREGCTL_REGW,
100 0x04049900 + (BY_AL2230_REG_LEN << 3) + IFREGCTL_REGW,
101 0x0404A900 + (BY_AL2230_REG_LEN << 3) + IFREGCTL_REGW,
102 0x0404B900 + (BY_AL2230_REG_LEN << 3) + IFREGCTL_REGW,
103 0x0404C900 + (BY_AL2230_REG_LEN << 3) + IFREGCTL_REGW,
104 0x0404D900 + (BY_AL2230_REG_LEN << 3) + IFREGCTL_REGW,
105 0x0404E900 + (BY_AL2230_REG_LEN << 3) + IFREGCTL_REGW,
106 0x0404F900 + (BY_AL2230_REG_LEN << 3) + IFREGCTL_REGW,
107 0x04050900 + (BY_AL2230_REG_LEN << 3) + IFREGCTL_REGW,
108 0x04051900 + (BY_AL2230_REG_LEN << 3) + IFREGCTL_REGW,
109 0x04052900 + (BY_AL2230_REG_LEN << 3) + IFREGCTL_REGW,
110 0x04053900 + (BY_AL2230_REG_LEN << 3) + IFREGCTL_REGW,
111 0x04054900 + (BY_AL2230_REG_LEN << 3) + IFREGCTL_REGW,
112 0x04055900 + (BY_AL2230_REG_LEN << 3) + IFREGCTL_REGW,
113 0x04056900 + (BY_AL2230_REG_LEN << 3) + IFREGCTL_REGW,
114 0x04057900 + (BY_AL2230_REG_LEN << 3) + IFREGCTL_REGW,
115 0x04058900 + (BY_AL2230_REG_LEN << 3) + IFREGCTL_REGW,
116 0x04059900 + (BY_AL2230_REG_LEN << 3) + IFREGCTL_REGW,
117 0x0405A900 + (BY_AL2230_REG_LEN << 3) + IFREGCTL_REGW,
118 0x0405B900 + (BY_AL2230_REG_LEN << 3) + IFREGCTL_REGW,
119 0x0405C900 + (BY_AL2230_REG_LEN << 3) + IFREGCTL_REGW,
120 0x0405D900 + (BY_AL2230_REG_LEN << 3) + IFREGCTL_REGW,
121 0x0405E900 + (BY_AL2230_REG_LEN << 3) + IFREGCTL_REGW,
122 0x0405F900 + (BY_AL2230_REG_LEN << 3) + IFREGCTL_REGW,
123 0x04060900 + (BY_AL2230_REG_LEN << 3) + IFREGCTL_REGW,
124 0x04061900 + (BY_AL2230_REG_LEN << 3) + IFREGCTL_REGW,
125 0x04062900 + (BY_AL2230_REG_LEN << 3) + IFREGCTL_REGW,
126 0x04063900 + (BY_AL2230_REG_LEN << 3) + IFREGCTL_REGW,
127 0x04064900 + (BY_AL2230_REG_LEN << 3) + IFREGCTL_REGW,
128 0x04065900 + (BY_AL2230_REG_LEN << 3) + IFREGCTL_REGW,
129 0x04066900 + (BY_AL2230_REG_LEN << 3) + IFREGCTL_REGW,
130 0x04067900 + (BY_AL2230_REG_LEN << 3) + IFREGCTL_REGW,
131 0x04068900 + (BY_AL2230_REG_LEN << 3) + IFREGCTL_REGW,
132 0x04069900 + (BY_AL2230_REG_LEN << 3) + IFREGCTL_REGW,
133 0x0406A900 + (BY_AL2230_REG_LEN << 3) + IFREGCTL_REGW,
134 0x0406B900 + (BY_AL2230_REG_LEN << 3) + IFREGCTL_REGW,
135 0x0406C900 + (BY_AL2230_REG_LEN << 3) + IFREGCTL_REGW,
136 0x0406D900 + (BY_AL2230_REG_LEN << 3) + IFREGCTL_REGW,
137 0x0406E900 + (BY_AL2230_REG_LEN << 3) + IFREGCTL_REGW,
138 0x0406F900 + (BY_AL2230_REG_LEN << 3) + IFREGCTL_REGW,
139 0x04070900 + (BY_AL2230_REG_LEN << 3) + IFREGCTL_REGW,
140 0x04071900 + (BY_AL2230_REG_LEN << 3) + IFREGCTL_REGW,
141 0x04072900 + (BY_AL2230_REG_LEN << 3) + IFREGCTL_REGW,
142 0x04073900 + (BY_AL2230_REG_LEN << 3) + IFREGCTL_REGW,
143 0x04074900 + (BY_AL2230_REG_LEN << 3) + IFREGCTL_REGW,
144 0x04075900 + (BY_AL2230_REG_LEN << 3) + IFREGCTL_REGW,
145 0x04076900 + (BY_AL2230_REG_LEN << 3) + IFREGCTL_REGW,
146 0x04077900 + (BY_AL2230_REG_LEN << 3) + IFREGCTL_REGW,
147 0x04078900 + (BY_AL2230_REG_LEN << 3) + IFREGCTL_REGW,
148 0x04079900 + (BY_AL2230_REG_LEN << 3) + IFREGCTL_REGW,
149 0x0407A900 + (BY_AL2230_REG_LEN << 3) + IFREGCTL_REGW,
150 0x0407B900 + (BY_AL2230_REG_LEN << 3) + IFREGCTL_REGW,
151 0x0407C900 + (BY_AL2230_REG_LEN << 3) + IFREGCTL_REGW,
152 0x0407D900 + (BY_AL2230_REG_LEN << 3) + IFREGCTL_REGW,
153 0x0407E900 + (BY_AL2230_REG_LEN << 3) + IFREGCTL_REGW,
154 0x0407F900 + (BY_AL2230_REG_LEN << 3) + IFREGCTL_REGW
155 };
156
157
158
159
160 static const unsigned long dwAL7230InitTable[CB_AL7230_INIT_SEQ] = {
161 0x00379000 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
162 0x13333100 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
163 0x841FF200 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
164 0x3FDFA300 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
165 0x7FD78400 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
166
167 0x802B5500 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
168 0x56AF3600 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
169 0xCE020700 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
170 0x6EBC0800 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
171 0x221BB900 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
172 0xE0000A00 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
173 0x08031B00 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
174
175 0x000A3C00 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
176 0xFFFFFD00 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
177 0x00000E00 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
178 0x1ABA8F00 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW
179 };
180
181 static const unsigned long dwAL7230InitTableAMode[CB_AL7230_INIT_SEQ] = {
182 0x0FF52000 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
183 0x00000100 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
184 0x451FE200 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
185 0x5FDFA300 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
186 0x67F78400 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
187 0x853F5500 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
188 0x56AF3600 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
189 0xCE020700 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
190 0x6EBC0800 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
191 0x221BB900 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
192 0xE0600A00 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
193 0x08031B00 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
194 0x00147C00 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
195 0xFFFFFD00 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
196 0x00000E00 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
197 0x12BACF00 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW
198 };
199
200 static const unsigned long dwAL7230ChannelTable0[CB_MAX_CHANNEL] = {
201 0x00379000 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
202 0x00379000 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
203 0x00379000 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
204 0x00379000 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
205 0x0037A000 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
206 0x0037A000 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
207 0x0037A000 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
208 0x0037A000 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
209 0x0037B000 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
210 0x0037B000 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
211 0x0037B000 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
212 0x0037B000 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
213 0x0037C000 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
214 0x0037C000 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
215
216
217 0x0FF52000 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
218 0x0FF52000 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
219 0x0FF52000 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
220 0x0FF52000 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
221 0x0FF52000 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
222 0x0FF52000 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
223 0x0FF53000 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
224 0x0FF53000 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
225
226
227
228
229
230 0x0FF54000 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
231 0x0FF54000 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
232 0x0FF54000 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
233 0x0FF54000 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
234 0x0FF54000 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
235 0x0FF55000 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
236 0x0FF56000 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
237 0x0FF56000 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
238 0x0FF57000 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
239 0x0FF57000 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
240 0x0FF57000 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
241 0x0FF57000 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
242 0x0FF57000 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
243 0x0FF57000 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
244 0x0FF58000 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
245 0x0FF58000 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
246 0x0FF58000 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
247 0x0FF59000 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
248
249 0x0FF5C000 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
250 0x0FF5C000 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
251 0x0FF5C000 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
252 0x0FF5D000 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
253 0x0FF5D000 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
254 0x0FF5D000 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
255 0x0FF5E000 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
256 0x0FF5E000 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
257 0x0FF5E000 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
258 0x0FF5F000 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
259 0x0FF5F000 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
260 0x0FF60000 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
261 0x0FF60000 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
262 0x0FF60000 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
263 0x0FF61000 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
264 0x0FF61000 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW
265 };
266
267 static const unsigned long dwAL7230ChannelTable1[CB_MAX_CHANNEL] = {
268 0x13333100 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
269 0x1B333100 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
270 0x03333100 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
271 0x0B333100 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
272 0x13333100 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
273 0x1B333100 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
274 0x03333100 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
275 0x0B333100 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
276 0x13333100 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
277 0x1B333100 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
278 0x03333100 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
279 0x0B333100 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
280 0x13333100 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
281 0x06666100 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
282
283
284 0x1D555100 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
285 0x00000100 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
286 0x02AAA100 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
287 0x08000100 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
288 0x0AAAA100 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
289 0x0D555100 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
290 0x15555100 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
291 0x00000100 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
292
293
294
295
296 0x1D555100 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
297 0x00000100 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
298 0x02AAA100 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
299 0x08000100 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
300 0x0AAAA100 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
301 0x15555100 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
302 0x05555100 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
303 0x0AAAA100 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
304 0x10000100 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
305 0x15555100 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
306 0x1AAAA100 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
307 0x00000100 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
308 0x05555100 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
309 0x0AAAA100 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
310 0x15555100 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
311 0x00000100 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
312 0x0AAAA100 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
313 0x15555100 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
314 0x15555100 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
315 0x00000100 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
316 0x0AAAA100 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
317 0x15555100 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
318 0x00000100 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
319 0x0AAAA100 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
320 0x15555100 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
321 0x00000100 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
322 0x0AAAA100 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
323 0x15555100 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
324 0x00000100 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
325 0x18000100 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
326 0x02AAA100 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
327 0x0D555100 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
328 0x18000100 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
329 0x02AAA100 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW
330 };
331
332 static const unsigned long dwAL7230ChannelTable2[CB_MAX_CHANNEL] = {
333 0x7FD78400 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
334 0x7FD78400 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
335 0x7FD78400 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
336 0x7FD78400 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
337 0x7FD78400 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
338 0x7FD78400 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
339 0x7FD78400 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
340 0x7FD78400 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
341 0x7FD78400 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
342 0x7FD78400 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
343 0x7FD78400 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
344 0x7FD78400 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
345 0x7FD78400 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
346 0x7FD78400 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
347
348
349 0x77D78400 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
350 0x67D78400 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
351 0x77D78400 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
352 0x77D78400 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
353 0x77D78400 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
354 0x77D78400 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
355 0x77D78400 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
356 0x67D78400 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
357
358
359
360
361 0x77D78400 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
362 0x67D78400 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
363 0x77D78400 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
364 0x77D78400 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
365 0x77D78400 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
366 0x77D78400 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
367 0x77D78400 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
368 0x77D78400 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
369 0x77D78400 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
370 0x77D78400 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
371 0x77D78400 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
372 0x67D78400 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
373 0x77D78400 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
374 0x77D78400 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
375 0x77D78400 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
376 0x67D78400 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
377 0x77D78400 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
378 0x77D78400 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
379 0x77D78400 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
380 0x67D78400 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
381 0x77D78400 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
382 0x77D78400 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
383 0x67D78400 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
384 0x77D78400 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
385 0x77D78400 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
386 0x67D78400 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
387 0x77D78400 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
388 0x77D78400 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
389 0x67D78400 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
390 0x77D78400 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
391 0x77D78400 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
392 0x77D78400 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
393 0x77D78400 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW,
394 0x77D78400 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW
395 };
396
397
398
399
400
401
402
403
404
405
406
407
408
409 static bool s_bAL7230Init(struct vnt_private *priv)
410 {
411 void __iomem *iobase = priv->PortOffset;
412 int ii;
413 bool ret;
414
415 ret = true;
416
417
418 VNSvOutPortB(iobase + MAC_REG_SOFTPWRCTL, 0);
419
420 MACvWordRegBitsOn(iobase, MAC_REG_SOFTPWRCTL, (SOFTPWRCTL_SWPECTI |
421 SOFTPWRCTL_TXPEINV));
422 BBvPowerSaveModeOFF(priv);
423
424 for (ii = 0; ii < CB_AL7230_INIT_SEQ; ii++)
425 ret &= IFRFbWriteEmbedded(priv, dwAL7230InitTable[ii]);
426
427
428 MACvWordRegBitsOn(iobase, MAC_REG_SOFTPWRCTL, SOFTPWRCTL_SWPE3);
429
430
431 MACvTimer0MicroSDelay(priv, 150);
432
433 ret &= IFRFbWriteEmbedded(priv, (0x9ABA8F00 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW));
434 MACvTimer0MicroSDelay(priv, 30);
435
436 ret &= IFRFbWriteEmbedded(priv, (0x3ABA8F00 + (BY_AL7230_REG_LEN << 3) + IFREGCTL_REGW));
437 MACvTimer0MicroSDelay(priv, 30);
438
439 ret &= IFRFbWriteEmbedded(priv, dwAL7230InitTable[CB_AL7230_INIT_SEQ-1]);
440
441 MACvWordRegBitsOn(iobase, MAC_REG_SOFTPWRCTL, (SOFTPWRCTL_SWPE3 |
442 SOFTPWRCTL_SWPE2 |
443 SOFTPWRCTL_SWPECTI |
444 SOFTPWRCTL_TXPEINV));
445
446 BBvPowerSaveModeON(priv);
447
448
449
450 VNSvOutPortB(iobase + MAC_REG_PSPWRSIG, (PSSIG_WPE3 | PSSIG_WPE2));
451
452 return ret;
453 }
454
455
456
457
458 static bool s_bAL7230SelectChannel(struct vnt_private *priv, unsigned char byChannel)
459 {
460 void __iomem *iobase = priv->PortOffset;
461 bool ret;
462
463 ret = true;
464
465
466 MACvWordRegBitsOff(iobase, MAC_REG_SOFTPWRCTL, SOFTPWRCTL_SWPE3);
467
468 ret &= IFRFbWriteEmbedded(priv, dwAL7230ChannelTable0[byChannel - 1]);
469 ret &= IFRFbWriteEmbedded(priv, dwAL7230ChannelTable1[byChannel - 1]);
470 ret &= IFRFbWriteEmbedded(priv, dwAL7230ChannelTable2[byChannel - 1]);
471
472
473 MACvWordRegBitsOn(iobase, MAC_REG_SOFTPWRCTL, SOFTPWRCTL_SWPE3);
474
475
476 VNSvOutPortB(iobase + MAC_REG_CHANNEL, (byChannel & 0x7F));
477 MACvTimer0MicroSDelay(priv, SWITCH_CHANNEL_DELAY_AL7230);
478
479 VNSvOutPortB(iobase + MAC_REG_CHANNEL, (byChannel | 0x80));
480
481 return ret;
482 }
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497 bool IFRFbWriteEmbedded(struct vnt_private *priv, unsigned long dwData)
498 {
499 void __iomem *iobase = priv->PortOffset;
500 unsigned short ww;
501 unsigned long dwValue;
502
503 VNSvOutPortD(iobase + MAC_REG_IFREGCTL, dwData);
504
505
506 for (ww = 0; ww < W_MAX_TIMEOUT; ww++) {
507 VNSvInPortD(iobase + MAC_REG_IFREGCTL, &dwValue);
508 if (dwValue & IFREGCTL_DONE)
509 break;
510 }
511
512 if (ww == W_MAX_TIMEOUT)
513 return false;
514
515 return true;
516 }
517
518
519
520
521
522
523
524
525
526
527
528
529
530 static bool RFbAL2230Init(struct vnt_private *priv)
531 {
532 void __iomem *iobase = priv->PortOffset;
533 int ii;
534 bool ret;
535
536 ret = true;
537
538
539 VNSvOutPortB(iobase + MAC_REG_SOFTPWRCTL, 0);
540
541 MACvWordRegBitsOn(iobase, MAC_REG_SOFTPWRCTL, (SOFTPWRCTL_SWPECTI |
542 SOFTPWRCTL_TXPEINV));
543
544 MACvWordRegBitsOff(iobase, MAC_REG_SOFTPWRCTL, SOFTPWRCTL_SWPE3);
545
546
547 IFRFbWriteEmbedded(priv, (0x07168700 + (BY_AL2230_REG_LEN << 3) + IFREGCTL_REGW));
548
549 for (ii = 0; ii < CB_AL2230_INIT_SEQ; ii++)
550 ret &= IFRFbWriteEmbedded(priv, dwAL2230InitTable[ii]);
551 MACvTimer0MicroSDelay(priv, 30);
552
553
554 MACvWordRegBitsOn(iobase, MAC_REG_SOFTPWRCTL, SOFTPWRCTL_SWPE3);
555
556 MACvTimer0MicroSDelay(priv, 150);
557 ret &= IFRFbWriteEmbedded(priv, (0x00d80f00 + (BY_AL2230_REG_LEN << 3) + IFREGCTL_REGW));
558 MACvTimer0MicroSDelay(priv, 30);
559 ret &= IFRFbWriteEmbedded(priv, (0x00780f00 + (BY_AL2230_REG_LEN << 3) + IFREGCTL_REGW));
560 MACvTimer0MicroSDelay(priv, 30);
561 ret &= IFRFbWriteEmbedded(priv, dwAL2230InitTable[CB_AL2230_INIT_SEQ-1]);
562
563 MACvWordRegBitsOn(iobase, MAC_REG_SOFTPWRCTL, (SOFTPWRCTL_SWPE3 |
564 SOFTPWRCTL_SWPE2 |
565 SOFTPWRCTL_SWPECTI |
566 SOFTPWRCTL_TXPEINV));
567
568
569 VNSvOutPortB(iobase + MAC_REG_PSPWRSIG, (PSSIG_WPE3 | PSSIG_WPE2));
570
571 return ret;
572 }
573
574 static bool RFbAL2230SelectChannel(struct vnt_private *priv, unsigned char byChannel)
575 {
576 void __iomem *iobase = priv->PortOffset;
577 bool ret;
578
579 ret = true;
580
581 ret &= IFRFbWriteEmbedded(priv, dwAL2230ChannelTable0[byChannel - 1]);
582 ret &= IFRFbWriteEmbedded(priv, dwAL2230ChannelTable1[byChannel - 1]);
583
584
585 VNSvOutPortB(iobase + MAC_REG_CHANNEL, (byChannel & 0x7F));
586 MACvTimer0MicroSDelay(priv, SWITCH_CHANNEL_DELAY_AL2230);
587
588 VNSvOutPortB(iobase + MAC_REG_CHANNEL, (byChannel | 0x80));
589
590 return ret;
591 }
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606 bool RFbInit(struct vnt_private *priv)
607 {
608 bool ret = true;
609
610 switch (priv->byRFType) {
611 case RF_AIROHA:
612 case RF_AL2230S:
613 priv->byMaxPwrLevel = AL2230_PWR_IDX_LEN;
614 ret = RFbAL2230Init(priv);
615 break;
616 case RF_AIROHA7230:
617 priv->byMaxPwrLevel = AL7230_PWR_IDX_LEN;
618 ret = s_bAL7230Init(priv);
619 break;
620 case RF_NOTHING:
621 ret = true;
622 break;
623 default:
624 ret = false;
625 break;
626 }
627 return ret;
628 }
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643 bool RFbSelectChannel(struct vnt_private *priv, unsigned char byRFType,
644 u16 byChannel)
645 {
646 bool ret = true;
647
648 switch (byRFType) {
649 case RF_AIROHA:
650 case RF_AL2230S:
651 ret = RFbAL2230SelectChannel(priv, byChannel);
652 break;
653
654 case RF_AIROHA7230:
655 ret = s_bAL7230SelectChannel(priv, byChannel);
656 break;
657
658 case RF_NOTHING:
659 ret = true;
660 break;
661 default:
662 ret = false;
663 break;
664 }
665 return ret;
666 }
667
668
669
670
671
672
673
674
675
676
677
678
679
680 bool RFvWriteWakeProgSyn(struct vnt_private *priv, unsigned char byRFType,
681 u16 uChannel)
682 {
683 void __iomem *iobase = priv->PortOffset;
684 int ii;
685 unsigned char byInitCount = 0;
686 unsigned char bySleepCount = 0;
687
688 VNSvOutPortW(iobase + MAC_REG_MISCFFNDEX, 0);
689 switch (byRFType) {
690 case RF_AIROHA:
691 case RF_AL2230S:
692
693 if (uChannel > CB_MAX_CHANNEL_24G)
694 return false;
695
696
697 byInitCount = CB_AL2230_INIT_SEQ + 2;
698 bySleepCount = 0;
699 if (byInitCount > (MISCFIFO_SYNDATASIZE - bySleepCount))
700 return false;
701
702 for (ii = 0; ii < CB_AL2230_INIT_SEQ; ii++)
703 MACvSetMISCFifo(priv, (unsigned short)(MISCFIFO_SYNDATA_IDX + ii), dwAL2230InitTable[ii]);
704
705 MACvSetMISCFifo(priv, (unsigned short)(MISCFIFO_SYNDATA_IDX + ii), dwAL2230ChannelTable0[uChannel - 1]);
706 ii++;
707 MACvSetMISCFifo(priv, (unsigned short)(MISCFIFO_SYNDATA_IDX + ii), dwAL2230ChannelTable1[uChannel - 1]);
708 break;
709
710
711 case RF_AIROHA7230:
712
713 byInitCount = CB_AL7230_INIT_SEQ + 3;
714 bySleepCount = 0;
715 if (byInitCount > (MISCFIFO_SYNDATASIZE - bySleepCount))
716 return false;
717
718 if (uChannel <= CB_MAX_CHANNEL_24G) {
719 for (ii = 0; ii < CB_AL7230_INIT_SEQ; ii++)
720 MACvSetMISCFifo(priv, (unsigned short)(MISCFIFO_SYNDATA_IDX + ii), dwAL7230InitTable[ii]);
721 } else {
722 for (ii = 0; ii < CB_AL7230_INIT_SEQ; ii++)
723 MACvSetMISCFifo(priv, (unsigned short)(MISCFIFO_SYNDATA_IDX + ii), dwAL7230InitTableAMode[ii]);
724 }
725
726 MACvSetMISCFifo(priv, (unsigned short)(MISCFIFO_SYNDATA_IDX + ii), dwAL7230ChannelTable0[uChannel - 1]);
727 ii++;
728 MACvSetMISCFifo(priv, (unsigned short)(MISCFIFO_SYNDATA_IDX + ii), dwAL7230ChannelTable1[uChannel - 1]);
729 ii++;
730 MACvSetMISCFifo(priv, (unsigned short)(MISCFIFO_SYNDATA_IDX + ii), dwAL7230ChannelTable2[uChannel - 1]);
731 break;
732
733 case RF_NOTHING:
734 return true;
735
736 default:
737 return false;
738 }
739
740 MACvSetMISCFifo(priv, MISCFIFO_SYNINFO_IDX, (unsigned long)MAKEWORD(bySleepCount, byInitCount));
741
742 return true;
743 }
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758 bool RFbSetPower(struct vnt_private *priv, unsigned int rate, u16 uCH)
759 {
760 bool ret = true;
761 unsigned char byPwr = 0;
762 unsigned char byDec = 0;
763
764 if (priv->dwDiagRefCount != 0)
765 return true;
766
767 if ((uCH < 1) || (uCH > CB_MAX_CHANNEL))
768 return false;
769
770 switch (rate) {
771 case RATE_1M:
772 case RATE_2M:
773 case RATE_5M:
774 case RATE_11M:
775 if (uCH > CB_MAX_CHANNEL_24G)
776 return false;
777
778 byPwr = priv->abyCCKPwrTbl[uCH];
779 break;
780 case RATE_6M:
781 case RATE_9M:
782 case RATE_12M:
783 case RATE_18M:
784 byPwr = priv->abyOFDMPwrTbl[uCH];
785 if (priv->byRFType == RF_UW2452)
786 byDec = byPwr + 14;
787 else
788 byDec = byPwr + 10;
789
790 if (byDec >= priv->byMaxPwrLevel)
791 byDec = priv->byMaxPwrLevel - 1;
792
793 byPwr = byDec;
794 break;
795 case RATE_24M:
796 case RATE_36M:
797 case RATE_48M:
798 case RATE_54M:
799 byPwr = priv->abyOFDMPwrTbl[uCH];
800 break;
801 }
802
803 if (priv->byCurPwr == byPwr)
804 return true;
805
806 ret = RFbRawSetPower(priv, byPwr, rate);
807 if (ret)
808 priv->byCurPwr = byPwr;
809
810 return ret;
811 }
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827 bool RFbRawSetPower(struct vnt_private *priv, unsigned char byPwr,
828 unsigned int rate)
829 {
830 bool ret = true;
831 unsigned long dwMax7230Pwr = 0;
832
833 if (byPwr >= priv->byMaxPwrLevel)
834 return false;
835
836 switch (priv->byRFType) {
837 case RF_AIROHA:
838 ret &= IFRFbWriteEmbedded(priv, dwAL2230PowerTable[byPwr]);
839 if (rate <= RATE_11M)
840 ret &= IFRFbWriteEmbedded(priv, 0x0001B400 + (BY_AL2230_REG_LEN << 3) + IFREGCTL_REGW);
841 else
842 ret &= IFRFbWriteEmbedded(priv, 0x0005A400 + (BY_AL2230_REG_LEN << 3) + IFREGCTL_REGW);
843
844 break;
845
846 case RF_AL2230S:
847 ret &= IFRFbWriteEmbedded(priv, dwAL2230PowerTable[byPwr]);
848 if (rate <= RATE_11M) {
849 ret &= IFRFbWriteEmbedded(priv, 0x040C1400 + (BY_AL2230_REG_LEN << 3) + IFREGCTL_REGW);
850 ret &= IFRFbWriteEmbedded(priv, 0x00299B00 + (BY_AL2230_REG_LEN << 3) + IFREGCTL_REGW);
851 } else {
852 ret &= IFRFbWriteEmbedded(priv, 0x0005A400 + (BY_AL2230_REG_LEN << 3) + IFREGCTL_REGW);
853 ret &= IFRFbWriteEmbedded(priv, 0x00099B00 + (BY_AL2230_REG_LEN << 3) + IFREGCTL_REGW);
854 }
855
856 break;
857
858 case RF_AIROHA7230:
859
860
861
862 dwMax7230Pwr = 0x080C0B00 | ((byPwr) << 12) |
863 (BY_AL7230_REG_LEN << 3) | IFREGCTL_REGW;
864
865 ret &= IFRFbWriteEmbedded(priv, dwMax7230Pwr);
866 break;
867
868 default:
869 break;
870 }
871 return ret;
872 }
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889 void
890 RFvRSSITodBm(struct vnt_private *priv, unsigned char byCurrRSSI, long *pldBm)
891 {
892 unsigned char byIdx = (((byCurrRSSI & 0xC0) >> 6) & 0x03);
893 long b = (byCurrRSSI & 0x3F);
894 long a = 0;
895 unsigned char abyAIROHARF[4] = {0, 18, 0, 40};
896
897 switch (priv->byRFType) {
898 case RF_AIROHA:
899 case RF_AL2230S:
900 case RF_AIROHA7230:
901 a = abyAIROHARF[byIdx];
902 break;
903 default:
904 break;
905 }
906
907 *pldBm = -1 * (a + b * 2);
908 }
909
910
911
912
913 bool RFbAL7230SelectChannelPostProcess(struct vnt_private *priv,
914 u16 byOldChannel,
915 u16 byNewChannel)
916 {
917 bool ret;
918
919 ret = true;
920
921
922
923
924
925 if ((byOldChannel <= CB_MAX_CHANNEL_24G) && (byNewChannel > CB_MAX_CHANNEL_24G)) {
926
927 ret &= IFRFbWriteEmbedded(priv, dwAL7230InitTableAMode[2]);
928 ret &= IFRFbWriteEmbedded(priv, dwAL7230InitTableAMode[3]);
929 ret &= IFRFbWriteEmbedded(priv, dwAL7230InitTableAMode[5]);
930 ret &= IFRFbWriteEmbedded(priv, dwAL7230InitTableAMode[7]);
931 ret &= IFRFbWriteEmbedded(priv, dwAL7230InitTableAMode[10]);
932 ret &= IFRFbWriteEmbedded(priv, dwAL7230InitTableAMode[12]);
933 ret &= IFRFbWriteEmbedded(priv, dwAL7230InitTableAMode[15]);
934 } else if ((byOldChannel > CB_MAX_CHANNEL_24G) && (byNewChannel <= CB_MAX_CHANNEL_24G)) {
935
936 ret &= IFRFbWriteEmbedded(priv, dwAL7230InitTable[2]);
937 ret &= IFRFbWriteEmbedded(priv, dwAL7230InitTable[3]);
938 ret &= IFRFbWriteEmbedded(priv, dwAL7230InitTable[5]);
939 ret &= IFRFbWriteEmbedded(priv, dwAL7230InitTable[7]);
940 ret &= IFRFbWriteEmbedded(priv, dwAL7230InitTable[10]);
941 ret &= IFRFbWriteEmbedded(priv, dwAL7230InitTable[12]);
942 ret &= IFRFbWriteEmbedded(priv, dwAL7230InitTable[15]);
943 }
944
945 return ret;
946 }