Lines Matching refs:rt2x00dev

63 static void rt73usb_bbp_write(struct rt2x00_dev *rt2x00dev,  in rt73usb_bbp_write()  argument
68 mutex_lock(&rt2x00dev->csr_mutex); in rt73usb_bbp_write()
74 if (WAIT_FOR_BBP(rt2x00dev, &reg)) { in rt73usb_bbp_write()
81 rt2x00usb_register_write_lock(rt2x00dev, PHY_CSR3, reg); in rt73usb_bbp_write()
84 mutex_unlock(&rt2x00dev->csr_mutex); in rt73usb_bbp_write()
87 static void rt73usb_bbp_read(struct rt2x00_dev *rt2x00dev, in rt73usb_bbp_read() argument
92 mutex_lock(&rt2x00dev->csr_mutex); in rt73usb_bbp_read()
102 if (WAIT_FOR_BBP(rt2x00dev, &reg)) { in rt73usb_bbp_read()
108 rt2x00usb_register_write_lock(rt2x00dev, PHY_CSR3, reg); in rt73usb_bbp_read()
110 WAIT_FOR_BBP(rt2x00dev, &reg); in rt73usb_bbp_read()
115 mutex_unlock(&rt2x00dev->csr_mutex); in rt73usb_bbp_read()
118 static void rt73usb_rf_write(struct rt2x00_dev *rt2x00dev, in rt73usb_rf_write() argument
123 mutex_lock(&rt2x00dev->csr_mutex); in rt73usb_rf_write()
129 if (WAIT_FOR_RF(rt2x00dev, &reg)) { in rt73usb_rf_write()
137 20 + (rt2x00_rf(rt2x00dev, RF5225) || in rt73usb_rf_write()
138 rt2x00_rf(rt2x00dev, RF2527))); in rt73usb_rf_write()
142 rt2x00usb_register_write_lock(rt2x00dev, PHY_CSR4, reg); in rt73usb_rf_write()
143 rt2x00_rf_write(rt2x00dev, word, value); in rt73usb_rf_write()
146 mutex_unlock(&rt2x00dev->csr_mutex); in rt73usb_rf_write()
184 static int rt73usb_rfkill_poll(struct rt2x00_dev *rt2x00dev) in rt73usb_rfkill_poll() argument
188 rt2x00usb_register_read(rt2x00dev, MAC_CSR13, &reg); in rt73usb_rfkill_poll()
200 (enabled && led->rt2x00dev->curr_band == IEEE80211_BAND_5GHZ); in rt73usb_brightness_set()
202 (enabled && led->rt2x00dev->curr_band == IEEE80211_BAND_2GHZ); in rt73usb_brightness_set()
205 rt2x00_set_field16(&led->rt2x00dev->led_mcu_reg, in rt73usb_brightness_set()
208 rt2x00usb_vendor_request_sw(led->rt2x00dev, USB_LED_CONTROL, in rt73usb_brightness_set()
209 0, led->rt2x00dev->led_mcu_reg, in rt73usb_brightness_set()
212 rt2x00_set_field16(&led->rt2x00dev->led_mcu_reg, in rt73usb_brightness_set()
214 rt2x00_set_field16(&led->rt2x00dev->led_mcu_reg, in rt73usb_brightness_set()
217 rt2x00usb_vendor_request_sw(led->rt2x00dev, USB_LED_CONTROL, in rt73usb_brightness_set()
218 0, led->rt2x00dev->led_mcu_reg, in rt73usb_brightness_set()
226 rt2x00usb_vendor_request_sw(led->rt2x00dev, USB_LED_CONTROL, in rt73usb_brightness_set()
228 led->rt2x00dev->led_mcu_reg, in rt73usb_brightness_set()
241 rt2x00usb_register_read(led->rt2x00dev, MAC_CSR14, &reg); in rt73usb_blink_set()
244 rt2x00usb_register_write(led->rt2x00dev, MAC_CSR14, reg); in rt73usb_blink_set()
249 static void rt73usb_init_led(struct rt2x00_dev *rt2x00dev, in rt73usb_init_led() argument
253 led->rt2x00dev = rt2x00dev; in rt73usb_init_led()
264 static int rt73usb_config_shared_key(struct rt2x00_dev *rt2x00dev, in rt73usb_config_shared_key() argument
286 rt2x00usb_register_read(rt2x00dev, SEC_CSR0, &reg); in rt73usb_config_shared_key()
305 rt2x00usb_register_multiwrite(rt2x00dev, reg, in rt73usb_config_shared_key()
319 rt2x00usb_register_read(rt2x00dev, SEC_CSR1, &reg); in rt73usb_config_shared_key()
321 rt2x00usb_register_write(rt2x00dev, SEC_CSR1, reg); in rt73usb_config_shared_key()
326 rt2x00usb_register_read(rt2x00dev, SEC_CSR5, &reg); in rt73usb_config_shared_key()
328 rt2x00usb_register_write(rt2x00dev, SEC_CSR5, reg); in rt73usb_config_shared_key()
351 rt2x00usb_register_read(rt2x00dev, SEC_CSR0, &reg); in rt73usb_config_shared_key()
356 rt2x00usb_register_write(rt2x00dev, SEC_CSR0, reg); in rt73usb_config_shared_key()
361 static int rt73usb_config_pairwise_key(struct rt2x00_dev *rt2x00dev, in rt73usb_config_pairwise_key() argument
380 rt2x00usb_register_read(rt2x00dev, SEC_CSR2, &reg); in rt73usb_config_pairwise_key()
383 rt2x00usb_register_read(rt2x00dev, SEC_CSR3, &reg); in rt73usb_config_pairwise_key()
401 rt2x00usb_register_multiwrite(rt2x00dev, reg, in rt73usb_config_pairwise_key()
412 rt2x00usb_register_multiwrite(rt2x00dev, reg, in rt73usb_config_pairwise_key()
420 rt2x00usb_register_read(rt2x00dev, SEC_CSR4, &reg); in rt73usb_config_pairwise_key()
422 rt2x00usb_register_write(rt2x00dev, SEC_CSR4, reg); in rt73usb_config_pairwise_key()
445 rt2x00usb_register_read(rt2x00dev, SEC_CSR2, &reg); in rt73usb_config_pairwise_key()
450 rt2x00usb_register_write(rt2x00dev, SEC_CSR2, reg); in rt73usb_config_pairwise_key()
454 rt2x00usb_register_read(rt2x00dev, SEC_CSR3, &reg); in rt73usb_config_pairwise_key()
459 rt2x00usb_register_write(rt2x00dev, SEC_CSR3, reg); in rt73usb_config_pairwise_key()
465 static void rt73usb_config_filter(struct rt2x00_dev *rt2x00dev, in rt73usb_config_filter() argument
476 rt2x00usb_register_read(rt2x00dev, TXRX_CSR0, &reg); in rt73usb_config_filter()
485 !rt2x00dev->intf_ap_count); in rt73usb_config_filter()
492 rt2x00usb_register_write(rt2x00dev, TXRX_CSR0, reg); in rt73usb_config_filter()
495 static void rt73usb_config_intf(struct rt2x00_dev *rt2x00dev, in rt73usb_config_intf() argument
506 rt2x00usb_register_read(rt2x00dev, TXRX_CSR9, &reg); in rt73usb_config_intf()
508 rt2x00usb_register_write(rt2x00dev, TXRX_CSR9, reg); in rt73usb_config_intf()
516 rt2x00usb_register_multiwrite(rt2x00dev, MAC_CSR2, in rt73usb_config_intf()
525 rt2x00usb_register_multiwrite(rt2x00dev, MAC_CSR4, in rt73usb_config_intf()
530 static void rt73usb_config_erp(struct rt2x00_dev *rt2x00dev, in rt73usb_config_erp() argument
536 rt2x00usb_register_read(rt2x00dev, TXRX_CSR0, &reg); in rt73usb_config_erp()
539 rt2x00usb_register_write(rt2x00dev, TXRX_CSR0, reg); in rt73usb_config_erp()
542 rt2x00usb_register_read(rt2x00dev, TXRX_CSR4, &reg); in rt73usb_config_erp()
546 rt2x00usb_register_write(rt2x00dev, TXRX_CSR4, reg); in rt73usb_config_erp()
550 rt2x00usb_register_write(rt2x00dev, TXRX_CSR5, in rt73usb_config_erp()
554 rt2x00usb_register_read(rt2x00dev, TXRX_CSR9, &reg); in rt73usb_config_erp()
557 rt2x00usb_register_write(rt2x00dev, TXRX_CSR9, reg); in rt73usb_config_erp()
561 rt2x00usb_register_read(rt2x00dev, MAC_CSR9, &reg); in rt73usb_config_erp()
563 rt2x00usb_register_write(rt2x00dev, MAC_CSR9, reg); in rt73usb_config_erp()
565 rt2x00usb_register_read(rt2x00dev, MAC_CSR8, &reg); in rt73usb_config_erp()
569 rt2x00usb_register_write(rt2x00dev, MAC_CSR8, reg); in rt73usb_config_erp()
573 static void rt73usb_config_antenna_5x(struct rt2x00_dev *rt2x00dev, in rt73usb_config_antenna_5x() argument
581 rt73usb_bbp_read(rt2x00dev, 3, &r3); in rt73usb_config_antenna_5x()
582 rt73usb_bbp_read(rt2x00dev, 4, &r4); in rt73usb_config_antenna_5x()
583 rt73usb_bbp_read(rt2x00dev, 77, &r77); in rt73usb_config_antenna_5x()
593 temp = !rt2x00_has_cap_frame_type(rt2x00dev) && in rt73usb_config_antenna_5x()
594 (rt2x00dev->curr_band != IEEE80211_BAND_5GHZ); in rt73usb_config_antenna_5x()
600 if (rt2x00dev->curr_band == IEEE80211_BAND_5GHZ) in rt73usb_config_antenna_5x()
609 if (rt2x00dev->curr_band == IEEE80211_BAND_5GHZ) in rt73usb_config_antenna_5x()
616 rt73usb_bbp_write(rt2x00dev, 77, r77); in rt73usb_config_antenna_5x()
617 rt73usb_bbp_write(rt2x00dev, 3, r3); in rt73usb_config_antenna_5x()
618 rt73usb_bbp_write(rt2x00dev, 4, r4); in rt73usb_config_antenna_5x()
621 static void rt73usb_config_antenna_2x(struct rt2x00_dev *rt2x00dev, in rt73usb_config_antenna_2x() argument
628 rt73usb_bbp_read(rt2x00dev, 3, &r3); in rt73usb_config_antenna_2x()
629 rt73usb_bbp_read(rt2x00dev, 4, &r4); in rt73usb_config_antenna_2x()
630 rt73usb_bbp_read(rt2x00dev, 77, &r77); in rt73usb_config_antenna_2x()
634 !rt2x00_has_cap_frame_type(rt2x00dev)); in rt73usb_config_antenna_2x()
654 rt73usb_bbp_write(rt2x00dev, 77, r77); in rt73usb_config_antenna_2x()
655 rt73usb_bbp_write(rt2x00dev, 3, r3); in rt73usb_config_antenna_2x()
656 rt73usb_bbp_write(rt2x00dev, 4, r4); in rt73usb_config_antenna_2x()
690 static void rt73usb_config_ant(struct rt2x00_dev *rt2x00dev, in rt73usb_config_ant() argument
705 if (rt2x00dev->curr_band == IEEE80211_BAND_5GHZ) { in rt73usb_config_ant()
707 lna = rt2x00_has_cap_external_lna_a(rt2x00dev); in rt73usb_config_ant()
710 lna = rt2x00_has_cap_external_lna_bg(rt2x00dev); in rt73usb_config_ant()
714 rt73usb_bbp_write(rt2x00dev, sel[i].word, sel[i].value[lna]); in rt73usb_config_ant()
716 rt2x00usb_register_read(rt2x00dev, PHY_CSR0, &reg); in rt73usb_config_ant()
719 (rt2x00dev->curr_band == IEEE80211_BAND_2GHZ)); in rt73usb_config_ant()
721 (rt2x00dev->curr_band == IEEE80211_BAND_5GHZ)); in rt73usb_config_ant()
723 rt2x00usb_register_write(rt2x00dev, PHY_CSR0, reg); in rt73usb_config_ant()
725 if (rt2x00_rf(rt2x00dev, RF5226) || rt2x00_rf(rt2x00dev, RF5225)) in rt73usb_config_ant()
726 rt73usb_config_antenna_5x(rt2x00dev, ant); in rt73usb_config_ant()
727 else if (rt2x00_rf(rt2x00dev, RF2528) || rt2x00_rf(rt2x00dev, RF2527)) in rt73usb_config_ant()
728 rt73usb_config_antenna_2x(rt2x00dev, ant); in rt73usb_config_ant()
731 static void rt73usb_config_lna_gain(struct rt2x00_dev *rt2x00dev, in rt73usb_config_lna_gain() argument
738 if (rt2x00_has_cap_external_lna_bg(rt2x00dev)) in rt73usb_config_lna_gain()
741 rt2x00_eeprom_read(rt2x00dev, EEPROM_RSSI_OFFSET_BG, &eeprom); in rt73usb_config_lna_gain()
744 rt2x00_eeprom_read(rt2x00dev, EEPROM_RSSI_OFFSET_A, &eeprom); in rt73usb_config_lna_gain()
748 rt2x00dev->lna_gain = lna_gain; in rt73usb_config_lna_gain()
751 static void rt73usb_config_channel(struct rt2x00_dev *rt2x00dev, in rt73usb_config_channel() argument
759 rt2x00_set_field32(&rf->rf4, RF4_FREQ_OFFSET, rt2x00dev->freq_offset); in rt73usb_config_channel()
761 smart = !(rt2x00_rf(rt2x00dev, RF5225) || rt2x00_rf(rt2x00dev, RF2527)); in rt73usb_config_channel()
763 rt73usb_bbp_read(rt2x00dev, 3, &r3); in rt73usb_config_channel()
765 rt73usb_bbp_write(rt2x00dev, 3, r3); in rt73usb_config_channel()
772 rt73usb_bbp_write(rt2x00dev, 94, r94); in rt73usb_config_channel()
774 rt73usb_rf_write(rt2x00dev, 1, rf->rf1); in rt73usb_config_channel()
775 rt73usb_rf_write(rt2x00dev, 2, rf->rf2); in rt73usb_config_channel()
776 rt73usb_rf_write(rt2x00dev, 3, rf->rf3 & ~0x00000004); in rt73usb_config_channel()
777 rt73usb_rf_write(rt2x00dev, 4, rf->rf4); in rt73usb_config_channel()
779 rt73usb_rf_write(rt2x00dev, 1, rf->rf1); in rt73usb_config_channel()
780 rt73usb_rf_write(rt2x00dev, 2, rf->rf2); in rt73usb_config_channel()
781 rt73usb_rf_write(rt2x00dev, 3, rf->rf3 | 0x00000004); in rt73usb_config_channel()
782 rt73usb_rf_write(rt2x00dev, 4, rf->rf4); in rt73usb_config_channel()
784 rt73usb_rf_write(rt2x00dev, 1, rf->rf1); in rt73usb_config_channel()
785 rt73usb_rf_write(rt2x00dev, 2, rf->rf2); in rt73usb_config_channel()
786 rt73usb_rf_write(rt2x00dev, 3, rf->rf3 & ~0x00000004); in rt73usb_config_channel()
787 rt73usb_rf_write(rt2x00dev, 4, rf->rf4); in rt73usb_config_channel()
792 static void rt73usb_config_txpower(struct rt2x00_dev *rt2x00dev, in rt73usb_config_txpower() argument
797 rt2x00_rf_read(rt2x00dev, 1, &rf.rf1); in rt73usb_config_txpower()
798 rt2x00_rf_read(rt2x00dev, 2, &rf.rf2); in rt73usb_config_txpower()
799 rt2x00_rf_read(rt2x00dev, 3, &rf.rf3); in rt73usb_config_txpower()
800 rt2x00_rf_read(rt2x00dev, 4, &rf.rf4); in rt73usb_config_txpower()
802 rt73usb_config_channel(rt2x00dev, &rf, txpower); in rt73usb_config_txpower()
805 static void rt73usb_config_retry_limit(struct rt2x00_dev *rt2x00dev, in rt73usb_config_retry_limit() argument
810 rt2x00usb_register_read(rt2x00dev, TXRX_CSR4, &reg); in rt73usb_config_retry_limit()
818 rt2x00usb_register_write(rt2x00dev, TXRX_CSR4, reg); in rt73usb_config_retry_limit()
821 static void rt73usb_config_ps(struct rt2x00_dev *rt2x00dev, in rt73usb_config_ps() argument
830 rt2x00usb_register_read(rt2x00dev, MAC_CSR11, &reg); in rt73usb_config_ps()
832 rt2x00dev->beacon_int - 10); in rt73usb_config_ps()
839 rt2x00usb_register_write(rt2x00dev, MAC_CSR11, reg); in rt73usb_config_ps()
842 rt2x00usb_register_write(rt2x00dev, MAC_CSR11, reg); in rt73usb_config_ps()
844 rt2x00usb_vendor_request_sw(rt2x00dev, USB_DEVICE_MODE, 0, in rt73usb_config_ps()
847 rt2x00usb_register_read(rt2x00dev, MAC_CSR11, &reg); in rt73usb_config_ps()
852 rt2x00usb_register_write(rt2x00dev, MAC_CSR11, reg); in rt73usb_config_ps()
854 rt2x00usb_vendor_request_sw(rt2x00dev, USB_DEVICE_MODE, 0, in rt73usb_config_ps()
859 static void rt73usb_config(struct rt2x00_dev *rt2x00dev, in rt73usb_config() argument
864 rt73usb_config_lna_gain(rt2x00dev, libconf); in rt73usb_config()
867 rt73usb_config_channel(rt2x00dev, &libconf->rf, in rt73usb_config()
871 rt73usb_config_txpower(rt2x00dev, libconf->conf->power_level); in rt73usb_config()
873 rt73usb_config_retry_limit(rt2x00dev, libconf); in rt73usb_config()
875 rt73usb_config_ps(rt2x00dev, libconf); in rt73usb_config()
881 static void rt73usb_link_stats(struct rt2x00_dev *rt2x00dev, in rt73usb_link_stats() argument
889 rt2x00usb_register_read(rt2x00dev, STA_CSR0, &reg); in rt73usb_link_stats()
895 rt2x00usb_register_read(rt2x00dev, STA_CSR1, &reg); in rt73usb_link_stats()
899 static inline void rt73usb_set_vgc(struct rt2x00_dev *rt2x00dev, in rt73usb_set_vgc() argument
903 rt73usb_bbp_write(rt2x00dev, 17, vgc_level); in rt73usb_set_vgc()
909 static void rt73usb_reset_tuner(struct rt2x00_dev *rt2x00dev, in rt73usb_reset_tuner() argument
912 rt73usb_set_vgc(rt2x00dev, qual, 0x20); in rt73usb_reset_tuner()
915 static void rt73usb_link_tuner(struct rt2x00_dev *rt2x00dev, in rt73usb_link_tuner() argument
924 if (rt2x00dev->curr_band == IEEE80211_BAND_5GHZ) { in rt73usb_link_tuner()
928 if (rt2x00_has_cap_external_lna_a(rt2x00dev)) { in rt73usb_link_tuner()
944 if (rt2x00_has_cap_external_lna_bg(rt2x00dev)) { in rt73usb_link_tuner()
954 if (!rt2x00dev->intf_associated) in rt73usb_link_tuner()
961 rt73usb_set_vgc(rt2x00dev, qual, 0x60); in rt73usb_link_tuner()
969 rt73usb_set_vgc(rt2x00dev, qual, up_bound); in rt73usb_link_tuner()
977 rt73usb_set_vgc(rt2x00dev, qual, low_bound + 0x10); in rt73usb_link_tuner()
985 rt73usb_set_vgc(rt2x00dev, qual, low_bound + 0x08); in rt73usb_link_tuner()
998 rt73usb_set_vgc(rt2x00dev, qual, up_bound); in rt73usb_link_tuner()
1009 rt73usb_set_vgc(rt2x00dev, qual, in rt73usb_link_tuner()
1012 rt73usb_set_vgc(rt2x00dev, qual, in rt73usb_link_tuner()
1021 struct rt2x00_dev *rt2x00dev = queue->rt2x00dev; in rt73usb_start_queue() local
1026 rt2x00usb_register_read(rt2x00dev, TXRX_CSR0, &reg); in rt73usb_start_queue()
1028 rt2x00usb_register_write(rt2x00dev, TXRX_CSR0, reg); in rt73usb_start_queue()
1031 rt2x00usb_register_read(rt2x00dev, TXRX_CSR9, &reg); in rt73usb_start_queue()
1035 rt2x00usb_register_write(rt2x00dev, TXRX_CSR9, reg); in rt73usb_start_queue()
1044 struct rt2x00_dev *rt2x00dev = queue->rt2x00dev; in rt73usb_stop_queue() local
1049 rt2x00usb_register_read(rt2x00dev, TXRX_CSR0, &reg); in rt73usb_stop_queue()
1051 rt2x00usb_register_write(rt2x00dev, TXRX_CSR0, reg); in rt73usb_stop_queue()
1054 rt2x00usb_register_read(rt2x00dev, TXRX_CSR9, &reg); in rt73usb_stop_queue()
1058 rt2x00usb_register_write(rt2x00dev, TXRX_CSR9, reg); in rt73usb_stop_queue()
1068 static char *rt73usb_get_firmware_name(struct rt2x00_dev *rt2x00dev) in rt73usb_get_firmware_name() argument
1073 static int rt73usb_check_firmware(struct rt2x00_dev *rt2x00dev, in rt73usb_check_firmware() argument
1102 static int rt73usb_load_firmware(struct rt2x00_dev *rt2x00dev, in rt73usb_load_firmware() argument
1113 rt2x00usb_register_read(rt2x00dev, MAC_CSR0, &reg); in rt73usb_load_firmware()
1120 rt2x00_err(rt2x00dev, "Unstable hardware\n"); in rt73usb_load_firmware()
1127 rt2x00usb_register_multiwrite(rt2x00dev, FIRMWARE_IMAGE_BASE, data, len); in rt73usb_load_firmware()
1133 status = rt2x00usb_vendor_request_sw(rt2x00dev, USB_DEVICE_MODE, in rt73usb_load_firmware()
1137 rt2x00_err(rt2x00dev, "Failed to write Firmware to device\n"); in rt73usb_load_firmware()
1147 static int rt73usb_init_registers(struct rt2x00_dev *rt2x00dev) in rt73usb_init_registers() argument
1151 rt2x00usb_register_read(rt2x00dev, TXRX_CSR0, &reg); in rt73usb_init_registers()
1155 rt2x00usb_register_write(rt2x00dev, TXRX_CSR0, reg); in rt73usb_init_registers()
1157 rt2x00usb_register_read(rt2x00dev, TXRX_CSR1, &reg); in rt73usb_init_registers()
1166 rt2x00usb_register_write(rt2x00dev, TXRX_CSR1, reg); in rt73usb_init_registers()
1171 rt2x00usb_register_read(rt2x00dev, TXRX_CSR2, &reg); in rt73usb_init_registers()
1180 rt2x00usb_register_write(rt2x00dev, TXRX_CSR2, reg); in rt73usb_init_registers()
1185 rt2x00usb_register_read(rt2x00dev, TXRX_CSR3, &reg); in rt73usb_init_registers()
1192 rt2x00usb_register_write(rt2x00dev, TXRX_CSR3, reg); in rt73usb_init_registers()
1194 rt2x00usb_register_read(rt2x00dev, TXRX_CSR7, &reg); in rt73usb_init_registers()
1199 rt2x00usb_register_write(rt2x00dev, TXRX_CSR7, reg); in rt73usb_init_registers()
1201 rt2x00usb_register_read(rt2x00dev, TXRX_CSR8, &reg); in rt73usb_init_registers()
1206 rt2x00usb_register_write(rt2x00dev, TXRX_CSR8, reg); in rt73usb_init_registers()
1208 rt2x00usb_register_read(rt2x00dev, TXRX_CSR9, &reg); in rt73usb_init_registers()
1215 rt2x00usb_register_write(rt2x00dev, TXRX_CSR9, reg); in rt73usb_init_registers()
1217 rt2x00usb_register_write(rt2x00dev, TXRX_CSR15, 0x0000000f); in rt73usb_init_registers()
1219 rt2x00usb_register_read(rt2x00dev, MAC_CSR6, &reg); in rt73usb_init_registers()
1221 rt2x00usb_register_write(rt2x00dev, MAC_CSR6, reg); in rt73usb_init_registers()
1223 rt2x00usb_register_write(rt2x00dev, MAC_CSR10, 0x00000718); in rt73usb_init_registers()
1225 if (rt2x00dev->ops->lib->set_device_state(rt2x00dev, STATE_AWAKE)) in rt73usb_init_registers()
1228 rt2x00usb_register_write(rt2x00dev, MAC_CSR13, 0x00007f00); in rt73usb_init_registers()
1234 rt2x00usb_register_write(rt2x00dev, SEC_CSR0, 0x00000000); in rt73usb_init_registers()
1235 rt2x00usb_register_write(rt2x00dev, SEC_CSR1, 0x00000000); in rt73usb_init_registers()
1236 rt2x00usb_register_write(rt2x00dev, SEC_CSR5, 0x00000000); in rt73usb_init_registers()
1239 if (rt2x00_rf(rt2x00dev, RF5225) || rt2x00_rf(rt2x00dev, RF2527)) in rt73usb_init_registers()
1241 rt2x00usb_register_write(rt2x00dev, PHY_CSR1, reg); in rt73usb_init_registers()
1243 rt2x00usb_register_write(rt2x00dev, PHY_CSR5, 0x00040a06); in rt73usb_init_registers()
1244 rt2x00usb_register_write(rt2x00dev, PHY_CSR6, 0x00080606); in rt73usb_init_registers()
1245 rt2x00usb_register_write(rt2x00dev, PHY_CSR7, 0x00000408); in rt73usb_init_registers()
1247 rt2x00usb_register_read(rt2x00dev, MAC_CSR9, &reg); in rt73usb_init_registers()
1249 rt2x00usb_register_write(rt2x00dev, MAC_CSR9, reg); in rt73usb_init_registers()
1257 rt2x00usb_register_write(rt2x00dev, HW_BEACON_BASE0, 0); in rt73usb_init_registers()
1258 rt2x00usb_register_write(rt2x00dev, HW_BEACON_BASE1, 0); in rt73usb_init_registers()
1259 rt2x00usb_register_write(rt2x00dev, HW_BEACON_BASE2, 0); in rt73usb_init_registers()
1260 rt2x00usb_register_write(rt2x00dev, HW_BEACON_BASE3, 0); in rt73usb_init_registers()
1267 rt2x00usb_register_read(rt2x00dev, STA_CSR0, &reg); in rt73usb_init_registers()
1268 rt2x00usb_register_read(rt2x00dev, STA_CSR1, &reg); in rt73usb_init_registers()
1269 rt2x00usb_register_read(rt2x00dev, STA_CSR2, &reg); in rt73usb_init_registers()
1274 rt2x00usb_register_read(rt2x00dev, MAC_CSR1, &reg); in rt73usb_init_registers()
1277 rt2x00usb_register_write(rt2x00dev, MAC_CSR1, reg); in rt73usb_init_registers()
1279 rt2x00usb_register_read(rt2x00dev, MAC_CSR1, &reg); in rt73usb_init_registers()
1282 rt2x00usb_register_write(rt2x00dev, MAC_CSR1, reg); in rt73usb_init_registers()
1284 rt2x00usb_register_read(rt2x00dev, MAC_CSR1, &reg); in rt73usb_init_registers()
1286 rt2x00usb_register_write(rt2x00dev, MAC_CSR1, reg); in rt73usb_init_registers()
1291 static int rt73usb_wait_bbp_ready(struct rt2x00_dev *rt2x00dev) in rt73usb_wait_bbp_ready() argument
1297 rt73usb_bbp_read(rt2x00dev, 0, &value); in rt73usb_wait_bbp_ready()
1303 rt2x00_err(rt2x00dev, "BBP register access failed, aborting\n"); in rt73usb_wait_bbp_ready()
1307 static int rt73usb_init_bbp(struct rt2x00_dev *rt2x00dev) in rt73usb_init_bbp() argument
1314 if (unlikely(rt73usb_wait_bbp_ready(rt2x00dev))) in rt73usb_init_bbp()
1317 rt73usb_bbp_write(rt2x00dev, 3, 0x80); in rt73usb_init_bbp()
1318 rt73usb_bbp_write(rt2x00dev, 15, 0x30); in rt73usb_init_bbp()
1319 rt73usb_bbp_write(rt2x00dev, 21, 0xc8); in rt73usb_init_bbp()
1320 rt73usb_bbp_write(rt2x00dev, 22, 0x38); in rt73usb_init_bbp()
1321 rt73usb_bbp_write(rt2x00dev, 23, 0x06); in rt73usb_init_bbp()
1322 rt73usb_bbp_write(rt2x00dev, 24, 0xfe); in rt73usb_init_bbp()
1323 rt73usb_bbp_write(rt2x00dev, 25, 0x0a); in rt73usb_init_bbp()
1324 rt73usb_bbp_write(rt2x00dev, 26, 0x0d); in rt73usb_init_bbp()
1325 rt73usb_bbp_write(rt2x00dev, 32, 0x0b); in rt73usb_init_bbp()
1326 rt73usb_bbp_write(rt2x00dev, 34, 0x12); in rt73usb_init_bbp()
1327 rt73usb_bbp_write(rt2x00dev, 37, 0x07); in rt73usb_init_bbp()
1328 rt73usb_bbp_write(rt2x00dev, 39, 0xf8); in rt73usb_init_bbp()
1329 rt73usb_bbp_write(rt2x00dev, 41, 0x60); in rt73usb_init_bbp()
1330 rt73usb_bbp_write(rt2x00dev, 53, 0x10); in rt73usb_init_bbp()
1331 rt73usb_bbp_write(rt2x00dev, 54, 0x18); in rt73usb_init_bbp()
1332 rt73usb_bbp_write(rt2x00dev, 60, 0x10); in rt73usb_init_bbp()
1333 rt73usb_bbp_write(rt2x00dev, 61, 0x04); in rt73usb_init_bbp()
1334 rt73usb_bbp_write(rt2x00dev, 62, 0x04); in rt73usb_init_bbp()
1335 rt73usb_bbp_write(rt2x00dev, 75, 0xfe); in rt73usb_init_bbp()
1336 rt73usb_bbp_write(rt2x00dev, 86, 0xfe); in rt73usb_init_bbp()
1337 rt73usb_bbp_write(rt2x00dev, 88, 0xfe); in rt73usb_init_bbp()
1338 rt73usb_bbp_write(rt2x00dev, 90, 0x0f); in rt73usb_init_bbp()
1339 rt73usb_bbp_write(rt2x00dev, 99, 0x00); in rt73usb_init_bbp()
1340 rt73usb_bbp_write(rt2x00dev, 102, 0x16); in rt73usb_init_bbp()
1341 rt73usb_bbp_write(rt2x00dev, 107, 0x04); in rt73usb_init_bbp()
1344 rt2x00_eeprom_read(rt2x00dev, EEPROM_BBP_START + i, &eeprom); in rt73usb_init_bbp()
1349 rt73usb_bbp_write(rt2x00dev, reg_id, value); in rt73usb_init_bbp()
1359 static int rt73usb_enable_radio(struct rt2x00_dev *rt2x00dev) in rt73usb_enable_radio() argument
1364 if (unlikely(rt73usb_init_registers(rt2x00dev) || in rt73usb_enable_radio()
1365 rt73usb_init_bbp(rt2x00dev))) in rt73usb_enable_radio()
1371 static void rt73usb_disable_radio(struct rt2x00_dev *rt2x00dev) in rt73usb_disable_radio() argument
1373 rt2x00usb_register_write(rt2x00dev, MAC_CSR10, 0x00001818); in rt73usb_disable_radio()
1378 rt2x00usb_register_write(rt2x00dev, TXRX_CSR9, 0); in rt73usb_disable_radio()
1380 rt2x00usb_disable_radio(rt2x00dev); in rt73usb_disable_radio()
1383 static int rt73usb_set_state(struct rt2x00_dev *rt2x00dev, enum dev_state state) in rt73usb_set_state() argument
1391 rt2x00usb_register_read(rt2x00dev, MAC_CSR12, &reg); in rt73usb_set_state()
1394 rt2x00usb_register_write(rt2x00dev, MAC_CSR12, reg); in rt73usb_set_state()
1402 rt2x00usb_register_read(rt2x00dev, MAC_CSR12, &reg2); in rt73usb_set_state()
1406 rt2x00usb_register_write(rt2x00dev, MAC_CSR12, reg); in rt73usb_set_state()
1413 static int rt73usb_set_device_state(struct rt2x00_dev *rt2x00dev, in rt73usb_set_device_state() argument
1420 retval = rt73usb_enable_radio(rt2x00dev); in rt73usb_set_device_state()
1423 rt73usb_disable_radio(rt2x00dev); in rt73usb_set_device_state()
1433 retval = rt73usb_set_state(rt2x00dev, state); in rt73usb_set_device_state()
1441 rt2x00_err(rt2x00dev, "Device failed to enter state %d (%d)\n", in rt73usb_set_device_state()
1512 TXPOWER_TO_DEV(entry->queue->rt2x00dev->tx_power)); in rt73usb_write_tx_desc()
1530 struct rt2x00_dev *rt2x00dev = entry->queue->rt2x00dev; in rt73usb_write_beacon() local
1539 rt2x00usb_register_read(rt2x00dev, TXRX_CSR9, &reg); in rt73usb_write_beacon()
1542 rt2x00usb_register_write(rt2x00dev, TXRX_CSR9, reg); in rt73usb_write_beacon()
1558 rt2x00debug_dump_frame(rt2x00dev, DUMP_FRAME_BEACON, entry->skb); in rt73usb_write_beacon()
1565 rt2x00_err(rt2x00dev, "Failure padding beacon, aborting\n"); in rt73usb_write_beacon()
1568 rt2x00usb_register_write(rt2x00dev, TXRX_CSR9, orig_reg); in rt73usb_write_beacon()
1573 rt2x00usb_register_multiwrite(rt2x00dev, beacon_base, entry->skb->data, in rt73usb_write_beacon()
1582 rt2x00usb_register_write(rt2x00dev, TXRX_CSR10, 0x00001008); in rt73usb_write_beacon()
1585 rt2x00usb_register_write(rt2x00dev, TXRX_CSR9, reg); in rt73usb_write_beacon()
1596 struct rt2x00_dev *rt2x00dev = entry->queue->rt2x00dev; in rt73usb_clear_beacon() local
1604 rt2x00usb_register_read(rt2x00dev, TXRX_CSR9, &orig_reg); in rt73usb_clear_beacon()
1607 rt2x00usb_register_write(rt2x00dev, TXRX_CSR9, reg); in rt73usb_clear_beacon()
1613 rt2x00usb_register_write(rt2x00dev, beacon_base, 0); in rt73usb_clear_beacon()
1618 rt2x00usb_register_write(rt2x00dev, TXRX_CSR9, orig_reg); in rt73usb_clear_beacon()
1638 static int rt73usb_agc_to_rssi(struct rt2x00_dev *rt2x00dev, int rxd_w1) in rt73usb_agc_to_rssi() argument
1640 u8 offset = rt2x00dev->lna_gain; in rt73usb_agc_to_rssi()
1658 if (rt2x00dev->curr_band == IEEE80211_BAND_5GHZ) { in rt73usb_agc_to_rssi()
1659 if (rt2x00_has_cap_external_lna_a(rt2x00dev)) { in rt73usb_agc_to_rssi()
1676 struct rt2x00_dev *rt2x00dev = entry->queue->rt2x00dev; in rt73usb_fill_rxdone() local
1735 rxdesc->rssi = rt73usb_agc_to_rssi(rt2x00dev, word1); in rt73usb_fill_rxdone()
1755 static int rt73usb_validate_eeprom(struct rt2x00_dev *rt2x00dev) in rt73usb_validate_eeprom() argument
1761 rt2x00usb_eeprom_read(rt2x00dev, rt2x00dev->eeprom, EEPROM_SIZE); in rt73usb_validate_eeprom()
1766 mac = rt2x00_eeprom_addr(rt2x00dev, EEPROM_MAC_ADDR_0); in rt73usb_validate_eeprom()
1769 rt2x00_eeprom_dbg(rt2x00dev, "MAC: %pM\n", mac); in rt73usb_validate_eeprom()
1772 rt2x00_eeprom_read(rt2x00dev, EEPROM_ANTENNA, &word); in rt73usb_validate_eeprom()
1783 rt2x00_eeprom_write(rt2x00dev, EEPROM_ANTENNA, word); in rt73usb_validate_eeprom()
1784 rt2x00_eeprom_dbg(rt2x00dev, "Antenna: 0x%04x\n", word); in rt73usb_validate_eeprom()
1787 rt2x00_eeprom_read(rt2x00dev, EEPROM_NIC, &word); in rt73usb_validate_eeprom()
1790 rt2x00_eeprom_write(rt2x00dev, EEPROM_NIC, word); in rt73usb_validate_eeprom()
1791 rt2x00_eeprom_dbg(rt2x00dev, "NIC: 0x%04x\n", word); in rt73usb_validate_eeprom()
1794 rt2x00_eeprom_read(rt2x00dev, EEPROM_LED, &word); in rt73usb_validate_eeprom()
1806 rt2x00_eeprom_write(rt2x00dev, EEPROM_LED, word); in rt73usb_validate_eeprom()
1807 rt2x00_eeprom_dbg(rt2x00dev, "Led: 0x%04x\n", word); in rt73usb_validate_eeprom()
1810 rt2x00_eeprom_read(rt2x00dev, EEPROM_FREQ, &word); in rt73usb_validate_eeprom()
1814 rt2x00_eeprom_write(rt2x00dev, EEPROM_FREQ, word); in rt73usb_validate_eeprom()
1815 rt2x00_eeprom_dbg(rt2x00dev, "Freq: 0x%04x\n", word); in rt73usb_validate_eeprom()
1818 rt2x00_eeprom_read(rt2x00dev, EEPROM_RSSI_OFFSET_BG, &word); in rt73usb_validate_eeprom()
1822 rt2x00_eeprom_write(rt2x00dev, EEPROM_RSSI_OFFSET_BG, word); in rt73usb_validate_eeprom()
1823 rt2x00_eeprom_dbg(rt2x00dev, "RSSI OFFSET BG: 0x%04x\n", word); in rt73usb_validate_eeprom()
1831 rt2x00_eeprom_write(rt2x00dev, EEPROM_RSSI_OFFSET_BG, word); in rt73usb_validate_eeprom()
1834 rt2x00_eeprom_read(rt2x00dev, EEPROM_RSSI_OFFSET_A, &word); in rt73usb_validate_eeprom()
1838 rt2x00_eeprom_write(rt2x00dev, EEPROM_RSSI_OFFSET_A, word); in rt73usb_validate_eeprom()
1839 rt2x00_eeprom_dbg(rt2x00dev, "RSSI OFFSET A: 0x%04x\n", word); in rt73usb_validate_eeprom()
1847 rt2x00_eeprom_write(rt2x00dev, EEPROM_RSSI_OFFSET_A, word); in rt73usb_validate_eeprom()
1853 static int rt73usb_init_eeprom(struct rt2x00_dev *rt2x00dev) in rt73usb_init_eeprom() argument
1862 rt2x00_eeprom_read(rt2x00dev, EEPROM_ANTENNA, &eeprom); in rt73usb_init_eeprom()
1868 rt2x00usb_register_read(rt2x00dev, MAC_CSR0, &reg); in rt73usb_init_eeprom()
1869 rt2x00_set_chip(rt2x00dev, rt2x00_get_field32(reg, MAC_CSR0_CHIPSET), in rt73usb_init_eeprom()
1872 if (!rt2x00_rt(rt2x00dev, RT2573) || (rt2x00_rev(rt2x00dev) == 0)) { in rt73usb_init_eeprom()
1873 rt2x00_err(rt2x00dev, "Invalid RT chipset detected\n"); in rt73usb_init_eeprom()
1877 if (!rt2x00_rf(rt2x00dev, RF5226) && in rt73usb_init_eeprom()
1878 !rt2x00_rf(rt2x00dev, RF2528) && in rt73usb_init_eeprom()
1879 !rt2x00_rf(rt2x00dev, RF5225) && in rt73usb_init_eeprom()
1880 !rt2x00_rf(rt2x00dev, RF2527)) { in rt73usb_init_eeprom()
1881 rt2x00_err(rt2x00dev, "Invalid RF chipset detected\n"); in rt73usb_init_eeprom()
1888 rt2x00dev->default_ant.tx = in rt73usb_init_eeprom()
1890 rt2x00dev->default_ant.rx = in rt73usb_init_eeprom()
1897 __set_bit(CAPABILITY_FRAME_TYPE, &rt2x00dev->cap_flags); in rt73usb_init_eeprom()
1903 __set_bit(CAPABILITY_HW_BUTTON, &rt2x00dev->cap_flags); in rt73usb_init_eeprom()
1908 rt2x00_eeprom_read(rt2x00dev, EEPROM_FREQ, &eeprom); in rt73usb_init_eeprom()
1909 rt2x00dev->freq_offset = rt2x00_get_field16(eeprom, EEPROM_FREQ_OFFSET); in rt73usb_init_eeprom()
1914 rt2x00_eeprom_read(rt2x00dev, EEPROM_NIC, &eeprom); in rt73usb_init_eeprom()
1917 __set_bit(CAPABILITY_EXTERNAL_LNA_A, &rt2x00dev->cap_flags); in rt73usb_init_eeprom()
1918 __set_bit(CAPABILITY_EXTERNAL_LNA_BG, &rt2x00dev->cap_flags); in rt73usb_init_eeprom()
1925 rt2x00_eeprom_read(rt2x00dev, EEPROM_LED, &eeprom); in rt73usb_init_eeprom()
1927 rt73usb_init_led(rt2x00dev, &rt2x00dev->led_radio, LED_TYPE_RADIO); in rt73usb_init_eeprom()
1928 rt73usb_init_led(rt2x00dev, &rt2x00dev->led_assoc, LED_TYPE_ASSOC); in rt73usb_init_eeprom()
1930 rt73usb_init_led(rt2x00dev, &rt2x00dev->led_qual, in rt73usb_init_eeprom()
1933 rt2x00_set_field16(&rt2x00dev->led_mcu_reg, MCU_LEDCS_LED_MODE, value); in rt73usb_init_eeprom()
1934 rt2x00_set_field16(&rt2x00dev->led_mcu_reg, MCU_LEDCS_POLARITY_GPIO_0, in rt73usb_init_eeprom()
1937 rt2x00_set_field16(&rt2x00dev->led_mcu_reg, MCU_LEDCS_POLARITY_GPIO_1, in rt73usb_init_eeprom()
1940 rt2x00_set_field16(&rt2x00dev->led_mcu_reg, MCU_LEDCS_POLARITY_GPIO_2, in rt73usb_init_eeprom()
1943 rt2x00_set_field16(&rt2x00dev->led_mcu_reg, MCU_LEDCS_POLARITY_GPIO_3, in rt73usb_init_eeprom()
1946 rt2x00_set_field16(&rt2x00dev->led_mcu_reg, MCU_LEDCS_POLARITY_GPIO_4, in rt73usb_init_eeprom()
1949 rt2x00_set_field16(&rt2x00dev->led_mcu_reg, MCU_LEDCS_POLARITY_ACT, in rt73usb_init_eeprom()
1951 rt2x00_set_field16(&rt2x00dev->led_mcu_reg, MCU_LEDCS_POLARITY_READY_BG, in rt73usb_init_eeprom()
1954 rt2x00_set_field16(&rt2x00dev->led_mcu_reg, MCU_LEDCS_POLARITY_READY_A, in rt73usb_init_eeprom()
2098 static int rt73usb_probe_hw_mode(struct rt2x00_dev *rt2x00dev) in rt73usb_probe_hw_mode() argument
2100 struct hw_mode_spec *spec = &rt2x00dev->spec; in rt73usb_probe_hw_mode()
2114 ieee80211_hw_set(rt2x00dev->hw, PS_NULLFUNC_STACK); in rt73usb_probe_hw_mode()
2115 ieee80211_hw_set(rt2x00dev->hw, SIGNAL_DBM); in rt73usb_probe_hw_mode()
2116 ieee80211_hw_set(rt2x00dev->hw, SUPPORTS_PS); in rt73usb_probe_hw_mode()
2118 SET_IEEE80211_DEV(rt2x00dev->hw, rt2x00dev->dev); in rt73usb_probe_hw_mode()
2119 SET_IEEE80211_PERM_ADDR(rt2x00dev->hw, in rt73usb_probe_hw_mode()
2120 rt2x00_eeprom_addr(rt2x00dev, in rt73usb_probe_hw_mode()
2129 if (rt2x00_rf(rt2x00dev, RF2528)) { in rt73usb_probe_hw_mode()
2132 } else if (rt2x00_rf(rt2x00dev, RF5226)) { in rt73usb_probe_hw_mode()
2136 } else if (rt2x00_rf(rt2x00dev, RF2527)) { in rt73usb_probe_hw_mode()
2139 } else if (rt2x00_rf(rt2x00dev, RF5225)) { in rt73usb_probe_hw_mode()
2154 tx_power = rt2x00_eeprom_addr(rt2x00dev, EEPROM_TXPOWER_G_START); in rt73usb_probe_hw_mode()
2161 tx_power = rt2x00_eeprom_addr(rt2x00dev, EEPROM_TXPOWER_A_START); in rt73usb_probe_hw_mode()
2172 static int rt73usb_probe_hw(struct rt2x00_dev *rt2x00dev) in rt73usb_probe_hw() argument
2180 retval = rt73usb_validate_eeprom(rt2x00dev); in rt73usb_probe_hw()
2184 retval = rt73usb_init_eeprom(rt2x00dev); in rt73usb_probe_hw()
2192 rt2x00usb_register_read(rt2x00dev, MAC_CSR13, &reg); in rt73usb_probe_hw()
2194 rt2x00usb_register_write(rt2x00dev, MAC_CSR13, reg); in rt73usb_probe_hw()
2199 retval = rt73usb_probe_hw_mode(rt2x00dev); in rt73usb_probe_hw()
2207 __set_bit(CAPABILITY_CONTROL_FILTERS, &rt2x00dev->cap_flags); in rt73usb_probe_hw()
2212 __set_bit(REQUIRE_FIRMWARE, &rt2x00dev->cap_flags); in rt73usb_probe_hw()
2214 __set_bit(CAPABILITY_HW_CRYPTO, &rt2x00dev->cap_flags); in rt73usb_probe_hw()
2215 __set_bit(CAPABILITY_LINK_TUNING, &rt2x00dev->cap_flags); in rt73usb_probe_hw()
2216 __set_bit(REQUIRE_PS_AUTOWAKE, &rt2x00dev->cap_flags); in rt73usb_probe_hw()
2221 rt2x00dev->rssi_offset = DEFAULT_RSSI_OFFSET; in rt73usb_probe_hw()
2233 struct rt2x00_dev *rt2x00dev = hw->priv; in rt73usb_conf_tx() local
2257 queue = rt2x00queue_get_tx_queue(rt2x00dev, queue_idx); in rt73usb_conf_tx()
2264 rt2x00usb_register_read(rt2x00dev, offset, &reg); in rt73usb_conf_tx()
2266 rt2x00usb_register_write(rt2x00dev, offset, reg); in rt73usb_conf_tx()
2272 rt2x00usb_register_read(rt2x00dev, AIFSN_CSR, &reg); in rt73usb_conf_tx()
2274 rt2x00usb_register_write(rt2x00dev, AIFSN_CSR, reg); in rt73usb_conf_tx()
2276 rt2x00usb_register_read(rt2x00dev, CWMIN_CSR, &reg); in rt73usb_conf_tx()
2278 rt2x00usb_register_write(rt2x00dev, CWMIN_CSR, reg); in rt73usb_conf_tx()
2280 rt2x00usb_register_read(rt2x00dev, CWMAX_CSR, &reg); in rt73usb_conf_tx()
2282 rt2x00usb_register_write(rt2x00dev, CWMAX_CSR, reg); in rt73usb_conf_tx()
2289 struct rt2x00_dev *rt2x00dev = hw->priv; in rt73usb_get_tsf() local
2293 rt2x00usb_register_read(rt2x00dev, TXRX_CSR13, &reg); in rt73usb_get_tsf()
2295 rt2x00usb_register_read(rt2x00dev, TXRX_CSR12, &reg); in rt73usb_get_tsf()