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()
487 !rt2x00dev->intf_ap_count); in rt73usb_config_filter()
494 rt2x00usb_register_write(rt2x00dev, TXRX_CSR0, reg); in rt73usb_config_filter()
497 static void rt73usb_config_intf(struct rt2x00_dev *rt2x00dev, in rt73usb_config_intf() argument
508 rt2x00usb_register_read(rt2x00dev, TXRX_CSR9, &reg); in rt73usb_config_intf()
510 rt2x00usb_register_write(rt2x00dev, TXRX_CSR9, reg); in rt73usb_config_intf()
518 rt2x00usb_register_multiwrite(rt2x00dev, MAC_CSR2, in rt73usb_config_intf()
527 rt2x00usb_register_multiwrite(rt2x00dev, MAC_CSR4, in rt73usb_config_intf()
532 static void rt73usb_config_erp(struct rt2x00_dev *rt2x00dev, in rt73usb_config_erp() argument
538 rt2x00usb_register_read(rt2x00dev, TXRX_CSR0, &reg); in rt73usb_config_erp()
541 rt2x00usb_register_write(rt2x00dev, TXRX_CSR0, reg); in rt73usb_config_erp()
544 rt2x00usb_register_read(rt2x00dev, TXRX_CSR4, &reg); in rt73usb_config_erp()
548 rt2x00usb_register_write(rt2x00dev, TXRX_CSR4, reg); in rt73usb_config_erp()
552 rt2x00usb_register_write(rt2x00dev, TXRX_CSR5, in rt73usb_config_erp()
556 rt2x00usb_register_read(rt2x00dev, TXRX_CSR9, &reg); in rt73usb_config_erp()
559 rt2x00usb_register_write(rt2x00dev, TXRX_CSR9, reg); in rt73usb_config_erp()
563 rt2x00usb_register_read(rt2x00dev, MAC_CSR9, &reg); in rt73usb_config_erp()
565 rt2x00usb_register_write(rt2x00dev, MAC_CSR9, reg); in rt73usb_config_erp()
567 rt2x00usb_register_read(rt2x00dev, MAC_CSR8, &reg); in rt73usb_config_erp()
571 rt2x00usb_register_write(rt2x00dev, MAC_CSR8, reg); in rt73usb_config_erp()
575 static void rt73usb_config_antenna_5x(struct rt2x00_dev *rt2x00dev, in rt73usb_config_antenna_5x() argument
583 rt73usb_bbp_read(rt2x00dev, 3, &r3); in rt73usb_config_antenna_5x()
584 rt73usb_bbp_read(rt2x00dev, 4, &r4); in rt73usb_config_antenna_5x()
585 rt73usb_bbp_read(rt2x00dev, 77, &r77); in rt73usb_config_antenna_5x()
595 temp = !rt2x00_has_cap_frame_type(rt2x00dev) && in rt73usb_config_antenna_5x()
596 (rt2x00dev->curr_band != IEEE80211_BAND_5GHZ); in rt73usb_config_antenna_5x()
602 if (rt2x00dev->curr_band == IEEE80211_BAND_5GHZ) in rt73usb_config_antenna_5x()
611 if (rt2x00dev->curr_band == IEEE80211_BAND_5GHZ) in rt73usb_config_antenna_5x()
618 rt73usb_bbp_write(rt2x00dev, 77, r77); in rt73usb_config_antenna_5x()
619 rt73usb_bbp_write(rt2x00dev, 3, r3); in rt73usb_config_antenna_5x()
620 rt73usb_bbp_write(rt2x00dev, 4, r4); in rt73usb_config_antenna_5x()
623 static void rt73usb_config_antenna_2x(struct rt2x00_dev *rt2x00dev, in rt73usb_config_antenna_2x() argument
630 rt73usb_bbp_read(rt2x00dev, 3, &r3); in rt73usb_config_antenna_2x()
631 rt73usb_bbp_read(rt2x00dev, 4, &r4); in rt73usb_config_antenna_2x()
632 rt73usb_bbp_read(rt2x00dev, 77, &r77); in rt73usb_config_antenna_2x()
636 !rt2x00_has_cap_frame_type(rt2x00dev)); in rt73usb_config_antenna_2x()
656 rt73usb_bbp_write(rt2x00dev, 77, r77); in rt73usb_config_antenna_2x()
657 rt73usb_bbp_write(rt2x00dev, 3, r3); in rt73usb_config_antenna_2x()
658 rt73usb_bbp_write(rt2x00dev, 4, r4); in rt73usb_config_antenna_2x()
692 static void rt73usb_config_ant(struct rt2x00_dev *rt2x00dev, in rt73usb_config_ant() argument
707 if (rt2x00dev->curr_band == IEEE80211_BAND_5GHZ) { in rt73usb_config_ant()
709 lna = rt2x00_has_cap_external_lna_a(rt2x00dev); in rt73usb_config_ant()
712 lna = rt2x00_has_cap_external_lna_bg(rt2x00dev); in rt73usb_config_ant()
716 rt73usb_bbp_write(rt2x00dev, sel[i].word, sel[i].value[lna]); in rt73usb_config_ant()
718 rt2x00usb_register_read(rt2x00dev, PHY_CSR0, &reg); in rt73usb_config_ant()
721 (rt2x00dev->curr_band == IEEE80211_BAND_2GHZ)); in rt73usb_config_ant()
723 (rt2x00dev->curr_band == IEEE80211_BAND_5GHZ)); in rt73usb_config_ant()
725 rt2x00usb_register_write(rt2x00dev, PHY_CSR0, reg); in rt73usb_config_ant()
727 if (rt2x00_rf(rt2x00dev, RF5226) || rt2x00_rf(rt2x00dev, RF5225)) in rt73usb_config_ant()
728 rt73usb_config_antenna_5x(rt2x00dev, ant); in rt73usb_config_ant()
729 else if (rt2x00_rf(rt2x00dev, RF2528) || rt2x00_rf(rt2x00dev, RF2527)) in rt73usb_config_ant()
730 rt73usb_config_antenna_2x(rt2x00dev, ant); in rt73usb_config_ant()
733 static void rt73usb_config_lna_gain(struct rt2x00_dev *rt2x00dev, in rt73usb_config_lna_gain() argument
740 if (rt2x00_has_cap_external_lna_bg(rt2x00dev)) in rt73usb_config_lna_gain()
743 rt2x00_eeprom_read(rt2x00dev, EEPROM_RSSI_OFFSET_BG, &eeprom); in rt73usb_config_lna_gain()
746 rt2x00_eeprom_read(rt2x00dev, EEPROM_RSSI_OFFSET_A, &eeprom); in rt73usb_config_lna_gain()
750 rt2x00dev->lna_gain = lna_gain; in rt73usb_config_lna_gain()
753 static void rt73usb_config_channel(struct rt2x00_dev *rt2x00dev, in rt73usb_config_channel() argument
761 rt2x00_set_field32(&rf->rf4, RF4_FREQ_OFFSET, rt2x00dev->freq_offset); in rt73usb_config_channel()
763 smart = !(rt2x00_rf(rt2x00dev, RF5225) || rt2x00_rf(rt2x00dev, RF2527)); in rt73usb_config_channel()
765 rt73usb_bbp_read(rt2x00dev, 3, &r3); in rt73usb_config_channel()
767 rt73usb_bbp_write(rt2x00dev, 3, r3); in rt73usb_config_channel()
774 rt73usb_bbp_write(rt2x00dev, 94, r94); in rt73usb_config_channel()
776 rt73usb_rf_write(rt2x00dev, 1, rf->rf1); in rt73usb_config_channel()
777 rt73usb_rf_write(rt2x00dev, 2, rf->rf2); in rt73usb_config_channel()
778 rt73usb_rf_write(rt2x00dev, 3, rf->rf3 & ~0x00000004); in rt73usb_config_channel()
779 rt73usb_rf_write(rt2x00dev, 4, rf->rf4); in rt73usb_config_channel()
781 rt73usb_rf_write(rt2x00dev, 1, rf->rf1); in rt73usb_config_channel()
782 rt73usb_rf_write(rt2x00dev, 2, rf->rf2); in rt73usb_config_channel()
783 rt73usb_rf_write(rt2x00dev, 3, rf->rf3 | 0x00000004); in rt73usb_config_channel()
784 rt73usb_rf_write(rt2x00dev, 4, rf->rf4); in rt73usb_config_channel()
786 rt73usb_rf_write(rt2x00dev, 1, rf->rf1); in rt73usb_config_channel()
787 rt73usb_rf_write(rt2x00dev, 2, rf->rf2); in rt73usb_config_channel()
788 rt73usb_rf_write(rt2x00dev, 3, rf->rf3 & ~0x00000004); in rt73usb_config_channel()
789 rt73usb_rf_write(rt2x00dev, 4, rf->rf4); in rt73usb_config_channel()
794 static void rt73usb_config_txpower(struct rt2x00_dev *rt2x00dev, in rt73usb_config_txpower() argument
799 rt2x00_rf_read(rt2x00dev, 1, &rf.rf1); in rt73usb_config_txpower()
800 rt2x00_rf_read(rt2x00dev, 2, &rf.rf2); in rt73usb_config_txpower()
801 rt2x00_rf_read(rt2x00dev, 3, &rf.rf3); in rt73usb_config_txpower()
802 rt2x00_rf_read(rt2x00dev, 4, &rf.rf4); in rt73usb_config_txpower()
804 rt73usb_config_channel(rt2x00dev, &rf, txpower); in rt73usb_config_txpower()
807 static void rt73usb_config_retry_limit(struct rt2x00_dev *rt2x00dev, in rt73usb_config_retry_limit() argument
812 rt2x00usb_register_read(rt2x00dev, TXRX_CSR4, &reg); in rt73usb_config_retry_limit()
820 rt2x00usb_register_write(rt2x00dev, TXRX_CSR4, reg); in rt73usb_config_retry_limit()
823 static void rt73usb_config_ps(struct rt2x00_dev *rt2x00dev, in rt73usb_config_ps() argument
832 rt2x00usb_register_read(rt2x00dev, MAC_CSR11, &reg); in rt73usb_config_ps()
834 rt2x00dev->beacon_int - 10); in rt73usb_config_ps()
841 rt2x00usb_register_write(rt2x00dev, MAC_CSR11, reg); in rt73usb_config_ps()
844 rt2x00usb_register_write(rt2x00dev, MAC_CSR11, reg); in rt73usb_config_ps()
846 rt2x00usb_vendor_request_sw(rt2x00dev, USB_DEVICE_MODE, 0, in rt73usb_config_ps()
849 rt2x00usb_register_read(rt2x00dev, MAC_CSR11, &reg); in rt73usb_config_ps()
854 rt2x00usb_register_write(rt2x00dev, MAC_CSR11, reg); in rt73usb_config_ps()
856 rt2x00usb_vendor_request_sw(rt2x00dev, USB_DEVICE_MODE, 0, in rt73usb_config_ps()
861 static void rt73usb_config(struct rt2x00_dev *rt2x00dev, in rt73usb_config() argument
866 rt73usb_config_lna_gain(rt2x00dev, libconf); in rt73usb_config()
869 rt73usb_config_channel(rt2x00dev, &libconf->rf, in rt73usb_config()
873 rt73usb_config_txpower(rt2x00dev, libconf->conf->power_level); in rt73usb_config()
875 rt73usb_config_retry_limit(rt2x00dev, libconf); in rt73usb_config()
877 rt73usb_config_ps(rt2x00dev, libconf); in rt73usb_config()
883 static void rt73usb_link_stats(struct rt2x00_dev *rt2x00dev, in rt73usb_link_stats() argument
891 rt2x00usb_register_read(rt2x00dev, STA_CSR0, &reg); in rt73usb_link_stats()
897 rt2x00usb_register_read(rt2x00dev, STA_CSR1, &reg); in rt73usb_link_stats()
901 static inline void rt73usb_set_vgc(struct rt2x00_dev *rt2x00dev, in rt73usb_set_vgc() argument
905 rt73usb_bbp_write(rt2x00dev, 17, vgc_level); in rt73usb_set_vgc()
911 static void rt73usb_reset_tuner(struct rt2x00_dev *rt2x00dev, in rt73usb_reset_tuner() argument
914 rt73usb_set_vgc(rt2x00dev, qual, 0x20); in rt73usb_reset_tuner()
917 static void rt73usb_link_tuner(struct rt2x00_dev *rt2x00dev, in rt73usb_link_tuner() argument
926 if (rt2x00dev->curr_band == IEEE80211_BAND_5GHZ) { in rt73usb_link_tuner()
930 if (rt2x00_has_cap_external_lna_a(rt2x00dev)) { in rt73usb_link_tuner()
946 if (rt2x00_has_cap_external_lna_bg(rt2x00dev)) { in rt73usb_link_tuner()
956 if (!rt2x00dev->intf_associated) in rt73usb_link_tuner()
963 rt73usb_set_vgc(rt2x00dev, qual, 0x60); in rt73usb_link_tuner()
971 rt73usb_set_vgc(rt2x00dev, qual, up_bound); in rt73usb_link_tuner()
979 rt73usb_set_vgc(rt2x00dev, qual, low_bound + 0x10); in rt73usb_link_tuner()
987 rt73usb_set_vgc(rt2x00dev, qual, low_bound + 0x08); in rt73usb_link_tuner()
1000 rt73usb_set_vgc(rt2x00dev, qual, up_bound); in rt73usb_link_tuner()
1011 rt73usb_set_vgc(rt2x00dev, qual, in rt73usb_link_tuner()
1014 rt73usb_set_vgc(rt2x00dev, qual, in rt73usb_link_tuner()
1023 struct rt2x00_dev *rt2x00dev = queue->rt2x00dev; in rt73usb_start_queue() local
1028 rt2x00usb_register_read(rt2x00dev, TXRX_CSR0, &reg); in rt73usb_start_queue()
1030 rt2x00usb_register_write(rt2x00dev, TXRX_CSR0, reg); in rt73usb_start_queue()
1033 rt2x00usb_register_read(rt2x00dev, TXRX_CSR9, &reg); in rt73usb_start_queue()
1037 rt2x00usb_register_write(rt2x00dev, TXRX_CSR9, reg); in rt73usb_start_queue()
1046 struct rt2x00_dev *rt2x00dev = queue->rt2x00dev; in rt73usb_stop_queue() local
1051 rt2x00usb_register_read(rt2x00dev, TXRX_CSR0, &reg); in rt73usb_stop_queue()
1053 rt2x00usb_register_write(rt2x00dev, TXRX_CSR0, reg); in rt73usb_stop_queue()
1056 rt2x00usb_register_read(rt2x00dev, TXRX_CSR9, &reg); in rt73usb_stop_queue()
1060 rt2x00usb_register_write(rt2x00dev, TXRX_CSR9, reg); in rt73usb_stop_queue()
1070 static char *rt73usb_get_firmware_name(struct rt2x00_dev *rt2x00dev) in rt73usb_get_firmware_name() argument
1075 static int rt73usb_check_firmware(struct rt2x00_dev *rt2x00dev, in rt73usb_check_firmware() argument
1104 static int rt73usb_load_firmware(struct rt2x00_dev *rt2x00dev, in rt73usb_load_firmware() argument
1115 rt2x00usb_register_read(rt2x00dev, MAC_CSR0, &reg); in rt73usb_load_firmware()
1122 rt2x00_err(rt2x00dev, "Unstable hardware\n"); in rt73usb_load_firmware()
1129 rt2x00usb_register_multiwrite(rt2x00dev, FIRMWARE_IMAGE_BASE, data, len); in rt73usb_load_firmware()
1135 status = rt2x00usb_vendor_request_sw(rt2x00dev, USB_DEVICE_MODE, in rt73usb_load_firmware()
1139 rt2x00_err(rt2x00dev, "Failed to write Firmware to device\n"); in rt73usb_load_firmware()
1149 static int rt73usb_init_registers(struct rt2x00_dev *rt2x00dev) in rt73usb_init_registers() argument
1153 rt2x00usb_register_read(rt2x00dev, TXRX_CSR0, &reg); in rt73usb_init_registers()
1157 rt2x00usb_register_write(rt2x00dev, TXRX_CSR0, reg); in rt73usb_init_registers()
1159 rt2x00usb_register_read(rt2x00dev, TXRX_CSR1, &reg); in rt73usb_init_registers()
1168 rt2x00usb_register_write(rt2x00dev, TXRX_CSR1, reg); in rt73usb_init_registers()
1173 rt2x00usb_register_read(rt2x00dev, TXRX_CSR2, &reg); in rt73usb_init_registers()
1182 rt2x00usb_register_write(rt2x00dev, TXRX_CSR2, reg); in rt73usb_init_registers()
1187 rt2x00usb_register_read(rt2x00dev, TXRX_CSR3, &reg); in rt73usb_init_registers()
1194 rt2x00usb_register_write(rt2x00dev, TXRX_CSR3, reg); in rt73usb_init_registers()
1196 rt2x00usb_register_read(rt2x00dev, TXRX_CSR7, &reg); in rt73usb_init_registers()
1201 rt2x00usb_register_write(rt2x00dev, TXRX_CSR7, reg); in rt73usb_init_registers()
1203 rt2x00usb_register_read(rt2x00dev, TXRX_CSR8, &reg); in rt73usb_init_registers()
1208 rt2x00usb_register_write(rt2x00dev, TXRX_CSR8, reg); in rt73usb_init_registers()
1210 rt2x00usb_register_read(rt2x00dev, TXRX_CSR9, &reg); in rt73usb_init_registers()
1217 rt2x00usb_register_write(rt2x00dev, TXRX_CSR9, reg); in rt73usb_init_registers()
1219 rt2x00usb_register_write(rt2x00dev, TXRX_CSR15, 0x0000000f); in rt73usb_init_registers()
1221 rt2x00usb_register_read(rt2x00dev, MAC_CSR6, &reg); in rt73usb_init_registers()
1223 rt2x00usb_register_write(rt2x00dev, MAC_CSR6, reg); in rt73usb_init_registers()
1225 rt2x00usb_register_write(rt2x00dev, MAC_CSR10, 0x00000718); in rt73usb_init_registers()
1227 if (rt2x00dev->ops->lib->set_device_state(rt2x00dev, STATE_AWAKE)) in rt73usb_init_registers()
1230 rt2x00usb_register_write(rt2x00dev, MAC_CSR13, 0x00007f00); in rt73usb_init_registers()
1236 rt2x00usb_register_write(rt2x00dev, SEC_CSR0, 0x00000000); in rt73usb_init_registers()
1237 rt2x00usb_register_write(rt2x00dev, SEC_CSR1, 0x00000000); in rt73usb_init_registers()
1238 rt2x00usb_register_write(rt2x00dev, SEC_CSR5, 0x00000000); in rt73usb_init_registers()
1241 if (rt2x00_rf(rt2x00dev, RF5225) || rt2x00_rf(rt2x00dev, RF2527)) in rt73usb_init_registers()
1243 rt2x00usb_register_write(rt2x00dev, PHY_CSR1, reg); in rt73usb_init_registers()
1245 rt2x00usb_register_write(rt2x00dev, PHY_CSR5, 0x00040a06); in rt73usb_init_registers()
1246 rt2x00usb_register_write(rt2x00dev, PHY_CSR6, 0x00080606); in rt73usb_init_registers()
1247 rt2x00usb_register_write(rt2x00dev, PHY_CSR7, 0x00000408); in rt73usb_init_registers()
1249 rt2x00usb_register_read(rt2x00dev, MAC_CSR9, &reg); in rt73usb_init_registers()
1251 rt2x00usb_register_write(rt2x00dev, MAC_CSR9, reg); in rt73usb_init_registers()
1259 rt2x00usb_register_write(rt2x00dev, HW_BEACON_BASE0, 0); in rt73usb_init_registers()
1260 rt2x00usb_register_write(rt2x00dev, HW_BEACON_BASE1, 0); in rt73usb_init_registers()
1261 rt2x00usb_register_write(rt2x00dev, HW_BEACON_BASE2, 0); in rt73usb_init_registers()
1262 rt2x00usb_register_write(rt2x00dev, HW_BEACON_BASE3, 0); in rt73usb_init_registers()
1269 rt2x00usb_register_read(rt2x00dev, STA_CSR0, &reg); in rt73usb_init_registers()
1270 rt2x00usb_register_read(rt2x00dev, STA_CSR1, &reg); in rt73usb_init_registers()
1271 rt2x00usb_register_read(rt2x00dev, STA_CSR2, &reg); in rt73usb_init_registers()
1276 rt2x00usb_register_read(rt2x00dev, MAC_CSR1, &reg); in rt73usb_init_registers()
1279 rt2x00usb_register_write(rt2x00dev, MAC_CSR1, reg); in rt73usb_init_registers()
1281 rt2x00usb_register_read(rt2x00dev, MAC_CSR1, &reg); in rt73usb_init_registers()
1284 rt2x00usb_register_write(rt2x00dev, MAC_CSR1, reg); in rt73usb_init_registers()
1286 rt2x00usb_register_read(rt2x00dev, MAC_CSR1, &reg); in rt73usb_init_registers()
1288 rt2x00usb_register_write(rt2x00dev, MAC_CSR1, reg); in rt73usb_init_registers()
1293 static int rt73usb_wait_bbp_ready(struct rt2x00_dev *rt2x00dev) in rt73usb_wait_bbp_ready() argument
1299 rt73usb_bbp_read(rt2x00dev, 0, &value); in rt73usb_wait_bbp_ready()
1305 rt2x00_err(rt2x00dev, "BBP register access failed, aborting\n"); in rt73usb_wait_bbp_ready()
1309 static int rt73usb_init_bbp(struct rt2x00_dev *rt2x00dev) in rt73usb_init_bbp() argument
1316 if (unlikely(rt73usb_wait_bbp_ready(rt2x00dev))) in rt73usb_init_bbp()
1319 rt73usb_bbp_write(rt2x00dev, 3, 0x80); in rt73usb_init_bbp()
1320 rt73usb_bbp_write(rt2x00dev, 15, 0x30); in rt73usb_init_bbp()
1321 rt73usb_bbp_write(rt2x00dev, 21, 0xc8); in rt73usb_init_bbp()
1322 rt73usb_bbp_write(rt2x00dev, 22, 0x38); in rt73usb_init_bbp()
1323 rt73usb_bbp_write(rt2x00dev, 23, 0x06); in rt73usb_init_bbp()
1324 rt73usb_bbp_write(rt2x00dev, 24, 0xfe); in rt73usb_init_bbp()
1325 rt73usb_bbp_write(rt2x00dev, 25, 0x0a); in rt73usb_init_bbp()
1326 rt73usb_bbp_write(rt2x00dev, 26, 0x0d); in rt73usb_init_bbp()
1327 rt73usb_bbp_write(rt2x00dev, 32, 0x0b); in rt73usb_init_bbp()
1328 rt73usb_bbp_write(rt2x00dev, 34, 0x12); in rt73usb_init_bbp()
1329 rt73usb_bbp_write(rt2x00dev, 37, 0x07); in rt73usb_init_bbp()
1330 rt73usb_bbp_write(rt2x00dev, 39, 0xf8); in rt73usb_init_bbp()
1331 rt73usb_bbp_write(rt2x00dev, 41, 0x60); in rt73usb_init_bbp()
1332 rt73usb_bbp_write(rt2x00dev, 53, 0x10); in rt73usb_init_bbp()
1333 rt73usb_bbp_write(rt2x00dev, 54, 0x18); in rt73usb_init_bbp()
1334 rt73usb_bbp_write(rt2x00dev, 60, 0x10); in rt73usb_init_bbp()
1335 rt73usb_bbp_write(rt2x00dev, 61, 0x04); in rt73usb_init_bbp()
1336 rt73usb_bbp_write(rt2x00dev, 62, 0x04); in rt73usb_init_bbp()
1337 rt73usb_bbp_write(rt2x00dev, 75, 0xfe); in rt73usb_init_bbp()
1338 rt73usb_bbp_write(rt2x00dev, 86, 0xfe); in rt73usb_init_bbp()
1339 rt73usb_bbp_write(rt2x00dev, 88, 0xfe); in rt73usb_init_bbp()
1340 rt73usb_bbp_write(rt2x00dev, 90, 0x0f); in rt73usb_init_bbp()
1341 rt73usb_bbp_write(rt2x00dev, 99, 0x00); in rt73usb_init_bbp()
1342 rt73usb_bbp_write(rt2x00dev, 102, 0x16); in rt73usb_init_bbp()
1343 rt73usb_bbp_write(rt2x00dev, 107, 0x04); in rt73usb_init_bbp()
1346 rt2x00_eeprom_read(rt2x00dev, EEPROM_BBP_START + i, &eeprom); in rt73usb_init_bbp()
1351 rt73usb_bbp_write(rt2x00dev, reg_id, value); in rt73usb_init_bbp()
1361 static int rt73usb_enable_radio(struct rt2x00_dev *rt2x00dev) in rt73usb_enable_radio() argument
1366 if (unlikely(rt73usb_init_registers(rt2x00dev) || in rt73usb_enable_radio()
1367 rt73usb_init_bbp(rt2x00dev))) in rt73usb_enable_radio()
1373 static void rt73usb_disable_radio(struct rt2x00_dev *rt2x00dev) in rt73usb_disable_radio() argument
1375 rt2x00usb_register_write(rt2x00dev, MAC_CSR10, 0x00001818); in rt73usb_disable_radio()
1380 rt2x00usb_register_write(rt2x00dev, TXRX_CSR9, 0); in rt73usb_disable_radio()
1382 rt2x00usb_disable_radio(rt2x00dev); in rt73usb_disable_radio()
1385 static int rt73usb_set_state(struct rt2x00_dev *rt2x00dev, enum dev_state state) in rt73usb_set_state() argument
1393 rt2x00usb_register_read(rt2x00dev, MAC_CSR12, &reg); in rt73usb_set_state()
1396 rt2x00usb_register_write(rt2x00dev, MAC_CSR12, reg); in rt73usb_set_state()
1404 rt2x00usb_register_read(rt2x00dev, MAC_CSR12, &reg2); in rt73usb_set_state()
1408 rt2x00usb_register_write(rt2x00dev, MAC_CSR12, reg); in rt73usb_set_state()
1415 static int rt73usb_set_device_state(struct rt2x00_dev *rt2x00dev, in rt73usb_set_device_state() argument
1422 retval = rt73usb_enable_radio(rt2x00dev); in rt73usb_set_device_state()
1425 rt73usb_disable_radio(rt2x00dev); in rt73usb_set_device_state()
1435 retval = rt73usb_set_state(rt2x00dev, state); in rt73usb_set_device_state()
1443 rt2x00_err(rt2x00dev, "Device failed to enter state %d (%d)\n", in rt73usb_set_device_state()
1514 TXPOWER_TO_DEV(entry->queue->rt2x00dev->tx_power)); in rt73usb_write_tx_desc()
1532 struct rt2x00_dev *rt2x00dev = entry->queue->rt2x00dev; in rt73usb_write_beacon() local
1541 rt2x00usb_register_read(rt2x00dev, TXRX_CSR9, &reg); in rt73usb_write_beacon()
1544 rt2x00usb_register_write(rt2x00dev, TXRX_CSR9, reg); in rt73usb_write_beacon()
1560 rt2x00debug_dump_frame(rt2x00dev, DUMP_FRAME_BEACON, entry->skb); in rt73usb_write_beacon()
1567 rt2x00_err(rt2x00dev, "Failure padding beacon, aborting\n"); in rt73usb_write_beacon()
1570 rt2x00usb_register_write(rt2x00dev, TXRX_CSR9, orig_reg); in rt73usb_write_beacon()
1575 rt2x00usb_register_multiwrite(rt2x00dev, beacon_base, entry->skb->data, in rt73usb_write_beacon()
1584 rt2x00usb_register_write(rt2x00dev, TXRX_CSR10, 0x00001008); in rt73usb_write_beacon()
1587 rt2x00usb_register_write(rt2x00dev, TXRX_CSR9, reg); in rt73usb_write_beacon()
1598 struct rt2x00_dev *rt2x00dev = entry->queue->rt2x00dev; in rt73usb_clear_beacon() local
1606 rt2x00usb_register_read(rt2x00dev, TXRX_CSR9, &orig_reg); in rt73usb_clear_beacon()
1609 rt2x00usb_register_write(rt2x00dev, TXRX_CSR9, reg); in rt73usb_clear_beacon()
1615 rt2x00usb_register_write(rt2x00dev, beacon_base, 0); in rt73usb_clear_beacon()
1620 rt2x00usb_register_write(rt2x00dev, TXRX_CSR9, orig_reg); in rt73usb_clear_beacon()
1640 static int rt73usb_agc_to_rssi(struct rt2x00_dev *rt2x00dev, int rxd_w1) in rt73usb_agc_to_rssi() argument
1642 u8 offset = rt2x00dev->lna_gain; in rt73usb_agc_to_rssi()
1660 if (rt2x00dev->curr_band == IEEE80211_BAND_5GHZ) { in rt73usb_agc_to_rssi()
1661 if (rt2x00_has_cap_external_lna_a(rt2x00dev)) { in rt73usb_agc_to_rssi()
1678 struct rt2x00_dev *rt2x00dev = entry->queue->rt2x00dev; in rt73usb_fill_rxdone() local
1737 rxdesc->rssi = rt73usb_agc_to_rssi(rt2x00dev, word1); in rt73usb_fill_rxdone()
1757 static int rt73usb_validate_eeprom(struct rt2x00_dev *rt2x00dev) in rt73usb_validate_eeprom() argument
1763 rt2x00usb_eeprom_read(rt2x00dev, rt2x00dev->eeprom, EEPROM_SIZE); in rt73usb_validate_eeprom()
1768 mac = rt2x00_eeprom_addr(rt2x00dev, EEPROM_MAC_ADDR_0); in rt73usb_validate_eeprom()
1771 rt2x00_eeprom_dbg(rt2x00dev, "MAC: %pM\n", mac); in rt73usb_validate_eeprom()
1774 rt2x00_eeprom_read(rt2x00dev, EEPROM_ANTENNA, &word); 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 rt2x00_eeprom_read(rt2x00dev, EEPROM_NIC, &word); 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 rt2x00_eeprom_read(rt2x00dev, EEPROM_LED, &word); 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 rt2x00_eeprom_read(rt2x00dev, EEPROM_FREQ, &word); 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 rt2x00_eeprom_read(rt2x00dev, EEPROM_RSSI_OFFSET_BG, &word); 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 rt2x00_eeprom_read(rt2x00dev, EEPROM_RSSI_OFFSET_A, &word); 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 rt2x00_eeprom_read(rt2x00dev, EEPROM_ANTENNA, &eeprom); in rt73usb_init_eeprom()
1870 rt2x00usb_register_read(rt2x00dev, MAC_CSR0, &reg); 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 rt2x00_eeprom_read(rt2x00dev, EEPROM_FREQ, &eeprom); in rt73usb_init_eeprom()
1911 rt2x00dev->freq_offset = rt2x00_get_field16(eeprom, EEPROM_FREQ_OFFSET); in rt73usb_init_eeprom()
1916 rt2x00_eeprom_read(rt2x00dev, EEPROM_NIC, &eeprom); 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 rt2x00_eeprom_read(rt2x00dev, EEPROM_LED, &eeprom); 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 rt2x00dev->hw->flags = in rt73usb_probe_hw_mode()
2121 SET_IEEE80211_DEV(rt2x00dev->hw, rt2x00dev->dev); in rt73usb_probe_hw_mode()
2122 SET_IEEE80211_PERM_ADDR(rt2x00dev->hw, in rt73usb_probe_hw_mode()
2123 rt2x00_eeprom_addr(rt2x00dev, in rt73usb_probe_hw_mode()
2132 if (rt2x00_rf(rt2x00dev, RF2528)) { in rt73usb_probe_hw_mode()
2135 } else if (rt2x00_rf(rt2x00dev, RF5226)) { in rt73usb_probe_hw_mode()
2139 } else if (rt2x00_rf(rt2x00dev, RF2527)) { in rt73usb_probe_hw_mode()
2142 } else if (rt2x00_rf(rt2x00dev, RF5225)) { in rt73usb_probe_hw_mode()
2157 tx_power = rt2x00_eeprom_addr(rt2x00dev, EEPROM_TXPOWER_G_START); in rt73usb_probe_hw_mode()
2164 tx_power = rt2x00_eeprom_addr(rt2x00dev, EEPROM_TXPOWER_A_START); in rt73usb_probe_hw_mode()
2175 static int rt73usb_probe_hw(struct rt2x00_dev *rt2x00dev) in rt73usb_probe_hw() argument
2183 retval = rt73usb_validate_eeprom(rt2x00dev); in rt73usb_probe_hw()
2187 retval = rt73usb_init_eeprom(rt2x00dev); in rt73usb_probe_hw()
2195 rt2x00usb_register_read(rt2x00dev, MAC_CSR13, &reg); in rt73usb_probe_hw()
2197 rt2x00usb_register_write(rt2x00dev, MAC_CSR13, reg); in rt73usb_probe_hw()
2202 retval = rt73usb_probe_hw_mode(rt2x00dev); in rt73usb_probe_hw()
2210 __set_bit(CAPABILITY_CONTROL_FILTERS, &rt2x00dev->cap_flags); in rt73usb_probe_hw()
2215 __set_bit(REQUIRE_FIRMWARE, &rt2x00dev->cap_flags); in rt73usb_probe_hw()
2217 __set_bit(CAPABILITY_HW_CRYPTO, &rt2x00dev->cap_flags); in rt73usb_probe_hw()
2218 __set_bit(CAPABILITY_LINK_TUNING, &rt2x00dev->cap_flags); in rt73usb_probe_hw()
2219 __set_bit(REQUIRE_PS_AUTOWAKE, &rt2x00dev->cap_flags); in rt73usb_probe_hw()
2224 rt2x00dev->rssi_offset = DEFAULT_RSSI_OFFSET; in rt73usb_probe_hw()
2236 struct rt2x00_dev *rt2x00dev = hw->priv; in rt73usb_conf_tx() local
2260 queue = rt2x00queue_get_tx_queue(rt2x00dev, queue_idx); in rt73usb_conf_tx()
2267 rt2x00usb_register_read(rt2x00dev, offset, &reg); in rt73usb_conf_tx()
2269 rt2x00usb_register_write(rt2x00dev, offset, reg); in rt73usb_conf_tx()
2275 rt2x00usb_register_read(rt2x00dev, AIFSN_CSR, &reg); in rt73usb_conf_tx()
2277 rt2x00usb_register_write(rt2x00dev, AIFSN_CSR, reg); in rt73usb_conf_tx()
2279 rt2x00usb_register_read(rt2x00dev, CWMIN_CSR, &reg); in rt73usb_conf_tx()
2281 rt2x00usb_register_write(rt2x00dev, CWMIN_CSR, reg); in rt73usb_conf_tx()
2283 rt2x00usb_register_read(rt2x00dev, CWMAX_CSR, &reg); in rt73usb_conf_tx()
2285 rt2x00usb_register_write(rt2x00dev, CWMAX_CSR, reg); in rt73usb_conf_tx()
2292 struct rt2x00_dev *rt2x00dev = hw->priv; in rt73usb_get_tsf() local
2296 rt2x00usb_register_read(rt2x00dev, TXRX_CSR13, &reg); in rt73usb_get_tsf()
2298 rt2x00usb_register_read(rt2x00dev, TXRX_CSR12, &reg); in rt73usb_get_tsf()