Changeset 2365
- Timestamp:
- 05/23/07 02:41:02 (2 years ago)
- Files:
-
- branches/madwifi-old-openhal/openhal/ath5k_hw.c (modified) (112 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
branches/madwifi-old-openhal/openhal/ath5k_hw.c
r2364 r2365 39 39 * From pcidevs_data.h 40 40 */ 41 { PCI_VENDOR_ATHEROS, PCI_PRODUCT_ATHEROS_AR5210,AR5K_AR5210},42 { PCI_VENDOR_ATHEROS, PCI_PRODUCT_ATHEROS_AR5210_AP,AR5K_AR5210},43 { PCI_VENDOR_ATHEROS, PCI_PRODUCT_ATHEROS_AR5210_DEFAULT,AR5K_AR5210},44 { PCI_VENDOR_ATHEROS, PCI_PRODUCT_ATHEROS_AR5211,AR5K_AR5211},45 { PCI_VENDOR_ATHEROS, PCI_PRODUCT_ATHEROS_AR5211_DEFAULT,AR5K_AR5211},46 { PCI_VENDOR_ATHEROS, PCI_PRODUCT_ATHEROS_AR5311,AR5K_AR5211},47 { PCI_VENDOR_ATHEROS, PCI_PRODUCT_ATHEROS_AR5211_FPGA11B,AR5K_AR5211},48 { PCI_VENDOR_ATHEROS, PCI_PRODUCT_ATHEROS_AR5211_LEGACY,AR5K_AR5211},49 { PCI_VENDOR_ATHEROS, PCI_PRODUCT_ATHEROS_AR5212,AR5K_AR5212},50 { PCI_VENDOR_ATHEROS, PCI_PRODUCT_ATHEROS_AR5212_DEFAULT,AR5K_AR5212},51 { PCI_VENDOR_ATHEROS, PCI_PRODUCT_ATHEROS_AR5212_FPGA,AR5K_AR5212},52 { PCI_VENDOR_ATHEROS, PCI_PRODUCT_ATHEROS_AR5212_IBM,AR5K_AR5212},53 { PCI_VENDOR_3COM, PCI_PRODUCT_3COM_3CRDAG675,AR5K_AR5212},54 { PCI_VENDOR_3COM2, PCI_PRODUCT_3COM2_3CRPAG175,AR5K_AR5212},55 { PCI_VENDOR_ATHEROS, PCI_PRODUCT_ATHEROS_AR5212_REV2,AR5K_AR5212},56 { PCI_VENDOR_ATHEROS, PCI_PRODUCT_ATHEROS_AR5212_REV7,AR5K_AR5212},57 { PCI_VENDOR_ATHEROS, PCI_PRODUCT_ATHEROS_AR5212_REV8,AR5K_AR5212},58 { PCI_VENDOR_ATHEROS, PCI_PRODUCT_ATHEROS_AR5212_0014,AR5K_AR5212},59 { PCI_VENDOR_ATHEROS, PCI_PRODUCT_ATHEROS_AR5212_0015,AR5K_AR5212},60 { PCI_VENDOR_ATHEROS, PCI_PRODUCT_ATHEROS_AR5212_0016,AR5K_AR5212},61 { PCI_VENDOR_ATHEROS, PCI_PRODUCT_ATHEROS_AR5212_0017,AR5K_AR5212},62 { PCI_VENDOR_ATHEROS, PCI_PRODUCT_ATHEROS_AR5212_0018,AR5K_AR5212},63 { PCI_VENDOR_ATHEROS, PCI_PRODUCT_ATHEROS_AR5212_0019,AR5K_AR5212},64 { PCI_VENDOR_ATHEROS, PCI_PRODUCT_ATHEROS_AR2413,AR5K_AR5212},65 { PCI_VENDOR_ATHEROS, PCI_PRODUCT_ATHEROS_AR5413,AR5K_AR5212},66 { PCI_VENDOR_ATHEROS, PCI_PRODUCT_ATHEROS_AR5424,AR5K_AR5212},41 { PCI_VENDOR_ATHEROS, PCI_PRODUCT_ATHEROS_AR5210, AR5K_AR5210}, 42 { PCI_VENDOR_ATHEROS, PCI_PRODUCT_ATHEROS_AR5210_AP, AR5K_AR5210}, 43 { PCI_VENDOR_ATHEROS, PCI_PRODUCT_ATHEROS_AR5210_DEFAULT, AR5K_AR5210}, 44 { PCI_VENDOR_ATHEROS, PCI_PRODUCT_ATHEROS_AR5211, AR5K_AR5211}, 45 { PCI_VENDOR_ATHEROS, PCI_PRODUCT_ATHEROS_AR5211_DEFAULT, AR5K_AR5211}, 46 { PCI_VENDOR_ATHEROS, PCI_PRODUCT_ATHEROS_AR5311, AR5K_AR5211}, 47 { PCI_VENDOR_ATHEROS, PCI_PRODUCT_ATHEROS_AR5211_FPGA11B, AR5K_AR5211}, 48 { PCI_VENDOR_ATHEROS, PCI_PRODUCT_ATHEROS_AR5211_LEGACY, AR5K_AR5211}, 49 { PCI_VENDOR_ATHEROS, PCI_PRODUCT_ATHEROS_AR5212, AR5K_AR5212}, 50 { PCI_VENDOR_ATHEROS, PCI_PRODUCT_ATHEROS_AR5212_DEFAULT, AR5K_AR5212}, 51 { PCI_VENDOR_ATHEROS, PCI_PRODUCT_ATHEROS_AR5212_FPGA, AR5K_AR5212}, 52 { PCI_VENDOR_ATHEROS, PCI_PRODUCT_ATHEROS_AR5212_IBM, AR5K_AR5212}, 53 { PCI_VENDOR_3COM, PCI_PRODUCT_3COM_3CRDAG675, AR5K_AR5212}, 54 { PCI_VENDOR_3COM2, PCI_PRODUCT_3COM2_3CRPAG175, AR5K_AR5212}, 55 { PCI_VENDOR_ATHEROS, PCI_PRODUCT_ATHEROS_AR5212_REV2, AR5K_AR5212}, 56 { PCI_VENDOR_ATHEROS, PCI_PRODUCT_ATHEROS_AR5212_REV7, AR5K_AR5212}, 57 { PCI_VENDOR_ATHEROS, PCI_PRODUCT_ATHEROS_AR5212_REV8, AR5K_AR5212}, 58 { PCI_VENDOR_ATHEROS, PCI_PRODUCT_ATHEROS_AR5212_0014, AR5K_AR5212}, 59 { PCI_VENDOR_ATHEROS, PCI_PRODUCT_ATHEROS_AR5212_0015, AR5K_AR5212}, 60 { PCI_VENDOR_ATHEROS, PCI_PRODUCT_ATHEROS_AR5212_0016, AR5K_AR5212}, 61 { PCI_VENDOR_ATHEROS, PCI_PRODUCT_ATHEROS_AR5212_0017, AR5K_AR5212}, 62 { PCI_VENDOR_ATHEROS, PCI_PRODUCT_ATHEROS_AR5212_0018, AR5K_AR5212}, 63 { PCI_VENDOR_ATHEROS, PCI_PRODUCT_ATHEROS_AR5212_0019, AR5K_AR5212}, 64 { PCI_VENDOR_ATHEROS, PCI_PRODUCT_ATHEROS_AR2413, AR5K_AR5212}, 65 { PCI_VENDOR_ATHEROS, PCI_PRODUCT_ATHEROS_AR5413, AR5K_AR5212}, 66 { PCI_VENDOR_ATHEROS, PCI_PRODUCT_ATHEROS_AR5424, AR5K_AR5212}, 67 67 }; 68 68 … … 160 160 /* 161 161 * Calculate transmition time of a frame 162 * TODO: Left here for combatibility, change it in at5k163 */ 164 u_int16_t /*TODO: Is this real y hardware dependent ?*/162 * TODO: Left here for combatibility, change it in ath5k 163 */ 164 u_int16_t /*TODO: Is this really hardware dependent ?*/ 165 165 ath_hal_computetxtime(struct ath_hal *hal, const AR5K_RATE_TABLE *rates, 166 166 u_int32_t frame_length, u_int16_t rate_index, AR5K_BOOL short_preamble) … … 450 450 hal->ah_mac_version = AR5K_REG_MS(srev, AR5K_SREV_VER); 451 451 hal->ah_mac_revision = AR5K_REG_MS(srev, AR5K_SREV_REV); 452 hal->ah_phy_revision = AR5K_REG_READ(AR5K_PHY_CHIP_ID) &453 0x00ffffffff;452 hal->ah_phy_revision = 453 AR5K_REG_READ(AR5K_PHY_CHIP_ID) & 0x00ffffffff; 454 454 hal->ah_radio_5ghz_revision = 455 ath5k_hw_radio_revision(hal, AR5K_CHIP_5GHZ);456 457 if (hal->ah_version == AR5K_AR5210){455 ath5k_hw_radio_revision(hal, AR5K_CHIP_5GHZ); 456 457 if (hal->ah_version == AR5K_AR5210) { 458 458 hal->ah_radio_2ghz_revision = 0; 459 459 } else { … … 467 467 468 468 /* Identify the radio chip*/ 469 if (hal->ah_version == AR5K_AR5210){469 if (hal->ah_version == AR5K_AR5210) 470 470 hal->ah_radio = AR5K_RF5110; 471 } else {471 else 472 472 hal->ah_radio = hal->ah_radio_5ghz_revision < AR5K_SREV_RAD_5112 ? 473 473 AR5K_RF5111 : AR5K_RF5112; 474 }475 474 476 475 hal->ah_phy = AR5K_PHY(0); … … 569 568 AR5K_TRACE; 570 569 571 if (hal->ah_version != AR5K_AR5210) {570 if (hal->ah_version != AR5K_AR5210) { 572 571 /* 573 572 * Get channel mode flags … … 599 598 } else if (flags & CHANNEL_DYN) { 600 599 /* Dynamic OFDM/CCK is not supported by the AR5211 */ 601 if (hal->ah_version == AR5K_AR5211) {600 if (hal->ah_version == AR5K_AR5211) { 602 601 mode |= AR5K_PHY_MODE_MOD_CCK; 603 } else{602 } else { 604 603 mode |= AR5K_PHY_MODE_MOD_DYN; 605 604 } … … 620 619 621 620 else { 622 if (initial == TRUE){621 if (initial == TRUE) { 623 622 /* ...reset hardware */ 624 623 if (ath5k_hw_nic_reset(hal, … … 720 719 AR5K_REG_WRITE(AR5K_PHY(0x20), 0x00010000); 721 720 722 if (hal->ah_version == AR5K_AR5210){721 if (hal->ah_version == AR5K_AR5210) { 723 722 srev = AR5K_REG_READ(AR5K_PHY(256) >> 28) & 0xf; 724 723 … … 815 814 */ 816 815 /*DCU/Antenna selection not available on 5210*/ 817 if (hal->ah_version != AR5K_AR5210){816 if (hal->ah_version != AR5K_AR5210) { 818 817 if (change_channel == TRUE) { 819 818 /*Sequence number for queue 0 -do this for all queues ?*/ … … 848 847 * 5210 only comes with RF5110 849 848 */ 850 if (hal->ah_version != AR5K_AR5210){851 if (hal->ah_radio == AR5K_RF5111) {849 if (hal->ah_version != AR5K_AR5210) { 850 if (hal->ah_radio == AR5K_RF5111) 852 851 phy = AR5K_INI_PHY_5111; 853 } else if (hal->ah_radio == AR5K_RF5112) {852 else if (hal->ah_radio == AR5K_RF5112) 854 853 phy = AR5K_INI_PHY_5112; 855 }else {854 else { 856 855 AR5K_PRINTF("invalid phy radio: %u\n", hal->ah_radio); 857 856 *status = AR5K_EINVAL; … … 887 886 break; 888 887 case CHANNEL_XR: 889 if (hal->ah_version == AR5K_AR5211){888 if (hal->ah_version == AR5K_AR5211) { 890 889 AR5K_PRINTF("XR mode not available on 5211"); 891 890 return (FALSE); … … 908 907 * do we need that ? Is ath5k_hw_rfregs going to work for 5211 (5111) ? 909 908 */ 910 if (hal->ah_version == AR5K_AR5211){909 if (hal->ah_version == AR5K_AR5211) 911 910 ath5k_hw_ar5211_rfregs(hal, channel, freq, ee_mode); 912 }913 911 } 914 912 … … 918 916 */ 919 917 /*For 5212*/ 920 if (hal->ah_version == AR5K_AR5212){918 if (hal->ah_version == AR5K_AR5212) { 921 919 for (i = 0; i < AR5K_ELEMENTS(ar5212_mode); i++) { 922 920 if (ar5212_mode[i].mode_flags == AR5K_INI_FLAG_511X) … … 937 935 } 938 936 /*For 5211*/ 939 if (hal->ah_version == AR5K_AR5211){937 if (hal->ah_version == AR5K_AR5211) { 940 938 for (i = 0; i < AR5K_ELEMENTS(ar5211_mode); i++) { 941 939 AR5K_REG_WAIT(i); … … 950 948 */ 951 949 /*For 5212*/ 952 if (hal->ah_version == AR5K_AR5212){950 if (hal->ah_version == AR5K_AR5212) { 953 951 for (i = 0; i < AR5K_ELEMENTS(ar5212_ini); i++) { 954 952 if (change_channel == TRUE && … … 968 966 } 969 967 /*For 5211*/ 970 if (hal->ah_version == AR5K_AR5211){968 if (hal->ah_version == AR5K_AR5211) { 971 969 for (i = 0; i < AR5K_ELEMENTS(ar5211_ini); i++) { 972 970 if (change_channel == TRUE && … … 981 979 } 982 980 /*For 5210*/ 983 if (hal->ah_version == AR5K_AR5210)981 if (hal->ah_version == AR5K_AR5210) 984 982 for (i = 0; i < AR5K_ELEMENTS(ar5210_ini); i++) { 985 983 if (change_channel == TRUE && … … 1004 1002 * 5211/5212 Specific 1005 1003 */ 1006 if (hal->ah_version != AR5K_AR5210){1004 if (hal->ah_version != AR5K_AR5210) { 1007 1005 /* 1008 1006 * Write initial RF gain settings … … 1019 1017 * Set rate duration table on 5212 1020 1018 */ 1021 if (hal->ah_version == AR5K_AR5212){1019 if (hal->ah_version == AR5K_AR5212) { 1022 1020 1023 1021 /*For 802.11b*/ … … 1094 1092 1095 1093 /* Write OFDM timings on 5212*/ 1096 if (hal->ah_version == AR5K_AR5212){1094 if (hal->ah_version == AR5K_AR5212) { 1097 1095 if (channel->channel_flags & CHANNEL_OFDM) { 1098 1096 u_int32_t coef_scaled, coef_exp, coef_man, ds_coef_exp, … … 1199 1197 */ 1200 1198 /*DCU/Antenna selection not available on 5210*/ 1201 if (hal->ah_version != AR5K_AR5210){1199 if (hal->ah_version != AR5K_AR5210) { 1202 1200 AR5K_REG_WRITE(AR5K_QUEUE_DFS_SEQNUM(0), s_seq); 1203 1201 AR5K_REG_WRITE(AR5K_DEFAULT_ANTENNA, s_ant); … … 1214 1212 ath5k_hw_set_opmode(hal); 1215 1213 /*PISR/SISR Not available on 5210*/ 1216 if (hal->ah_version != AR5K_AR5210){1214 if (hal->ah_version != AR5K_AR5210) { 1217 1215 AR5K_REG_WRITE(AR5K_PISR, 0xffffffff); 1218 1216 AR5K_REG_WRITE(AR5K_RSSI_THR, AR5K_TUNE_RSSI_THRES); … … 1223 1221 *(passing dma size not available on 5210) 1224 1222 */ 1225 if (hal->ah_version != AR5K_AR5210){1223 if (hal->ah_version != AR5K_AR5210) { 1226 1224 AR5K_REG_WRITE_BITS(AR5K_TXCFG, AR5K_TXCFG_SDMAMR, 1227 1225 AR5K_DMASIZE_512B | AR5K_TXCFG_DMASIZE); … … 1246 1244 * 5111/5112 Specific 1247 1245 */ 1248 if (hal->ah_version != AR5K_AR5210){1246 if (hal->ah_version != AR5K_AR5210) { 1249 1247 data = AR5K_REG_READ(AR5K_PHY_RX_DELAY) & AR5K_PHY_RX_DELAY_M; 1250 1248 data = (channel->channel_flags & CHANNEL_CCK) ? … … 1316 1314 for (i = 0; i < hal->ah_capabilities.cap_queues.q_tx_num; i++) { 1317 1315 /*No QCU on 5210*/ 1318 if (hal->ah_version != AR5K_AR5210){1316 if (hal->ah_version != AR5K_AR5210) 1319 1317 AR5K_REG_WRITE_Q(AR5K_QUEUE_QCUMASK(i), i); 1320 } 1318 1321 1319 if (ath5k_hw_reset_tx_queue(hal, i) == FALSE) { 1322 1320 AR5K_PRINTF("failed to reset TX queue #%d\n", i); … … 1327 1325 1328 1326 /* Pre-enable interrupts on 5211/5212*/ 1329 if (hal->ah_version != AR5K_AR5210){1327 if (hal->ah_version != AR5K_AR5210) { 1330 1328 ath5k_hw_set_intr(hal, AR5K_INT_RX | AR5K_INT_TX | AR5K_INT_FATAL); 1331 1329 } … … 1334 1332 * Set RF kill flags if supported by the device (read from the EEPROM) 1335 1333 * Disable gpio_intr for now since it results system hang. 1336 * TODO:Handle this in ath_intr 1337 */ 1338 /* if (AR5K_EEPROM_HDR_RFKILL(hal->ah_capabilities.cap_eeprom.ee_header)) { 1334 * TODO: Handle this in ath_intr 1335 */ 1336 #if 0 1337 if (AR5K_EEPROM_HDR_RFKILL(hal->ah_capabilities.cap_eeprom.ee_header)) { 1339 1338 ath5k_hw_set_gpio_input(hal, 0); 1340 1339 if ((hal->ah_gpio[0] = ath5k_hw_get_gpio(hal, 0)) == 0) … … 1343 1342 ath5k_hw_set_gpio_intr(hal, 0, 0); 1344 1343 } 1345 */ 1344 #endif 1346 1345 1347 1346 /* 1348 1347 * Set the 32MHz reference clock on 5212 phy clock sleep register 1349 1348 */ 1350 if (hal->ah_version == AR5K_AR5212){1349 if (hal->ah_version == AR5K_AR5212) { 1351 1350 AR5K_REG_WRITE(AR5K_PHY_SCR, AR5K_PHY_SCR_32MHZ); 1352 1351 AR5K_REG_WRITE(AR5K_PHY_SLMT, AR5K_PHY_SLMT_32MHZ); … … 1389 1388 AR5K_DELAY(15); 1390 1389 1391 if (hal->ah_version == AR5K_AR5210){1390 if (hal->ah_version == AR5K_AR5210) { 1392 1391 val &= AR5K_RESET_CTL_CHIP; 1393 1392 mask &= AR5K_RESET_CTL_CHIP; … … 1576 1575 AR5K_ASSERT_ENTRY(queue, hal->ah_capabilities.cap_queues.q_tx_num); 1577 1576 1578 if (hal->ah_version == AR5K_AR5210){1577 if (hal->ah_version == AR5K_AR5210) { 1579 1578 1580 1579 tx_queue = AR5K_REG_READ(AR5K_CR); … … 1630 1629 AR5K_ASSERT_ENTRY(queue, hal->ah_capabilities.cap_queues.q_tx_num); 1631 1630 1632 if (hal->ah_version == AR5K_AR5210){1631 if (hal->ah_version == AR5K_AR5210) { 1633 1632 tx_queue = AR5K_REG_READ(AR5K_CR); 1634 1633 … … 1688 1687 */ 1689 1688 /*5210 doesn't have QCU*/ 1690 if (hal->ah_version == AR5K_AR5210){1689 if (hal->ah_version == AR5K_AR5210) { 1691 1690 switch (hal->ah_txq[queue].tqi_type) { 1692 1691 case AR5K_TX_QUEUE_DATA: … … 1722 1721 * on 5210 1723 1722 */ 1724 if (hal->ah_version == AR5K_AR5210){1723 if (hal->ah_version == AR5K_AR5210) { 1725 1724 switch (hal->ah_txq[queue].tqi_type) { 1726 1725 case AR5K_TX_QUEUE_DATA: … … 1781 1780 * Update trigger level on success 1782 1781 */ 1783 if (hal->ah_version == AR5K_AR5210){1782 if (hal->ah_version == AR5K_AR5210) 1784 1783 AR5K_REG_WRITE(AR5K_TRIG_LVL, trigger_level); 1785 } else {1784 else 1786 1785 AR5K_REG_WRITE_BITS(AR5K_TXCFG, 1787 1786 AR5K_TXCFG_TXFULL, trigger_level); 1788 }1789 1787 1790 1788 status = TRUE; … … 1827 1825 * on 5210 1828 1826 */ 1829 if (hal->ah_version == AR5K_AR5210){1827 if (hal->ah_version == AR5K_AR5210) { 1830 1828 if ((data = AR5K_REG_READ(AR5K_ISR)) == AR5K_INT_NOCARD) { 1831 1829 *interrupt_mask = data; … … 1853 1851 *interrupt_mask |= AR5K_INT_TX; 1854 1852 1855 if (hal->ah_version != AR5K_AR5210){1853 if (hal->ah_version != AR5K_AR5210) { 1856 1854 /*HIU = Host Interface Unit (PCI etc)*/ 1857 1855 if (data & (AR5K_ISR_HIUERR)) … … 1871 1869 1872 1870 /* 1873 * XXX: BMISS interrupts may occur after association 1874 * i found this on 5210 code but it needs testing 1875 */ 1876 //*interrupt_mask &= ~AR5K_INT_BMISS; 1871 * XXX: BMISS interrupts may occur after association. 1872 * I found this on 5210 code but it needs testing 1873 */ 1874 #if 0 1875 interrupt_mask &= ~AR5K_INT_BMISS; 1876 #endif 1877 1877 1878 1878 /* … … 1933 1933 AR5K_IMR_TXURN; 1934 1934 1935 if (hal->ah_version != AR5K_AR5210){1935 if (hal->ah_version != AR5K_AR5210) { 1936 1936 if (new_mask & AR5K_INT_FATAL) { 1937 1937 int_mask |= AR5K_IMR_HIUERR; … … 1973 1973 * possible radar activity. 1974 1974 */ 1975 if (hal->ah_version == AR5K_AR5210){1975 if (hal->ah_version == AR5K_AR5210) { 1976 1976 if (enable == TRUE) { 1977 1977 AR5K_REG_ENABLE_BITS(AR5K_IMR, … … 2030 2030 * Initialize EEPROM access 2031 2031 */ 2032 if (hal->ah_version == AR5K_AR5210){2032 if (hal->ah_version == AR5K_AR5210) { 2033 2033 AR5K_REG_ENABLE_BITS(AR5K_PCICFG, AR5K_PCICFG_EEAE); 2034 2034 (void)AR5K_REG_READ(AR5K_EEPROM_BASE + (4 * offset)); … … 2069 2069 */ 2070 2070 2071 if (hal->ah_version == AR5K_AR5210){2071 if (hal->ah_version == AR5K_AR5210) { 2072 2072 AR5K_REG_ENABLE_BITS(AR5K_PCICFG, AR5K_PCICFG_EEAE); 2073 2073 } else { … … 2079 2079 */ 2080 2080 2081 if (hal->ah_version == AR5K_AR5210){2081 if (hal->ah_version == AR5K_AR5210) { 2082 2082 AR5K_REG_WRITE(AR5K_EEPROM_BASE + (4 * offset), data); 2083 2083 } else { … … 2171 2171 (ee->ee_ant_control[mode][0] << 4) | 0x1; 2172 2172 hal->ah_antenna[mode][AR5K_ANT_FIXED_A] = 2173 ee->ee_ant_control[mode][1]|2174 (ee->ee_ant_control[mode][2] << 6) |2173 ee->ee_ant_control[mode][1] | 2174 (ee->ee_ant_control[mode][2] << 6) | 2175 2175 (ee->ee_ant_control[mode][3] << 12) | 2176 2176 (ee->ee_ant_control[mode][4] << 18) | 2177 2177 (ee->ee_ant_control[mode][5] << 24); 2178 2178 hal->ah_antenna[mode][AR5K_ANT_FIXED_B] = 2179 ee->ee_ant_control[mode][6]|2180 (ee->ee_ant_control[mode][7] << 6) |2179 ee->ee_ant_control[mode][6] | 2180 (ee->ee_ant_control[mode][7] << 6) | 2181 2181 (ee->ee_ant_control[mode][8] << 12) | 2182 2182 (ee->ee_ant_control[mode][9] << 18) | … … 2570 2570 ee_header = hal->ah_capabilities.cap_eeprom.ee_header; 2571 2571 2572 if (hal->ah_version == AR5K_AR5210){2572 if (hal->ah_version == AR5K_AR5210) { 2573 2573 /* 2574 2574 * Set radio capabilities … … 2624 2624 2625 2625 /* Set number of supported TX queues */ 2626 if (hal->ah_version == AR5K_AR5210){2626 if (hal->ah_version == AR5K_AR5210) 2627 2627 hal->ah_capabilities.cap_queues.q_tx_num = AR5K_NUM_TX_QUEUES_NOQCU; 2628 } else {2628 else 2629 2629 hal->ah_capabilities.cap_queues.q_tx_num = AR5K_NUM_TX_QUEUES; 2630 }2631 2630 2632 2631 return (TRUE); … … 2693 2692 * Set Beacon Control Register on 5210 2694 2693 */ 2695 if (hal->ah_version == AR5K_AR5210){2694 if (hal->ah_version == AR5K_AR5210) 2696 2695 AR5K_REG_WRITE(AR5K_BCR, beacon_reg); 2697 }2698 2696 2699 2697 return; … … 2756 2754 * Set simple BSSID mask on 5212 2757 2755 */ 2758 if (hal->ah_version == AR5K_AR5212){2756 if (hal->ah_version == AR5K_AR5212) { 2759 2757 AR5K_REG_WRITE(AR5K_BSS_IDM0, 0xfffffff); 2760 2758 AR5K_REG_WRITE(AR5K_BSS_IDM1, 0xfffffff); … … 2791 2789 AR5K_TRACE; 2792 2790 2793 if (hal->ah_version == AR5K_AR5212){2791 if (hal->ah_version == AR5K_AR5212) { 2794 2792 2795 2793 low_id = AR5K_LOW_ID(mask); … … 2800 2798 2801 2799 return (TRUE); 2802 } else {2800 } else 2803 2801 return (FALSE); 2804 }2805 2802 } 2806 2803 … … 2854 2851 2855 2852 AR5K_TRACE; 2856 if (index >= 64) {2853 if (index >= 64) 2857 2854 return (FALSE); 2858 } else if (index >= 32) {2855 else if (index >= 32) 2859 2856 AR5K_REG_ENABLE_BITS(AR5K_MCAST_FILTER1, 2860 2857 (1 << (index - 32))); 2861 } else {2858 else 2862 2859 AR5K_REG_ENABLE_BITS(AR5K_MCAST_FILTER0, 2863 2860 (1 << index)); 2864 }2865 2861 2866 2862 return (TRUE); … … 2875 2871 2876 2872 AR5K_TRACE; 2877 if (index >= 64) {2873 if (index >= 64) 2878 2874 return (FALSE); 2879 } else if (index >= 32) {2875 else if (index >= 32) 2880 2876 AR5K_REG_DISABLE_BITS(AR5K_MCAST_FILTER1, 2881 2877 (1 << (index - 32))); 2882 } else {2878 else 2883 2879 AR5K_REG_DISABLE_BITS(AR5K_MCAST_FILTER0, 2884 2880 (1 << index)); 2885 }2886 2881 2887 2882 return (TRUE); … … 2900 2895 2901 2896 /*Radar detection for 5212*/ 2902 if (hal->ah_version == AR5K_AR5212){2897 if (hal->ah_version == AR5K_AR5212) { 2903 2898 data = AR5K_REG_READ(AR5K_PHY_ERR_FIL); 2904 2899 … … 2924 2919 2925 2920 /* Set PHY error filter register on 5212*/ 2926 if (hal->ah_version == AR5K_AR5212){2921 if (hal->ah_version == AR5K_AR5212) { 2927 2922 if (filter & AR5K_RX_FILTER_PHYRADAR) 2928 2923 data |= AR5K_PHY_ERR_FIL_RADAR; … … 2935 2930 * The AR5210 uses promiscous mode to detect radar activity 2936 2931 */ 2937 if ((hal->ah_version == AR5K_AR5210) &&2938 (filter & AR5K_RX_FILTER_PHYRADAR)){2932 if ((hal->ah_version == AR5K_AR5210) && 2933 (filter & AR5K_RX_FILTER_PHYRADAR)) { 2939 2934 filter &= ~AR5K_RX_FILTER_PHYRADAR; 2940 2935 filter |= AR5K_RX_FILTER_PROM; … … 2942 2937 2943 2938 /*Zero length DMA*/ 2944 if (data) {2939 if (data) 2945 2940 AR5K_REG_ENABLE_BITS(AR5K_RXCFG, 2946 2941 AR5K_RXCFG_ZLFDMA); 2947 } else {2942 else 2948 2943 AR5K_REG_DISABLE_BITS(AR5K_RXCFG, 2949 2944 AR5K_RXCFG_ZLFDMA); 2950 }2951 2945 2952 2946 /*Write RX Filter register*/ … … 2954 2948 2955 2949 /*Write PHY error filter register on 5212*/ 2956 if (hal->ah_version == AR5K_AR5212){2950 if (hal->ah_version == AR5K_AR5212) 2957 2951 AR5K_REG_WRITE(AR5K_PHY_ERR_FIL, data); 2958 }2959 2952 2960 2953 } … … 3012 3005 switch (hal->ah_op_mode) { 3013 3006 case AR5K_M_STA: 3014 if (hal->ah_version == AR5K_AR5210){3007 if (hal->ah_version == AR5K_AR5210) { 3015 3008 timer1 = 0xffffffff; 3016 3009 timer2 = 0xffffffff; … … 3137 3130 * Set enhanced sleep registers on 5212 3138 3131 */ 3139 if (hal->ah_version == AR5K_AR5212){3132 if (hal->ah_version == AR5K_AR5212) { 3140 3133 if ((state->bs_sleep_duration > state->bs_interval) && 3141 3134 (roundup(state->bs_sleep_duration, interval) == … … 3206 3199 3207 3200 /* 5210 doesn't have QCU*/ 3208 if (hal->ah_version == AR5K_AR5210){3201 if (hal->ah_version == AR5K_AR5210) { 3209 3202 /* 3210 3203 * Wait for beaconn queue to finish by checking … … 3255 3248 3256 3249 /* Reset profile count registers on 5212*/ 3257 if (hal->ah_version == AR5K_AR5212){3250 if (hal->ah_version == AR5K_AR5212) { 3258 3251 AR5K_REG_WRITE(AR5K_PROFCNT_TX, 0); 3259 3252 AR5K_REG_WRITE(AR5K_PROFCNT_RX, 0); … … 3375 3368 3376 3369 /* Set NULL encryption on non-5210*/ 3377 if (hal->ah_version != AR5K_AR5210){3370 if (hal->ah_version != AR5K_AR5210) 3378 3371 AR5K_REG_WRITE(AR5K_KEYTABLE_TYPE(entry), 3379 3372 AR5K_KEYTABLE_TYPE_NULL); 3380 }3381 3373 3382 3374 return (FALSE); /*????*/ … … 3499 3491 */ 3500 3492 /*5210 only has 2 queues*/ 3501 if (hal->ah_version == AR5K_AR5210){3493 if (hal->ah_version == AR5K_AR5210) { 3502 3494 switch (queue_type) { 3503 3495 case AR5K_TX_QUEUE_DATA: … … 3512 3504 } 3513 3505 } else { 3514 switch (queue_type){3506 switch (queue_type) { 3515 3507 case AR5K_TX_QUEUE_DATA: 3516 3508 for (queue = AR5K_TX_QUEUE_ID_DATA_MIN; 3517 hal->ah_txq[queue].tqi_type != AR5K_TX_QUEUE_INACTIVE; 3518 queue++){ 3509 hal->ah_txq[queue].tqi_type != 3510 AR5K_TX_QUEUE_INACTIVE; queue++) { 3511 3519 3512 if (queue > AR5K_TX_QUEUE_ID_DATA_MAX) 3520 3513 return (-1); … … 3531 3524 break; 3532 3525 case AR5K_TX_QUEUE_XR_DATA: 3533 if (hal->ah_version != AR5K_AR5212)3526 if (hal->ah_version != AR5K_AR5212) 3534 3527 AR5K_PRINTF("XR data queues only supported in 5212!"); 3535 3528 queue = AR5K_TX_QUEUE_ID_XR_DATA; … … 3636 3629 return (TRUE); 3637 3630 3638 if (hal->ah_version == AR5K_AR5210){3631 if (hal->ah_version == AR5K_AR5210) { 3639 3632 /* Only handle data queues, others will be ignored */ 3640 3633 if (tq->tqi_type != AR5K_TX_QUEUE_DATA) … … 3658 3651 /*XR is only supported on 5212*/ 3659 3652 if (IS_CHAN_XR(hal->ah_current_channel) 3660 && (hal->ah_version == AR5K_AR5212)) {3653 && (hal->ah_version == AR5K_AR5212)) { 3661 3654 cw_min = hal->ah_cw_min = AR5K_TUNE_CWMIN_XR; 3662 3655 cw_max = hal->ah_cw_max = AR5K_TUNE_CWMAX_XR; … … 3664 3657 /*B mode is not supported on 5210*/ 3665 3658 } else if (IS_CHAN_B(hal->ah_current_channel) 3666 && (hal->ah_version != AR5K_AR5210)) {3659 && (hal->ah_version != AR5K_AR5210)) { 3667 3660 cw_min = hal->ah_cw_min = AR5K_TUNE_CWMIN_11B; 3668 3661 cw_max = hal->ah_cw_max = AR5K_TUNE_CWMAX_11B; … … 3696 3689 3697 3690 /*No QCU/DCU [5210]*/ 3698 if (hal->ah_version == AR5K_AR5210){3691 if (hal->ah_version == AR5K_AR5210) { 3699 3692 AR5K_REG_WRITE(AR5K_NODCU_RETRY_LMT, 3700 3693 (cw_min << AR5K_NODCU_RETRY_LMT_CW_MIN_S) … … 3844 3837 AR5K_ASSERT_ENTRY(queue, hal->ah_capabilities.cap_queues.q_tx_num); 3845 3838 3846 if(hal->ah_version == AR5K_AR5210){ 3847 return(FALSE); 3848 } 3839 if (hal->ah_version == AR5K_AR5210) 3840 return (FALSE); 3849 3841 3850 3842 return (AR5K_QUEUE_STATUS(queue) & AR5K_QCU_STS_FRMPENDCNT); … … 3861 3853 return (FALSE); 3862 3854 3863 if (hal->ah_version == AR5K_AR5210){3855 if (hal->ah_version == AR5K_AR5210) 3864 3856 AR5K_REG_WRITE(AR5K_SLOT_TIME, 3865 3857 ath5k_hw_htoclock(slot_time, hal->ah_turbo)); 3866 } else {3858 else 3867 3859 AR5K_REG_WRITE(AR5K_DCU_GBL_IFS_SLOT, slot_time); 3868 }3869 3860 3870 3861 return (TRUE); … … 3878 3869 { 3879 3870 AR5K_TRACE; 3880 if (hal->ah_version == AR5K_AR5210){3871 if (hal->ah_version == AR5K_AR5210) 3881 3872 return (ath5k_hw_clocktoh(AR5K_REG_READ(AR5K_SLOT_TIME) & 3882 3873 0xffff, hal->ah_turbo)); 3883 } else {3874 else 3884 3875 return (AR5K_REG_READ(AR5K_DCU_GBL_IFS_SLOT) & 0xffff); 3885 }3886 3876 } 3887 3877 … … 3925 3915 /*Verify packet length*/ 3926 3916 if ((tx_desc->tx_control_0 = (packet_length & 3927 AR5K_2W_TX_DESC_CTL0_FRAME_LEN)) != packet_length)3917 AR5K_2W_TX_DESC_CTL0_FRAME_LEN)) != packet_length) 3928 3918 return (FALSE); 3929 3919 /* … … 3931 3921 * XXX: I only found that on 5210 code, does it work on 5211 ? 3932 3922 */ 3933 if (hal->ah_version == AR5K_AR5210){3923 if (hal->ah_version == AR5K_AR5210) 3934 3924 if ((tx_desc->tx_control_0 = (header_length & 3935 AR5K_2W_TX_DESC_CTL0_HEADER_LEN)) != header_length)3925 AR5K_2W_TX_DESC_CTL0_HEADER_LEN)) != header_length) 3936 3926 return (FALSE); 3937 }3938 3927 3939 3928 /*Diferences between 5210-5211*/ 3940 if (hal->ah_version == AR5K_AR5210){3941 switch (type){3929 if (hal->ah_version == AR5K_AR5210) { 3930 switch (type) { 3942 3931 case AR5K_PKT_TYPE_BEACON: 3943 3932 case AR5K_PKT_TYPE_PROBE_RESP: … … 3987 3976 */ 3988 3977 if ((hal->ah_version == AR5K_AR5210) && 3989 (flags & (AR5K_TXDESC_RTSENA | AR5K_TXDESC_CTSENA))) {3978 (flags & (AR5K_TXDESC_RTSENA | AR5K_TXDESC_CTSENA))) { 3990 3979 tx_desc->tx_control_1 |= 3991 3980 rtscts_duration & AR5K_2W_TX_DESC_CTL1_RTS_DURATION; … … 4024 4013 /* Setup status descriptor */ 4025 4014 if ((tx_desc->tx_control_0 = (packet_length & 4026 AR5K_4W_TX_DESC_CTL0_FRAME_LEN)) != packet_length)4015 AR5K_4W_TX_DESC_CTL0_FRAME_LEN)) != packet_length) 4027 4016 return (FALSE); 4028 4017 … … 4090 4079 struct ath5k_hw_4w_tx_desc *tx_desc; 4091 4080 4092 if (hal->ah_version == AR5K_AR5212){4081 if (hal->ah_version == AR5K_AR5212) { 4093 4082 tx_desc = (struct ath5k_hw_4w_tx_desc*)&desc->ds_ctl0; 4094 4083 … … 4111 4100 return (TRUE); 4112 4101 } 4102 4113 4103 return(FALSE); 4114 4104 } … … 4130 4120 /* Validate segment length and initialize the descriptor */ 4131 4121 if ((tx_desc->tx_control_1 = (segment_length & 4132 AR5K_2W_TX_DESC_CTL1_BUF_LEN)) != segment_length)4122 AR5K_2W_TX_DESC_CTL1_BUF_LEN)) != segment_length) 4133 4123 return (FALSE); 4134 4124 … … 4163 4153 /* Validate segment length and initialize the descriptor */ 4164 4154 if ((tx_desc->tx_control_1 = (segment_length & 4165 AR5K_4W_TX_DESC_CTL1_BUF_LEN)) != segment_length)4155 AR5K_4W_TX_DESC_CTL1_BUF_LEN)) != segment_length) 4166 4156 return (FALSE); 4167 4157 … … 4217 4207 4218 4208 if ((tx_status->tx_status_0 & 4219 AR5K_DESC_TX_STATUS0_FRAME_XMIT_OK) == 0) {4209 AR5K_DESC_TX_STATUS0_FRAME_XMIT_OK) == 0) { 4220 4210 if (tx_status->tx_status_0 & 4221 AR5K_DESC_TX_STATUS0_EXCESSIVE_RETRIES)4211 AR5K_DESC_TX_STATUS0_EXCESSIVE_RETRIES) 4222 4212 desc->ds_us.tx.ts_status |= AR5K_TXERR_XRETRY; 4223 4213 4224 4214 if (tx_status->tx_status_0 & 4225 AR5K_DESC_TX_STATUS0_FIFO_UNDERRUN)4215 AR5K_DESC_TX_STATUS0_FIFO_UNDERRUN) 4226 4216 desc->ds_us.tx.ts_status |= AR5K_TXERR_FIFO; 4227 4217 4228 4218 if (tx_status->tx_status_0 & 4229 AR5K_DESC_TX_STATUS0_FILTERED)4219 AR5K_DESC_TX_STATUS0_FILTERED) 4230 4220 desc->ds_us.tx.ts_status |= AR5K_TXERR_FILT; 4231 4221 } … … 4274 4264 4275 4265 switch (AR5K_REG_MS(tx_status->tx_status_1, 4276 AR5K_DESC_TX_STATUS1_FINAL_TS_INDEX)) {4266 AR5K_DESC_TX_STATUS1_FINAL_TS_INDEX)) { 4277 4267 case 0: 4278 4268 desc->ds_us.tx.ts_rate = tx_desc->tx_control_3 & … … 4402 4392 */ 4403 4393 if (rx_status->rx_status_1 & 4404 AR5K_OLD_RX_DESC_STATUS1_KEY_INDEX_VALID) {4394 AR5K_OLD_RX_DESC_STATUS1_KEY_INDEX_VALID) 4405 4395 desc->ds_us.rx.rs_keyix = 4406 4396 AR5K_REG_MS(rx_status->rx_status_1, 4407 4397 AR5K_OLD_RX_DESC_STATUS1_KEY_INDEX); 4408 } else {
