diff options
Diffstat (limited to 'drivers/net/wireless/ath5k/hw.h')
-rw-r--r-- | drivers/net/wireless/ath5k/hw.h | 150 |
1 files changed, 89 insertions, 61 deletions
diff --git a/drivers/net/wireless/ath5k/hw.h b/drivers/net/wireless/ath5k/hw.h index d9a7c0973f53..64fca8dcb386 100644 --- a/drivers/net/wireless/ath5k/hw.h +++ b/drivers/net/wireless/ath5k/hw.h | |||
@@ -173,7 +173,10 @@ struct ath5k_eeprom_info { | |||
173 | * (rX: reserved fields possibily used by future versions of the ar5k chipset) | 173 | * (rX: reserved fields possibily used by future versions of the ar5k chipset) |
174 | */ | 174 | */ |
175 | 175 | ||
176 | struct ath5k_rx_desc { | 176 | /* |
177 | * common hardware RX control descriptor | ||
178 | */ | ||
179 | struct ath5k_hw_rx_ctl { | ||
177 | u32 rx_control_0; /* RX control word 0 */ | 180 | u32 rx_control_0; /* RX control word 0 */ |
178 | 181 | ||
179 | #define AR5K_DESC_RX_CTL0 0x00000000 | 182 | #define AR5K_DESC_RX_CTL0 0x00000000 |
@@ -185,69 +188,63 @@ struct ath5k_rx_desc { | |||
185 | } __packed; | 188 | } __packed; |
186 | 189 | ||
187 | /* | 190 | /* |
188 | * 5210/5211 rx status descriptor | 191 | * common hardware RX status descriptor |
192 | * 5210/11 and 5212 differ only in the flags defined below | ||
189 | */ | 193 | */ |
190 | struct ath5k_hw_old_rx_status { | 194 | struct ath5k_hw_rx_status { |
191 | u32 rx_status_0; /* RX status word 0 */ | 195 | u32 rx_status_0; /* RX status word 0 */ |
192 | |||
193 | #define AR5K_OLD_RX_DESC_STATUS0_DATA_LEN 0x00000fff | ||
194 | #define AR5K_OLD_RX_DESC_STATUS0_MORE 0x00001000 | ||
195 | #define AR5K_OLD_RX_DESC_STATUS0_RECEIVE_RATE 0x00078000 | ||
196 | #define AR5K_OLD_RX_DESC_STATUS0_RECEIVE_RATE_S 15 | ||
197 | #define AR5K_OLD_RX_DESC_STATUS0_RECEIVE_SIGNAL 0x07f80000 | ||
198 | #define AR5K_OLD_RX_DESC_STATUS0_RECEIVE_SIGNAL_S 19 | ||
199 | #define AR5K_OLD_RX_DESC_STATUS0_RECEIVE_ANTENNA 0x38000000 | ||
200 | #define AR5K_OLD_RX_DESC_STATUS0_RECEIVE_ANTENNA_S 27 | ||
201 | |||
202 | u32 rx_status_1; /* RX status word 1 */ | 196 | u32 rx_status_1; /* RX status word 1 */ |
203 | |||
204 | #define AR5K_OLD_RX_DESC_STATUS1_DONE 0x00000001 | ||
205 | #define AR5K_OLD_RX_DESC_STATUS1_FRAME_RECEIVE_OK 0x00000002 | ||
206 | #define AR5K_OLD_RX_DESC_STATUS1_CRC_ERROR 0x00000004 | ||
207 | #define AR5K_OLD_RX_DESC_STATUS1_FIFO_OVERRUN 0x00000008 | ||
208 | #define AR5K_OLD_RX_DESC_STATUS1_DECRYPT_CRC_ERROR 0x00000010 | ||
209 | #define AR5K_OLD_RX_DESC_STATUS1_PHY_ERROR 0x000000e0 | ||
210 | #define AR5K_OLD_RX_DESC_STATUS1_PHY_ERROR_S 5 | ||
211 | #define AR5K_OLD_RX_DESC_STATUS1_KEY_INDEX_VALID 0x00000100 | ||
212 | #define AR5K_OLD_RX_DESC_STATUS1_KEY_INDEX 0x00007e00 | ||
213 | #define AR5K_OLD_RX_DESC_STATUS1_KEY_INDEX_S 9 | ||
214 | #define AR5K_OLD_RX_DESC_STATUS1_RECEIVE_TIMESTAMP 0x0fff8000 | ||
215 | #define AR5K_OLD_RX_DESC_STATUS1_RECEIVE_TIMESTAMP_S 15 | ||
216 | #define AR5K_OLD_RX_DESC_STATUS1_KEY_CACHE_MISS 0x10000000 | ||
217 | } __packed; | 197 | } __packed; |
218 | 198 | ||
199 | /* 5210/5211 */ | ||
200 | #define AR5K_5210_RX_DESC_STATUS0_DATA_LEN 0x00000fff | ||
201 | #define AR5K_5210_RX_DESC_STATUS0_MORE 0x00001000 | ||
202 | #define AR5K_5210_RX_DESC_STATUS0_RECEIVE_RATE 0x00078000 | ||
203 | #define AR5K_5210_RX_DESC_STATUS0_RECEIVE_RATE_S 15 | ||
204 | #define AR5K_5210_RX_DESC_STATUS0_RECEIVE_SIGNAL 0x07f80000 | ||
205 | #define AR5K_5210_RX_DESC_STATUS0_RECEIVE_SIGNAL_S 19 | ||
206 | #define AR5K_5210_RX_DESC_STATUS0_RECEIVE_ANTENNA 0x38000000 | ||
207 | #define AR5K_5210_RX_DESC_STATUS0_RECEIVE_ANTENNA_S 27 | ||
208 | #define AR5K_5210_RX_DESC_STATUS1_DONE 0x00000001 | ||
209 | #define AR5K_5210_RX_DESC_STATUS1_FRAME_RECEIVE_OK 0x00000002 | ||
210 | #define AR5K_5210_RX_DESC_STATUS1_CRC_ERROR 0x00000004 | ||
211 | #define AR5K_5210_RX_DESC_STATUS1_FIFO_OVERRUN 0x00000008 | ||
212 | #define AR5K_5210_RX_DESC_STATUS1_DECRYPT_CRC_ERROR 0x00000010 | ||
213 | #define AR5K_5210_RX_DESC_STATUS1_PHY_ERROR 0x000000e0 | ||
214 | #define AR5K_5210_RX_DESC_STATUS1_PHY_ERROR_S 5 | ||
215 | #define AR5K_5210_RX_DESC_STATUS1_KEY_INDEX_VALID 0x00000100 | ||
216 | #define AR5K_5210_RX_DESC_STATUS1_KEY_INDEX 0x00007e00 | ||
217 | #define AR5K_5210_RX_DESC_STATUS1_KEY_INDEX_S 9 | ||
218 | #define AR5K_5210_RX_DESC_STATUS1_RECEIVE_TIMESTAMP 0x0fff8000 | ||
219 | #define AR5K_5210_RX_DESC_STATUS1_RECEIVE_TIMESTAMP_S 15 | ||
220 | #define AR5K_5210_RX_DESC_STATUS1_KEY_CACHE_MISS 0x10000000 | ||
221 | |||
222 | /* 5212 */ | ||
223 | #define AR5K_5212_RX_DESC_STATUS0_DATA_LEN 0x00000fff | ||
224 | #define AR5K_5212_RX_DESC_STATUS0_MORE 0x00001000 | ||
225 | #define AR5K_5212_RX_DESC_STATUS0_DECOMP_CRC_ERROR 0x00002000 | ||
226 | #define AR5K_5212_RX_DESC_STATUS0_RECEIVE_RATE 0x000f8000 | ||
227 | #define AR5K_5212_RX_DESC_STATUS0_RECEIVE_RATE_S 15 | ||
228 | #define AR5K_5212_RX_DESC_STATUS0_RECEIVE_SIGNAL 0x0ff00000 | ||
229 | #define AR5K_5212_RX_DESC_STATUS0_RECEIVE_SIGNAL_S 20 | ||
230 | #define AR5K_5212_RX_DESC_STATUS0_RECEIVE_ANTENNA 0xf0000000 | ||
231 | #define AR5K_5212_RX_DESC_STATUS0_RECEIVE_ANTENNA_S 28 | ||
232 | #define AR5K_5212_RX_DESC_STATUS1_DONE 0x00000001 | ||
233 | #define AR5K_5212_RX_DESC_STATUS1_FRAME_RECEIVE_OK 0x00000002 | ||
234 | #define AR5K_5212_RX_DESC_STATUS1_CRC_ERROR 0x00000004 | ||
235 | #define AR5K_5212_RX_DESC_STATUS1_DECRYPT_CRC_ERROR 0x00000008 | ||
236 | #define AR5K_5212_RX_DESC_STATUS1_PHY_ERROR 0x00000010 | ||
237 | #define AR5K_5212_RX_DESC_STATUS1_MIC_ERROR 0x00000020 | ||
238 | #define AR5K_5212_RX_DESC_STATUS1_KEY_INDEX_VALID 0x00000100 | ||
239 | #define AR5K_5212_RX_DESC_STATUS1_KEY_INDEX 0x0000fe00 | ||
240 | #define AR5K_5212_RX_DESC_STATUS1_KEY_INDEX_S 9 | ||
241 | #define AR5K_5212_RX_DESC_STATUS1_RECEIVE_TIMESTAMP 0x7fff0000 | ||
242 | #define AR5K_5212_RX_DESC_STATUS1_RECEIVE_TIMESTAMP_S 16 | ||
243 | #define AR5K_5212_RX_DESC_STATUS1_KEY_CACHE_MISS 0x80000000 | ||
244 | |||
219 | /* | 245 | /* |
220 | * 5212 rx status descriptor | 246 | * common hardware RX error descriptor |
221 | */ | 247 | */ |
222 | struct ath5k_hw_new_rx_status { | ||
223 | u32 rx_status_0; /* RX status word 0 */ | ||
224 | |||
225 | #define AR5K_NEW_RX_DESC_STATUS0_DATA_LEN 0x00000fff | ||
226 | #define AR5K_NEW_RX_DESC_STATUS0_MORE 0x00001000 | ||
227 | #define AR5K_NEW_RX_DESC_STATUS0_DECOMP_CRC_ERROR 0x00002000 | ||
228 | #define AR5K_NEW_RX_DESC_STATUS0_RECEIVE_RATE 0x000f8000 | ||
229 | #define AR5K_NEW_RX_DESC_STATUS0_RECEIVE_RATE_S 15 | ||
230 | #define AR5K_NEW_RX_DESC_STATUS0_RECEIVE_SIGNAL 0x0ff00000 | ||
231 | #define AR5K_NEW_RX_DESC_STATUS0_RECEIVE_SIGNAL_S 20 | ||
232 | #define AR5K_NEW_RX_DESC_STATUS0_RECEIVE_ANTENNA 0xf0000000 | ||
233 | #define AR5K_NEW_RX_DESC_STATUS0_RECEIVE_ANTENNA_S 28 | ||
234 | |||
235 | u32 rx_status_1; /* RX status word 1 */ | ||
236 | |||
237 | #define AR5K_NEW_RX_DESC_STATUS1_DONE 0x00000001 | ||
238 | #define AR5K_NEW_RX_DESC_STATUS1_FRAME_RECEIVE_OK 0x00000002 | ||
239 | #define AR5K_NEW_RX_DESC_STATUS1_CRC_ERROR 0x00000004 | ||
240 | #define AR5K_NEW_RX_DESC_STATUS1_DECRYPT_CRC_ERROR 0x00000008 | ||
241 | #define AR5K_NEW_RX_DESC_STATUS1_PHY_ERROR 0x00000010 | ||
242 | #define AR5K_NEW_RX_DESC_STATUS1_MIC_ERROR 0x00000020 | ||
243 | #define AR5K_NEW_RX_DESC_STATUS1_KEY_INDEX_VALID 0x00000100 | ||
244 | #define AR5K_NEW_RX_DESC_STATUS1_KEY_INDEX 0x0000fe00 | ||
245 | #define AR5K_NEW_RX_DESC_STATUS1_KEY_INDEX_S 9 | ||
246 | #define AR5K_NEW_RX_DESC_STATUS1_RECEIVE_TIMESTAMP 0x7fff0000 | ||
247 | #define AR5K_NEW_RX_DESC_STATUS1_RECEIVE_TIMESTAMP_S 16 | ||
248 | #define AR5K_NEW_RX_DESC_STATUS1_KEY_CACHE_MISS 0x80000000 | ||
249 | } __packed; | ||
250 | |||
251 | struct ath5k_hw_rx_error { | 248 | struct ath5k_hw_rx_error { |
252 | u32 rx_error_0; /* RX error word 0 */ | 249 | u32 rx_error_0; /* RX error word 0 */ |
253 | 250 | ||
@@ -268,7 +265,10 @@ struct ath5k_hw_rx_error { | |||
268 | #define AR5K_DESC_RX_PHY_ERROR_SERVICE 0xc0 | 265 | #define AR5K_DESC_RX_PHY_ERROR_SERVICE 0xc0 |
269 | #define AR5K_DESC_RX_PHY_ERROR_TRANSMITOVR 0xe0 | 266 | #define AR5K_DESC_RX_PHY_ERROR_TRANSMITOVR 0xe0 |
270 | 267 | ||
271 | struct ath5k_hw_2w_tx_desc { | 268 | /* |
269 | * 5210/5211 hardware 2-word TX control descriptor | ||
270 | */ | ||
271 | struct ath5k_hw_2w_tx_ctl { | ||
272 | u32 tx_control_0; /* TX control word 0 */ | 272 | u32 tx_control_0; /* TX control word 0 */ |
273 | 273 | ||
274 | #define AR5K_2W_TX_DESC_CTL0_FRAME_LEN 0x00000fff | 274 | #define AR5K_2W_TX_DESC_CTL0_FRAME_LEN 0x00000fff |
@@ -314,9 +314,9 @@ struct ath5k_hw_2w_tx_desc { | |||
314 | #define AR5K_AR5210_TX_DESC_FRAME_TYPE_PIFS 0x10 | 314 | #define AR5K_AR5210_TX_DESC_FRAME_TYPE_PIFS 0x10 |
315 | 315 | ||
316 | /* | 316 | /* |
317 | * 5212 4-word tx control descriptor | 317 | * 5212 hardware 4-word TX control descriptor |
318 | */ | 318 | */ |
319 | struct ath5k_hw_4w_tx_desc { | 319 | struct ath5k_hw_4w_tx_ctl { |
320 | u32 tx_control_0; /* TX control word 0 */ | 320 | u32 tx_control_0; /* TX control word 0 */ |
321 | 321 | ||
322 | #define AR5K_4W_TX_DESC_CTL0_FRAME_LEN 0x00000fff | 322 | #define AR5K_4W_TX_DESC_CTL0_FRAME_LEN 0x00000fff |
@@ -374,7 +374,7 @@ struct ath5k_hw_4w_tx_desc { | |||
374 | } __packed; | 374 | } __packed; |
375 | 375 | ||
376 | /* | 376 | /* |
377 | * Common tx status descriptor | 377 | * Common TX status descriptor |
378 | */ | 378 | */ |
379 | struct ath5k_hw_tx_status { | 379 | struct ath5k_hw_tx_status { |
380 | u32 tx_status_0; /* TX status word 0 */ | 380 | u32 tx_status_0; /* TX status word 0 */ |
@@ -415,6 +415,34 @@ struct ath5k_hw_tx_status { | |||
415 | 415 | ||
416 | 416 | ||
417 | /* | 417 | /* |
418 | * 5210/5211 hardware TX descriptor | ||
419 | */ | ||
420 | struct ath5k_hw_5210_tx_desc { | ||
421 | struct ath5k_hw_2w_tx_ctl tx_ctl; | ||
422 | struct ath5k_hw_tx_status tx_stat; | ||
423 | } __packed; | ||
424 | |||
425 | /* | ||
426 | * 5212 hardware TX descriptor | ||
427 | */ | ||
428 | struct ath5k_hw_5212_tx_desc { | ||
429 | struct ath5k_hw_4w_tx_ctl tx_ctl; | ||
430 | struct ath5k_hw_tx_status tx_stat; | ||
431 | } __packed; | ||
432 | |||
433 | /* | ||
434 | * common hardware RX descriptor | ||
435 | */ | ||
436 | struct ath5k_hw_all_rx_desc { | ||
437 | struct ath5k_hw_rx_ctl rx_ctl; | ||
438 | union { | ||
439 | struct ath5k_hw_rx_status rx_stat; | ||
440 | struct ath5k_hw_rx_error rx_err; | ||
441 | } u; | ||
442 | } __packed; | ||
443 | |||
444 | |||
445 | /* | ||
418 | * AR5K REGISTER ACCESS | 446 | * AR5K REGISTER ACCESS |
419 | */ | 447 | */ |
420 | 448 | ||