• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-R7000-V1.0.7.12_1.2.5/components/opensource/linux/linux-2.6.36/drivers/net/wireless/rt2x00/

Lines Matching refs:rt2x00dev

66 static void rt73usb_bbp_write(struct rt2x00_dev *rt2x00dev,
71 mutex_lock(&rt2x00dev->csr_mutex);
77 if (WAIT_FOR_BBP(rt2x00dev, &reg)) {
84 rt2x00usb_register_write_lock(rt2x00dev, PHY_CSR3, reg);
87 mutex_unlock(&rt2x00dev->csr_mutex);
90 static void rt73usb_bbp_read(struct rt2x00_dev *rt2x00dev,
95 mutex_lock(&rt2x00dev->csr_mutex);
105 if (WAIT_FOR_BBP(rt2x00dev, &reg)) {
111 rt2x00usb_register_write_lock(rt2x00dev, PHY_CSR3, reg);
113 WAIT_FOR_BBP(rt2x00dev, &reg);
118 mutex_unlock(&rt2x00dev->csr_mutex);
121 static void rt73usb_rf_write(struct rt2x00_dev *rt2x00dev,
126 mutex_lock(&rt2x00dev->csr_mutex);
132 if (WAIT_FOR_RF(rt2x00dev, &reg)) {
140 20 + (rt2x00_rf(rt2x00dev, RF5225) ||
141 rt2x00_rf(rt2x00dev, RF2527)));
145 rt2x00usb_register_write_lock(rt2x00dev, PHY_CSR4, reg);
146 rt2x00_rf_write(rt2x00dev, word, value);
149 mutex_unlock(&rt2x00dev->csr_mutex);
187 static int rt73usb_rfkill_poll(struct rt2x00_dev *rt2x00dev)
191 rt2x00usb_register_read(rt2x00dev, MAC_CSR13, &reg);
203 (enabled && led->rt2x00dev->curr_band == IEEE80211_BAND_5GHZ);
205 (enabled && led->rt2x00dev->curr_band == IEEE80211_BAND_2GHZ);
208 rt2x00_set_field16(&led->rt2x00dev->led_mcu_reg,
211 rt2x00usb_vendor_request_sw(led->rt2x00dev, USB_LED_CONTROL,
212 0, led->rt2x00dev->led_mcu_reg,
215 rt2x00_set_field16(&led->rt2x00dev->led_mcu_reg,
217 rt2x00_set_field16(&led->rt2x00dev->led_mcu_reg,
220 rt2x00usb_vendor_request_sw(led->rt2x00dev, USB_LED_CONTROL,
221 0, led->rt2x00dev->led_mcu_reg,
229 rt2x00usb_vendor_request_sw(led->rt2x00dev, USB_LED_CONTROL,
231 led->rt2x00dev->led_mcu_reg,
244 rt2x00usb_register_read(led->rt2x00dev, MAC_CSR14, &reg);
247 rt2x00usb_register_write(led->rt2x00dev, MAC_CSR14, reg);
252 static void rt73usb_init_led(struct rt2x00_dev *rt2x00dev,
256 led->rt2x00dev = rt2x00dev;
267 static int rt73usb_config_shared_key(struct rt2x00_dev *rt2x00dev,
289 rt2x00usb_register_read(rt2x00dev, SEC_CSR0, &reg);
308 rt2x00usb_register_multiwrite(rt2x00dev, reg,
322 rt2x00usb_register_read(rt2x00dev, SEC_CSR1, &reg);
324 rt2x00usb_register_write(rt2x00dev, SEC_CSR1, reg);
329 rt2x00usb_register_read(rt2x00dev, SEC_CSR5, &reg);
331 rt2x00usb_register_write(rt2x00dev, SEC_CSR5, reg);
354 rt2x00usb_register_read(rt2x00dev, SEC_CSR0, &reg);
359 rt2x00usb_register_write(rt2x00dev, SEC_CSR0, reg);
364 static int rt73usb_config_pairwise_key(struct rt2x00_dev *rt2x00dev,
383 rt2x00usb_register_read(rt2x00dev, SEC_CSR2, &reg);
386 rt2x00usb_register_read(rt2x00dev, SEC_CSR3, &reg);
404 rt2x00usb_register_multiwrite(rt2x00dev, reg,
415 rt2x00usb_register_multiwrite(rt2x00dev, reg,
423 rt2x00usb_register_read(rt2x00dev, SEC_CSR4, &reg);
425 rt2x00usb_register_write(rt2x00dev, SEC_CSR4, reg);
448 rt2x00usb_register_read(rt2x00dev, SEC_CSR2, &reg);
453 rt2x00usb_register_write(rt2x00dev, SEC_CSR2, reg);
457 rt2x00usb_register_read(rt2x00dev, SEC_CSR3, &reg);
462 rt2x00usb_register_write(rt2x00dev, SEC_CSR3, reg);
468 static void rt73usb_config_filter(struct rt2x00_dev *rt2x00dev,
479 rt2x00usb_register_read(rt2x00dev, TXRX_CSR0, &reg);
490 !rt2x00dev->intf_ap_count);
497 rt2x00usb_register_write(rt2x00dev, TXRX_CSR0, reg);
500 static void rt73usb_config_intf(struct rt2x00_dev *rt2x00dev,
516 rt2x00usb_register_write(rt2x00dev, beacon_base, 0);
521 rt2x00usb_register_read(rt2x00dev, TXRX_CSR9, &reg);
525 rt2x00usb_register_write(rt2x00dev, TXRX_CSR9, reg);
533 rt2x00usb_register_multiwrite(rt2x00dev, MAC_CSR2,
542 rt2x00usb_register_multiwrite(rt2x00dev, MAC_CSR4,
547 static void rt73usb_config_erp(struct rt2x00_dev *rt2x00dev,
552 rt2x00usb_register_read(rt2x00dev, TXRX_CSR0, &reg);
555 rt2x00usb_register_write(rt2x00dev, TXRX_CSR0, reg);
557 rt2x00usb_register_read(rt2x00dev, TXRX_CSR4, &reg);
561 rt2x00usb_register_write(rt2x00dev, TXRX_CSR4, reg);
563 rt2x00usb_register_write(rt2x00dev, TXRX_CSR5, erp->basic_rates);
565 rt2x00usb_register_read(rt2x00dev, TXRX_CSR9, &reg);
568 rt2x00usb_register_write(rt2x00dev, TXRX_CSR9, reg);
570 rt2x00usb_register_read(rt2x00dev, MAC_CSR9, &reg);
572 rt2x00usb_register_write(rt2x00dev, MAC_CSR9, reg);
574 rt2x00usb_register_read(rt2x00dev, MAC_CSR8, &reg);
578 rt2x00usb_register_write(rt2x00dev, MAC_CSR8, reg);
581 static void rt73usb_config_antenna_5x(struct rt2x00_dev *rt2x00dev,
589 rt73usb_bbp_read(rt2x00dev, 3, &r3);
590 rt73usb_bbp_read(rt2x00dev, 4, &r4);
591 rt73usb_bbp_read(rt2x00dev, 77, &r77);
601 temp = !test_bit(CONFIG_FRAME_TYPE, &rt2x00dev->flags)
602 && (rt2x00dev->curr_band != IEEE80211_BAND_5GHZ);
608 if (rt2x00dev->curr_band == IEEE80211_BAND_5GHZ)
617 if (rt2x00dev->curr_band == IEEE80211_BAND_5GHZ)
624 rt73usb_bbp_write(rt2x00dev, 77, r77);
625 rt73usb_bbp_write(rt2x00dev, 3, r3);
626 rt73usb_bbp_write(rt2x00dev, 4, r4);
629 static void rt73usb_config_antenna_2x(struct rt2x00_dev *rt2x00dev,
636 rt73usb_bbp_read(rt2x00dev, 3, &r3);
637 rt73usb_bbp_read(rt2x00dev, 4, &r4);
638 rt73usb_bbp_read(rt2x00dev, 77, &r77);
642 !test_bit(CONFIG_FRAME_TYPE, &rt2x00dev->flags));
662 rt73usb_bbp_write(rt2x00dev, 77, r77);
663 rt73usb_bbp_write(rt2x00dev, 3, r3);
664 rt73usb_bbp_write(rt2x00dev, 4, r4);
698 static void rt73usb_config_ant(struct rt2x00_dev *rt2x00dev,
713 if (rt2x00dev->curr_band == IEEE80211_BAND_5GHZ) {
715 lna = test_bit(CONFIG_EXTERNAL_LNA_A, &rt2x00dev->flags);
718 lna = test_bit(CONFIG_EXTERNAL_LNA_BG, &rt2x00dev->flags);
722 rt73usb_bbp_write(rt2x00dev, sel[i].word, sel[i].value[lna]);
724 rt2x00usb_register_read(rt2x00dev, PHY_CSR0, &reg);
727 (rt2x00dev->curr_band == IEEE80211_BAND_2GHZ));
729 (rt2x00dev->curr_band == IEEE80211_BAND_5GHZ));
731 rt2x00usb_register_write(rt2x00dev, PHY_CSR0, reg);
733 if (rt2x00_rf(rt2x00dev, RF5226) || rt2x00_rf(rt2x00dev, RF5225))
734 rt73usb_config_antenna_5x(rt2x00dev, ant);
735 else if (rt2x00_rf(rt2x00dev, RF2528) || rt2x00_rf(rt2x00dev, RF2527))
736 rt73usb_config_antenna_2x(rt2x00dev, ant);
739 static void rt73usb_config_lna_gain(struct rt2x00_dev *rt2x00dev,
746 if (test_bit(CONFIG_EXTERNAL_LNA_BG, &rt2x00dev->flags))
749 rt2x00_eeprom_read(rt2x00dev, EEPROM_RSSI_OFFSET_BG, &eeprom);
752 rt2x00_eeprom_read(rt2x00dev, EEPROM_RSSI_OFFSET_A, &eeprom);
756 rt2x00dev->lna_gain = lna_gain;
759 static void rt73usb_config_channel(struct rt2x00_dev *rt2x00dev,
767 rt2x00_set_field32(&rf->rf4, RF4_FREQ_OFFSET, rt2x00dev->freq_offset);
769 smart = !(rt2x00_rf(rt2x00dev, RF5225) || rt2x00_rf(rt2x00dev, RF2527));
771 rt73usb_bbp_read(rt2x00dev, 3, &r3);
773 rt73usb_bbp_write(rt2x00dev, 3, r3);
780 rt73usb_bbp_write(rt2x00dev, 94, r94);
782 rt73usb_rf_write(rt2x00dev, 1, rf->rf1);
783 rt73usb_rf_write(rt2x00dev, 2, rf->rf2);
784 rt73usb_rf_write(rt2x00dev, 3, rf->rf3 & ~0x00000004);
785 rt73usb_rf_write(rt2x00dev, 4, rf->rf4);
787 rt73usb_rf_write(rt2x00dev, 1, rf->rf1);
788 rt73usb_rf_write(rt2x00dev, 2, rf->rf2);
789 rt73usb_rf_write(rt2x00dev, 3, rf->rf3 | 0x00000004);
790 rt73usb_rf_write(rt2x00dev, 4, rf->rf4);
792 rt73usb_rf_write(rt2x00dev, 1, rf->rf1);
793 rt73usb_rf_write(rt2x00dev, 2, rf->rf2);
794 rt73usb_rf_write(rt2x00dev, 3, rf->rf3 & ~0x00000004);
795 rt73usb_rf_write(rt2x00dev, 4, rf->rf4);
800 static void rt73usb_config_txpower(struct rt2x00_dev *rt2x00dev,
805 rt2x00_rf_read(rt2x00dev, 1, &rf.rf1);
806 rt2x00_rf_read(rt2x00dev, 2, &rf.rf2);
807 rt2x00_rf_read(rt2x00dev, 3, &rf.rf3);
808 rt2x00_rf_read(rt2x00dev, 4, &rf.rf4);
810 rt73usb_config_channel(rt2x00dev, &rf, txpower);
813 static void rt73usb_config_retry_limit(struct rt2x00_dev *rt2x00dev,
818 rt2x00usb_register_read(rt2x00dev, TXRX_CSR4, &reg);
826 rt2x00usb_register_write(rt2x00dev, TXRX_CSR4, reg);
829 static void rt73usb_config_ps(struct rt2x00_dev *rt2x00dev,
838 rt2x00usb_register_read(rt2x00dev, MAC_CSR11, &reg);
840 rt2x00dev->beacon_int - 10);
847 rt2x00usb_register_write(rt2x00dev, MAC_CSR11, reg);
850 rt2x00usb_register_write(rt2x00dev, MAC_CSR11, reg);
852 rt2x00usb_vendor_request_sw(rt2x00dev, USB_DEVICE_MODE, 0,
855 rt2x00usb_register_read(rt2x00dev, MAC_CSR11, &reg);
860 rt2x00usb_register_write(rt2x00dev, MAC_CSR11, reg);
862 rt2x00usb_vendor_request_sw(rt2x00dev, USB_DEVICE_MODE, 0,
867 static void rt73usb_config(struct rt2x00_dev *rt2x00dev,
872 rt73usb_config_lna_gain(rt2x00dev, libconf);
875 rt73usb_config_channel(rt2x00dev, &libconf->rf,
879 rt73usb_config_txpower(rt2x00dev, libconf->conf->power_level);
881 rt73usb_config_retry_limit(rt2x00dev, libconf);
883 rt73usb_config_ps(rt2x00dev, libconf);
889 static void rt73usb_link_stats(struct rt2x00_dev *rt2x00dev,
897 rt2x00usb_register_read(rt2x00dev, STA_CSR0, &reg);
903 rt2x00usb_register_read(rt2x00dev, STA_CSR1, &reg);
907 static inline void rt73usb_set_vgc(struct rt2x00_dev *rt2x00dev,
911 rt73usb_bbp_write(rt2x00dev, 17, vgc_level);
917 static void rt73usb_reset_tuner(struct rt2x00_dev *rt2x00dev,
920 rt73usb_set_vgc(rt2x00dev, qual, 0x20);
923 static void rt73usb_link_tuner(struct rt2x00_dev *rt2x00dev,
932 if (rt2x00dev->rx_status.band == IEEE80211_BAND_5GHZ) {
936 if (test_bit(CONFIG_EXTERNAL_LNA_A, &rt2x00dev->flags)) {
952 if (test_bit(CONFIG_EXTERNAL_LNA_BG, &rt2x00dev->flags)) {
962 if (!rt2x00dev->intf_associated)
969 rt73usb_set_vgc(rt2x00dev, qual, 0x60);
977 rt73usb_set_vgc(rt2x00dev, qual, up_bound);
985 rt73usb_set_vgc(rt2x00dev, qual, low_bound + 0x10);
993 rt73usb_set_vgc(rt2x00dev, qual, low_bound + 0x08);
1006 rt73usb_set_vgc(rt2x00dev, qual, up_bound);
1017 rt73usb_set_vgc(rt2x00dev, qual,
1020 rt73usb_set_vgc(rt2x00dev, qual,
1027 static char *rt73usb_get_firmware_name(struct rt2x00_dev *rt2x00dev)
1032 static int rt73usb_check_firmware(struct rt2x00_dev *rt2x00dev,
1061 static int rt73usb_load_firmware(struct rt2x00_dev *rt2x00dev,
1072 rt2x00usb_register_read(rt2x00dev, MAC_CSR0, &reg);
1079 ERROR(rt2x00dev, "Unstable hardware.\n");
1086 rt2x00usb_register_multiwrite(rt2x00dev, FIRMWARE_IMAGE_BASE, data, len);
1092 status = rt2x00usb_vendor_request_sw(rt2x00dev, USB_DEVICE_MODE,
1096 ERROR(rt2x00dev, "Failed to write Firmware to device.\n");
1106 static int rt73usb_init_registers(struct rt2x00_dev *rt2x00dev)
1110 rt2x00usb_register_read(rt2x00dev, TXRX_CSR0, &reg);
1114 rt2x00usb_register_write(rt2x00dev, TXRX_CSR0, reg);
1116 rt2x00usb_register_read(rt2x00dev, TXRX_CSR1, &reg);
1125 rt2x00usb_register_write(rt2x00dev, TXRX_CSR1, reg);
1130 rt2x00usb_register_read(rt2x00dev, TXRX_CSR2, &reg);
1139 rt2x00usb_register_write(rt2x00dev, TXRX_CSR2, reg);
1144 rt2x00usb_register_read(rt2x00dev, TXRX_CSR3, &reg);
1151 rt2x00usb_register_write(rt2x00dev, TXRX_CSR3, reg);
1153 rt2x00usb_register_read(rt2x00dev, TXRX_CSR7, &reg);
1158 rt2x00usb_register_write(rt2x00dev, TXRX_CSR7, reg);
1160 rt2x00usb_register_read(rt2x00dev, TXRX_CSR8, &reg);
1165 rt2x00usb_register_write(rt2x00dev, TXRX_CSR8, reg);
1167 rt2x00usb_register_read(rt2x00dev, TXRX_CSR9, &reg);
1174 rt2x00usb_register_write(rt2x00dev, TXRX_CSR9, reg);
1176 rt2x00usb_register_write(rt2x00dev, TXRX_CSR15, 0x0000000f);
1178 rt2x00usb_register_read(rt2x00dev, MAC_CSR6, &reg);
1180 rt2x00usb_register_write(rt2x00dev, MAC_CSR6, reg);
1182 rt2x00usb_register_write(rt2x00dev, MAC_CSR10, 0x00000718);
1184 if (rt2x00dev->ops->lib->set_device_state(rt2x00dev, STATE_AWAKE))
1187 rt2x00usb_register_write(rt2x00dev, MAC_CSR13, 0x00007f00);
1193 rt2x00usb_register_write(rt2x00dev, SEC_CSR0, 0x00000000);
1194 rt2x00usb_register_write(rt2x00dev, SEC_CSR1, 0x00000000);
1195 rt2x00usb_register_write(rt2x00dev, SEC_CSR5, 0x00000000);
1198 if (rt2x00_rf(rt2x00dev, RF5225) || rt2x00_rf(rt2x00dev, RF2527))
1200 rt2x00usb_register_write(rt2x00dev, PHY_CSR1, reg);
1202 rt2x00usb_register_write(rt2x00dev, PHY_CSR5, 0x00040a06);
1203 rt2x00usb_register_write(rt2x00dev, PHY_CSR6, 0x00080606);
1204 rt2x00usb_register_write(rt2x00dev, PHY_CSR7, 0x00000408);
1206 rt2x00usb_register_read(rt2x00dev, MAC_CSR9, &reg);
1208 rt2x00usb_register_write(rt2x00dev, MAC_CSR9, reg);
1216 rt2x00usb_register_write(rt2x00dev, HW_BEACON_BASE0, 0);
1217 rt2x00usb_register_write(rt2x00dev, HW_BEACON_BASE1, 0);
1218 rt2x00usb_register_write(rt2x00dev, HW_BEACON_BASE2, 0);
1219 rt2x00usb_register_write(rt2x00dev, HW_BEACON_BASE3, 0);
1226 rt2x00usb_register_read(rt2x00dev, STA_CSR0, &reg);
1227 rt2x00usb_register_read(rt2x00dev, STA_CSR1, &reg);
1228 rt2x00usb_register_read(rt2x00dev, STA_CSR2, &reg);
1233 rt2x00usb_register_read(rt2x00dev, MAC_CSR1, &reg);
1236 rt2x00usb_register_write(rt2x00dev, MAC_CSR1, reg);
1238 rt2x00usb_register_read(rt2x00dev, MAC_CSR1, &reg);
1241 rt2x00usb_register_write(rt2x00dev, MAC_CSR1, reg);
1243 rt2x00usb_register_read(rt2x00dev, MAC_CSR1, &reg);
1245 rt2x00usb_register_write(rt2x00dev, MAC_CSR1, reg);
1250 static int rt73usb_wait_bbp_ready(struct rt2x00_dev *rt2x00dev)
1256 rt73usb_bbp_read(rt2x00dev, 0, &value);
1262 ERROR(rt2x00dev, "BBP register access failed, aborting.\n");
1266 static int rt73usb_init_bbp(struct rt2x00_dev *rt2x00dev)
1273 if (unlikely(rt73usb_wait_bbp_ready(rt2x00dev)))
1276 rt73usb_bbp_write(rt2x00dev, 3, 0x80);
1277 rt73usb_bbp_write(rt2x00dev, 15, 0x30);
1278 rt73usb_bbp_write(rt2x00dev, 21, 0xc8);
1279 rt73usb_bbp_write(rt2x00dev, 22, 0x38);
1280 rt73usb_bbp_write(rt2x00dev, 23, 0x06);
1281 rt73usb_bbp_write(rt2x00dev, 24, 0xfe);
1282 rt73usb_bbp_write(rt2x00dev, 25, 0x0a);
1283 rt73usb_bbp_write(rt2x00dev, 26, 0x0d);
1284 rt73usb_bbp_write(rt2x00dev, 32, 0x0b);
1285 rt73usb_bbp_write(rt2x00dev, 34, 0x12);
1286 rt73usb_bbp_write(rt2x00dev, 37, 0x07);
1287 rt73usb_bbp_write(rt2x00dev, 39, 0xf8);
1288 rt73usb_bbp_write(rt2x00dev, 41, 0x60);
1289 rt73usb_bbp_write(rt2x00dev, 53, 0x10);
1290 rt73usb_bbp_write(rt2x00dev, 54, 0x18);
1291 rt73usb_bbp_write(rt2x00dev, 60, 0x10);
1292 rt73usb_bbp_write(rt2x00dev, 61, 0x04);
1293 rt73usb_bbp_write(rt2x00dev, 62, 0x04);
1294 rt73usb_bbp_write(rt2x00dev, 75, 0xfe);
1295 rt73usb_bbp_write(rt2x00dev, 86, 0xfe);
1296 rt73usb_bbp_write(rt2x00dev, 88, 0xfe);
1297 rt73usb_bbp_write(rt2x00dev, 90, 0x0f);
1298 rt73usb_bbp_write(rt2x00dev, 99, 0x00);
1299 rt73usb_bbp_write(rt2x00dev, 102, 0x16);
1300 rt73usb_bbp_write(rt2x00dev, 107, 0x04);
1303 rt2x00_eeprom_read(rt2x00dev, EEPROM_BBP_START + i, &eeprom);
1308 rt73usb_bbp_write(rt2x00dev, reg_id, value);
1318 static void rt73usb_toggle_rx(struct rt2x00_dev *rt2x00dev,
1323 rt2x00usb_register_read(rt2x00dev, TXRX_CSR0, &reg);
1327 rt2x00usb_register_write(rt2x00dev, TXRX_CSR0, reg);
1330 static int rt73usb_enable_radio(struct rt2x00_dev *rt2x00dev)
1335 if (unlikely(rt73usb_init_registers(rt2x00dev) ||
1336 rt73usb_init_bbp(rt2x00dev)))
1342 static void rt73usb_disable_radio(struct rt2x00_dev *rt2x00dev)
1344 rt2x00usb_register_write(rt2x00dev, MAC_CSR10, 0x00001818);
1349 rt2x00usb_register_write(rt2x00dev, TXRX_CSR9, 0);
1351 rt2x00usb_disable_radio(rt2x00dev);
1354 static int rt73usb_set_state(struct rt2x00_dev *rt2x00dev, enum dev_state state)
1362 rt2x00usb_register_read(rt2x00dev, MAC_CSR12, &reg);
1365 rt2x00usb_register_write(rt2x00dev, MAC_CSR12, reg);
1373 rt2x00usb_register_read(rt2x00dev, MAC_CSR12, &reg2);
1377 rt2x00usb_register_write(rt2x00dev, MAC_CSR12, reg);
1384 static int rt73usb_set_device_state(struct rt2x00_dev *rt2x00dev,
1391 retval = rt73usb_enable_radio(rt2x00dev);
1394 rt73usb_disable_radio(rt2x00dev);
1400 rt73usb_toggle_rx(rt2x00dev, state);
1412 retval = rt73usb_set_state(rt2x00dev, state);
1420 ERROR(rt2x00dev, "Device failed to enter state %d (%d).\n",
1429 static void rt73usb_write_tx_desc(struct rt2x00_dev *rt2x00dev,
1490 TXPOWER_TO_DEV(rt2x00dev->tx_power));
1508 struct rt2x00_dev *rt2x00dev = entry->queue->rt2x00dev;
1516 rt2x00usb_register_read(rt2x00dev, TXRX_CSR9, &reg);
1518 rt2x00usb_register_write(rt2x00dev, TXRX_CSR9, reg);
1529 rt73usb_write_tx_desc(rt2x00dev, entry->skb, txdesc);
1534 rt2x00debug_dump_frame(rt2x00dev, DUMP_FRAME_BEACON, entry->skb);
1540 rt2x00usb_register_multiwrite(rt2x00dev, beacon_base,
1549 rt2x00usb_register_write(rt2x00dev, TXRX_CSR10, 0x00001008);
1554 rt2x00usb_register_write(rt2x00dev, TXRX_CSR9, reg);
1580 static int rt73usb_agc_to_rssi(struct rt2x00_dev *rt2x00dev, int rxd_w1)
1582 u8 offset = rt2x00dev->lna_gain;
1600 if (rt2x00dev->rx_status.band == IEEE80211_BAND_5GHZ) {
1601 if (test_bit(CONFIG_EXTERNAL_LNA_A, &rt2x00dev->flags)) {
1618 struct rt2x00_dev *rt2x00dev = entry->queue->rt2x00dev;
1673 rxdesc->rssi = rt73usb_agc_to_rssi(rt2x00dev, word1);
1693 static int rt73usb_validate_eeprom(struct rt2x00_dev *rt2x00dev)
1699 rt2x00usb_eeprom_read(rt2x00dev, rt2x00dev->eeprom, EEPROM_SIZE);
1704 mac = rt2x00_eeprom_addr(rt2x00dev, EEPROM_MAC_ADDR_0);
1707 EEPROM(rt2x00dev, "MAC: %pM\n", mac);
1710 rt2x00_eeprom_read(rt2x00dev, EEPROM_ANTENNA, &word);
1721 rt2x00_eeprom_write(rt2x00dev, EEPROM_ANTENNA, word);
1722 EEPROM(rt2x00dev, "Antenna: 0x%04x\n", word);
1725 rt2x00_eeprom_read(rt2x00dev, EEPROM_NIC, &word);
1728 rt2x00_eeprom_write(rt2x00dev, EEPROM_NIC, word);
1729 EEPROM(rt2x00dev, "NIC: 0x%04x\n", word);
1732 rt2x00_eeprom_read(rt2x00dev, EEPROM_LED, &word);
1744 rt2x00_eeprom_write(rt2x00dev, EEPROM_LED, word);
1745 EEPROM(rt2x00dev, "Led: 0x%04x\n", word);
1748 rt2x00_eeprom_read(rt2x00dev, EEPROM_FREQ, &word);
1752 rt2x00_eeprom_write(rt2x00dev, EEPROM_FREQ, word);
1753 EEPROM(rt2x00dev, "Freq: 0x%04x\n", word);
1756 rt2x00_eeprom_read(rt2x00dev, EEPROM_RSSI_OFFSET_BG, &word);
1760 rt2x00_eeprom_write(rt2x00dev, EEPROM_RSSI_OFFSET_BG, word);
1761 EEPROM(rt2x00dev, "RSSI OFFSET BG: 0x%04x\n", word);
1769 rt2x00_eeprom_write(rt2x00dev, EEPROM_RSSI_OFFSET_BG, word);
1772 rt2x00_eeprom_read(rt2x00dev, EEPROM_RSSI_OFFSET_A, &word);
1776 rt2x00_eeprom_write(rt2x00dev, EEPROM_RSSI_OFFSET_A, word);
1777 EEPROM(rt2x00dev, "RSSI OFFSET A: 0x%04x\n", word);
1785 rt2x00_eeprom_write(rt2x00dev, EEPROM_RSSI_OFFSET_A, word);
1791 static int rt73usb_init_eeprom(struct rt2x00_dev *rt2x00dev)
1800 rt2x00_eeprom_read(rt2x00dev, EEPROM_ANTENNA, &eeprom);
1806 rt2x00usb_register_read(rt2x00dev, MAC_CSR0, &reg);
1807 rt2x00_set_chip(rt2x00dev, rt2x00_get_field32(reg, MAC_CSR0_CHIPSET),
1810 if (!rt2x00_rt(rt2x00dev, RT2573) || (rt2x00_rev(rt2x00dev) == 0)) {
1811 ERROR(rt2x00dev, "Invalid RT chipset detected.\n");
1815 if (!rt2x00_rf(rt2x00dev, RF5226) &&
1816 !rt2x00_rf(rt2x00dev, RF2528) &&
1817 !rt2x00_rf(rt2x00dev, RF5225) &&
1818 !rt2x00_rf(rt2x00dev, RF2527)) {
1819 ERROR(rt2x00dev, "Invalid RF chipset detected.\n");
1826 rt2x00dev->default_ant.tx =
1828 rt2x00dev->default_ant.rx =
1835 __set_bit(CONFIG_FRAME_TYPE, &rt2x00dev->flags);
1841 __set_bit(CONFIG_SUPPORT_HW_BUTTON, &rt2x00dev->flags);
1846 rt2x00_eeprom_read(rt2x00dev, EEPROM_FREQ, &eeprom);
1847 rt2x00dev->freq_offset = rt2x00_get_field16(eeprom, EEPROM_FREQ_OFFSET);
1852 rt2x00_eeprom_read(rt2x00dev, EEPROM_NIC, &eeprom);
1855 __set_bit(CONFIG_EXTERNAL_LNA_A, &rt2x00dev->flags);
1856 __set_bit(CONFIG_EXTERNAL_LNA_BG, &rt2x00dev->flags);
1863 rt2x00_eeprom_read(rt2x00dev, EEPROM_LED, &eeprom);
1865 rt73usb_init_led(rt2x00dev, &rt2x00dev->led_radio, LED_TYPE_RADIO);
1866 rt73usb_init_led(rt2x00dev, &rt2x00dev->led_assoc, LED_TYPE_ASSOC);
1868 rt73usb_init_led(rt2x00dev, &rt2x00dev->led_qual,
1871 rt2x00_set_field16(&rt2x00dev->led_mcu_reg, MCU_LEDCS_LED_MODE, value);
1872 rt2x00_set_field16(&rt2x00dev->led_mcu_reg, MCU_LEDCS_POLARITY_GPIO_0,
1875 rt2x00_set_field16(&rt2x00dev->led_mcu_reg, MCU_LEDCS_POLARITY_GPIO_1,
1878 rt2x00_set_field16(&rt2x00dev->led_mcu_reg, MCU_LEDCS_POLARITY_GPIO_2,
1881 rt2x00_set_field16(&rt2x00dev->led_mcu_reg, MCU_LEDCS_POLARITY_GPIO_3,
1884 rt2x00_set_field16(&rt2x00dev->led_mcu_reg, MCU_LEDCS_POLARITY_GPIO_4,
1887 rt2x00_set_field16(&rt2x00dev->led_mcu_reg, MCU_LEDCS_POLARITY_ACT,
1889 rt2x00_set_field16(&rt2x00dev->led_mcu_reg, MCU_LEDCS_POLARITY_READY_BG,
1892 rt2x00_set_field16(&rt2x00dev->led_mcu_reg, MCU_LEDCS_POLARITY_READY_A,
2036 static int rt73usb_probe_hw_mode(struct rt2x00_dev *rt2x00dev)
2038 struct hw_mode_spec *spec = &rt2x00dev->spec;
2046 rt2x00dev->hw->flags =
2052 SET_IEEE80211_DEV(rt2x00dev->hw, rt2x00dev->dev);
2053 SET_IEEE80211_PERM_ADDR(rt2x00dev->hw,
2054 rt2x00_eeprom_addr(rt2x00dev,
2063 if (rt2x00_rf(rt2x00dev, RF2528)) {
2066 } else if (rt2x00_rf(rt2x00dev, RF5226)) {
2070 } else if (rt2x00_rf(rt2x00dev, RF2527)) {
2073 } else if (rt2x00_rf(rt2x00dev, RF5225)) {
2088 tx_power = rt2x00_eeprom_addr(rt2x00dev, EEPROM_TXPOWER_G_START);
2095 tx_power = rt2x00_eeprom_addr(rt2x00dev, EEPROM_TXPOWER_A_START);
2105 static int rt73usb_probe_hw(struct rt2x00_dev *rt2x00dev)
2112 retval = rt73usb_validate_eeprom(rt2x00dev);
2116 retval = rt73usb_init_eeprom(rt2x00dev);
2123 retval = rt73usb_probe_hw_mode(rt2x00dev);
2131 __set_bit(DRIVER_SUPPORT_CONTROL_FILTERS, &rt2x00dev->flags);
2136 __set_bit(DRIVER_REQUIRE_FIRMWARE, &rt2x00dev->flags);
2138 __set_bit(CONFIG_SUPPORT_HW_CRYPTO, &rt2x00dev->flags);
2139 __set_bit(DRIVER_SUPPORT_LINK_TUNING, &rt2x00dev->flags);
2140 __set_bit(DRIVER_SUPPORT_WATCHDOG, &rt2x00dev->flags);
2145 rt2x00dev->rssi_offset = DEFAULT_RSSI_OFFSET;
2156 struct rt2x00_dev *rt2x00dev = hw->priv;
2180 queue = rt2x00queue_get_queue(rt2x00dev, queue_idx);
2187 rt2x00usb_register_read(rt2x00dev, offset, &reg);
2189 rt2x00usb_register_write(rt2x00dev, offset, reg);
2195 rt2x00usb_register_read(rt2x00dev, AIFSN_CSR, &reg);
2197 rt2x00usb_register_write(rt2x00dev, AIFSN_CSR, reg);
2199 rt2x00usb_register_read(rt2x00dev, CWMIN_CSR, &reg);
2201 rt2x00usb_register_write(rt2x00dev, CWMIN_CSR, reg);
2203 rt2x00usb_register_read(rt2x00dev, CWMAX_CSR, &reg);
2205 rt2x00usb_register_write(rt2x00dev, CWMAX_CSR, reg);
2212 struct rt2x00_dev *rt2x00dev = hw->priv;
2216 rt2x00usb_register_read(rt2x00dev, TXRX_CSR13, &reg);
2218 rt2x00usb_register_read(rt2x00dev, TXRX_CSR12, &reg);