1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 #define RAL_RX_DESC_SIZE (sizeof (struct ural_rx_desc))
21 #define RAL_TX_DESC_SIZE (sizeof (struct ural_tx_desc))
22
23 #define RAL_CONFIG_NO 1
24 #define RAL_IFACE_INDEX 0
25
26 #define RAL_WRITE_MAC 0x02
27 #define RAL_READ_MAC 0x03
28 #define RAL_WRITE_MULTI_MAC 0x06
29 #define RAL_READ_MULTI_MAC 0x07
30 #define RAL_READ_EEPROM 0x09
31
32
33
34
35 #define RAL_MAC_CSR0 0x0400
36 #define RAL_MAC_CSR1 0x0402
37 #define RAL_MAC_CSR2 0x0404
38 #define RAL_MAC_CSR3 0x0406
39 #define RAL_MAC_CSR4 0x0408
40 #define RAL_MAC_CSR5 0x040a
41 #define RAL_MAC_CSR6 0x040c
42 #define RAL_MAC_CSR7 0x040e
43 #define RAL_MAC_CSR8 0x0410
44 #define RAL_MAC_CSR9 0x0412
45 #define RAL_MAC_CSR10 0x0414
46 #define RAL_MAC_CSR11 0x0416
47 #define RAL_MAC_CSR12 0x0418
48 #define RAL_MAC_CSR13 0x041a
49 #define RAL_MAC_CSR14 0x041c
50 #define RAL_MAC_CSR15 0x041e
51 #define RAL_MAC_CSR16 0x0420
52 #define RAL_MAC_CSR17 0x0422
53 #define RAL_MAC_CSR18 0x0424
54 #define RAL_MAC_CSR19 0x0426
55 #define RAL_MAC_CSR20 0x0428
56 #define RAL_MAC_CSR22 0x042c
57
58
59
60
61 #define RAL_TXRX_CSR0 0x0440
62 #define RAL_TXRX_CSR2 0x0444
63 #define RAL_TXRX_CSR5 0x044a
64 #define RAL_TXRX_CSR6 0x044c
65 #define RAL_TXRX_CSR7 0x044e
66 #define RAL_TXRX_CSR8 0x0450
67 #define RAL_TXRX_CSR10 0x0454
68 #define RAL_TXRX_CSR11 0x0456
69 #define RAL_TXRX_CSR18 0x0464
70 #define RAL_TXRX_CSR19 0x0466
71 #define RAL_TXRX_CSR20 0x0468
72 #define RAL_TXRX_CSR21 0x046a
73
74
75
76
77 #define RAL_SEC_CSR0 0x0480
78
79
80
81
82 #define RAL_PHY_CSR2 0x04c4
83 #define RAL_PHY_CSR4 0x04c8
84 #define RAL_PHY_CSR5 0x04ca
85 #define RAL_PHY_CSR6 0x04cc
86 #define RAL_PHY_CSR7 0x04ce
87 #define RAL_PHY_CSR8 0x04d0
88 #define RAL_PHY_CSR9 0x04d2
89 #define RAL_PHY_CSR10 0x04d4
90
91
92
93
94 #define RAL_STA_CSR0 0x04e0
95
96
97 #define RAL_DISABLE_RX (1 << 0)
98 #define RAL_DROP_CRC_ERROR (1 << 1)
99 #define RAL_DROP_PHY_ERROR (1 << 2)
100 #define RAL_DROP_CTL (1 << 3)
101 #define RAL_DROP_NOT_TO_ME (1 << 4)
102 #define RAL_DROP_TODS (1 << 5)
103 #define RAL_DROP_VERSION_ERROR (1 << 6)
104 #define RAL_DROP_MULTICAST (1 << 9)
105 #define RAL_DROP_BROADCAST (1 << 10)
106
107 #define RAL_SHORT_PREAMBLE (1 << 2)
108
109 #define RAL_RESET_ASIC (1 << 0)
110 #define RAL_RESET_BBP (1 << 1)
111 #define RAL_HOST_READY (1 << 2)
112
113 #define RAL_ENABLE_TSF (1 << 0)
114 #define RAL_ENABLE_TSF_SYNC(x) (((x) & 0x3) << 1)
115 #define RAL_ENABLE_TBCN (1 << 3)
116 #define RAL_ENABLE_BEACON_GENERATOR (1 << 4)
117
118 #define RAL_RF_AWAKE (3 << 7)
119 #define RAL_BBP_AWAKE (3 << 5)
120
121 #define RAL_BBP_WRITE (1 << 15)
122 #define RAL_BBP_BUSY (1 << 0)
123
124 #define RAL_RF1_AUTOTUNE 0x08000
125 #define RAL_RF3_AUTOTUNE 0x00040
126
127 #define RAL_RF_2522 0x00
128 #define RAL_RF_2523 0x01
129 #define RAL_RF_2524 0x02
130 #define RAL_RF_2525 0x03
131 #define RAL_RF_2525E 0x04
132 #define RAL_RF_2526 0x05
133
134 #define RAL_RF_5222 0x10
135
136 #define RAL_BBP_VERSION 0
137 #define RAL_BBP_TX 2
138 #define RAL_BBP_RX 14
139
140 #define RAL_BBP_ANTA 0x00
141 #define RAL_BBP_DIVERSITY 0x01
142 #define RAL_BBP_ANTB 0x02
143 #define RAL_BBP_ANTMASK 0x03
144 #define RAL_BBP_FLIPIQ 0x04
145
146 #define RAL_JAPAN_FILTER 0x08
147
148 struct ural_tx_desc {
149 uint32_t flags;
150 #define RAL_TX_RETRY(x) ((x) << 4)
151 #define RAL_TX_MORE_FRAG (1 << 8)
152 #define RAL_TX_NEED_ACK (1 << 9)
153 #define RAL_TX_TIMESTAMP (1 << 10)
154 #define RAL_TX_OFDM (1 << 11)
155 #define RAL_TX_NEWSEQ (1 << 12)
156
157 #define RAL_TX_IFS_MASK 0x00006000
158 #define RAL_TX_IFS_BACKOFF (0 << 13)
159 #define RAL_TX_IFS_SIFS (1 << 13)
160 #define RAL_TX_IFS_NEWBACKOFF (2 << 13)
161 #define RAL_TX_IFS_NONE (3 << 13)
162
163 uint16_t wme;
164 #define RAL_LOGCWMAX(x) (((x) & 0xf) << 12)
165 #define RAL_LOGCWMIN(x) (((x) & 0xf) << 8)
166 #define RAL_AIFSN(x) (((x) & 0x3) << 6)
167 #define RAL_IVOFFSET(x) (((x) & 0x3f))
168
169 uint16_t reserved;
170 uint8_t plcp_signal;
171 uint8_t plcp_service;
172 #define RAL_PLCP_LENGEXT 0x80
173
174 uint8_t plcp_length_lo;
175 uint8_t plcp_length_hi;
176 uint32_t iv;
177 uint32_t eiv;
178 } __packed;
179
180 struct ural_rx_desc {
181 uint32_t flags;
182 #define RAL_RX_CRC_ERROR (1 << 5)
183 #define RAL_RX_OFDM (1 << 6)
184 #define RAL_RX_PHY_ERROR (1 << 7)
185
186 uint8_t rate;
187 uint8_t rssi;
188 uint16_t reserved;
189
190 uint32_t iv;
191 uint32_t eiv;
192 } __packed;
193
194 #define RAL_RF_LOBUSY (1 << 15)
195 #define RAL_RF_BUSY (1 << 31)
196 #define RAL_RF_20BIT (20 << 24)
197
198 #define RAL_RF1 0
199 #define RAL_RF2 2
200 #define RAL_RF3 1
201 #define RAL_RF4 3
202
203 #define RAL_EEPROM_MACBBP 0x0000
204 #define RAL_EEPROM_ADDRESS 0x0004
205 #define RAL_EEPROM_TXPOWER 0x003c
206 #define RAL_EEPROM_CONFIG0 0x0016
207 #define RAL_EEPROM_BBP_BASE 0x001c
208
209
210
211
212 #define RAL_DEF_MAC \
213 { RAL_TXRX_CSR5, 0x8c8d }, \
214 { RAL_TXRX_CSR6, 0x8b8a }, \
215 { RAL_TXRX_CSR7, 0x8687 }, \
216 { RAL_TXRX_CSR8, 0x0085 }, \
217 { RAL_MAC_CSR13, 0x1111 }, \
218 { RAL_MAC_CSR14, 0x1e11 }, \
219 { RAL_TXRX_CSR21, 0xe78f }, \
220 { RAL_MAC_CSR9, 0xff1d }, \
221 { RAL_MAC_CSR11, 0x0002 }, \
222 { RAL_MAC_CSR22, 0x0053 }, \
223 { RAL_MAC_CSR15, 0x0000 }, \
224 { RAL_MAC_CSR8, 0x0780 }, \
225 { RAL_TXRX_CSR19, 0x0000 }, \
226 { RAL_TXRX_CSR18, 0x005a }, \
227 { RAL_PHY_CSR2, 0x0000 }, \
228 { RAL_TXRX_CSR0, 0x1ec0 }, \
229 { RAL_PHY_CSR4, 0x000f }
230
231
232
233
234 #define RAL_DEF_BBP \
235 { 3, 0x02 }, \
236 { 4, 0x19 }, \
237 { 14, 0x1c }, \
238 { 15, 0x30 }, \
239 { 16, 0xac }, \
240 { 17, 0x48 }, \
241 { 18, 0x18 }, \
242 { 19, 0xff }, \
243 { 20, 0x1e }, \
244 { 21, 0x08 }, \
245 { 22, 0x08 }, \
246 { 23, 0x08 }, \
247 { 24, 0x80 }, \
248 { 25, 0x50 }, \
249 { 26, 0x08 }, \
250 { 27, 0x23 }, \
251 { 30, 0x10 }, \
252 { 31, 0x2b }, \
253 { 32, 0xb9 }, \
254 { 34, 0x12 }, \
255 { 35, 0x50 }, \
256 { 39, 0xc4 }, \
257 { 40, 0x02 }, \
258 { 41, 0x60 }, \
259 { 53, 0x10 }, \
260 { 54, 0x18 }, \
261 { 56, 0x08 }, \
262 { 57, 0x10 }, \
263 { 58, 0x08 }, \
264 { 61, 0x60 }, \
265 { 62, 0x10 }, \
266 { 75, 0xff }
267
268
269
270
271 #define RAL_RF2522_R2 \
272 { \
273 0x307f6, 0x307fb, 0x30800, 0x30805, 0x3080a, 0x3080f, 0x30814, \
274 0x30819, 0x3081e, 0x30823, 0x30828, 0x3082d, 0x30832, 0x3083e \
275 }
276
277 #define RAL_RF2523_R2 \
278 { \
279 0x00327, 0x00328, 0x00329, 0x0032a, 0x0032b, 0x0032c, 0x0032d, \
280 0x0032e, 0x0032f, 0x00340, 0x00341, 0x00342, 0x00343, 0x00346 \
281 }
282
283 #define RAL_RF2524_R2 \
284 { \
285 0x00327, 0x00328, 0x00329, 0x0032a, 0x0032b, 0x0032c, 0x0032d, \
286 0x0032e, 0x0032f, 0x00340, 0x00341, 0x00342, 0x00343, 0x00346 \
287 }
288
289 #define RAL_RF2525_R2 \
290 { \
291 0x20327, 0x20328, 0x20329, 0x2032a, 0x2032b, 0x2032c, 0x2032d, \
292 0x2032e, 0x2032f, 0x20340, 0x20341, 0x20342, 0x20343, 0x20346 \
293 }
294
295 #define RAL_RF2525_HI_R2 \
296 { \
297 0x2032f, 0x20340, 0x20341, 0x20342, 0x20343, 0x20344, 0x20345, \
298 0x20346, 0x20347, 0x20348, 0x20349, 0x2034a, 0x2034b, 0x2034e \
299 }
300
301 #define RAL_RF2525E_R2 \
302 { \
303 0x2044d, 0x2044e, 0x2044f, 0x20460, 0x20461, 0x20462, 0x20463, \
304 0x20464, 0x20465, 0x20466, 0x20467, 0x20468, 0x20469, 0x2046b \
305 }
306
307 #define RAL_RF2526_HI_R2 \
308 { \
309 0x0022a, 0x0022b, 0x0022b, 0x0022c, 0x0022c, 0x0022d, 0x0022d, \
310 0x0022e, 0x0022e, 0x0022f, 0x0022d, 0x00240, 0x00240, 0x00241 \
311 }
312
313 #define RAL_RF2526_R2 \
314 { \
315 0x00226, 0x00227, 0x00227, 0x00228, 0x00228, 0x00229, 0x00229, \
316 0x0022a, 0x0022a, 0x0022b, 0x0022b, 0x0022c, 0x0022c, 0x0022d \
317 }