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, ®)) { 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 u8 rt73usb_bbp_read(struct rt2x00_dev *rt2x00dev, in rt73usb_bbp_read() argument
93 mutex_lock(&rt2x00dev->csr_mutex); in rt73usb_bbp_read()
103 if (WAIT_FOR_BBP(rt2x00dev, ®)) { in rt73usb_bbp_read()
109 rt2x00usb_register_write_lock(rt2x00dev, PHY_CSR3, reg); in rt73usb_bbp_read()
111 WAIT_FOR_BBP(rt2x00dev, ®); in rt73usb_bbp_read()
116 mutex_unlock(&rt2x00dev->csr_mutex); in rt73usb_bbp_read()
121 static void rt73usb_rf_write(struct rt2x00_dev *rt2x00dev, in rt73usb_rf_write() argument
126 mutex_lock(&rt2x00dev->csr_mutex); in rt73usb_rf_write()
132 if (WAIT_FOR_RF(rt2x00dev, ®)) { in rt73usb_rf_write()
140 20 + (rt2x00_rf(rt2x00dev, RF5225) || in rt73usb_rf_write()
141 rt2x00_rf(rt2x00dev, RF2527))); in rt73usb_rf_write()
145 rt2x00usb_register_write_lock(rt2x00dev, PHY_CSR4, reg); in rt73usb_rf_write()
146 rt2x00_rf_write(rt2x00dev, word, value); in rt73usb_rf_write()
149 mutex_unlock(&rt2x00dev->csr_mutex); in rt73usb_rf_write()
187 static int rt73usb_rfkill_poll(struct rt2x00_dev *rt2x00dev) in rt73usb_rfkill_poll() argument
191 reg = rt2x00usb_register_read(rt2x00dev, MAC_CSR13); in rt73usb_rfkill_poll()
203 (enabled && led->rt2x00dev->curr_band == NL80211_BAND_5GHZ); in rt73usb_brightness_set()
205 (enabled && led->rt2x00dev->curr_band == NL80211_BAND_2GHZ); in rt73usb_brightness_set()
208 rt2x00_set_field16(&led->rt2x00dev->led_mcu_reg, in rt73usb_brightness_set()
211 rt2x00usb_vendor_request_sw(led->rt2x00dev, USB_LED_CONTROL, in rt73usb_brightness_set()
212 0, led->rt2x00dev->led_mcu_reg, in rt73usb_brightness_set()
215 rt2x00_set_field16(&led->rt2x00dev->led_mcu_reg, in rt73usb_brightness_set()
217 rt2x00_set_field16(&led->rt2x00dev->led_mcu_reg, in rt73usb_brightness_set()
220 rt2x00usb_vendor_request_sw(led->rt2x00dev, USB_LED_CONTROL, in rt73usb_brightness_set()
221 0, led->rt2x00dev->led_mcu_reg, in rt73usb_brightness_set()
229 rt2x00usb_vendor_request_sw(led->rt2x00dev, USB_LED_CONTROL, in rt73usb_brightness_set()
231 led->rt2x00dev->led_mcu_reg, in rt73usb_brightness_set()
244 reg = rt2x00usb_register_read(led->rt2x00dev, MAC_CSR14); in rt73usb_blink_set()
247 rt2x00usb_register_write(led->rt2x00dev, MAC_CSR14, reg); in rt73usb_blink_set()
252 static void rt73usb_init_led(struct rt2x00_dev *rt2x00dev, in rt73usb_init_led() argument
256 led->rt2x00dev = rt2x00dev; in rt73usb_init_led()
267 static int rt73usb_config_shared_key(struct rt2x00_dev *rt2x00dev, in rt73usb_config_shared_key() argument
289 reg = rt2x00usb_register_read(rt2x00dev, SEC_CSR0); in rt73usb_config_shared_key()
308 rt2x00usb_register_multiwrite(rt2x00dev, reg, in rt73usb_config_shared_key()
322 reg = rt2x00usb_register_read(rt2x00dev, SEC_CSR1); in rt73usb_config_shared_key()
324 rt2x00usb_register_write(rt2x00dev, SEC_CSR1, reg); in rt73usb_config_shared_key()
329 reg = rt2x00usb_register_read(rt2x00dev, SEC_CSR5); in rt73usb_config_shared_key()
331 rt2x00usb_register_write(rt2x00dev, SEC_CSR5, reg); in rt73usb_config_shared_key()
354 reg = rt2x00usb_register_read(rt2x00dev, SEC_CSR0); in rt73usb_config_shared_key()
359 rt2x00usb_register_write(rt2x00dev, SEC_CSR0, reg); in rt73usb_config_shared_key()
364 static int rt73usb_config_pairwise_key(struct rt2x00_dev *rt2x00dev, in rt73usb_config_pairwise_key() argument
383 reg = rt2x00usb_register_read(rt2x00dev, SEC_CSR2); in rt73usb_config_pairwise_key()
386 reg = rt2x00usb_register_read(rt2x00dev, SEC_CSR3); in rt73usb_config_pairwise_key()
404 rt2x00usb_register_multiwrite(rt2x00dev, reg, in rt73usb_config_pairwise_key()
415 rt2x00usb_register_multiwrite(rt2x00dev, reg, in rt73usb_config_pairwise_key()
423 reg = rt2x00usb_register_read(rt2x00dev, SEC_CSR4); in rt73usb_config_pairwise_key()
425 rt2x00usb_register_write(rt2x00dev, SEC_CSR4, reg); in rt73usb_config_pairwise_key()
448 reg = rt2x00usb_register_read(rt2x00dev, SEC_CSR2); in rt73usb_config_pairwise_key()
453 rt2x00usb_register_write(rt2x00dev, SEC_CSR2, reg); in rt73usb_config_pairwise_key()
457 reg = rt2x00usb_register_read(rt2x00dev, SEC_CSR3); in rt73usb_config_pairwise_key()
462 rt2x00usb_register_write(rt2x00dev, SEC_CSR3, reg); in rt73usb_config_pairwise_key()
468 static void rt73usb_config_filter(struct rt2x00_dev *rt2x00dev, in rt73usb_config_filter() argument
479 reg = rt2x00usb_register_read(rt2x00dev, TXRX_CSR0); in rt73usb_config_filter()
487 !test_bit(CONFIG_MONITORING, &rt2x00dev->flags)); in rt73usb_config_filter()
489 !test_bit(CONFIG_MONITORING, &rt2x00dev->flags) && in rt73usb_config_filter()
490 !rt2x00dev->intf_ap_count); in rt73usb_config_filter()
497 rt2x00usb_register_write(rt2x00dev, TXRX_CSR0, reg); in rt73usb_config_filter()
500 static void rt73usb_config_intf(struct rt2x00_dev *rt2x00dev, in rt73usb_config_intf() argument
511 reg = rt2x00usb_register_read(rt2x00dev, TXRX_CSR9); in rt73usb_config_intf()
513 rt2x00usb_register_write(rt2x00dev, TXRX_CSR9, reg); in rt73usb_config_intf()
521 rt2x00usb_register_multiwrite(rt2x00dev, MAC_CSR2, in rt73usb_config_intf()
530 rt2x00usb_register_multiwrite(rt2x00dev, MAC_CSR4, in rt73usb_config_intf()
535 static void rt73usb_config_erp(struct rt2x00_dev *rt2x00dev, in rt73usb_config_erp() argument
541 reg = rt2x00usb_register_read(rt2x00dev, TXRX_CSR0); in rt73usb_config_erp()
544 rt2x00usb_register_write(rt2x00dev, TXRX_CSR0, reg); in rt73usb_config_erp()
547 reg = rt2x00usb_register_read(rt2x00dev, TXRX_CSR4); in rt73usb_config_erp()
551 rt2x00usb_register_write(rt2x00dev, TXRX_CSR4, reg); in rt73usb_config_erp()
555 rt2x00usb_register_write(rt2x00dev, TXRX_CSR5, in rt73usb_config_erp()
559 reg = rt2x00usb_register_read(rt2x00dev, TXRX_CSR9); in rt73usb_config_erp()
562 rt2x00usb_register_write(rt2x00dev, TXRX_CSR9, reg); in rt73usb_config_erp()
566 reg = rt2x00usb_register_read(rt2x00dev, MAC_CSR9); in rt73usb_config_erp()
568 rt2x00usb_register_write(rt2x00dev, MAC_CSR9, reg); in rt73usb_config_erp()
570 reg = rt2x00usb_register_read(rt2x00dev, MAC_CSR8); in rt73usb_config_erp()
574 rt2x00usb_register_write(rt2x00dev, MAC_CSR8, reg); in rt73usb_config_erp()
578 static void rt73usb_config_antenna_5x(struct rt2x00_dev *rt2x00dev, in rt73usb_config_antenna_5x() argument
586 r3 = rt73usb_bbp_read(rt2x00dev, 3); in rt73usb_config_antenna_5x()
587 r4 = rt73usb_bbp_read(rt2x00dev, 4); in rt73usb_config_antenna_5x()
588 r77 = rt73usb_bbp_read(rt2x00dev, 77); in rt73usb_config_antenna_5x()
598 temp = !rt2x00_has_cap_frame_type(rt2x00dev) && in rt73usb_config_antenna_5x()
599 (rt2x00dev->curr_band != NL80211_BAND_5GHZ); in rt73usb_config_antenna_5x()
605 if (rt2x00dev->curr_band == NL80211_BAND_5GHZ) in rt73usb_config_antenna_5x()
614 if (rt2x00dev->curr_band == NL80211_BAND_5GHZ) in rt73usb_config_antenna_5x()
621 rt73usb_bbp_write(rt2x00dev, 77, r77); in rt73usb_config_antenna_5x()
622 rt73usb_bbp_write(rt2x00dev, 3, r3); in rt73usb_config_antenna_5x()
623 rt73usb_bbp_write(rt2x00dev, 4, r4); in rt73usb_config_antenna_5x()
626 static void rt73usb_config_antenna_2x(struct rt2x00_dev *rt2x00dev, in rt73usb_config_antenna_2x() argument
633 r3 = rt73usb_bbp_read(rt2x00dev, 3); in rt73usb_config_antenna_2x()
634 r4 = rt73usb_bbp_read(rt2x00dev, 4); in rt73usb_config_antenna_2x()
635 r77 = rt73usb_bbp_read(rt2x00dev, 77); in rt73usb_config_antenna_2x()
639 !rt2x00_has_cap_frame_type(rt2x00dev)); in rt73usb_config_antenna_2x()
659 rt73usb_bbp_write(rt2x00dev, 77, r77); in rt73usb_config_antenna_2x()
660 rt73usb_bbp_write(rt2x00dev, 3, r3); in rt73usb_config_antenna_2x()
661 rt73usb_bbp_write(rt2x00dev, 4, r4); in rt73usb_config_antenna_2x()
695 static void rt73usb_config_ant(struct rt2x00_dev *rt2x00dev, in rt73usb_config_ant() argument
710 if (rt2x00dev->curr_band == NL80211_BAND_5GHZ) { in rt73usb_config_ant()
712 lna = rt2x00_has_cap_external_lna_a(rt2x00dev); in rt73usb_config_ant()
715 lna = rt2x00_has_cap_external_lna_bg(rt2x00dev); in rt73usb_config_ant()
719 rt73usb_bbp_write(rt2x00dev, sel[i].word, sel[i].value[lna]); in rt73usb_config_ant()
721 reg = rt2x00usb_register_read(rt2x00dev, PHY_CSR0); in rt73usb_config_ant()
724 (rt2x00dev->curr_band == NL80211_BAND_2GHZ)); in rt73usb_config_ant()
726 (rt2x00dev->curr_band == NL80211_BAND_5GHZ)); in rt73usb_config_ant()
728 rt2x00usb_register_write(rt2x00dev, PHY_CSR0, reg); in rt73usb_config_ant()
730 if (rt2x00_rf(rt2x00dev, RF5226) || rt2x00_rf(rt2x00dev, RF5225)) in rt73usb_config_ant()
731 rt73usb_config_antenna_5x(rt2x00dev, ant); in rt73usb_config_ant()
732 else if (rt2x00_rf(rt2x00dev, RF2528) || rt2x00_rf(rt2x00dev, RF2527)) in rt73usb_config_ant()
733 rt73usb_config_antenna_2x(rt2x00dev, ant); in rt73usb_config_ant()
736 static void rt73usb_config_lna_gain(struct rt2x00_dev *rt2x00dev, in rt73usb_config_lna_gain() argument
743 if (rt2x00_has_cap_external_lna_bg(rt2x00dev)) in rt73usb_config_lna_gain()
746 eeprom = rt2x00_eeprom_read(rt2x00dev, EEPROM_RSSI_OFFSET_BG); in rt73usb_config_lna_gain()
749 eeprom = rt2x00_eeprom_read(rt2x00dev, EEPROM_RSSI_OFFSET_A); in rt73usb_config_lna_gain()
753 rt2x00dev->lna_gain = lna_gain; in rt73usb_config_lna_gain()
756 static void rt73usb_config_channel(struct rt2x00_dev *rt2x00dev, in rt73usb_config_channel() argument
764 rt2x00_set_field32(&rf->rf4, RF4_FREQ_OFFSET, rt2x00dev->freq_offset); in rt73usb_config_channel()
766 smart = !(rt2x00_rf(rt2x00dev, RF5225) || rt2x00_rf(rt2x00dev, RF2527)); in rt73usb_config_channel()
768 r3 = rt73usb_bbp_read(rt2x00dev, 3); in rt73usb_config_channel()
770 rt73usb_bbp_write(rt2x00dev, 3, r3); in rt73usb_config_channel()
777 rt73usb_bbp_write(rt2x00dev, 94, r94); 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()
789 rt73usb_rf_write(rt2x00dev, 1, rf->rf1); in rt73usb_config_channel()
790 rt73usb_rf_write(rt2x00dev, 2, rf->rf2); in rt73usb_config_channel()
791 rt73usb_rf_write(rt2x00dev, 3, rf->rf3 & ~0x00000004); in rt73usb_config_channel()
792 rt73usb_rf_write(rt2x00dev, 4, rf->rf4); in rt73usb_config_channel()
797 static void rt73usb_config_txpower(struct rt2x00_dev *rt2x00dev, in rt73usb_config_txpower() argument
802 rf.rf1 = rt2x00_rf_read(rt2x00dev, 1); in rt73usb_config_txpower()
803 rf.rf2 = rt2x00_rf_read(rt2x00dev, 2); in rt73usb_config_txpower()
804 rf.rf3 = rt2x00_rf_read(rt2x00dev, 3); in rt73usb_config_txpower()
805 rf.rf4 = rt2x00_rf_read(rt2x00dev, 4); in rt73usb_config_txpower()
807 rt73usb_config_channel(rt2x00dev, &rf, txpower); in rt73usb_config_txpower()
810 static void rt73usb_config_retry_limit(struct rt2x00_dev *rt2x00dev, in rt73usb_config_retry_limit() argument
815 reg = rt2x00usb_register_read(rt2x00dev, TXRX_CSR4); in rt73usb_config_retry_limit()
823 rt2x00usb_register_write(rt2x00dev, TXRX_CSR4, reg); in rt73usb_config_retry_limit()
826 static void rt73usb_config_ps(struct rt2x00_dev *rt2x00dev, in rt73usb_config_ps() argument
835 reg = rt2x00usb_register_read(rt2x00dev, MAC_CSR11); in rt73usb_config_ps()
837 rt2x00dev->beacon_int - 10); in rt73usb_config_ps()
844 rt2x00usb_register_write(rt2x00dev, MAC_CSR11, reg); in rt73usb_config_ps()
847 rt2x00usb_register_write(rt2x00dev, MAC_CSR11, reg); in rt73usb_config_ps()
849 rt2x00usb_vendor_request_sw(rt2x00dev, USB_DEVICE_MODE, 0, in rt73usb_config_ps()
852 reg = rt2x00usb_register_read(rt2x00dev, MAC_CSR11); in rt73usb_config_ps()
857 rt2x00usb_register_write(rt2x00dev, MAC_CSR11, reg); in rt73usb_config_ps()
859 rt2x00usb_vendor_request_sw(rt2x00dev, USB_DEVICE_MODE, 0, in rt73usb_config_ps()
864 static void rt73usb_config(struct rt2x00_dev *rt2x00dev, in rt73usb_config() argument
869 rt73usb_config_lna_gain(rt2x00dev, libconf); in rt73usb_config()
872 rt73usb_config_channel(rt2x00dev, &libconf->rf, in rt73usb_config()
876 rt73usb_config_txpower(rt2x00dev, libconf->conf->power_level); in rt73usb_config()
878 rt73usb_config_retry_limit(rt2x00dev, libconf); in rt73usb_config()
880 rt73usb_config_ps(rt2x00dev, libconf); in rt73usb_config()
886 static void rt73usb_link_stats(struct rt2x00_dev *rt2x00dev, in rt73usb_link_stats() argument
894 reg = rt2x00usb_register_read(rt2x00dev, STA_CSR0); in rt73usb_link_stats()
900 reg = rt2x00usb_register_read(rt2x00dev, STA_CSR1); in rt73usb_link_stats()
904 static inline void rt73usb_set_vgc(struct rt2x00_dev *rt2x00dev, in rt73usb_set_vgc() argument
908 rt73usb_bbp_write(rt2x00dev, 17, vgc_level); in rt73usb_set_vgc()
914 static void rt73usb_reset_tuner(struct rt2x00_dev *rt2x00dev, in rt73usb_reset_tuner() argument
917 rt73usb_set_vgc(rt2x00dev, qual, 0x20); in rt73usb_reset_tuner()
920 static void rt73usb_link_tuner(struct rt2x00_dev *rt2x00dev, in rt73usb_link_tuner() argument
929 if (rt2x00dev->curr_band == NL80211_BAND_5GHZ) { in rt73usb_link_tuner()
933 if (rt2x00_has_cap_external_lna_a(rt2x00dev)) { in rt73usb_link_tuner()
949 if (rt2x00_has_cap_external_lna_bg(rt2x00dev)) { in rt73usb_link_tuner()
959 if (!rt2x00dev->intf_associated) in rt73usb_link_tuner()
966 rt73usb_set_vgc(rt2x00dev, qual, 0x60); in rt73usb_link_tuner()
974 rt73usb_set_vgc(rt2x00dev, qual, up_bound); in rt73usb_link_tuner()
982 rt73usb_set_vgc(rt2x00dev, qual, low_bound + 0x10); in rt73usb_link_tuner()
990 rt73usb_set_vgc(rt2x00dev, qual, low_bound + 0x08); in rt73usb_link_tuner()
1003 rt73usb_set_vgc(rt2x00dev, qual, up_bound); in rt73usb_link_tuner()
1014 rt73usb_set_vgc(rt2x00dev, qual, in rt73usb_link_tuner()
1017 rt73usb_set_vgc(rt2x00dev, qual, in rt73usb_link_tuner()
1026 struct rt2x00_dev *rt2x00dev = queue->rt2x00dev; in rt73usb_start_queue() local
1031 reg = rt2x00usb_register_read(rt2x00dev, TXRX_CSR0); in rt73usb_start_queue()
1033 rt2x00usb_register_write(rt2x00dev, TXRX_CSR0, reg); in rt73usb_start_queue()
1036 reg = rt2x00usb_register_read(rt2x00dev, TXRX_CSR9); in rt73usb_start_queue()
1040 rt2x00usb_register_write(rt2x00dev, TXRX_CSR9, reg); in rt73usb_start_queue()
1049 struct rt2x00_dev *rt2x00dev = queue->rt2x00dev; in rt73usb_stop_queue() local
1054 reg = rt2x00usb_register_read(rt2x00dev, TXRX_CSR0); in rt73usb_stop_queue()
1056 rt2x00usb_register_write(rt2x00dev, TXRX_CSR0, reg); in rt73usb_stop_queue()
1059 reg = rt2x00usb_register_read(rt2x00dev, TXRX_CSR9); in rt73usb_stop_queue()
1063 rt2x00usb_register_write(rt2x00dev, TXRX_CSR9, reg); in rt73usb_stop_queue()
1073 static char *rt73usb_get_firmware_name(struct rt2x00_dev *rt2x00dev) in rt73usb_get_firmware_name() argument
1078 static int rt73usb_check_firmware(struct rt2x00_dev *rt2x00dev, in rt73usb_check_firmware() argument
1107 static int rt73usb_load_firmware(struct rt2x00_dev *rt2x00dev, in rt73usb_load_firmware() argument
1118 reg = rt2x00usb_register_read(rt2x00dev, MAC_CSR0); in rt73usb_load_firmware()
1125 rt2x00_err(rt2x00dev, "Unstable hardware\n"); in rt73usb_load_firmware()
1132 rt2x00usb_register_multiwrite(rt2x00dev, FIRMWARE_IMAGE_BASE, data, len); in rt73usb_load_firmware()
1138 status = rt2x00usb_vendor_request_sw(rt2x00dev, USB_DEVICE_MODE, in rt73usb_load_firmware()
1142 rt2x00_err(rt2x00dev, "Failed to write Firmware to device\n"); in rt73usb_load_firmware()
1152 static int rt73usb_init_registers(struct rt2x00_dev *rt2x00dev) in rt73usb_init_registers() argument
1156 reg = rt2x00usb_register_read(rt2x00dev, TXRX_CSR0); in rt73usb_init_registers()
1160 rt2x00usb_register_write(rt2x00dev, TXRX_CSR0, reg); in rt73usb_init_registers()
1162 reg = rt2x00usb_register_read(rt2x00dev, TXRX_CSR1); in rt73usb_init_registers()
1171 rt2x00usb_register_write(rt2x00dev, TXRX_CSR1, reg); in rt73usb_init_registers()
1176 reg = rt2x00usb_register_read(rt2x00dev, TXRX_CSR2); in rt73usb_init_registers()
1185 rt2x00usb_register_write(rt2x00dev, TXRX_CSR2, reg); in rt73usb_init_registers()
1190 reg = rt2x00usb_register_read(rt2x00dev, TXRX_CSR3); in rt73usb_init_registers()
1197 rt2x00usb_register_write(rt2x00dev, TXRX_CSR3, reg); in rt73usb_init_registers()
1199 reg = rt2x00usb_register_read(rt2x00dev, TXRX_CSR7); in rt73usb_init_registers()
1204 rt2x00usb_register_write(rt2x00dev, TXRX_CSR7, reg); in rt73usb_init_registers()
1206 reg = rt2x00usb_register_read(rt2x00dev, TXRX_CSR8); in rt73usb_init_registers()
1211 rt2x00usb_register_write(rt2x00dev, TXRX_CSR8, reg); in rt73usb_init_registers()
1213 reg = rt2x00usb_register_read(rt2x00dev, TXRX_CSR9); in rt73usb_init_registers()
1220 rt2x00usb_register_write(rt2x00dev, TXRX_CSR9, reg); in rt73usb_init_registers()
1222 rt2x00usb_register_write(rt2x00dev, TXRX_CSR15, 0x0000000f); in rt73usb_init_registers()
1224 reg = rt2x00usb_register_read(rt2x00dev, MAC_CSR6); in rt73usb_init_registers()
1226 rt2x00usb_register_write(rt2x00dev, MAC_CSR6, reg); in rt73usb_init_registers()
1228 rt2x00usb_register_write(rt2x00dev, MAC_CSR10, 0x00000718); in rt73usb_init_registers()
1230 if (rt2x00dev->ops->lib->set_device_state(rt2x00dev, STATE_AWAKE)) in rt73usb_init_registers()
1233 rt2x00usb_register_write(rt2x00dev, MAC_CSR13, 0x00007f00); in rt73usb_init_registers()
1239 rt2x00usb_register_write(rt2x00dev, SEC_CSR0, 0x00000000); in rt73usb_init_registers()
1240 rt2x00usb_register_write(rt2x00dev, SEC_CSR1, 0x00000000); in rt73usb_init_registers()
1241 rt2x00usb_register_write(rt2x00dev, SEC_CSR5, 0x00000000); in rt73usb_init_registers()
1244 if (rt2x00_rf(rt2x00dev, RF5225) || rt2x00_rf(rt2x00dev, RF2527)) in rt73usb_init_registers()
1246 rt2x00usb_register_write(rt2x00dev, PHY_CSR1, reg); in rt73usb_init_registers()
1248 rt2x00usb_register_write(rt2x00dev, PHY_CSR5, 0x00040a06); in rt73usb_init_registers()
1249 rt2x00usb_register_write(rt2x00dev, PHY_CSR6, 0x00080606); in rt73usb_init_registers()
1250 rt2x00usb_register_write(rt2x00dev, PHY_CSR7, 0x00000408); in rt73usb_init_registers()
1252 reg = rt2x00usb_register_read(rt2x00dev, MAC_CSR9); in rt73usb_init_registers()
1254 rt2x00usb_register_write(rt2x00dev, MAC_CSR9, reg); in rt73usb_init_registers()
1262 rt2x00usb_register_write(rt2x00dev, HW_BEACON_BASE0, 0); in rt73usb_init_registers()
1263 rt2x00usb_register_write(rt2x00dev, HW_BEACON_BASE1, 0); in rt73usb_init_registers()
1264 rt2x00usb_register_write(rt2x00dev, HW_BEACON_BASE2, 0); in rt73usb_init_registers()
1265 rt2x00usb_register_write(rt2x00dev, HW_BEACON_BASE3, 0); in rt73usb_init_registers()
1272 reg = rt2x00usb_register_read(rt2x00dev, STA_CSR0); in rt73usb_init_registers()
1273 reg = rt2x00usb_register_read(rt2x00dev, STA_CSR1); in rt73usb_init_registers()
1274 reg = rt2x00usb_register_read(rt2x00dev, STA_CSR2); in rt73usb_init_registers()
1279 reg = rt2x00usb_register_read(rt2x00dev, MAC_CSR1); in rt73usb_init_registers()
1282 rt2x00usb_register_write(rt2x00dev, MAC_CSR1, reg); in rt73usb_init_registers()
1284 reg = rt2x00usb_register_read(rt2x00dev, MAC_CSR1); in rt73usb_init_registers()
1287 rt2x00usb_register_write(rt2x00dev, MAC_CSR1, reg); in rt73usb_init_registers()
1289 reg = rt2x00usb_register_read(rt2x00dev, MAC_CSR1); in rt73usb_init_registers()
1291 rt2x00usb_register_write(rt2x00dev, MAC_CSR1, reg); in rt73usb_init_registers()
1296 static int rt73usb_wait_bbp_ready(struct rt2x00_dev *rt2x00dev) in rt73usb_wait_bbp_ready() argument
1302 value = rt73usb_bbp_read(rt2x00dev, 0); in rt73usb_wait_bbp_ready()
1308 rt2x00_err(rt2x00dev, "BBP register access failed, aborting\n"); in rt73usb_wait_bbp_ready()
1312 static int rt73usb_init_bbp(struct rt2x00_dev *rt2x00dev) in rt73usb_init_bbp() argument
1319 if (unlikely(rt73usb_wait_bbp_ready(rt2x00dev))) in rt73usb_init_bbp()
1322 rt73usb_bbp_write(rt2x00dev, 3, 0x80); in rt73usb_init_bbp()
1323 rt73usb_bbp_write(rt2x00dev, 15, 0x30); in rt73usb_init_bbp()
1324 rt73usb_bbp_write(rt2x00dev, 21, 0xc8); in rt73usb_init_bbp()
1325 rt73usb_bbp_write(rt2x00dev, 22, 0x38); in rt73usb_init_bbp()
1326 rt73usb_bbp_write(rt2x00dev, 23, 0x06); in rt73usb_init_bbp()
1327 rt73usb_bbp_write(rt2x00dev, 24, 0xfe); in rt73usb_init_bbp()
1328 rt73usb_bbp_write(rt2x00dev, 25, 0x0a); in rt73usb_init_bbp()
1329 rt73usb_bbp_write(rt2x00dev, 26, 0x0d); in rt73usb_init_bbp()
1330 rt73usb_bbp_write(rt2x00dev, 32, 0x0b); in rt73usb_init_bbp()
1331 rt73usb_bbp_write(rt2x00dev, 34, 0x12); in rt73usb_init_bbp()
1332 rt73usb_bbp_write(rt2x00dev, 37, 0x07); in rt73usb_init_bbp()
1333 rt73usb_bbp_write(rt2x00dev, 39, 0xf8); in rt73usb_init_bbp()
1334 rt73usb_bbp_write(rt2x00dev, 41, 0x60); in rt73usb_init_bbp()
1335 rt73usb_bbp_write(rt2x00dev, 53, 0x10); in rt73usb_init_bbp()
1336 rt73usb_bbp_write(rt2x00dev, 54, 0x18); in rt73usb_init_bbp()
1337 rt73usb_bbp_write(rt2x00dev, 60, 0x10); in rt73usb_init_bbp()
1338 rt73usb_bbp_write(rt2x00dev, 61, 0x04); in rt73usb_init_bbp()
1339 rt73usb_bbp_write(rt2x00dev, 62, 0x04); in rt73usb_init_bbp()
1340 rt73usb_bbp_write(rt2x00dev, 75, 0xfe); in rt73usb_init_bbp()
1341 rt73usb_bbp_write(rt2x00dev, 86, 0xfe); in rt73usb_init_bbp()
1342 rt73usb_bbp_write(rt2x00dev, 88, 0xfe); in rt73usb_init_bbp()
1343 rt73usb_bbp_write(rt2x00dev, 90, 0x0f); in rt73usb_init_bbp()
1344 rt73usb_bbp_write(rt2x00dev, 99, 0x00); in rt73usb_init_bbp()
1345 rt73usb_bbp_write(rt2x00dev, 102, 0x16); in rt73usb_init_bbp()
1346 rt73usb_bbp_write(rt2x00dev, 107, 0x04); in rt73usb_init_bbp()
1349 eeprom = rt2x00_eeprom_read(rt2x00dev, EEPROM_BBP_START + i); in rt73usb_init_bbp()
1354 rt73usb_bbp_write(rt2x00dev, reg_id, value); in rt73usb_init_bbp()
1364 static int rt73usb_enable_radio(struct rt2x00_dev *rt2x00dev) in rt73usb_enable_radio() argument
1369 if (unlikely(rt73usb_init_registers(rt2x00dev) || in rt73usb_enable_radio()
1370 rt73usb_init_bbp(rt2x00dev))) in rt73usb_enable_radio()
1376 static void rt73usb_disable_radio(struct rt2x00_dev *rt2x00dev) in rt73usb_disable_radio() argument
1378 rt2x00usb_register_write(rt2x00dev, MAC_CSR10, 0x00001818); in rt73usb_disable_radio()
1383 rt2x00usb_register_write(rt2x00dev, TXRX_CSR9, 0); in rt73usb_disable_radio()
1385 rt2x00usb_disable_radio(rt2x00dev); in rt73usb_disable_radio()
1388 static int rt73usb_set_state(struct rt2x00_dev *rt2x00dev, enum dev_state state) in rt73usb_set_state() argument
1396 reg = rt2x00usb_register_read(rt2x00dev, MAC_CSR12); in rt73usb_set_state()
1399 rt2x00usb_register_write(rt2x00dev, MAC_CSR12, reg); in rt73usb_set_state()
1407 reg2 = rt2x00usb_register_read(rt2x00dev, MAC_CSR12); in rt73usb_set_state()
1411 rt2x00usb_register_write(rt2x00dev, MAC_CSR12, reg); in rt73usb_set_state()
1418 static int rt73usb_set_device_state(struct rt2x00_dev *rt2x00dev, in rt73usb_set_device_state() argument
1425 retval = rt73usb_enable_radio(rt2x00dev); in rt73usb_set_device_state()
1428 rt73usb_disable_radio(rt2x00dev); in rt73usb_set_device_state()
1438 retval = rt73usb_set_state(rt2x00dev, state); in rt73usb_set_device_state()
1446 rt2x00_err(rt2x00dev, "Device failed to enter state %d (%d)\n", in rt73usb_set_device_state()
1517 TXPOWER_TO_DEV(entry->queue->rt2x00dev->tx_power)); in rt73usb_write_tx_desc()
1535 struct rt2x00_dev *rt2x00dev = entry->queue->rt2x00dev; in rt73usb_write_beacon() local
1544 reg = rt2x00usb_register_read(rt2x00dev, TXRX_CSR9); in rt73usb_write_beacon()
1547 rt2x00usb_register_write(rt2x00dev, TXRX_CSR9, reg); in rt73usb_write_beacon()
1563 rt2x00debug_dump_frame(rt2x00dev, DUMP_FRAME_BEACON, entry); in rt73usb_write_beacon()
1570 rt2x00_err(rt2x00dev, "Failure padding beacon, aborting\n"); in rt73usb_write_beacon()
1573 rt2x00usb_register_write(rt2x00dev, TXRX_CSR9, orig_reg); in rt73usb_write_beacon()
1578 rt2x00usb_register_multiwrite(rt2x00dev, beacon_base, entry->skb->data, in rt73usb_write_beacon()
1587 rt2x00usb_register_write(rt2x00dev, TXRX_CSR10, 0x00001008); in rt73usb_write_beacon()
1590 rt2x00usb_register_write(rt2x00dev, TXRX_CSR9, reg); in rt73usb_write_beacon()
1601 struct rt2x00_dev *rt2x00dev = entry->queue->rt2x00dev; in rt73usb_clear_beacon() local
1609 orig_reg = rt2x00usb_register_read(rt2x00dev, TXRX_CSR9); in rt73usb_clear_beacon()
1612 rt2x00usb_register_write(rt2x00dev, TXRX_CSR9, reg); in rt73usb_clear_beacon()
1618 rt2x00usb_register_write(rt2x00dev, beacon_base, 0); in rt73usb_clear_beacon()
1623 rt2x00usb_register_write(rt2x00dev, TXRX_CSR9, orig_reg); in rt73usb_clear_beacon()
1643 static int rt73usb_agc_to_rssi(struct rt2x00_dev *rt2x00dev, int rxd_w1) in rt73usb_agc_to_rssi() argument
1645 u8 offset = rt2x00dev->lna_gain; in rt73usb_agc_to_rssi()
1663 if (rt2x00dev->curr_band == NL80211_BAND_5GHZ) { in rt73usb_agc_to_rssi()
1664 if (rt2x00_has_cap_external_lna_a(rt2x00dev)) { in rt73usb_agc_to_rssi()
1681 struct rt2x00_dev *rt2x00dev = entry->queue->rt2x00dev; in rt73usb_fill_rxdone() local
1740 rxdesc->rssi = rt73usb_agc_to_rssi(rt2x00dev, word1); in rt73usb_fill_rxdone()
1760 static int rt73usb_validate_eeprom(struct rt2x00_dev *rt2x00dev) in rt73usb_validate_eeprom() argument
1766 rt2x00usb_eeprom_read(rt2x00dev, rt2x00dev->eeprom, EEPROM_SIZE); in rt73usb_validate_eeprom()
1771 mac = rt2x00_eeprom_addr(rt2x00dev, EEPROM_MAC_ADDR_0); in rt73usb_validate_eeprom()
1772 rt2x00lib_set_mac_address(rt2x00dev, mac); in rt73usb_validate_eeprom()
1774 word = rt2x00_eeprom_read(rt2x00dev, EEPROM_ANTENNA); in rt73usb_validate_eeprom()
1785 rt2x00_eeprom_write(rt2x00dev, EEPROM_ANTENNA, word); in rt73usb_validate_eeprom()
1786 rt2x00_eeprom_dbg(rt2x00dev, "Antenna: 0x%04x\n", word); in rt73usb_validate_eeprom()
1789 word = rt2x00_eeprom_read(rt2x00dev, EEPROM_NIC); in rt73usb_validate_eeprom()
1792 rt2x00_eeprom_write(rt2x00dev, EEPROM_NIC, word); in rt73usb_validate_eeprom()
1793 rt2x00_eeprom_dbg(rt2x00dev, "NIC: 0x%04x\n", word); in rt73usb_validate_eeprom()
1796 word = rt2x00_eeprom_read(rt2x00dev, EEPROM_LED); in rt73usb_validate_eeprom()
1808 rt2x00_eeprom_write(rt2x00dev, EEPROM_LED, word); in rt73usb_validate_eeprom()
1809 rt2x00_eeprom_dbg(rt2x00dev, "Led: 0x%04x\n", word); in rt73usb_validate_eeprom()
1812 word = rt2x00_eeprom_read(rt2x00dev, EEPROM_FREQ); in rt73usb_validate_eeprom()
1816 rt2x00_eeprom_write(rt2x00dev, EEPROM_FREQ, word); in rt73usb_validate_eeprom()
1817 rt2x00_eeprom_dbg(rt2x00dev, "Freq: 0x%04x\n", word); in rt73usb_validate_eeprom()
1820 word = rt2x00_eeprom_read(rt2x00dev, EEPROM_RSSI_OFFSET_BG); in rt73usb_validate_eeprom()
1824 rt2x00_eeprom_write(rt2x00dev, EEPROM_RSSI_OFFSET_BG, word); in rt73usb_validate_eeprom()
1825 rt2x00_eeprom_dbg(rt2x00dev, "RSSI OFFSET BG: 0x%04x\n", word); in rt73usb_validate_eeprom()
1833 rt2x00_eeprom_write(rt2x00dev, EEPROM_RSSI_OFFSET_BG, word); in rt73usb_validate_eeprom()
1836 word = rt2x00_eeprom_read(rt2x00dev, EEPROM_RSSI_OFFSET_A); in rt73usb_validate_eeprom()
1840 rt2x00_eeprom_write(rt2x00dev, EEPROM_RSSI_OFFSET_A, word); in rt73usb_validate_eeprom()
1841 rt2x00_eeprom_dbg(rt2x00dev, "RSSI OFFSET A: 0x%04x\n", word); in rt73usb_validate_eeprom()
1849 rt2x00_eeprom_write(rt2x00dev, EEPROM_RSSI_OFFSET_A, word); in rt73usb_validate_eeprom()
1855 static int rt73usb_init_eeprom(struct rt2x00_dev *rt2x00dev) in rt73usb_init_eeprom() argument
1864 eeprom = rt2x00_eeprom_read(rt2x00dev, EEPROM_ANTENNA); in rt73usb_init_eeprom()
1870 reg = rt2x00usb_register_read(rt2x00dev, MAC_CSR0); in rt73usb_init_eeprom()
1871 rt2x00_set_chip(rt2x00dev, rt2x00_get_field32(reg, MAC_CSR0_CHIPSET), in rt73usb_init_eeprom()
1874 if (!rt2x00_rt(rt2x00dev, RT2573) || (rt2x00_rev(rt2x00dev) == 0)) { in rt73usb_init_eeprom()
1875 rt2x00_err(rt2x00dev, "Invalid RT chipset detected\n"); in rt73usb_init_eeprom()
1879 if (!rt2x00_rf(rt2x00dev, RF5226) && in rt73usb_init_eeprom()
1880 !rt2x00_rf(rt2x00dev, RF2528) && in rt73usb_init_eeprom()
1881 !rt2x00_rf(rt2x00dev, RF5225) && in rt73usb_init_eeprom()
1882 !rt2x00_rf(rt2x00dev, RF2527)) { in rt73usb_init_eeprom()
1883 rt2x00_err(rt2x00dev, "Invalid RF chipset detected\n"); in rt73usb_init_eeprom()
1890 rt2x00dev->default_ant.tx = in rt73usb_init_eeprom()
1892 rt2x00dev->default_ant.rx = in rt73usb_init_eeprom()
1899 __set_bit(CAPABILITY_FRAME_TYPE, &rt2x00dev->cap_flags); in rt73usb_init_eeprom()
1905 __set_bit(CAPABILITY_HW_BUTTON, &rt2x00dev->cap_flags); in rt73usb_init_eeprom()
1910 eeprom = rt2x00_eeprom_read(rt2x00dev, EEPROM_FREQ); in rt73usb_init_eeprom()
1911 rt2x00dev->freq_offset = rt2x00_get_field16(eeprom, EEPROM_FREQ_OFFSET); in rt73usb_init_eeprom()
1916 eeprom = rt2x00_eeprom_read(rt2x00dev, EEPROM_NIC); in rt73usb_init_eeprom()
1919 __set_bit(CAPABILITY_EXTERNAL_LNA_A, &rt2x00dev->cap_flags); in rt73usb_init_eeprom()
1920 __set_bit(CAPABILITY_EXTERNAL_LNA_BG, &rt2x00dev->cap_flags); in rt73usb_init_eeprom()
1927 eeprom = rt2x00_eeprom_read(rt2x00dev, EEPROM_LED); in rt73usb_init_eeprom()
1929 rt73usb_init_led(rt2x00dev, &rt2x00dev->led_radio, LED_TYPE_RADIO); in rt73usb_init_eeprom()
1930 rt73usb_init_led(rt2x00dev, &rt2x00dev->led_assoc, LED_TYPE_ASSOC); in rt73usb_init_eeprom()
1932 rt73usb_init_led(rt2x00dev, &rt2x00dev->led_qual, in rt73usb_init_eeprom()
1935 rt2x00_set_field16(&rt2x00dev->led_mcu_reg, MCU_LEDCS_LED_MODE, value); in rt73usb_init_eeprom()
1936 rt2x00_set_field16(&rt2x00dev->led_mcu_reg, MCU_LEDCS_POLARITY_GPIO_0, in rt73usb_init_eeprom()
1939 rt2x00_set_field16(&rt2x00dev->led_mcu_reg, MCU_LEDCS_POLARITY_GPIO_1, in rt73usb_init_eeprom()
1942 rt2x00_set_field16(&rt2x00dev->led_mcu_reg, MCU_LEDCS_POLARITY_GPIO_2, in rt73usb_init_eeprom()
1945 rt2x00_set_field16(&rt2x00dev->led_mcu_reg, MCU_LEDCS_POLARITY_GPIO_3, in rt73usb_init_eeprom()
1948 rt2x00_set_field16(&rt2x00dev->led_mcu_reg, MCU_LEDCS_POLARITY_GPIO_4, in rt73usb_init_eeprom()
1951 rt2x00_set_field16(&rt2x00dev->led_mcu_reg, MCU_LEDCS_POLARITY_ACT, in rt73usb_init_eeprom()
1953 rt2x00_set_field16(&rt2x00dev->led_mcu_reg, MCU_LEDCS_POLARITY_READY_BG, in rt73usb_init_eeprom()
1956 rt2x00_set_field16(&rt2x00dev->led_mcu_reg, MCU_LEDCS_POLARITY_READY_A, in rt73usb_init_eeprom()
2100 static int rt73usb_probe_hw_mode(struct rt2x00_dev *rt2x00dev) in rt73usb_probe_hw_mode() argument
2102 struct hw_mode_spec *spec = &rt2x00dev->spec; in rt73usb_probe_hw_mode()
2116 ieee80211_hw_set(rt2x00dev->hw, PS_NULLFUNC_STACK); in rt73usb_probe_hw_mode()
2117 ieee80211_hw_set(rt2x00dev->hw, SIGNAL_DBM); in rt73usb_probe_hw_mode()
2118 ieee80211_hw_set(rt2x00dev->hw, SUPPORTS_PS); in rt73usb_probe_hw_mode()
2120 SET_IEEE80211_DEV(rt2x00dev->hw, rt2x00dev->dev); in rt73usb_probe_hw_mode()
2121 SET_IEEE80211_PERM_ADDR(rt2x00dev->hw, in rt73usb_probe_hw_mode()
2122 rt2x00_eeprom_addr(rt2x00dev, in rt73usb_probe_hw_mode()
2131 if (rt2x00_rf(rt2x00dev, RF2528)) { in rt73usb_probe_hw_mode()
2134 } else if (rt2x00_rf(rt2x00dev, RF5226)) { in rt73usb_probe_hw_mode()
2138 } else if (rt2x00_rf(rt2x00dev, RF2527)) { in rt73usb_probe_hw_mode()
2141 } else if (rt2x00_rf(rt2x00dev, RF5225)) { in rt73usb_probe_hw_mode()
2156 tx_power = rt2x00_eeprom_addr(rt2x00dev, EEPROM_TXPOWER_G_START); in rt73usb_probe_hw_mode()
2163 tx_power = rt2x00_eeprom_addr(rt2x00dev, EEPROM_TXPOWER_A_START); in rt73usb_probe_hw_mode()
2174 static int rt73usb_probe_hw(struct rt2x00_dev *rt2x00dev) in rt73usb_probe_hw() argument
2182 retval = rt73usb_validate_eeprom(rt2x00dev); in rt73usb_probe_hw()
2186 retval = rt73usb_init_eeprom(rt2x00dev); in rt73usb_probe_hw()
2194 reg = rt2x00usb_register_read(rt2x00dev, MAC_CSR13); in rt73usb_probe_hw()
2196 rt2x00usb_register_write(rt2x00dev, MAC_CSR13, reg); in rt73usb_probe_hw()
2201 retval = rt73usb_probe_hw_mode(rt2x00dev); in rt73usb_probe_hw()
2209 __set_bit(CAPABILITY_CONTROL_FILTERS, &rt2x00dev->cap_flags); in rt73usb_probe_hw()
2214 __set_bit(REQUIRE_FIRMWARE, &rt2x00dev->cap_flags); in rt73usb_probe_hw()
2216 __set_bit(CAPABILITY_HW_CRYPTO, &rt2x00dev->cap_flags); in rt73usb_probe_hw()
2217 __set_bit(CAPABILITY_LINK_TUNING, &rt2x00dev->cap_flags); in rt73usb_probe_hw()
2218 __set_bit(REQUIRE_PS_AUTOWAKE, &rt2x00dev->cap_flags); in rt73usb_probe_hw()
2223 rt2x00dev->rssi_offset = DEFAULT_RSSI_OFFSET; in rt73usb_probe_hw()
2235 struct rt2x00_dev *rt2x00dev = hw->priv; in rt73usb_conf_tx() local
2259 queue = rt2x00queue_get_tx_queue(rt2x00dev, queue_idx); in rt73usb_conf_tx()
2266 reg = rt2x00usb_register_read(rt2x00dev, offset); in rt73usb_conf_tx()
2268 rt2x00usb_register_write(rt2x00dev, offset, reg); in rt73usb_conf_tx()
2274 reg = rt2x00usb_register_read(rt2x00dev, AIFSN_CSR); in rt73usb_conf_tx()
2276 rt2x00usb_register_write(rt2x00dev, AIFSN_CSR, reg); in rt73usb_conf_tx()
2278 reg = rt2x00usb_register_read(rt2x00dev, CWMIN_CSR); in rt73usb_conf_tx()
2280 rt2x00usb_register_write(rt2x00dev, CWMIN_CSR, reg); in rt73usb_conf_tx()
2282 reg = rt2x00usb_register_read(rt2x00dev, CWMAX_CSR); in rt73usb_conf_tx()
2284 rt2x00usb_register_write(rt2x00dev, CWMAX_CSR, reg); in rt73usb_conf_tx()
2291 struct rt2x00_dev *rt2x00dev = hw->priv; in rt73usb_get_tsf() local
2295 reg = rt2x00usb_register_read(rt2x00dev, TXRX_CSR13); in rt73usb_get_tsf()
2297 reg = rt2x00usb_register_read(rt2x00dev, TXRX_CSR12); in rt73usb_get_tsf()