diff options
Diffstat (limited to 'drivers/net/wireless/ath/ath5k/reg.h')
-rw-r--r-- | drivers/net/wireless/ath/ath5k/reg.h | 138 |
1 files changed, 61 insertions, 77 deletions
diff --git a/drivers/net/wireless/ath/ath5k/reg.h b/drivers/net/wireless/ath/ath5k/reg.h index 55b4ac6d236f..d12b827033c1 100644 --- a/drivers/net/wireless/ath/ath5k/reg.h +++ b/drivers/net/wireless/ath/ath5k/reg.h | |||
@@ -26,7 +26,6 @@ | |||
26 | * Atheros presentations and papers like these: | 26 | * Atheros presentations and papers like these: |
27 | * | 27 | * |
28 | * 5210 - http://nova.stanford.edu/~bbaas/ps/isscc2002_slides.pdf | 28 | * 5210 - http://nova.stanford.edu/~bbaas/ps/isscc2002_slides.pdf |
29 | * http://www.it.iitb.ac.in/~janak/wifire/01222734.pdf | ||
30 | * | 29 | * |
31 | * 5211 - http://www.hotchips.org/archives/hc14/3_Tue/16_mcfarland.pdf | 30 | * 5211 - http://www.hotchips.org/archives/hc14/3_Tue/16_mcfarland.pdf |
32 | * | 31 | * |
@@ -133,8 +132,8 @@ | |||
133 | * As i can see in ar5k_ar5210_tx_start Reyk uses some of the values of BCR | 132 | * As i can see in ar5k_ar5210_tx_start Reyk uses some of the values of BCR |
134 | * for this register, so i guess TQ1V,TQ1FV and BDMAE have the same meaning | 133 | * for this register, so i guess TQ1V,TQ1FV and BDMAE have the same meaning |
135 | * here and SNP/SNAP means "snapshot" (so this register gets synced with BCR). | 134 | * here and SNP/SNAP means "snapshot" (so this register gets synced with BCR). |
136 | * So SNAPPEDBCRVALID sould also stand for "snapped BCR -values- valid", so i | 135 | * So SNAPPEDBCRVALID should also stand for "snapped BCR -values- valid", so i |
137 | * renamed it to SNAPSHOTSVALID to make more sense. I realy have no idea what | 136 | * renamed it to SNAPSHOTSVALID to make more sense. I really have no idea what |
138 | * else can it be. I also renamed SNPBCMD to SNPADHOC to match BCR. | 137 | * else can it be. I also renamed SNPBCMD to SNPADHOC to match BCR. |
139 | */ | 138 | */ |
140 | #define AR5K_BSR 0x002c /* Register Address */ | 139 | #define AR5K_BSR 0x002c /* Register Address */ |
@@ -284,7 +283,7 @@ | |||
284 | */ | 283 | */ |
285 | #define AR5K_ISR 0x001c /* Register Address [5210] */ | 284 | #define AR5K_ISR 0x001c /* Register Address [5210] */ |
286 | #define AR5K_PISR 0x0080 /* Register Address [5211+] */ | 285 | #define AR5K_PISR 0x0080 /* Register Address [5211+] */ |
287 | #define AR5K_ISR_RXOK 0x00000001 /* Frame successfuly recieved */ | 286 | #define AR5K_ISR_RXOK 0x00000001 /* Frame successfuly received */ |
288 | #define AR5K_ISR_RXDESC 0x00000002 /* RX descriptor request */ | 287 | #define AR5K_ISR_RXDESC 0x00000002 /* RX descriptor request */ |
289 | #define AR5K_ISR_RXERR 0x00000004 /* Receive error */ | 288 | #define AR5K_ISR_RXERR 0x00000004 /* Receive error */ |
290 | #define AR5K_ISR_RXNOFRM 0x00000008 /* No frame received (receive timeout) */ | 289 | #define AR5K_ISR_RXNOFRM 0x00000008 /* No frame received (receive timeout) */ |
@@ -373,12 +372,12 @@ | |||
373 | /* | 372 | /* |
374 | * Interrupt Mask Registers | 373 | * Interrupt Mask Registers |
375 | * | 374 | * |
376 | * As whith ISRs 5210 has one IMR (AR5K_IMR) and 5211/5212 has one primary | 375 | * As with ISRs 5210 has one IMR (AR5K_IMR) and 5211/5212 has one primary |
377 | * (AR5K_PIMR) and 4 secondary IMRs (AR5K_SIMRx). Note that ISR/IMR flags match. | 376 | * (AR5K_PIMR) and 4 secondary IMRs (AR5K_SIMRx). Note that ISR/IMR flags match. |
378 | */ | 377 | */ |
379 | #define AR5K_IMR 0x0020 /* Register Address [5210] */ | 378 | #define AR5K_IMR 0x0020 /* Register Address [5210] */ |
380 | #define AR5K_PIMR 0x00a0 /* Register Address [5211+] */ | 379 | #define AR5K_PIMR 0x00a0 /* Register Address [5211+] */ |
381 | #define AR5K_IMR_RXOK 0x00000001 /* Frame successfuly recieved*/ | 380 | #define AR5K_IMR_RXOK 0x00000001 /* Frame successfuly received*/ |
382 | #define AR5K_IMR_RXDESC 0x00000002 /* RX descriptor request*/ | 381 | #define AR5K_IMR_RXDESC 0x00000002 /* RX descriptor request*/ |
383 | #define AR5K_IMR_RXERR 0x00000004 /* Receive error*/ | 382 | #define AR5K_IMR_RXERR 0x00000004 /* Receive error*/ |
384 | #define AR5K_IMR_RXNOFRM 0x00000008 /* No frame received (receive timeout)*/ | 383 | #define AR5K_IMR_RXNOFRM 0x00000008 /* No frame received (receive timeout)*/ |
@@ -687,16 +686,15 @@ | |||
687 | 686 | ||
688 | /* | 687 | /* |
689 | * DCU retry limit registers | 688 | * DCU retry limit registers |
689 | * all these fields don't allow zero values | ||
690 | */ | 690 | */ |
691 | #define AR5K_DCU_RETRY_LMT_BASE 0x1080 /* Register Address -Queue0 DCU_RETRY_LMT */ | 691 | #define AR5K_DCU_RETRY_LMT_BASE 0x1080 /* Register Address -Queue0 DCU_RETRY_LMT */ |
692 | #define AR5K_DCU_RETRY_LMT_SH_RETRY 0x0000000f /* Short retry limit mask */ | 692 | #define AR5K_DCU_RETRY_LMT_RTS 0x0000000f /* RTS failure limit. Transmission fails if no CTS is received for this number of times */ |
693 | #define AR5K_DCU_RETRY_LMT_SH_RETRY_S 0 | 693 | #define AR5K_DCU_RETRY_LMT_RTS_S 0 |
694 | #define AR5K_DCU_RETRY_LMT_LG_RETRY 0x000000f0 /* Long retry limit mask */ | 694 | #define AR5K_DCU_RETRY_LMT_STA_RTS 0x00003f00 /* STA RTS failure limit. If exceeded CW reset */ |
695 | #define AR5K_DCU_RETRY_LMT_LG_RETRY_S 4 | 695 | #define AR5K_DCU_RETRY_LMT_STA_RTS_S 8 |
696 | #define AR5K_DCU_RETRY_LMT_SSH_RETRY 0x00003f00 /* Station short retry limit mask (?) */ | 696 | #define AR5K_DCU_RETRY_LMT_STA_DATA 0x000fc000 /* STA data failure limit. If exceeded CW reset. */ |
697 | #define AR5K_DCU_RETRY_LMT_SSH_RETRY_S 8 | 697 | #define AR5K_DCU_RETRY_LMT_STA_DATA_S 14 |
698 | #define AR5K_DCU_RETRY_LMT_SLG_RETRY 0x000fc000 /* Station long retry limit mask (?) */ | ||
699 | #define AR5K_DCU_RETRY_LMT_SLG_RETRY_S 14 | ||
700 | #define AR5K_QUEUE_DFS_RETRY_LIMIT(_q) AR5K_QUEUE_REG(AR5K_DCU_RETRY_LMT_BASE, _q) | 698 | #define AR5K_QUEUE_DFS_RETRY_LIMIT(_q) AR5K_QUEUE_REG(AR5K_DCU_RETRY_LMT_BASE, _q) |
701 | 699 | ||
702 | /* | 700 | /* |
@@ -788,6 +786,7 @@ | |||
788 | #define AR5K_DCU_GBL_IFS_MISC_LFSR_SLICE 0x00000007 /* LFSR Slice Select */ | 786 | #define AR5K_DCU_GBL_IFS_MISC_LFSR_SLICE 0x00000007 /* LFSR Slice Select */ |
789 | #define AR5K_DCU_GBL_IFS_MISC_TURBO_MODE 0x00000008 /* Turbo mode */ | 787 | #define AR5K_DCU_GBL_IFS_MISC_TURBO_MODE 0x00000008 /* Turbo mode */ |
790 | #define AR5K_DCU_GBL_IFS_MISC_SIFS_DUR_USEC 0x000003f0 /* SIFS Duration mask */ | 788 | #define AR5K_DCU_GBL_IFS_MISC_SIFS_DUR_USEC 0x000003f0 /* SIFS Duration mask */ |
789 | #define AR5K_DCU_GBL_IFS_MISC_SIFS_DUR_USEC_S 4 | ||
791 | #define AR5K_DCU_GBL_IFS_MISC_USEC_DUR 0x000ffc00 /* USEC Duration mask */ | 790 | #define AR5K_DCU_GBL_IFS_MISC_USEC_DUR 0x000ffc00 /* USEC Duration mask */ |
792 | #define AR5K_DCU_GBL_IFS_MISC_USEC_DUR_S 10 | 791 | #define AR5K_DCU_GBL_IFS_MISC_USEC_DUR_S 10 |
793 | #define AR5K_DCU_GBL_IFS_MISC_DCU_ARB_DELAY 0x00300000 /* DCU Arbiter delay mask */ | 792 | #define AR5K_DCU_GBL_IFS_MISC_DCU_ARB_DELAY 0x00300000 /* DCU Arbiter delay mask */ |
@@ -896,7 +895,7 @@ | |||
896 | #define AR5K_PCICFG_SL_INTEN 0x00000800 /* Enable interrupts when asleep */ | 895 | #define AR5K_PCICFG_SL_INTEN 0x00000800 /* Enable interrupts when asleep */ |
897 | #define AR5K_PCICFG_LED_BCTL 0x00001000 /* Led blink (?) [5210] */ | 896 | #define AR5K_PCICFG_LED_BCTL 0x00001000 /* Led blink (?) [5210] */ |
898 | #define AR5K_PCICFG_RETRY_FIX 0x00001000 /* Enable pci core retry fix */ | 897 | #define AR5K_PCICFG_RETRY_FIX 0x00001000 /* Enable pci core retry fix */ |
899 | #define AR5K_PCICFG_SL_INPEN 0x00002000 /* Sleep even whith pending interrupts*/ | 898 | #define AR5K_PCICFG_SL_INPEN 0x00002000 /* Sleep even with pending interrupts*/ |
900 | #define AR5K_PCICFG_SPWR_DN 0x00010000 /* Mask for power status */ | 899 | #define AR5K_PCICFG_SPWR_DN 0x00010000 /* Mask for power status */ |
901 | #define AR5K_PCICFG_LEDMODE 0x000e0000 /* Ledmode [5211+] */ | 900 | #define AR5K_PCICFG_LEDMODE 0x000e0000 /* Ledmode [5211+] */ |
902 | #define AR5K_PCICFG_LEDMODE_PROP 0x00000000 /* Blink on standard traffic [5211+] */ | 901 | #define AR5K_PCICFG_LEDMODE_PROP 0x00000000 /* Blink on standard traffic [5211+] */ |
@@ -1064,7 +1063,7 @@ | |||
1064 | /* | 1063 | /* |
1065 | * EEPROM command register | 1064 | * EEPROM command register |
1066 | */ | 1065 | */ |
1067 | #define AR5K_EEPROM_CMD 0x6008 /* Register Addres */ | 1066 | #define AR5K_EEPROM_CMD 0x6008 /* Register Address */ |
1068 | #define AR5K_EEPROM_CMD_READ 0x00000001 /* EEPROM read */ | 1067 | #define AR5K_EEPROM_CMD_READ 0x00000001 /* EEPROM read */ |
1069 | #define AR5K_EEPROM_CMD_WRITE 0x00000002 /* EEPROM write */ | 1068 | #define AR5K_EEPROM_CMD_WRITE 0x00000002 /* EEPROM write */ |
1070 | #define AR5K_EEPROM_CMD_RESET 0x00000004 /* EEPROM reset */ | 1069 | #define AR5K_EEPROM_CMD_RESET 0x00000004 /* EEPROM reset */ |
@@ -1084,7 +1083,7 @@ | |||
1084 | /* | 1083 | /* |
1085 | * EEPROM config register | 1084 | * EEPROM config register |
1086 | */ | 1085 | */ |
1087 | #define AR5K_EEPROM_CFG 0x6010 /* Register Addres */ | 1086 | #define AR5K_EEPROM_CFG 0x6010 /* Register Address */ |
1088 | #define AR5K_EEPROM_CFG_SIZE 0x00000003 /* Size determination override */ | 1087 | #define AR5K_EEPROM_CFG_SIZE 0x00000003 /* Size determination override */ |
1089 | #define AR5K_EEPROM_CFG_SIZE_AUTO 0 | 1088 | #define AR5K_EEPROM_CFG_SIZE_AUTO 0 |
1090 | #define AR5K_EEPROM_CFG_SIZE_4KBIT 1 | 1089 | #define AR5K_EEPROM_CFG_SIZE_4KBIT 1 |
@@ -1126,7 +1125,7 @@ | |||
1126 | * Second station id register (Upper 16 bits of MAC address + PCU settings) | 1125 | * Second station id register (Upper 16 bits of MAC address + PCU settings) |
1127 | */ | 1126 | */ |
1128 | #define AR5K_STA_ID1 0x8004 /* Register Address */ | 1127 | #define AR5K_STA_ID1 0x8004 /* Register Address */ |
1129 | #define AR5K_STA_ID1_ADDR_U16 0x0000ffff /* Upper 16 bits of MAC addres */ | 1128 | #define AR5K_STA_ID1_ADDR_U16 0x0000ffff /* Upper 16 bits of MAC address */ |
1130 | #define AR5K_STA_ID1_AP 0x00010000 /* Set AP mode */ | 1129 | #define AR5K_STA_ID1_AP 0x00010000 /* Set AP mode */ |
1131 | #define AR5K_STA_ID1_ADHOC 0x00020000 /* Set Ad-Hoc mode */ | 1130 | #define AR5K_STA_ID1_ADHOC 0x00020000 /* Set Ad-Hoc mode */ |
1132 | #define AR5K_STA_ID1_PWR_SV 0x00040000 /* Power save reporting */ | 1131 | #define AR5K_STA_ID1_PWR_SV 0x00040000 /* Power save reporting */ |
@@ -1312,7 +1311,7 @@ | |||
1312 | #define AR5K_IFS1_EIFS 0x03fff000 | 1311 | #define AR5K_IFS1_EIFS 0x03fff000 |
1313 | #define AR5K_IFS1_EIFS_S 12 | 1312 | #define AR5K_IFS1_EIFS_S 12 |
1314 | #define AR5K_IFS1_CS_EN 0x04000000 | 1313 | #define AR5K_IFS1_CS_EN 0x04000000 |
1315 | 1314 | #define AR5K_IFS1_CS_EN_S 26 | |
1316 | 1315 | ||
1317 | /* | 1316 | /* |
1318 | * CFP duration register | 1317 | * CFP duration register |
@@ -1387,10 +1386,9 @@ | |||
1387 | 1386 | ||
1388 | 1387 | ||
1389 | /* | 1388 | /* |
1390 | * PCU control register | 1389 | * PCU Diagnostic register |
1391 | * | 1390 | * |
1392 | * Only DIS_RX is used in the code, the rest i guess are | 1391 | * Used for tweaking/diagnostics. |
1393 | * for tweaking/diagnostics. | ||
1394 | */ | 1392 | */ |
1395 | #define AR5K_DIAG_SW_5210 0x8068 /* Register Address [5210] */ | 1393 | #define AR5K_DIAG_SW_5210 0x8068 /* Register Address [5210] */ |
1396 | #define AR5K_DIAG_SW_5211 0x8048 /* Register Address [5211+] */ | 1394 | #define AR5K_DIAG_SW_5211 0x8048 /* Register Address [5211+] */ |
@@ -1399,22 +1397,22 @@ | |||
1399 | #define AR5K_DIAG_SW_DIS_WEP_ACK 0x00000001 /* Disable ACKs if WEP key is invalid */ | 1397 | #define AR5K_DIAG_SW_DIS_WEP_ACK 0x00000001 /* Disable ACKs if WEP key is invalid */ |
1400 | #define AR5K_DIAG_SW_DIS_ACK 0x00000002 /* Disable ACKs */ | 1398 | #define AR5K_DIAG_SW_DIS_ACK 0x00000002 /* Disable ACKs */ |
1401 | #define AR5K_DIAG_SW_DIS_CTS 0x00000004 /* Disable CTSs */ | 1399 | #define AR5K_DIAG_SW_DIS_CTS 0x00000004 /* Disable CTSs */ |
1402 | #define AR5K_DIAG_SW_DIS_ENC 0x00000008 /* Disable encryption */ | 1400 | #define AR5K_DIAG_SW_DIS_ENC 0x00000008 /* Disable HW encryption */ |
1403 | #define AR5K_DIAG_SW_DIS_DEC 0x00000010 /* Disable decryption */ | 1401 | #define AR5K_DIAG_SW_DIS_DEC 0x00000010 /* Disable HW decryption */ |
1404 | #define AR5K_DIAG_SW_DIS_TX 0x00000020 /* Disable transmit [5210] */ | 1402 | #define AR5K_DIAG_SW_DIS_TX_5210 0x00000020 /* Disable transmit [5210] */ |
1405 | #define AR5K_DIAG_SW_DIS_RX_5210 0x00000040 /* Disable recieve */ | 1403 | #define AR5K_DIAG_SW_DIS_RX_5210 0x00000040 /* Disable receive */ |
1406 | #define AR5K_DIAG_SW_DIS_RX_5211 0x00000020 | 1404 | #define AR5K_DIAG_SW_DIS_RX_5211 0x00000020 |
1407 | #define AR5K_DIAG_SW_DIS_RX (ah->ah_version == AR5K_AR5210 ? \ | 1405 | #define AR5K_DIAG_SW_DIS_RX (ah->ah_version == AR5K_AR5210 ? \ |
1408 | AR5K_DIAG_SW_DIS_RX_5210 : AR5K_DIAG_SW_DIS_RX_5211) | 1406 | AR5K_DIAG_SW_DIS_RX_5210 : AR5K_DIAG_SW_DIS_RX_5211) |
1409 | #define AR5K_DIAG_SW_LOOP_BACK_5210 0x00000080 /* Loopback (i guess it goes with DIS_TX) [5210] */ | 1407 | #define AR5K_DIAG_SW_LOOP_BACK_5210 0x00000080 /* TX Data Loopback (i guess it goes with DIS_TX) [5210] */ |
1410 | #define AR5K_DIAG_SW_LOOP_BACK_5211 0x00000040 | 1408 | #define AR5K_DIAG_SW_LOOP_BACK_5211 0x00000040 |
1411 | #define AR5K_DIAG_SW_LOOP_BACK (ah->ah_version == AR5K_AR5210 ? \ | 1409 | #define AR5K_DIAG_SW_LOOP_BACK (ah->ah_version == AR5K_AR5210 ? \ |
1412 | AR5K_DIAG_SW_LOOP_BACK_5210 : AR5K_DIAG_SW_LOOP_BACK_5211) | 1410 | AR5K_DIAG_SW_LOOP_BACK_5210 : AR5K_DIAG_SW_LOOP_BACK_5211) |
1413 | #define AR5K_DIAG_SW_CORR_FCS_5210 0x00000100 /* Corrupted FCS */ | 1411 | #define AR5K_DIAG_SW_CORR_FCS_5210 0x00000100 /* Generate invalid TX FCS */ |
1414 | #define AR5K_DIAG_SW_CORR_FCS_5211 0x00000080 | 1412 | #define AR5K_DIAG_SW_CORR_FCS_5211 0x00000080 |
1415 | #define AR5K_DIAG_SW_CORR_FCS (ah->ah_version == AR5K_AR5210 ? \ | 1413 | #define AR5K_DIAG_SW_CORR_FCS (ah->ah_version == AR5K_AR5210 ? \ |
1416 | AR5K_DIAG_SW_CORR_FCS_5210 : AR5K_DIAG_SW_CORR_FCS_5211) | 1414 | AR5K_DIAG_SW_CORR_FCS_5210 : AR5K_DIAG_SW_CORR_FCS_5211) |
1417 | #define AR5K_DIAG_SW_CHAN_INFO_5210 0x00000200 /* Dump channel info */ | 1415 | #define AR5K_DIAG_SW_CHAN_INFO_5210 0x00000200 /* Add 56 bytes of channel info before the frame data in the RX buffer */ |
1418 | #define AR5K_DIAG_SW_CHAN_INFO_5211 0x00000100 | 1416 | #define AR5K_DIAG_SW_CHAN_INFO_5211 0x00000100 |
1419 | #define AR5K_DIAG_SW_CHAN_INFO (ah->ah_version == AR5K_AR5210 ? \ | 1417 | #define AR5K_DIAG_SW_CHAN_INFO (ah->ah_version == AR5K_AR5210 ? \ |
1420 | AR5K_DIAG_SW_CHAN_INFO_5210 : AR5K_DIAG_SW_CHAN_INFO_5211) | 1418 | AR5K_DIAG_SW_CHAN_INFO_5210 : AR5K_DIAG_SW_CHAN_INFO_5211) |
@@ -1426,17 +1424,17 @@ | |||
1426 | #define AR5K_DIAG_SW_SCVRAM_SEED 0x0003f800 /* [5210] */ | 1424 | #define AR5K_DIAG_SW_SCVRAM_SEED 0x0003f800 /* [5210] */ |
1427 | #define AR5K_DIAG_SW_SCRAM_SEED_M 0x0001fc00 /* Scrambler seed mask */ | 1425 | #define AR5K_DIAG_SW_SCRAM_SEED_M 0x0001fc00 /* Scrambler seed mask */ |
1428 | #define AR5K_DIAG_SW_SCRAM_SEED_S 10 | 1426 | #define AR5K_DIAG_SW_SCRAM_SEED_S 10 |
1429 | #define AR5K_DIAG_SW_DIS_SEQ_INC 0x00040000 /* Disable seqnum increment (?)[5210] */ | 1427 | #define AR5K_DIAG_SW_DIS_SEQ_INC_5210 0x00040000 /* Disable seqnum increment (?)[5210] */ |
1430 | #define AR5K_DIAG_SW_FRAME_NV0_5210 0x00080000 | 1428 | #define AR5K_DIAG_SW_FRAME_NV0_5210 0x00080000 |
1431 | #define AR5K_DIAG_SW_FRAME_NV0_5211 0x00020000 /* Accept frames of non-zero protocol number */ | 1429 | #define AR5K_DIAG_SW_FRAME_NV0_5211 0x00020000 /* Accept frames of non-zero protocol number */ |
1432 | #define AR5K_DIAG_SW_FRAME_NV0 (ah->ah_version == AR5K_AR5210 ? \ | 1430 | #define AR5K_DIAG_SW_FRAME_NV0 (ah->ah_version == AR5K_AR5210 ? \ |
1433 | AR5K_DIAG_SW_FRAME_NV0_5210 : AR5K_DIAG_SW_FRAME_NV0_5211) | 1431 | AR5K_DIAG_SW_FRAME_NV0_5210 : AR5K_DIAG_SW_FRAME_NV0_5211) |
1434 | #define AR5K_DIAG_SW_OBSPT_M 0x000c0000 /* Observation point select (?) */ | 1432 | #define AR5K_DIAG_SW_OBSPT_M 0x000c0000 /* Observation point select (?) */ |
1435 | #define AR5K_DIAG_SW_OBSPT_S 18 | 1433 | #define AR5K_DIAG_SW_OBSPT_S 18 |
1436 | #define AR5K_DIAG_SW_RX_CLEAR_HIGH 0x0010000 /* Force RX Clear high */ | 1434 | #define AR5K_DIAG_SW_RX_CLEAR_HIGH 0x00100000 /* Ignore carrier sense */ |
1437 | #define AR5K_DIAG_SW_IGNORE_CARR_SENSE 0x0020000 /* Ignore virtual carrier sense */ | 1435 | #define AR5K_DIAG_SW_IGNORE_CARR_SENSE 0x00200000 /* Ignore virtual carrier sense */ |
1438 | #define AR5K_DIAG_SW_CHANEL_IDLE_HIGH 0x0040000 /* Force channel idle high */ | 1436 | #define AR5K_DIAG_SW_CHANNEL_IDLE_HIGH 0x00400000 /* Force channel idle high */ |
1439 | #define AR5K_DIAG_SW_PHEAR_ME 0x0080000 /* ??? */ | 1437 | #define AR5K_DIAG_SW_PHEAR_ME 0x00800000 /* ??? */ |
1440 | 1438 | ||
1441 | /* | 1439 | /* |
1442 | * TSF (clock) register (lower 32 bits) | 1440 | * TSF (clock) register (lower 32 bits) |
@@ -1822,50 +1820,8 @@ | |||
1822 | 1820 | ||
1823 | /*===5212 end===*/ | 1821 | /*===5212 end===*/ |
1824 | 1822 | ||
1825 | /* | ||
1826 | * Key table (WEP) register | ||
1827 | */ | ||
1828 | #define AR5K_KEYTABLE_0_5210 0x9000 | ||
1829 | #define AR5K_KEYTABLE_0_5211 0x8800 | ||
1830 | #define AR5K_KEYTABLE_5210(_n) (AR5K_KEYTABLE_0_5210 + ((_n) << 5)) | ||
1831 | #define AR5K_KEYTABLE_5211(_n) (AR5K_KEYTABLE_0_5211 + ((_n) << 5)) | ||
1832 | #define AR5K_KEYTABLE(_n) (ah->ah_version == AR5K_AR5210 ? \ | ||
1833 | AR5K_KEYTABLE_5210(_n) : AR5K_KEYTABLE_5211(_n)) | ||
1834 | #define AR5K_KEYTABLE_OFF(_n, x) (AR5K_KEYTABLE(_n) + (x << 2)) | ||
1835 | #define AR5K_KEYTABLE_TYPE(_n) AR5K_KEYTABLE_OFF(_n, 5) | ||
1836 | #define AR5K_KEYTABLE_TYPE_40 0x00000000 | ||
1837 | #define AR5K_KEYTABLE_TYPE_104 0x00000001 | ||
1838 | #define AR5K_KEYTABLE_TYPE_128 0x00000003 | ||
1839 | #define AR5K_KEYTABLE_TYPE_TKIP 0x00000004 /* [5212+] */ | ||
1840 | #define AR5K_KEYTABLE_TYPE_AES 0x00000005 /* [5211+] */ | ||
1841 | #define AR5K_KEYTABLE_TYPE_CCM 0x00000006 /* [5212+] */ | ||
1842 | #define AR5K_KEYTABLE_TYPE_NULL 0x00000007 /* [5211+] */ | ||
1843 | #define AR5K_KEYTABLE_ANTENNA 0x00000008 /* [5212+] */ | ||
1844 | #define AR5K_KEYTABLE_MAC0(_n) AR5K_KEYTABLE_OFF(_n, 6) | ||
1845 | #define AR5K_KEYTABLE_MAC1(_n) AR5K_KEYTABLE_OFF(_n, 7) | ||
1846 | #define AR5K_KEYTABLE_VALID 0x00008000 | ||
1847 | |||
1848 | /* If key type is TKIP and MIC is enabled | ||
1849 | * MIC key goes in offset entry + 64 */ | ||
1850 | #define AR5K_KEYTABLE_MIC_OFFSET 64 | ||
1851 | |||
1852 | /* WEP 40-bit = 40-bit entered key + 24 bit IV = 64-bit | ||
1853 | * WEP 104-bit = 104-bit entered key + 24-bit IV = 128-bit | ||
1854 | * WEP 128-bit = 128-bit entered key + 24 bit IV = 152-bit | ||
1855 | * | ||
1856 | * Some vendors have introduced bigger WEP keys to address | ||
1857 | * security vulnerabilities in WEP. This includes: | ||
1858 | * | ||
1859 | * WEP 232-bit = 232-bit entered key + 24 bit IV = 256-bit | ||
1860 | * | ||
1861 | * We can expand this if we find ar5k Atheros cards with a larger | ||
1862 | * key table size. | ||
1863 | */ | ||
1864 | #define AR5K_KEYTABLE_SIZE_5210 64 | 1823 | #define AR5K_KEYTABLE_SIZE_5210 64 |
1865 | #define AR5K_KEYTABLE_SIZE_5211 128 | 1824 | #define AR5K_KEYTABLE_SIZE_5211 128 |
1866 | #define AR5K_KEYTABLE_SIZE (ah->ah_version == AR5K_AR5210 ? \ | ||
1867 | AR5K_KEYTABLE_SIZE_5210 : AR5K_KEYTABLE_SIZE_5211) | ||
1868 | |||
1869 | 1825 | ||
1870 | /*===PHY REGISTERS===*/ | 1826 | /*===PHY REGISTERS===*/ |
1871 | 1827 | ||
@@ -1911,7 +1867,7 @@ | |||
1911 | #define AR5K_PHY_TURBO 0x9804 /* Register Address */ | 1867 | #define AR5K_PHY_TURBO 0x9804 /* Register Address */ |
1912 | #define AR5K_PHY_TURBO_MODE 0x00000001 /* Enable turbo mode */ | 1868 | #define AR5K_PHY_TURBO_MODE 0x00000001 /* Enable turbo mode */ |
1913 | #define AR5K_PHY_TURBO_SHORT 0x00000002 /* Set short symbols to turbo mode */ | 1869 | #define AR5K_PHY_TURBO_SHORT 0x00000002 /* Set short symbols to turbo mode */ |
1914 | #define AR5K_PHY_TURBO_MIMO 0x00000004 /* Set turbo for mimo mimo */ | 1870 | #define AR5K_PHY_TURBO_MIMO 0x00000004 /* Set turbo for mimo */ |
1915 | 1871 | ||
1916 | /* | 1872 | /* |
1917 | * PHY agility command register | 1873 | * PHY agility command register |
@@ -2102,6 +2058,7 @@ | |||
2102 | 2058 | ||
2103 | #define AR5K_PHY_SCAL 0x9878 | 2059 | #define AR5K_PHY_SCAL 0x9878 |
2104 | #define AR5K_PHY_SCAL_32MHZ 0x0000000e | 2060 | #define AR5K_PHY_SCAL_32MHZ 0x0000000e |
2061 | #define AR5K_PHY_SCAL_32MHZ_5311 0x00000008 | ||
2105 | #define AR5K_PHY_SCAL_32MHZ_2417 0x0000000a | 2062 | #define AR5K_PHY_SCAL_32MHZ_2417 0x0000000a |
2106 | #define AR5K_PHY_SCAL_32MHZ_HB63 0x00000032 | 2063 | #define AR5K_PHY_SCAL_32MHZ_HB63 0x00000032 |
2107 | 2064 | ||
@@ -2288,6 +2245,8 @@ | |||
2288 | #define AR5K_PHY_FRAME_CTL (ah->ah_version == AR5K_AR5210 ? \ | 2245 | #define AR5K_PHY_FRAME_CTL (ah->ah_version == AR5K_AR5210 ? \ |
2289 | AR5K_PHY_FRAME_CTL_5210 : AR5K_PHY_FRAME_CTL_5211) | 2246 | AR5K_PHY_FRAME_CTL_5210 : AR5K_PHY_FRAME_CTL_5211) |
2290 | /*---[5111+]---*/ | 2247 | /*---[5111+]---*/ |
2248 | #define AR5K_PHY_FRAME_CTL_WIN_LEN 0x00000003 /* Force window length (?) */ | ||
2249 | #define AR5K_PHY_FRAME_CTL_WIN_LEN_S 0 | ||
2291 | #define AR5K_PHY_FRAME_CTL_TX_CLIP 0x00000038 /* Mask for tx clip (?) */ | 2250 | #define AR5K_PHY_FRAME_CTL_TX_CLIP 0x00000038 /* Mask for tx clip (?) */ |
2292 | #define AR5K_PHY_FRAME_CTL_TX_CLIP_S 3 | 2251 | #define AR5K_PHY_FRAME_CTL_TX_CLIP_S 3 |
2293 | #define AR5K_PHY_FRAME_CTL_PREP_CHINFO 0x00010000 /* Prepend chan info */ | 2252 | #define AR5K_PHY_FRAME_CTL_PREP_CHINFO 0x00010000 /* Prepend chan info */ |
@@ -2602,3 +2561,28 @@ | |||
2602 | */ | 2561 | */ |
2603 | #define AR5K_PHY_PDADC_TXPOWER_BASE 0xa280 | 2562 | #define AR5K_PHY_PDADC_TXPOWER_BASE 0xa280 |
2604 | #define AR5K_PHY_PDADC_TXPOWER(_n) (AR5K_PHY_PDADC_TXPOWER_BASE + ((_n) << 2)) | 2563 | #define AR5K_PHY_PDADC_TXPOWER(_n) (AR5K_PHY_PDADC_TXPOWER_BASE + ((_n) << 2)) |
2564 | |||
2565 | /* | ||
2566 | * Platform registers for WiSoC | ||
2567 | */ | ||
2568 | #define AR5K_AR5312_RESET 0xbc003020 | ||
2569 | #define AR5K_AR5312_RESET_BB0_COLD 0x00000004 | ||
2570 | #define AR5K_AR5312_RESET_BB1_COLD 0x00000200 | ||
2571 | #define AR5K_AR5312_RESET_WMAC0 0x00002000 | ||
2572 | #define AR5K_AR5312_RESET_BB0_WARM 0x00004000 | ||
2573 | #define AR5K_AR5312_RESET_WMAC1 0x00020000 | ||
2574 | #define AR5K_AR5312_RESET_BB1_WARM 0x00040000 | ||
2575 | |||
2576 | #define AR5K_AR5312_ENABLE 0xbc003080 | ||
2577 | #define AR5K_AR5312_ENABLE_WLAN0 0x00000001 | ||
2578 | #define AR5K_AR5312_ENABLE_WLAN1 0x00000008 | ||
2579 | |||
2580 | #define AR5K_AR2315_RESET 0xb1000004 | ||
2581 | #define AR5K_AR2315_RESET_WMAC 0x00000001 | ||
2582 | #define AR5K_AR2315_RESET_BB_WARM 0x00000002 | ||
2583 | |||
2584 | #define AR5K_AR2315_AHB_ARB_CTL 0xb1000008 | ||
2585 | #define AR5K_AR2315_AHB_ARB_CTL_WLAN 0x00000002 | ||
2586 | |||
2587 | #define AR5K_AR2315_BYTESWAP 0xb100000c | ||
2588 | #define AR5K_AR2315_BYTESWAP_WMAC 0x00000002 | ||