Lines Matching refs:rt2x00dev
52 static void rt73usb_bbp_write(struct rt2x00_dev *rt2x00dev, in rt73usb_bbp_write() argument
57 mutex_lock(&rt2x00dev->csr_mutex); in rt73usb_bbp_write()
63 if (WAIT_FOR_BBP(rt2x00dev, ®)) { in rt73usb_bbp_write()
70 rt2x00usb_register_write_lock(rt2x00dev, PHY_CSR3, reg); in rt73usb_bbp_write()
73 mutex_unlock(&rt2x00dev->csr_mutex); in rt73usb_bbp_write()
76 static u8 rt73usb_bbp_read(struct rt2x00_dev *rt2x00dev, in rt73usb_bbp_read() argument
82 mutex_lock(&rt2x00dev->csr_mutex); in rt73usb_bbp_read()
92 if (WAIT_FOR_BBP(rt2x00dev, ®)) { in rt73usb_bbp_read()
98 rt2x00usb_register_write_lock(rt2x00dev, PHY_CSR3, reg); in rt73usb_bbp_read()
100 WAIT_FOR_BBP(rt2x00dev, ®); in rt73usb_bbp_read()
105 mutex_unlock(&rt2x00dev->csr_mutex); in rt73usb_bbp_read()
110 static void rt73usb_rf_write(struct rt2x00_dev *rt2x00dev, in rt73usb_rf_write() argument
115 mutex_lock(&rt2x00dev->csr_mutex); in rt73usb_rf_write()
121 if (WAIT_FOR_RF(rt2x00dev, ®)) { in rt73usb_rf_write()
129 20 + (rt2x00_rf(rt2x00dev, RF5225) || in rt73usb_rf_write()
130 rt2x00_rf(rt2x00dev, RF2527))); in rt73usb_rf_write()
134 rt2x00usb_register_write_lock(rt2x00dev, PHY_CSR4, reg); in rt73usb_rf_write()
135 rt2x00_rf_write(rt2x00dev, word, value); in rt73usb_rf_write()
138 mutex_unlock(&rt2x00dev->csr_mutex); in rt73usb_rf_write()
176 static int rt73usb_rfkill_poll(struct rt2x00_dev *rt2x00dev) in rt73usb_rfkill_poll() argument
180 reg = rt2x00usb_register_read(rt2x00dev, MAC_CSR13); in rt73usb_rfkill_poll()
192 (enabled && led->rt2x00dev->curr_band == NL80211_BAND_5GHZ); in rt73usb_brightness_set()
194 (enabled && led->rt2x00dev->curr_band == NL80211_BAND_2GHZ); in rt73usb_brightness_set()
197 rt2x00_set_field16(&led->rt2x00dev->led_mcu_reg, in rt73usb_brightness_set()
200 rt2x00usb_vendor_request_sw(led->rt2x00dev, USB_LED_CONTROL, in rt73usb_brightness_set()
201 0, led->rt2x00dev->led_mcu_reg, in rt73usb_brightness_set()
204 rt2x00_set_field16(&led->rt2x00dev->led_mcu_reg, in rt73usb_brightness_set()
206 rt2x00_set_field16(&led->rt2x00dev->led_mcu_reg, in rt73usb_brightness_set()
209 rt2x00usb_vendor_request_sw(led->rt2x00dev, USB_LED_CONTROL, in rt73usb_brightness_set()
210 0, led->rt2x00dev->led_mcu_reg, in rt73usb_brightness_set()
218 rt2x00usb_vendor_request_sw(led->rt2x00dev, USB_LED_CONTROL, in rt73usb_brightness_set()
220 led->rt2x00dev->led_mcu_reg, in rt73usb_brightness_set()
233 reg = rt2x00usb_register_read(led->rt2x00dev, MAC_CSR14); in rt73usb_blink_set()
236 rt2x00usb_register_write(led->rt2x00dev, MAC_CSR14, reg); in rt73usb_blink_set()
241 static void rt73usb_init_led(struct rt2x00_dev *rt2x00dev, in rt73usb_init_led() argument
245 led->rt2x00dev = rt2x00dev; in rt73usb_init_led()
256 static int rt73usb_config_shared_key(struct rt2x00_dev *rt2x00dev, in rt73usb_config_shared_key() argument
278 reg = rt2x00usb_register_read(rt2x00dev, SEC_CSR0); in rt73usb_config_shared_key()
297 rt2x00usb_register_multiwrite(rt2x00dev, reg, in rt73usb_config_shared_key()
311 reg = rt2x00usb_register_read(rt2x00dev, SEC_CSR1); in rt73usb_config_shared_key()
313 rt2x00usb_register_write(rt2x00dev, SEC_CSR1, reg); in rt73usb_config_shared_key()
318 reg = rt2x00usb_register_read(rt2x00dev, SEC_CSR5); in rt73usb_config_shared_key()
320 rt2x00usb_register_write(rt2x00dev, SEC_CSR5, reg); in rt73usb_config_shared_key()
343 reg = rt2x00usb_register_read(rt2x00dev, SEC_CSR0); in rt73usb_config_shared_key()
348 rt2x00usb_register_write(rt2x00dev, SEC_CSR0, reg); in rt73usb_config_shared_key()
353 static int rt73usb_config_pairwise_key(struct rt2x00_dev *rt2x00dev, in rt73usb_config_pairwise_key() argument
372 reg = rt2x00usb_register_read(rt2x00dev, SEC_CSR2); in rt73usb_config_pairwise_key()
375 reg = rt2x00usb_register_read(rt2x00dev, SEC_CSR3); in rt73usb_config_pairwise_key()
393 rt2x00usb_register_multiwrite(rt2x00dev, reg, in rt73usb_config_pairwise_key()
404 rt2x00usb_register_multiwrite(rt2x00dev, reg, in rt73usb_config_pairwise_key()
412 reg = rt2x00usb_register_read(rt2x00dev, SEC_CSR4); in rt73usb_config_pairwise_key()
414 rt2x00usb_register_write(rt2x00dev, SEC_CSR4, reg); in rt73usb_config_pairwise_key()
437 reg = rt2x00usb_register_read(rt2x00dev, SEC_CSR2); in rt73usb_config_pairwise_key()
442 rt2x00usb_register_write(rt2x00dev, SEC_CSR2, reg); in rt73usb_config_pairwise_key()
446 reg = rt2x00usb_register_read(rt2x00dev, SEC_CSR3); in rt73usb_config_pairwise_key()
451 rt2x00usb_register_write(rt2x00dev, SEC_CSR3, reg); in rt73usb_config_pairwise_key()
457 static void rt73usb_config_filter(struct rt2x00_dev *rt2x00dev, in rt73usb_config_filter() argument
468 reg = rt2x00usb_register_read(rt2x00dev, TXRX_CSR0); in rt73usb_config_filter()
476 !test_bit(CONFIG_MONITORING, &rt2x00dev->flags)); in rt73usb_config_filter()
478 !test_bit(CONFIG_MONITORING, &rt2x00dev->flags) && in rt73usb_config_filter()
479 !rt2x00dev->intf_ap_count); in rt73usb_config_filter()
486 rt2x00usb_register_write(rt2x00dev, TXRX_CSR0, reg); in rt73usb_config_filter()
489 static void rt73usb_config_intf(struct rt2x00_dev *rt2x00dev, in rt73usb_config_intf() argument
500 reg = rt2x00usb_register_read(rt2x00dev, TXRX_CSR9); in rt73usb_config_intf()
502 rt2x00usb_register_write(rt2x00dev, TXRX_CSR9, reg); in rt73usb_config_intf()
510 rt2x00usb_register_multiwrite(rt2x00dev, MAC_CSR2, in rt73usb_config_intf()
519 rt2x00usb_register_multiwrite(rt2x00dev, MAC_CSR4, in rt73usb_config_intf()
524 static void rt73usb_config_erp(struct rt2x00_dev *rt2x00dev, in rt73usb_config_erp() argument
530 reg = rt2x00usb_register_read(rt2x00dev, TXRX_CSR0); in rt73usb_config_erp()
533 rt2x00usb_register_write(rt2x00dev, TXRX_CSR0, reg); in rt73usb_config_erp()
536 reg = rt2x00usb_register_read(rt2x00dev, TXRX_CSR4); in rt73usb_config_erp()
540 rt2x00usb_register_write(rt2x00dev, TXRX_CSR4, reg); in rt73usb_config_erp()
544 rt2x00usb_register_write(rt2x00dev, TXRX_CSR5, in rt73usb_config_erp()
548 reg = rt2x00usb_register_read(rt2x00dev, TXRX_CSR9); in rt73usb_config_erp()
551 rt2x00usb_register_write(rt2x00dev, TXRX_CSR9, reg); in rt73usb_config_erp()
555 reg = rt2x00usb_register_read(rt2x00dev, MAC_CSR9); in rt73usb_config_erp()
557 rt2x00usb_register_write(rt2x00dev, MAC_CSR9, reg); in rt73usb_config_erp()
559 reg = rt2x00usb_register_read(rt2x00dev, MAC_CSR8); in rt73usb_config_erp()
563 rt2x00usb_register_write(rt2x00dev, MAC_CSR8, reg); in rt73usb_config_erp()
567 static void rt73usb_config_antenna_5x(struct rt2x00_dev *rt2x00dev, in rt73usb_config_antenna_5x() argument
575 r3 = rt73usb_bbp_read(rt2x00dev, 3); in rt73usb_config_antenna_5x()
576 r4 = rt73usb_bbp_read(rt2x00dev, 4); in rt73usb_config_antenna_5x()
577 r77 = rt73usb_bbp_read(rt2x00dev, 77); in rt73usb_config_antenna_5x()
587 temp = !rt2x00_has_cap_frame_type(rt2x00dev) && in rt73usb_config_antenna_5x()
588 (rt2x00dev->curr_band != NL80211_BAND_5GHZ); in rt73usb_config_antenna_5x()
594 if (rt2x00dev->curr_band == NL80211_BAND_5GHZ) in rt73usb_config_antenna_5x()
603 if (rt2x00dev->curr_band == NL80211_BAND_5GHZ) in rt73usb_config_antenna_5x()
610 rt73usb_bbp_write(rt2x00dev, 77, r77); in rt73usb_config_antenna_5x()
611 rt73usb_bbp_write(rt2x00dev, 3, r3); in rt73usb_config_antenna_5x()
612 rt73usb_bbp_write(rt2x00dev, 4, r4); in rt73usb_config_antenna_5x()
615 static void rt73usb_config_antenna_2x(struct rt2x00_dev *rt2x00dev, in rt73usb_config_antenna_2x() argument
622 r3 = rt73usb_bbp_read(rt2x00dev, 3); in rt73usb_config_antenna_2x()
623 r4 = rt73usb_bbp_read(rt2x00dev, 4); in rt73usb_config_antenna_2x()
624 r77 = rt73usb_bbp_read(rt2x00dev, 77); in rt73usb_config_antenna_2x()
628 !rt2x00_has_cap_frame_type(rt2x00dev)); in rt73usb_config_antenna_2x()
648 rt73usb_bbp_write(rt2x00dev, 77, r77); in rt73usb_config_antenna_2x()
649 rt73usb_bbp_write(rt2x00dev, 3, r3); in rt73usb_config_antenna_2x()
650 rt73usb_bbp_write(rt2x00dev, 4, r4); in rt73usb_config_antenna_2x()
684 static void rt73usb_config_ant(struct rt2x00_dev *rt2x00dev, in rt73usb_config_ant() argument
699 if (rt2x00dev->curr_band == NL80211_BAND_5GHZ) { in rt73usb_config_ant()
701 lna = rt2x00_has_cap_external_lna_a(rt2x00dev); in rt73usb_config_ant()
704 lna = rt2x00_has_cap_external_lna_bg(rt2x00dev); in rt73usb_config_ant()
708 rt73usb_bbp_write(rt2x00dev, sel[i].word, sel[i].value[lna]); in rt73usb_config_ant()
710 reg = rt2x00usb_register_read(rt2x00dev, PHY_CSR0); in rt73usb_config_ant()
713 (rt2x00dev->curr_band == NL80211_BAND_2GHZ)); in rt73usb_config_ant()
715 (rt2x00dev->curr_band == NL80211_BAND_5GHZ)); in rt73usb_config_ant()
717 rt2x00usb_register_write(rt2x00dev, PHY_CSR0, reg); in rt73usb_config_ant()
719 if (rt2x00_rf(rt2x00dev, RF5226) || rt2x00_rf(rt2x00dev, RF5225)) in rt73usb_config_ant()
720 rt73usb_config_antenna_5x(rt2x00dev, ant); in rt73usb_config_ant()
721 else if (rt2x00_rf(rt2x00dev, RF2528) || rt2x00_rf(rt2x00dev, RF2527)) in rt73usb_config_ant()
722 rt73usb_config_antenna_2x(rt2x00dev, ant); in rt73usb_config_ant()
725 static void rt73usb_config_lna_gain(struct rt2x00_dev *rt2x00dev, in rt73usb_config_lna_gain() argument
732 if (rt2x00_has_cap_external_lna_bg(rt2x00dev)) in rt73usb_config_lna_gain()
735 eeprom = rt2x00_eeprom_read(rt2x00dev, EEPROM_RSSI_OFFSET_BG); in rt73usb_config_lna_gain()
738 eeprom = rt2x00_eeprom_read(rt2x00dev, EEPROM_RSSI_OFFSET_A); in rt73usb_config_lna_gain()
742 rt2x00dev->lna_gain = lna_gain; in rt73usb_config_lna_gain()
745 static void rt73usb_config_channel(struct rt2x00_dev *rt2x00dev, in rt73usb_config_channel() argument
753 rt2x00_set_field32(&rf->rf4, RF4_FREQ_OFFSET, rt2x00dev->freq_offset); in rt73usb_config_channel()
755 smart = !(rt2x00_rf(rt2x00dev, RF5225) || rt2x00_rf(rt2x00dev, RF2527)); in rt73usb_config_channel()
757 r3 = rt73usb_bbp_read(rt2x00dev, 3); in rt73usb_config_channel()
759 rt73usb_bbp_write(rt2x00dev, 3, r3); in rt73usb_config_channel()
766 rt73usb_bbp_write(rt2x00dev, 94, r94); in rt73usb_config_channel()
768 rt73usb_rf_write(rt2x00dev, 1, rf->rf1); in rt73usb_config_channel()
769 rt73usb_rf_write(rt2x00dev, 2, rf->rf2); in rt73usb_config_channel()
770 rt73usb_rf_write(rt2x00dev, 3, rf->rf3 & ~0x00000004); in rt73usb_config_channel()
771 rt73usb_rf_write(rt2x00dev, 4, rf->rf4); in rt73usb_config_channel()
773 rt73usb_rf_write(rt2x00dev, 1, rf->rf1); in rt73usb_config_channel()
774 rt73usb_rf_write(rt2x00dev, 2, rf->rf2); in rt73usb_config_channel()
775 rt73usb_rf_write(rt2x00dev, 3, rf->rf3 | 0x00000004); in rt73usb_config_channel()
776 rt73usb_rf_write(rt2x00dev, 4, rf->rf4); in rt73usb_config_channel()
778 rt73usb_rf_write(rt2x00dev, 1, rf->rf1); in rt73usb_config_channel()
779 rt73usb_rf_write(rt2x00dev, 2, rf->rf2); in rt73usb_config_channel()
780 rt73usb_rf_write(rt2x00dev, 3, rf->rf3 & ~0x00000004); in rt73usb_config_channel()
781 rt73usb_rf_write(rt2x00dev, 4, rf->rf4); in rt73usb_config_channel()
786 static void rt73usb_config_txpower(struct rt2x00_dev *rt2x00dev, in rt73usb_config_txpower() argument
791 rf.rf1 = rt2x00_rf_read(rt2x00dev, 1); in rt73usb_config_txpower()
792 rf.rf2 = rt2x00_rf_read(rt2x00dev, 2); in rt73usb_config_txpower()
793 rf.rf3 = rt2x00_rf_read(rt2x00dev, 3); in rt73usb_config_txpower()
794 rf.rf4 = rt2x00_rf_read(rt2x00dev, 4); in rt73usb_config_txpower()
796 rt73usb_config_channel(rt2x00dev, &rf, txpower); in rt73usb_config_txpower()
799 static void rt73usb_config_retry_limit(struct rt2x00_dev *rt2x00dev, in rt73usb_config_retry_limit() argument
804 reg = rt2x00usb_register_read(rt2x00dev, TXRX_CSR4); in rt73usb_config_retry_limit()
812 rt2x00usb_register_write(rt2x00dev, TXRX_CSR4, reg); in rt73usb_config_retry_limit()
815 static void rt73usb_config_ps(struct rt2x00_dev *rt2x00dev, in rt73usb_config_ps() argument
824 reg = rt2x00usb_register_read(rt2x00dev, MAC_CSR11); in rt73usb_config_ps()
826 rt2x00dev->beacon_int - 10); in rt73usb_config_ps()
833 rt2x00usb_register_write(rt2x00dev, MAC_CSR11, reg); in rt73usb_config_ps()
836 rt2x00usb_register_write(rt2x00dev, MAC_CSR11, reg); in rt73usb_config_ps()
838 rt2x00usb_vendor_request_sw(rt2x00dev, USB_DEVICE_MODE, 0, in rt73usb_config_ps()
841 reg = rt2x00usb_register_read(rt2x00dev, MAC_CSR11); in rt73usb_config_ps()
846 rt2x00usb_register_write(rt2x00dev, MAC_CSR11, reg); in rt73usb_config_ps()
848 rt2x00usb_vendor_request_sw(rt2x00dev, USB_DEVICE_MODE, 0, in rt73usb_config_ps()
853 static void rt73usb_config(struct rt2x00_dev *rt2x00dev, in rt73usb_config() argument
858 rt73usb_config_lna_gain(rt2x00dev, libconf); in rt73usb_config()
861 rt73usb_config_channel(rt2x00dev, &libconf->rf, in rt73usb_config()
865 rt73usb_config_txpower(rt2x00dev, libconf->conf->power_level); in rt73usb_config()
867 rt73usb_config_retry_limit(rt2x00dev, libconf); in rt73usb_config()
869 rt73usb_config_ps(rt2x00dev, libconf); in rt73usb_config()
875 static void rt73usb_link_stats(struct rt2x00_dev *rt2x00dev, in rt73usb_link_stats() argument
883 reg = rt2x00usb_register_read(rt2x00dev, STA_CSR0); in rt73usb_link_stats()
889 reg = rt2x00usb_register_read(rt2x00dev, STA_CSR1); in rt73usb_link_stats()
893 static inline void rt73usb_set_vgc(struct rt2x00_dev *rt2x00dev, in rt73usb_set_vgc() argument
897 rt73usb_bbp_write(rt2x00dev, 17, vgc_level); in rt73usb_set_vgc()
903 static void rt73usb_reset_tuner(struct rt2x00_dev *rt2x00dev, in rt73usb_reset_tuner() argument
906 rt73usb_set_vgc(rt2x00dev, qual, 0x20); in rt73usb_reset_tuner()
909 static void rt73usb_link_tuner(struct rt2x00_dev *rt2x00dev, in rt73usb_link_tuner() argument
918 if (rt2x00dev->curr_band == NL80211_BAND_5GHZ) { in rt73usb_link_tuner()
922 if (rt2x00_has_cap_external_lna_a(rt2x00dev)) { in rt73usb_link_tuner()
938 if (rt2x00_has_cap_external_lna_bg(rt2x00dev)) { in rt73usb_link_tuner()
948 if (!rt2x00dev->intf_associated) in rt73usb_link_tuner()
955 rt73usb_set_vgc(rt2x00dev, qual, 0x60); in rt73usb_link_tuner()
963 rt73usb_set_vgc(rt2x00dev, qual, up_bound); in rt73usb_link_tuner()
971 rt73usb_set_vgc(rt2x00dev, qual, low_bound + 0x10); in rt73usb_link_tuner()
979 rt73usb_set_vgc(rt2x00dev, qual, low_bound + 0x08); in rt73usb_link_tuner()
992 rt73usb_set_vgc(rt2x00dev, qual, up_bound); in rt73usb_link_tuner()
1003 rt73usb_set_vgc(rt2x00dev, qual, in rt73usb_link_tuner()
1006 rt73usb_set_vgc(rt2x00dev, qual, in rt73usb_link_tuner()
1015 struct rt2x00_dev *rt2x00dev = queue->rt2x00dev; in rt73usb_start_queue() local
1020 reg = rt2x00usb_register_read(rt2x00dev, TXRX_CSR0); in rt73usb_start_queue()
1022 rt2x00usb_register_write(rt2x00dev, TXRX_CSR0, reg); in rt73usb_start_queue()
1025 reg = rt2x00usb_register_read(rt2x00dev, TXRX_CSR9); in rt73usb_start_queue()
1029 rt2x00usb_register_write(rt2x00dev, TXRX_CSR9, reg); in rt73usb_start_queue()
1038 struct rt2x00_dev *rt2x00dev = queue->rt2x00dev; in rt73usb_stop_queue() local
1043 reg = rt2x00usb_register_read(rt2x00dev, TXRX_CSR0); in rt73usb_stop_queue()
1045 rt2x00usb_register_write(rt2x00dev, TXRX_CSR0, reg); in rt73usb_stop_queue()
1048 reg = rt2x00usb_register_read(rt2x00dev, TXRX_CSR9); in rt73usb_stop_queue()
1052 rt2x00usb_register_write(rt2x00dev, TXRX_CSR9, reg); in rt73usb_stop_queue()
1062 static char *rt73usb_get_firmware_name(struct rt2x00_dev *rt2x00dev) in rt73usb_get_firmware_name() argument
1067 static int rt73usb_check_firmware(struct rt2x00_dev *rt2x00dev, in rt73usb_check_firmware() argument
1096 static int rt73usb_load_firmware(struct rt2x00_dev *rt2x00dev, in rt73usb_load_firmware() argument
1107 reg = rt2x00usb_register_read(rt2x00dev, MAC_CSR0); in rt73usb_load_firmware()
1114 rt2x00_err(rt2x00dev, "Unstable hardware\n"); in rt73usb_load_firmware()
1121 rt2x00usb_register_multiwrite(rt2x00dev, FIRMWARE_IMAGE_BASE, data, len); in rt73usb_load_firmware()
1127 status = rt2x00usb_vendor_request_sw(rt2x00dev, USB_DEVICE_MODE, in rt73usb_load_firmware()
1131 rt2x00_err(rt2x00dev, "Failed to write Firmware to device\n"); in rt73usb_load_firmware()
1141 static int rt73usb_init_registers(struct rt2x00_dev *rt2x00dev) in rt73usb_init_registers() argument
1145 reg = rt2x00usb_register_read(rt2x00dev, TXRX_CSR0); in rt73usb_init_registers()
1149 rt2x00usb_register_write(rt2x00dev, TXRX_CSR0, reg); in rt73usb_init_registers()
1151 reg = rt2x00usb_register_read(rt2x00dev, TXRX_CSR1); in rt73usb_init_registers()
1160 rt2x00usb_register_write(rt2x00dev, TXRX_CSR1, reg); in rt73usb_init_registers()
1165 reg = rt2x00usb_register_read(rt2x00dev, TXRX_CSR2); in rt73usb_init_registers()
1174 rt2x00usb_register_write(rt2x00dev, TXRX_CSR2, reg); in rt73usb_init_registers()
1179 reg = rt2x00usb_register_read(rt2x00dev, TXRX_CSR3); in rt73usb_init_registers()
1186 rt2x00usb_register_write(rt2x00dev, TXRX_CSR3, reg); in rt73usb_init_registers()
1188 reg = rt2x00usb_register_read(rt2x00dev, TXRX_CSR7); in rt73usb_init_registers()
1193 rt2x00usb_register_write(rt2x00dev, TXRX_CSR7, reg); in rt73usb_init_registers()
1195 reg = rt2x00usb_register_read(rt2x00dev, TXRX_CSR8); in rt73usb_init_registers()
1200 rt2x00usb_register_write(rt2x00dev, TXRX_CSR8, reg); in rt73usb_init_registers()
1202 reg = rt2x00usb_register_read(rt2x00dev, TXRX_CSR9); in rt73usb_init_registers()
1209 rt2x00usb_register_write(rt2x00dev, TXRX_CSR9, reg); in rt73usb_init_registers()
1211 rt2x00usb_register_write(rt2x00dev, TXRX_CSR15, 0x0000000f); in rt73usb_init_registers()
1213 reg = rt2x00usb_register_read(rt2x00dev, MAC_CSR6); in rt73usb_init_registers()
1215 rt2x00usb_register_write(rt2x00dev, MAC_CSR6, reg); in rt73usb_init_registers()
1217 rt2x00usb_register_write(rt2x00dev, MAC_CSR10, 0x00000718); in rt73usb_init_registers()
1219 if (rt2x00dev->ops->lib->set_device_state(rt2x00dev, STATE_AWAKE)) in rt73usb_init_registers()
1222 rt2x00usb_register_write(rt2x00dev, MAC_CSR13, 0x00007f00); in rt73usb_init_registers()
1228 rt2x00usb_register_write(rt2x00dev, SEC_CSR0, 0x00000000); in rt73usb_init_registers()
1229 rt2x00usb_register_write(rt2x00dev, SEC_CSR1, 0x00000000); in rt73usb_init_registers()
1230 rt2x00usb_register_write(rt2x00dev, SEC_CSR5, 0x00000000); in rt73usb_init_registers()
1233 if (rt2x00_rf(rt2x00dev, RF5225) || rt2x00_rf(rt2x00dev, RF2527)) in rt73usb_init_registers()
1235 rt2x00usb_register_write(rt2x00dev, PHY_CSR1, reg); in rt73usb_init_registers()
1237 rt2x00usb_register_write(rt2x00dev, PHY_CSR5, 0x00040a06); in rt73usb_init_registers()
1238 rt2x00usb_register_write(rt2x00dev, PHY_CSR6, 0x00080606); in rt73usb_init_registers()
1239 rt2x00usb_register_write(rt2x00dev, PHY_CSR7, 0x00000408); in rt73usb_init_registers()
1241 reg = rt2x00usb_register_read(rt2x00dev, MAC_CSR9); in rt73usb_init_registers()
1243 rt2x00usb_register_write(rt2x00dev, MAC_CSR9, reg); in rt73usb_init_registers()
1251 rt2x00usb_register_write(rt2x00dev, HW_BEACON_BASE0, 0); in rt73usb_init_registers()
1252 rt2x00usb_register_write(rt2x00dev, HW_BEACON_BASE1, 0); in rt73usb_init_registers()
1253 rt2x00usb_register_write(rt2x00dev, HW_BEACON_BASE2, 0); in rt73usb_init_registers()
1254 rt2x00usb_register_write(rt2x00dev, HW_BEACON_BASE3, 0); in rt73usb_init_registers()
1261 reg = rt2x00usb_register_read(rt2x00dev, STA_CSR0); in rt73usb_init_registers()
1262 reg = rt2x00usb_register_read(rt2x00dev, STA_CSR1); in rt73usb_init_registers()
1263 reg = rt2x00usb_register_read(rt2x00dev, STA_CSR2); in rt73usb_init_registers()
1268 reg = rt2x00usb_register_read(rt2x00dev, MAC_CSR1); in rt73usb_init_registers()
1271 rt2x00usb_register_write(rt2x00dev, MAC_CSR1, reg); in rt73usb_init_registers()
1273 reg = rt2x00usb_register_read(rt2x00dev, MAC_CSR1); in rt73usb_init_registers()
1276 rt2x00usb_register_write(rt2x00dev, MAC_CSR1, reg); in rt73usb_init_registers()
1278 reg = rt2x00usb_register_read(rt2x00dev, MAC_CSR1); in rt73usb_init_registers()
1280 rt2x00usb_register_write(rt2x00dev, MAC_CSR1, reg); in rt73usb_init_registers()
1285 static int rt73usb_wait_bbp_ready(struct rt2x00_dev *rt2x00dev) in rt73usb_wait_bbp_ready() argument
1291 value = rt73usb_bbp_read(rt2x00dev, 0); in rt73usb_wait_bbp_ready()
1297 rt2x00_err(rt2x00dev, "BBP register access failed, aborting\n"); in rt73usb_wait_bbp_ready()
1301 static int rt73usb_init_bbp(struct rt2x00_dev *rt2x00dev) in rt73usb_init_bbp() argument
1308 if (unlikely(rt73usb_wait_bbp_ready(rt2x00dev))) in rt73usb_init_bbp()
1311 rt73usb_bbp_write(rt2x00dev, 3, 0x80); in rt73usb_init_bbp()
1312 rt73usb_bbp_write(rt2x00dev, 15, 0x30); in rt73usb_init_bbp()
1313 rt73usb_bbp_write(rt2x00dev, 21, 0xc8); in rt73usb_init_bbp()
1314 rt73usb_bbp_write(rt2x00dev, 22, 0x38); in rt73usb_init_bbp()
1315 rt73usb_bbp_write(rt2x00dev, 23, 0x06); in rt73usb_init_bbp()
1316 rt73usb_bbp_write(rt2x00dev, 24, 0xfe); in rt73usb_init_bbp()
1317 rt73usb_bbp_write(rt2x00dev, 25, 0x0a); in rt73usb_init_bbp()
1318 rt73usb_bbp_write(rt2x00dev, 26, 0x0d); in rt73usb_init_bbp()
1319 rt73usb_bbp_write(rt2x00dev, 32, 0x0b); in rt73usb_init_bbp()
1320 rt73usb_bbp_write(rt2x00dev, 34, 0x12); in rt73usb_init_bbp()
1321 rt73usb_bbp_write(rt2x00dev, 37, 0x07); in rt73usb_init_bbp()
1322 rt73usb_bbp_write(rt2x00dev, 39, 0xf8); in rt73usb_init_bbp()
1323 rt73usb_bbp_write(rt2x00dev, 41, 0x60); in rt73usb_init_bbp()
1324 rt73usb_bbp_write(rt2x00dev, 53, 0x10); in rt73usb_init_bbp()
1325 rt73usb_bbp_write(rt2x00dev, 54, 0x18); in rt73usb_init_bbp()
1326 rt73usb_bbp_write(rt2x00dev, 60, 0x10); in rt73usb_init_bbp()
1327 rt73usb_bbp_write(rt2x00dev, 61, 0x04); in rt73usb_init_bbp()
1328 rt73usb_bbp_write(rt2x00dev, 62, 0x04); in rt73usb_init_bbp()
1329 rt73usb_bbp_write(rt2x00dev, 75, 0xfe); in rt73usb_init_bbp()
1330 rt73usb_bbp_write(rt2x00dev, 86, 0xfe); in rt73usb_init_bbp()
1331 rt73usb_bbp_write(rt2x00dev, 88, 0xfe); in rt73usb_init_bbp()
1332 rt73usb_bbp_write(rt2x00dev, 90, 0x0f); in rt73usb_init_bbp()
1333 rt73usb_bbp_write(rt2x00dev, 99, 0x00); in rt73usb_init_bbp()
1334 rt73usb_bbp_write(rt2x00dev, 102, 0x16); in rt73usb_init_bbp()
1335 rt73usb_bbp_write(rt2x00dev, 107, 0x04); in rt73usb_init_bbp()
1338 eeprom = rt2x00_eeprom_read(rt2x00dev, EEPROM_BBP_START + i); in rt73usb_init_bbp()
1343 rt73usb_bbp_write(rt2x00dev, reg_id, value); in rt73usb_init_bbp()
1353 static int rt73usb_enable_radio(struct rt2x00_dev *rt2x00dev) in rt73usb_enable_radio() argument
1358 if (unlikely(rt73usb_init_registers(rt2x00dev) || in rt73usb_enable_radio()
1359 rt73usb_init_bbp(rt2x00dev))) in rt73usb_enable_radio()
1365 static void rt73usb_disable_radio(struct rt2x00_dev *rt2x00dev) in rt73usb_disable_radio() argument
1367 rt2x00usb_register_write(rt2x00dev, MAC_CSR10, 0x00001818); in rt73usb_disable_radio()
1372 rt2x00usb_register_write(rt2x00dev, TXRX_CSR9, 0); in rt73usb_disable_radio()
1374 rt2x00usb_disable_radio(rt2x00dev); in rt73usb_disable_radio()
1377 static int rt73usb_set_state(struct rt2x00_dev *rt2x00dev, enum dev_state state) in rt73usb_set_state() argument
1385 reg = rt2x00usb_register_read(rt2x00dev, MAC_CSR12); in rt73usb_set_state()
1388 rt2x00usb_register_write(rt2x00dev, MAC_CSR12, reg); in rt73usb_set_state()
1396 reg2 = rt2x00usb_register_read(rt2x00dev, MAC_CSR12); in rt73usb_set_state()
1400 rt2x00usb_register_write(rt2x00dev, MAC_CSR12, reg); in rt73usb_set_state()
1407 static int rt73usb_set_device_state(struct rt2x00_dev *rt2x00dev, in rt73usb_set_device_state() argument
1414 retval = rt73usb_enable_radio(rt2x00dev); in rt73usb_set_device_state()
1417 rt73usb_disable_radio(rt2x00dev); in rt73usb_set_device_state()
1427 retval = rt73usb_set_state(rt2x00dev, state); in rt73usb_set_device_state()
1435 rt2x00_err(rt2x00dev, "Device failed to enter state %d (%d)\n", in rt73usb_set_device_state()
1506 TXPOWER_TO_DEV(entry->queue->rt2x00dev->tx_power)); in rt73usb_write_tx_desc()
1524 struct rt2x00_dev *rt2x00dev = entry->queue->rt2x00dev; in rt73usb_write_beacon() local
1533 reg = rt2x00usb_register_read(rt2x00dev, TXRX_CSR9); in rt73usb_write_beacon()
1536 rt2x00usb_register_write(rt2x00dev, TXRX_CSR9, reg); in rt73usb_write_beacon()
1552 rt2x00debug_dump_frame(rt2x00dev, DUMP_FRAME_BEACON, entry); in rt73usb_write_beacon()
1559 rt2x00_err(rt2x00dev, "Failure padding beacon, aborting\n"); in rt73usb_write_beacon()
1562 rt2x00usb_register_write(rt2x00dev, TXRX_CSR9, orig_reg); in rt73usb_write_beacon()
1567 rt2x00usb_register_multiwrite(rt2x00dev, beacon_base, entry->skb->data, in rt73usb_write_beacon()
1576 rt2x00usb_register_write(rt2x00dev, TXRX_CSR10, 0x00001008); in rt73usb_write_beacon()
1579 rt2x00usb_register_write(rt2x00dev, TXRX_CSR9, reg); in rt73usb_write_beacon()
1590 struct rt2x00_dev *rt2x00dev = entry->queue->rt2x00dev; in rt73usb_clear_beacon() local
1598 orig_reg = rt2x00usb_register_read(rt2x00dev, TXRX_CSR9); in rt73usb_clear_beacon()
1601 rt2x00usb_register_write(rt2x00dev, TXRX_CSR9, reg); in rt73usb_clear_beacon()
1607 rt2x00usb_register_write(rt2x00dev, beacon_base, 0); in rt73usb_clear_beacon()
1612 rt2x00usb_register_write(rt2x00dev, TXRX_CSR9, orig_reg); in rt73usb_clear_beacon()
1632 static int rt73usb_agc_to_rssi(struct rt2x00_dev *rt2x00dev, int rxd_w1) in rt73usb_agc_to_rssi() argument
1634 u8 offset = rt2x00dev->lna_gain; in rt73usb_agc_to_rssi()
1652 if (rt2x00dev->curr_band == NL80211_BAND_5GHZ) { in rt73usb_agc_to_rssi()
1653 if (rt2x00_has_cap_external_lna_a(rt2x00dev)) { in rt73usb_agc_to_rssi()
1670 struct rt2x00_dev *rt2x00dev = entry->queue->rt2x00dev; in rt73usb_fill_rxdone() local
1729 rxdesc->rssi = rt73usb_agc_to_rssi(rt2x00dev, word1); in rt73usb_fill_rxdone()
1749 static int rt73usb_validate_eeprom(struct rt2x00_dev *rt2x00dev) in rt73usb_validate_eeprom() argument
1755 rt2x00usb_eeprom_read(rt2x00dev, rt2x00dev->eeprom, EEPROM_SIZE); in rt73usb_validate_eeprom()
1760 mac = rt2x00_eeprom_addr(rt2x00dev, EEPROM_MAC_ADDR_0); in rt73usb_validate_eeprom()
1761 rt2x00lib_set_mac_address(rt2x00dev, mac); in rt73usb_validate_eeprom()
1763 word = rt2x00_eeprom_read(rt2x00dev, EEPROM_ANTENNA); in rt73usb_validate_eeprom()
1774 rt2x00_eeprom_write(rt2x00dev, EEPROM_ANTENNA, word); in rt73usb_validate_eeprom()
1775 rt2x00_eeprom_dbg(rt2x00dev, "Antenna: 0x%04x\n", word); in rt73usb_validate_eeprom()
1778 word = rt2x00_eeprom_read(rt2x00dev, EEPROM_NIC); in rt73usb_validate_eeprom()
1781 rt2x00_eeprom_write(rt2x00dev, EEPROM_NIC, word); in rt73usb_validate_eeprom()
1782 rt2x00_eeprom_dbg(rt2x00dev, "NIC: 0x%04x\n", word); in rt73usb_validate_eeprom()
1785 word = rt2x00_eeprom_read(rt2x00dev, EEPROM_LED); in rt73usb_validate_eeprom()
1797 rt2x00_eeprom_write(rt2x00dev, EEPROM_LED, word); in rt73usb_validate_eeprom()
1798 rt2x00_eeprom_dbg(rt2x00dev, "Led: 0x%04x\n", word); in rt73usb_validate_eeprom()
1801 word = rt2x00_eeprom_read(rt2x00dev, EEPROM_FREQ); in rt73usb_validate_eeprom()
1805 rt2x00_eeprom_write(rt2x00dev, EEPROM_FREQ, word); in rt73usb_validate_eeprom()
1806 rt2x00_eeprom_dbg(rt2x00dev, "Freq: 0x%04x\n", word); in rt73usb_validate_eeprom()
1809 word = rt2x00_eeprom_read(rt2x00dev, EEPROM_RSSI_OFFSET_BG); in rt73usb_validate_eeprom()
1813 rt2x00_eeprom_write(rt2x00dev, EEPROM_RSSI_OFFSET_BG, word); in rt73usb_validate_eeprom()
1814 rt2x00_eeprom_dbg(rt2x00dev, "RSSI OFFSET BG: 0x%04x\n", word); in rt73usb_validate_eeprom()
1822 rt2x00_eeprom_write(rt2x00dev, EEPROM_RSSI_OFFSET_BG, word); in rt73usb_validate_eeprom()
1825 word = rt2x00_eeprom_read(rt2x00dev, EEPROM_RSSI_OFFSET_A); in rt73usb_validate_eeprom()
1829 rt2x00_eeprom_write(rt2x00dev, EEPROM_RSSI_OFFSET_A, word); in rt73usb_validate_eeprom()
1830 rt2x00_eeprom_dbg(rt2x00dev, "RSSI OFFSET A: 0x%04x\n", word); in rt73usb_validate_eeprom()
1838 rt2x00_eeprom_write(rt2x00dev, EEPROM_RSSI_OFFSET_A, word); in rt73usb_validate_eeprom()
1844 static int rt73usb_init_eeprom(struct rt2x00_dev *rt2x00dev) in rt73usb_init_eeprom() argument
1853 eeprom = rt2x00_eeprom_read(rt2x00dev, EEPROM_ANTENNA); in rt73usb_init_eeprom()
1859 reg = rt2x00usb_register_read(rt2x00dev, MAC_CSR0); in rt73usb_init_eeprom()
1860 rt2x00_set_chip(rt2x00dev, rt2x00_get_field32(reg, MAC_CSR0_CHIPSET), in rt73usb_init_eeprom()
1863 if (!rt2x00_rt(rt2x00dev, RT2573) || (rt2x00_rev(rt2x00dev) == 0)) { in rt73usb_init_eeprom()
1864 rt2x00_err(rt2x00dev, "Invalid RT chipset detected\n"); in rt73usb_init_eeprom()
1868 if (!rt2x00_rf(rt2x00dev, RF5226) && in rt73usb_init_eeprom()
1869 !rt2x00_rf(rt2x00dev, RF2528) && in rt73usb_init_eeprom()
1870 !rt2x00_rf(rt2x00dev, RF5225) && in rt73usb_init_eeprom()
1871 !rt2x00_rf(rt2x00dev, RF2527)) { in rt73usb_init_eeprom()
1872 rt2x00_err(rt2x00dev, "Invalid RF chipset detected\n"); in rt73usb_init_eeprom()
1879 rt2x00dev->default_ant.tx = in rt73usb_init_eeprom()
1881 rt2x00dev->default_ant.rx = in rt73usb_init_eeprom()
1888 __set_bit(CAPABILITY_FRAME_TYPE, &rt2x00dev->cap_flags); in rt73usb_init_eeprom()
1894 __set_bit(CAPABILITY_HW_BUTTON, &rt2x00dev->cap_flags); in rt73usb_init_eeprom()
1899 eeprom = rt2x00_eeprom_read(rt2x00dev, EEPROM_FREQ); in rt73usb_init_eeprom()
1900 rt2x00dev->freq_offset = rt2x00_get_field16(eeprom, EEPROM_FREQ_OFFSET); in rt73usb_init_eeprom()
1905 eeprom = rt2x00_eeprom_read(rt2x00dev, EEPROM_NIC); in rt73usb_init_eeprom()
1908 __set_bit(CAPABILITY_EXTERNAL_LNA_A, &rt2x00dev->cap_flags); in rt73usb_init_eeprom()
1909 __set_bit(CAPABILITY_EXTERNAL_LNA_BG, &rt2x00dev->cap_flags); in rt73usb_init_eeprom()
1916 eeprom = rt2x00_eeprom_read(rt2x00dev, EEPROM_LED); in rt73usb_init_eeprom()
1918 rt73usb_init_led(rt2x00dev, &rt2x00dev->led_radio, LED_TYPE_RADIO); in rt73usb_init_eeprom()
1919 rt73usb_init_led(rt2x00dev, &rt2x00dev->led_assoc, LED_TYPE_ASSOC); in rt73usb_init_eeprom()
1921 rt73usb_init_led(rt2x00dev, &rt2x00dev->led_qual, in rt73usb_init_eeprom()
1924 rt2x00_set_field16(&rt2x00dev->led_mcu_reg, MCU_LEDCS_LED_MODE, value); in rt73usb_init_eeprom()
1925 rt2x00_set_field16(&rt2x00dev->led_mcu_reg, MCU_LEDCS_POLARITY_GPIO_0, in rt73usb_init_eeprom()
1928 rt2x00_set_field16(&rt2x00dev->led_mcu_reg, MCU_LEDCS_POLARITY_GPIO_1, in rt73usb_init_eeprom()
1931 rt2x00_set_field16(&rt2x00dev->led_mcu_reg, MCU_LEDCS_POLARITY_GPIO_2, in rt73usb_init_eeprom()
1934 rt2x00_set_field16(&rt2x00dev->led_mcu_reg, MCU_LEDCS_POLARITY_GPIO_3, in rt73usb_init_eeprom()
1937 rt2x00_set_field16(&rt2x00dev->led_mcu_reg, MCU_LEDCS_POLARITY_GPIO_4, in rt73usb_init_eeprom()
1940 rt2x00_set_field16(&rt2x00dev->led_mcu_reg, MCU_LEDCS_POLARITY_ACT, in rt73usb_init_eeprom()
1942 rt2x00_set_field16(&rt2x00dev->led_mcu_reg, MCU_LEDCS_POLARITY_READY_BG, in rt73usb_init_eeprom()
1945 rt2x00_set_field16(&rt2x00dev->led_mcu_reg, MCU_LEDCS_POLARITY_READY_A, in rt73usb_init_eeprom()
2089 static int rt73usb_probe_hw_mode(struct rt2x00_dev *rt2x00dev) in rt73usb_probe_hw_mode() argument
2091 struct hw_mode_spec *spec = &rt2x00dev->spec; in rt73usb_probe_hw_mode()
2105 ieee80211_hw_set(rt2x00dev->hw, PS_NULLFUNC_STACK); in rt73usb_probe_hw_mode()
2106 ieee80211_hw_set(rt2x00dev->hw, SIGNAL_DBM); in rt73usb_probe_hw_mode()
2107 ieee80211_hw_set(rt2x00dev->hw, SUPPORTS_PS); in rt73usb_probe_hw_mode()
2109 SET_IEEE80211_DEV(rt2x00dev->hw, rt2x00dev->dev); in rt73usb_probe_hw_mode()
2110 SET_IEEE80211_PERM_ADDR(rt2x00dev->hw, in rt73usb_probe_hw_mode()
2111 rt2x00_eeprom_addr(rt2x00dev, in rt73usb_probe_hw_mode()
2120 if (rt2x00_rf(rt2x00dev, RF2528)) { in rt73usb_probe_hw_mode()
2123 } else if (rt2x00_rf(rt2x00dev, RF5226)) { in rt73usb_probe_hw_mode()
2127 } else if (rt2x00_rf(rt2x00dev, RF2527)) { in rt73usb_probe_hw_mode()
2130 } else if (rt2x00_rf(rt2x00dev, RF5225)) { in rt73usb_probe_hw_mode()
2145 tx_power = rt2x00_eeprom_addr(rt2x00dev, EEPROM_TXPOWER_G_START); in rt73usb_probe_hw_mode()
2152 tx_power = rt2x00_eeprom_addr(rt2x00dev, EEPROM_TXPOWER_A_START); in rt73usb_probe_hw_mode()
2163 static int rt73usb_probe_hw(struct rt2x00_dev *rt2x00dev) in rt73usb_probe_hw() argument
2171 retval = rt73usb_validate_eeprom(rt2x00dev); in rt73usb_probe_hw()
2175 retval = rt73usb_init_eeprom(rt2x00dev); in rt73usb_probe_hw()
2183 reg = rt2x00usb_register_read(rt2x00dev, MAC_CSR13); in rt73usb_probe_hw()
2185 rt2x00usb_register_write(rt2x00dev, MAC_CSR13, reg); in rt73usb_probe_hw()
2190 retval = rt73usb_probe_hw_mode(rt2x00dev); in rt73usb_probe_hw()
2198 __set_bit(CAPABILITY_CONTROL_FILTERS, &rt2x00dev->cap_flags); in rt73usb_probe_hw()
2203 __set_bit(REQUIRE_FIRMWARE, &rt2x00dev->cap_flags); in rt73usb_probe_hw()
2205 __set_bit(CAPABILITY_HW_CRYPTO, &rt2x00dev->cap_flags); in rt73usb_probe_hw()
2206 __set_bit(CAPABILITY_LINK_TUNING, &rt2x00dev->cap_flags); in rt73usb_probe_hw()
2207 __set_bit(REQUIRE_PS_AUTOWAKE, &rt2x00dev->cap_flags); in rt73usb_probe_hw()
2212 rt2x00dev->rssi_offset = DEFAULT_RSSI_OFFSET; in rt73usb_probe_hw()
2225 struct rt2x00_dev *rt2x00dev = hw->priv; in rt73usb_conf_tx() local
2249 queue = rt2x00queue_get_tx_queue(rt2x00dev, queue_idx); in rt73usb_conf_tx()
2256 reg = rt2x00usb_register_read(rt2x00dev, offset); in rt73usb_conf_tx()
2258 rt2x00usb_register_write(rt2x00dev, offset, reg); in rt73usb_conf_tx()
2264 reg = rt2x00usb_register_read(rt2x00dev, AIFSN_CSR); in rt73usb_conf_tx()
2266 rt2x00usb_register_write(rt2x00dev, AIFSN_CSR, reg); in rt73usb_conf_tx()
2268 reg = rt2x00usb_register_read(rt2x00dev, CWMIN_CSR); in rt73usb_conf_tx()
2270 rt2x00usb_register_write(rt2x00dev, CWMIN_CSR, reg); in rt73usb_conf_tx()
2272 reg = rt2x00usb_register_read(rt2x00dev, CWMAX_CSR); in rt73usb_conf_tx()
2274 rt2x00usb_register_write(rt2x00dev, CWMAX_CSR, reg); in rt73usb_conf_tx()
2281 struct rt2x00_dev *rt2x00dev = hw->priv; in rt73usb_get_tsf() local
2285 reg = rt2x00usb_register_read(rt2x00dev, TXRX_CSR13); in rt73usb_get_tsf()
2287 reg = rt2x00usb_register_read(rt2x00dev, TXRX_CSR12); in rt73usb_get_tsf()