Lines Matching refs:rt2x00dev

68 static inline bool rt2800_is_305x_soc(struct rt2x00_dev *rt2x00dev)  in rt2800_is_305x_soc()  argument
71 if (!rt2x00_is_soc(rt2x00dev) || in rt2800_is_305x_soc()
72 !rt2x00_rt(rt2x00dev, RT2872)) in rt2800_is_305x_soc()
76 if (rt2x00_rf(rt2x00dev, RF3020) || in rt2800_is_305x_soc()
77 rt2x00_rf(rt2x00dev, RF3021) || in rt2800_is_305x_soc()
78 rt2x00_rf(rt2x00dev, RF3022)) in rt2800_is_305x_soc()
81 rt2x00_warn(rt2x00dev, "Unknown RF chipset on rt305x\n"); in rt2800_is_305x_soc()
85 static void rt2800_bbp_write(struct rt2x00_dev *rt2x00dev, in rt2800_bbp_write() argument
90 mutex_lock(&rt2x00dev->csr_mutex); in rt2800_bbp_write()
96 if (WAIT_FOR_BBP(rt2x00dev, &reg)) { in rt2800_bbp_write()
104 rt2800_register_write_lock(rt2x00dev, BBP_CSR_CFG, reg); in rt2800_bbp_write()
107 mutex_unlock(&rt2x00dev->csr_mutex); in rt2800_bbp_write()
110 static void rt2800_bbp_read(struct rt2x00_dev *rt2x00dev, in rt2800_bbp_read() argument
115 mutex_lock(&rt2x00dev->csr_mutex); in rt2800_bbp_read()
125 if (WAIT_FOR_BBP(rt2x00dev, &reg)) { in rt2800_bbp_read()
132 rt2800_register_write_lock(rt2x00dev, BBP_CSR_CFG, reg); in rt2800_bbp_read()
134 WAIT_FOR_BBP(rt2x00dev, &reg); in rt2800_bbp_read()
139 mutex_unlock(&rt2x00dev->csr_mutex); in rt2800_bbp_read()
142 static void rt2800_rfcsr_write(struct rt2x00_dev *rt2x00dev, in rt2800_rfcsr_write() argument
147 mutex_lock(&rt2x00dev->csr_mutex); in rt2800_rfcsr_write()
153 if (WAIT_FOR_RFCSR(rt2x00dev, &reg)) { in rt2800_rfcsr_write()
160 rt2800_register_write_lock(rt2x00dev, RF_CSR_CFG, reg); in rt2800_rfcsr_write()
163 mutex_unlock(&rt2x00dev->csr_mutex); in rt2800_rfcsr_write()
166 static void rt2800_rfcsr_read(struct rt2x00_dev *rt2x00dev, in rt2800_rfcsr_read() argument
171 mutex_lock(&rt2x00dev->csr_mutex); in rt2800_rfcsr_read()
181 if (WAIT_FOR_RFCSR(rt2x00dev, &reg)) { in rt2800_rfcsr_read()
187 rt2800_register_write_lock(rt2x00dev, RF_CSR_CFG, reg); in rt2800_rfcsr_read()
189 WAIT_FOR_RFCSR(rt2x00dev, &reg); in rt2800_rfcsr_read()
194 mutex_unlock(&rt2x00dev->csr_mutex); in rt2800_rfcsr_read()
197 static void rt2800_rf_write(struct rt2x00_dev *rt2x00dev, in rt2800_rf_write() argument
202 mutex_lock(&rt2x00dev->csr_mutex); in rt2800_rf_write()
208 if (WAIT_FOR_RF(rt2x00dev, &reg)) { in rt2800_rf_write()
215 rt2800_register_write_lock(rt2x00dev, RF_CSR_CFG0, reg); in rt2800_rf_write()
216 rt2x00_rf_write(rt2x00dev, word, value); in rt2800_rf_write()
219 mutex_unlock(&rt2x00dev->csr_mutex); in rt2800_rf_write()
301 static unsigned int rt2800_eeprom_word_index(struct rt2x00_dev *rt2x00dev, in rt2800_eeprom_word_index() argument
309 wiphy_name(rt2x00dev->hw->wiphy), word)) in rt2800_eeprom_word_index()
312 if (rt2x00_rt(rt2x00dev, RT3593)) in rt2800_eeprom_word_index()
327 wiphy_name(rt2x00dev->hw->wiphy), word); in rt2800_eeprom_word_index()
332 static void *rt2800_eeprom_addr(struct rt2x00_dev *rt2x00dev, in rt2800_eeprom_addr() argument
337 index = rt2800_eeprom_word_index(rt2x00dev, word); in rt2800_eeprom_addr()
338 return rt2x00_eeprom_addr(rt2x00dev, index); in rt2800_eeprom_addr()
341 static void rt2800_eeprom_read(struct rt2x00_dev *rt2x00dev, in rt2800_eeprom_read() argument
346 index = rt2800_eeprom_word_index(rt2x00dev, word); in rt2800_eeprom_read()
347 rt2x00_eeprom_read(rt2x00dev, index, data); in rt2800_eeprom_read()
350 static void rt2800_eeprom_write(struct rt2x00_dev *rt2x00dev, in rt2800_eeprom_write() argument
355 index = rt2800_eeprom_word_index(rt2x00dev, word); in rt2800_eeprom_write()
356 rt2x00_eeprom_write(rt2x00dev, index, data); in rt2800_eeprom_write()
359 static void rt2800_eeprom_read_from_array(struct rt2x00_dev *rt2x00dev, in rt2800_eeprom_read_from_array() argument
366 index = rt2800_eeprom_word_index(rt2x00dev, array); in rt2800_eeprom_read_from_array()
367 rt2x00_eeprom_read(rt2x00dev, index + offset, data); in rt2800_eeprom_read_from_array()
370 static int rt2800_enable_wlan_rt3290(struct rt2x00_dev *rt2x00dev) in rt2800_enable_wlan_rt3290() argument
375 rt2800_register_read(rt2x00dev, WLAN_FUN_CTRL, &reg); in rt2800_enable_wlan_rt3290()
383 rt2800_register_write(rt2x00dev, WLAN_FUN_CTRL, reg); in rt2800_enable_wlan_rt3290()
393 rt2800_register_read(rt2x00dev, CMB_CTRL, &reg); in rt2800_enable_wlan_rt3290()
405 rt2800_register_write(rt2x00dev, 0x58, 0x018); in rt2800_enable_wlan_rt3290()
407 rt2800_register_write(rt2x00dev, 0x58, 0x418); in rt2800_enable_wlan_rt3290()
409 rt2800_register_write(rt2x00dev, 0x58, 0x618); in rt2800_enable_wlan_rt3290()
416 rt2800_register_read(rt2x00dev, WLAN_FUN_CTRL, &reg); in rt2800_enable_wlan_rt3290()
420 rt2800_register_write(rt2x00dev, WLAN_FUN_CTRL, reg); in rt2800_enable_wlan_rt3290()
423 rt2800_register_write(rt2x00dev, WLAN_FUN_CTRL, reg); in rt2800_enable_wlan_rt3290()
425 rt2800_register_write(rt2x00dev, INT_SOURCE_CSR, 0x7fffffff); in rt2800_enable_wlan_rt3290()
431 void rt2800_mcu_request(struct rt2x00_dev *rt2x00dev, in rt2800_mcu_request() argument
440 if (rt2x00_is_soc(rt2x00dev)) in rt2800_mcu_request()
443 mutex_lock(&rt2x00dev->csr_mutex); in rt2800_mcu_request()
449 if (WAIT_FOR_MCU(rt2x00dev, &reg)) { in rt2800_mcu_request()
454 rt2800_register_write_lock(rt2x00dev, H2M_MAILBOX_CSR, reg); in rt2800_mcu_request()
458 rt2800_register_write_lock(rt2x00dev, HOST_CMD_CSR, reg); in rt2800_mcu_request()
461 mutex_unlock(&rt2x00dev->csr_mutex); in rt2800_mcu_request()
465 int rt2800_wait_csr_ready(struct rt2x00_dev *rt2x00dev) in rt2800_wait_csr_ready() argument
471 rt2800_register_read(rt2x00dev, MAC_CSR0, &reg); in rt2800_wait_csr_ready()
477 rt2x00_err(rt2x00dev, "Unstable hardware\n"); in rt2800_wait_csr_ready()
482 int rt2800_wait_wpdma_ready(struct rt2x00_dev *rt2x00dev) in rt2800_wait_wpdma_ready() argument
492 rt2800_register_read(rt2x00dev, WPDMA_GLO_CFG, &reg); in rt2800_wait_wpdma_ready()
500 rt2x00_err(rt2x00dev, "WPDMA TX/RX busy [0x%08x]\n", reg); in rt2800_wait_wpdma_ready()
505 void rt2800_disable_wpdma(struct rt2x00_dev *rt2x00dev) in rt2800_disable_wpdma() argument
509 rt2800_register_read(rt2x00dev, WPDMA_GLO_CFG, &reg); in rt2800_disable_wpdma()
515 rt2800_register_write(rt2x00dev, WPDMA_GLO_CFG, reg); in rt2800_disable_wpdma()
519 void rt2800_get_txwi_rxwi_size(struct rt2x00_dev *rt2x00dev, in rt2800_get_txwi_rxwi_size() argument
523 switch (rt2x00dev->chip.rt) { in rt2800_get_txwi_rxwi_size()
574 int rt2800_check_firmware(struct rt2x00_dev *rt2x00dev, in rt2800_check_firmware() argument
590 if (rt2x00_is_usb(rt2x00dev) || rt2x00_rt(rt2x00dev, RT3290)) in rt2800_check_firmware()
606 if (rt2x00_is_usb(rt2x00dev) && in rt2800_check_firmware()
607 !rt2x00_rt(rt2x00dev, RT2860) && in rt2800_check_firmware()
608 !rt2x00_rt(rt2x00dev, RT2872) && in rt2800_check_firmware()
609 !rt2x00_rt(rt2x00dev, RT3070) && in rt2800_check_firmware()
628 int rt2800_load_firmware(struct rt2x00_dev *rt2x00dev, in rt2800_load_firmware() argument
635 if (rt2x00_rt(rt2x00dev, RT3290)) { in rt2800_load_firmware()
636 retval = rt2800_enable_wlan_rt3290(rt2x00dev); in rt2800_load_firmware()
645 rt2800_register_write(rt2x00dev, AUTOWAKEUP_CFG, 0x00000000); in rt2800_load_firmware()
650 if (rt2800_wait_csr_ready(rt2x00dev)) in rt2800_load_firmware()
653 if (rt2x00_is_pci(rt2x00dev)) { in rt2800_load_firmware()
654 if (rt2x00_rt(rt2x00dev, RT3290) || in rt2800_load_firmware()
655 rt2x00_rt(rt2x00dev, RT3572) || in rt2800_load_firmware()
656 rt2x00_rt(rt2x00dev, RT5390) || in rt2800_load_firmware()
657 rt2x00_rt(rt2x00dev, RT5392)) { in rt2800_load_firmware()
658 rt2800_register_read(rt2x00dev, AUX_CTRL, &reg); in rt2800_load_firmware()
661 rt2800_register_write(rt2x00dev, AUX_CTRL, reg); in rt2800_load_firmware()
663 rt2800_register_write(rt2x00dev, PWR_PIN_CFG, 0x00000002); in rt2800_load_firmware()
666 rt2800_disable_wpdma(rt2x00dev); in rt2800_load_firmware()
671 rt2800_drv_write_firmware(rt2x00dev, data, len); in rt2800_load_firmware()
677 rt2800_register_read(rt2x00dev, PBF_SYS_CTRL, &reg); in rt2800_load_firmware()
684 rt2x00_err(rt2x00dev, "PBF system register not ready\n"); in rt2800_load_firmware()
692 rt2800_disable_wpdma(rt2x00dev); in rt2800_load_firmware()
697 rt2800_register_write(rt2x00dev, H2M_BBP_AGENT, 0); in rt2800_load_firmware()
698 rt2800_register_write(rt2x00dev, H2M_MAILBOX_CSR, 0); in rt2800_load_firmware()
699 if (rt2x00_is_usb(rt2x00dev)) { in rt2800_load_firmware()
700 rt2800_register_write(rt2x00dev, H2M_INT_SRC, 0); in rt2800_load_firmware()
701 rt2800_mcu_request(rt2x00dev, MCU_BOOT_SIGNAL, 0, 0, 0); in rt2800_load_firmware()
770 static int rt2800_agc_to_rssi(struct rt2x00_dev *rt2x00dev, u32 rxwi_w2) in rt2800_agc_to_rssi() argument
780 if (rt2x00dev->curr_band == IEEE80211_BAND_2GHZ) { in rt2800_agc_to_rssi()
781 rt2800_eeprom_read(rt2x00dev, EEPROM_RSSI_BG, &eeprom); in rt2800_agc_to_rssi()
784 rt2800_eeprom_read(rt2x00dev, EEPROM_RSSI_BG2, &eeprom); in rt2800_agc_to_rssi()
787 rt2800_eeprom_read(rt2x00dev, EEPROM_RSSI_A, &eeprom); in rt2800_agc_to_rssi()
790 rt2800_eeprom_read(rt2x00dev, EEPROM_RSSI_A2, &eeprom); in rt2800_agc_to_rssi()
799 rssi0 = (rssi0) ? (-12 - offset0 - rt2x00dev->lna_gain - rssi0) : -128; in rt2800_agc_to_rssi()
800 rssi1 = (rssi1) ? (-12 - offset1 - rt2x00dev->lna_gain - rssi1) : -128; in rt2800_agc_to_rssi()
801 rssi2 = (rssi2) ? (-12 - offset2 - rt2x00dev->lna_gain - rssi2) : -128; in rt2800_agc_to_rssi()
850 rxdesc->rssi = rt2800_agc_to_rssi(entry->queue->rt2x00dev, word); in rt2800_process_rxwi()
860 struct rt2x00_dev *rt2x00dev = entry->queue->rt2x00dev; in rt2800_txdone_entry() local
924 txdesc.retry = rt2x00dev->long_retry; in rt2800_txdone_entry()
938 static unsigned int rt2800_hw_beacon_base(struct rt2x00_dev *rt2x00dev, in rt2800_hw_beacon_base() argument
944 static inline u8 rt2800_get_beacon_offset(struct rt2x00_dev *rt2x00dev, in rt2800_get_beacon_offset() argument
947 return BEACON_BASE_TO_OFFSET(rt2800_hw_beacon_base(rt2x00dev, index)); in rt2800_get_beacon_offset()
950 static void rt2800_update_beacons_setup(struct rt2x00_dev *rt2x00dev) in rt2800_update_beacons_setup() argument
952 struct data_queue *queue = rt2x00dev->bcn; in rt2800_update_beacons_setup()
965 off = rt2800_get_beacon_offset(rt2x00dev, entry->entry_idx); in rt2800_update_beacons_setup()
970 WARN_ON_ONCE(bcn_num != rt2x00dev->intf_beaconing); in rt2800_update_beacons_setup()
972 rt2800_register_write(rt2x00dev, BCN_OFFSET0, (u32) reg); in rt2800_update_beacons_setup()
973 rt2800_register_write(rt2x00dev, BCN_OFFSET1, (u32) (reg >> 32)); in rt2800_update_beacons_setup()
978 rt2800_register_read(rt2x00dev, MAC_BSSID_DW1, &bssid_dw1); in rt2800_update_beacons_setup()
981 rt2800_register_write(rt2x00dev, MAC_BSSID_DW1, bssid_dw1); in rt2800_update_beacons_setup()
986 struct rt2x00_dev *rt2x00dev = entry->queue->rt2x00dev; in rt2800_write_beacon() local
997 rt2800_register_read(rt2x00dev, BCN_TIME_CFG, &reg); in rt2800_write_beacon()
1000 rt2800_register_write(rt2x00dev, BCN_TIME_CFG, reg); in rt2800_write_beacon()
1022 rt2x00debug_dump_frame(rt2x00dev, DUMP_FRAME_BEACON, entry->skb); in rt2800_write_beacon()
1029 rt2x00_err(rt2x00dev, "Failure padding beacon, aborting\n"); in rt2800_write_beacon()
1032 rt2800_register_write(rt2x00dev, BCN_TIME_CFG, orig_reg); in rt2800_write_beacon()
1036 beacon_base = rt2800_hw_beacon_base(rt2x00dev, entry->entry_idx); in rt2800_write_beacon()
1038 rt2800_register_multiwrite(rt2x00dev, beacon_base, entry->skb->data, in rt2800_write_beacon()
1045 rt2800_update_beacons_setup(rt2x00dev); in rt2800_write_beacon()
1050 rt2800_register_write(rt2x00dev, BCN_TIME_CFG, orig_reg); in rt2800_write_beacon()
1060 static inline void rt2800_clear_beacon_register(struct rt2x00_dev *rt2x00dev, in rt2800_clear_beacon_register() argument
1064 const int txwi_desc_size = rt2x00dev->bcn->winfo_size; in rt2800_clear_beacon_register()
1067 beacon_base = rt2800_hw_beacon_base(rt2x00dev, index); in rt2800_clear_beacon_register()
1075 rt2800_register_write(rt2x00dev, beacon_base + i, 0); in rt2800_clear_beacon_register()
1080 struct rt2x00_dev *rt2x00dev = entry->queue->rt2x00dev; in rt2800_clear_beacon() local
1087 rt2800_register_read(rt2x00dev, BCN_TIME_CFG, &orig_reg); in rt2800_clear_beacon()
1090 rt2800_register_write(rt2x00dev, BCN_TIME_CFG, reg); in rt2800_clear_beacon()
1095 rt2800_clear_beacon_register(rt2x00dev, entry->entry_idx); in rt2800_clear_beacon()
1101 rt2800_update_beacons_setup(rt2x00dev); in rt2800_clear_beacon()
1105 rt2800_register_write(rt2x00dev, BCN_TIME_CFG, orig_reg); in rt2800_clear_beacon()
1155 int rt2800_rfkill_poll(struct rt2x00_dev *rt2x00dev) in rt2800_rfkill_poll() argument
1159 if (rt2x00_rt(rt2x00dev, RT3290)) { in rt2800_rfkill_poll()
1160 rt2800_register_read(rt2x00dev, WLAN_FUN_CTRL, &reg); in rt2800_rfkill_poll()
1163 rt2800_register_read(rt2x00dev, GPIO_CTRL, &reg); in rt2800_rfkill_poll()
1177 (enabled && led->rt2x00dev->curr_band == IEEE80211_BAND_2GHZ); in rt2800_brightness_set()
1179 rt2x00_get_field16(led->rt2x00dev->led_mcu_reg, in rt2800_brightness_set()
1182 rt2x00_get_field16(led->rt2x00dev->led_mcu_reg, in rt2800_brightness_set()
1187 if (rt2x00_is_soc(led->rt2x00dev)) { in rt2800_brightness_set()
1188 rt2800_register_read(led->rt2x00dev, LED_CFG, &reg); in rt2800_brightness_set()
1205 rt2800_register_write(led->rt2x00dev, LED_CFG, reg); in rt2800_brightness_set()
1209 rt2800_mcu_request(led->rt2x00dev, MCU_LED, 0xff, ledmode, in rt2800_brightness_set()
1212 rt2800_mcu_request(led->rt2x00dev, MCU_LED, 0xff, ledmode, in rt2800_brightness_set()
1223 rt2800_mcu_request(led->rt2x00dev, MCU_LED_STRENGTH, 0xff, in rt2800_brightness_set()
1230 static void rt2800_init_led(struct rt2x00_dev *rt2x00dev, in rt2800_init_led() argument
1233 led->rt2x00dev = rt2x00dev; in rt2800_init_led()
1243 static void rt2800_config_wcid(struct rt2x00_dev *rt2x00dev, in rt2800_config_wcid() argument
1256 rt2800_register_multiwrite(rt2x00dev, offset, in rt2800_config_wcid()
1260 static void rt2800_delete_wcid_attr(struct rt2x00_dev *rt2x00dev, int wcid) in rt2800_delete_wcid_attr() argument
1264 rt2800_register_write(rt2x00dev, offset, 0); in rt2800_delete_wcid_attr()
1267 static void rt2800_config_wcid_attr_bssidx(struct rt2x00_dev *rt2x00dev, in rt2800_config_wcid_attr_bssidx() argument
1277 rt2800_register_read(rt2x00dev, offset, &reg); in rt2800_config_wcid_attr_bssidx()
1281 rt2800_register_write(rt2x00dev, offset, reg); in rt2800_config_wcid_attr_bssidx()
1284 static void rt2800_config_wcid_attr_cipher(struct rt2x00_dev *rt2x00dev, in rt2800_config_wcid_attr_cipher() argument
1295 rt2800_register_read(rt2x00dev, offset, &reg); in rt2800_config_wcid_attr_cipher()
1308 rt2800_register_write(rt2x00dev, offset, reg); in rt2800_config_wcid_attr_cipher()
1311 rt2800_register_read(rt2x00dev, offset, &reg); in rt2800_config_wcid_attr_cipher()
1316 rt2800_register_write(rt2x00dev, offset, reg); in rt2800_config_wcid_attr_cipher()
1327 rt2800_register_multiwrite(rt2x00dev, offset, in rt2800_config_wcid_attr_cipher()
1331 int rt2800_config_shared_key(struct rt2x00_dev *rt2x00dev, in rt2800_config_shared_key() argument
1351 rt2800_register_multiwrite(rt2x00dev, offset, in rt2800_config_shared_key()
1367 rt2800_register_read(rt2x00dev, offset, &reg); in rt2800_config_shared_key()
1370 rt2800_register_write(rt2x00dev, offset, reg); in rt2800_config_shared_key()
1375 rt2800_config_wcid(rt2x00dev, crypto->address, key->hw_key_idx); in rt2800_config_shared_key()
1376 rt2800_config_wcid_attr_bssidx(rt2x00dev, key->hw_key_idx, in rt2800_config_shared_key()
1378 rt2800_config_wcid_attr_cipher(rt2x00dev, crypto, key); in rt2800_config_shared_key()
1384 static inline int rt2800_find_wcid(struct rt2x00_dev *rt2x00dev) in rt2800_find_wcid() argument
1403 rt2800_register_multiread(rt2x00dev, offset, &wcid_entry, in rt2800_find_wcid()
1416 int rt2800_config_pairwise_key(struct rt2x00_dev *rt2x00dev, in rt2800_config_pairwise_key() argument
1440 rt2800_register_multiwrite(rt2x00dev, offset, in rt2800_config_pairwise_key()
1447 rt2800_config_wcid_attr_cipher(rt2x00dev, crypto, key); in rt2800_config_pairwise_key()
1453 int rt2800_sta_add(struct rt2x00_dev *rt2x00dev, struct ieee80211_vif *vif, in rt2800_sta_add() argument
1462 wcid = rt2800_find_wcid(rt2x00dev); in rt2800_sta_add()
1480 rt2800_delete_wcid_attr(rt2x00dev, wcid); in rt2800_sta_add()
1481 rt2800_config_wcid(rt2x00dev, sta->addr, wcid); in rt2800_sta_add()
1482 rt2800_config_wcid_attr_bssidx(rt2x00dev, wcid, in rt2800_sta_add()
1483 rt2x00lib_get_bssidx(rt2x00dev, vif)); in rt2800_sta_add()
1488 int rt2800_sta_remove(struct rt2x00_dev *rt2x00dev, int wcid) in rt2800_sta_remove() argument
1494 rt2800_config_wcid(rt2x00dev, NULL, wcid); in rt2800_sta_remove()
1500 void rt2800_config_filter(struct rt2x00_dev *rt2x00dev, in rt2800_config_filter() argument
1511 rt2800_register_read(rt2x00dev, RX_FILTER_CFG, &reg); in rt2800_config_filter()
1541 rt2800_register_write(rt2x00dev, RX_FILTER_CFG, reg); in rt2800_config_filter()
1545 void rt2800_config_intf(struct rt2x00_dev *rt2x00dev, struct rt2x00_intf *intf, in rt2800_config_intf() argument
1555 rt2800_register_read(rt2x00dev, BCN_TIME_CFG, &reg); in rt2800_config_intf()
1557 rt2800_register_write(rt2x00dev, BCN_TIME_CFG, reg); in rt2800_config_intf()
1563 rt2800_register_read(rt2x00dev, TBTT_SYNC_CFG, &reg); in rt2800_config_intf()
1568 rt2800_register_write(rt2x00dev, TBTT_SYNC_CFG, reg); in rt2800_config_intf()
1570 rt2800_register_read(rt2x00dev, TBTT_SYNC_CFG, &reg); in rt2800_config_intf()
1575 rt2800_register_write(rt2x00dev, TBTT_SYNC_CFG, reg); in rt2800_config_intf()
1596 rt2800_register_multiwrite(rt2x00dev, MAC_ADDR_DW0, in rt2800_config_intf()
1608 rt2800_register_multiwrite(rt2x00dev, MAC_BSSID_DW0, in rt2800_config_intf()
1614 static void rt2800_config_ht_opmode(struct rt2x00_dev *rt2x00dev, in rt2800_config_ht_opmode() argument
1689 rt2800_register_read(rt2x00dev, MM20_PROT_CFG, &reg); in rt2800_config_ht_opmode()
1692 rt2800_register_write(rt2x00dev, MM20_PROT_CFG, reg); in rt2800_config_ht_opmode()
1694 rt2800_register_read(rt2x00dev, MM40_PROT_CFG, &reg); in rt2800_config_ht_opmode()
1697 rt2800_register_write(rt2x00dev, MM40_PROT_CFG, reg); in rt2800_config_ht_opmode()
1699 rt2800_register_read(rt2x00dev, GF20_PROT_CFG, &reg); in rt2800_config_ht_opmode()
1702 rt2800_register_write(rt2x00dev, GF20_PROT_CFG, reg); in rt2800_config_ht_opmode()
1704 rt2800_register_read(rt2x00dev, GF40_PROT_CFG, &reg); in rt2800_config_ht_opmode()
1707 rt2800_register_write(rt2x00dev, GF40_PROT_CFG, reg); in rt2800_config_ht_opmode()
1710 void rt2800_config_erp(struct rt2x00_dev *rt2x00dev, struct rt2x00lib_erp *erp, in rt2800_config_erp() argument
1716 rt2800_register_read(rt2x00dev, AUTO_RSP_CFG, &reg); in rt2800_config_erp()
1721 rt2800_register_write(rt2x00dev, AUTO_RSP_CFG, reg); in rt2800_config_erp()
1725 rt2800_register_read(rt2x00dev, OFDM_PROT_CFG, &reg); in rt2800_config_erp()
1728 rt2800_register_write(rt2x00dev, OFDM_PROT_CFG, reg); in rt2800_config_erp()
1732 rt2800_register_write(rt2x00dev, LEGACY_BASIC_RATE, in rt2800_config_erp()
1734 rt2800_register_write(rt2x00dev, HT_BASIC_RATE, 0x00008003); in rt2800_config_erp()
1738 rt2800_register_read(rt2x00dev, BKOFF_SLOT_CFG, &reg); in rt2800_config_erp()
1741 rt2800_register_write(rt2x00dev, BKOFF_SLOT_CFG, reg); in rt2800_config_erp()
1743 rt2800_register_read(rt2x00dev, XIFS_TIME_CFG, &reg); in rt2800_config_erp()
1745 rt2800_register_write(rt2x00dev, XIFS_TIME_CFG, reg); in rt2800_config_erp()
1749 rt2800_register_read(rt2x00dev, BCN_TIME_CFG, &reg); in rt2800_config_erp()
1752 rt2800_register_write(rt2x00dev, BCN_TIME_CFG, reg); in rt2800_config_erp()
1756 rt2800_config_ht_opmode(rt2x00dev, erp); in rt2800_config_erp()
1760 static void rt2800_config_3572bt_ant(struct rt2x00_dev *rt2x00dev) in rt2800_config_3572bt_ant() argument
1766 rt2800_register_read(rt2x00dev, GPIO_SWITCH, &reg); in rt2800_config_3572bt_ant()
1767 if (rt2x00dev->curr_band == IEEE80211_BAND_5GHZ) { in rt2800_config_3572bt_ant()
1774 rt2800_register_write(rt2x00dev, GPIO_SWITCH, reg); in rt2800_config_3572bt_ant()
1776 rt2800_register_read(rt2x00dev, LED_CFG, &reg); in rt2800_config_3572bt_ant()
1781 rt2800_eeprom_read(rt2x00dev, EEPROM_FREQ, &eeprom); in rt2800_config_3572bt_ant()
1786 rt2800_register_write(rt2x00dev, LED_CFG, reg); in rt2800_config_3572bt_ant()
1788 rt2800_mcu_request(rt2x00dev, MCU_BAND_SELECT, 0xff, in rt2800_config_3572bt_ant()
1794 static void rt2800_set_ant_diversity(struct rt2x00_dev *rt2x00dev, in rt2800_set_ant_diversity() argument
1801 if (rt2x00_is_pci(rt2x00dev)) { in rt2800_set_ant_diversity()
1802 rt2800_register_read(rt2x00dev, E2PROM_CSR, &reg); in rt2800_set_ant_diversity()
1804 rt2800_register_write(rt2x00dev, E2PROM_CSR, reg); in rt2800_set_ant_diversity()
1805 } else if (rt2x00_is_usb(rt2x00dev)) in rt2800_set_ant_diversity()
1806 rt2800_mcu_request(rt2x00dev, MCU_ANT_SELECT, 0xff, in rt2800_set_ant_diversity()
1809 rt2800_register_read(rt2x00dev, GPIO_CTRL, &reg); in rt2800_set_ant_diversity()
1812 rt2800_register_write(rt2x00dev, GPIO_CTRL, reg); in rt2800_set_ant_diversity()
1815 void rt2800_config_ant(struct rt2x00_dev *rt2x00dev, struct antenna_setup *ant) in rt2800_config_ant() argument
1821 rt2800_bbp_read(rt2x00dev, 1, &r1); in rt2800_config_ant()
1822 rt2800_bbp_read(rt2x00dev, 3, &r3); in rt2800_config_ant()
1824 if (rt2x00_rt(rt2x00dev, RT3572) && in rt2800_config_ant()
1825 rt2x00_has_cap_bt_coexist(rt2x00dev)) in rt2800_config_ant()
1826 rt2800_config_3572bt_ant(rt2x00dev); in rt2800_config_ant()
1836 if (rt2x00_rt(rt2x00dev, RT3572) && in rt2800_config_ant()
1837 rt2x00_has_cap_bt_coexist(rt2x00dev)) in rt2800_config_ant()
1852 if (rt2x00_rt(rt2x00dev, RT3070) || in rt2800_config_ant()
1853 rt2x00_rt(rt2x00dev, RT3090) || in rt2800_config_ant()
1854 rt2x00_rt(rt2x00dev, RT3352) || in rt2800_config_ant()
1855 rt2x00_rt(rt2x00dev, RT3390)) { in rt2800_config_ant()
1856 rt2800_eeprom_read(rt2x00dev, in rt2800_config_ant()
1860 rt2800_set_ant_diversity(rt2x00dev, in rt2800_config_ant()
1861 rt2x00dev->default_ant.rx); in rt2800_config_ant()
1866 if (rt2x00_rt(rt2x00dev, RT3572) && in rt2800_config_ant()
1867 rt2x00_has_cap_bt_coexist(rt2x00dev)) { in rt2800_config_ant()
1870 rt2x00dev->curr_band == IEEE80211_BAND_5GHZ); in rt2800_config_ant()
1871 rt2800_set_ant_diversity(rt2x00dev, ANTENNA_B); in rt2800_config_ant()
1881 rt2800_bbp_write(rt2x00dev, 3, r3); in rt2800_config_ant()
1882 rt2800_bbp_write(rt2x00dev, 1, r1); in rt2800_config_ant()
1884 if (rt2x00_rt(rt2x00dev, RT3593)) { in rt2800_config_ant()
1886 rt2800_bbp_write(rt2x00dev, 86, 0x00); in rt2800_config_ant()
1888 rt2800_bbp_write(rt2x00dev, 86, 0x46); in rt2800_config_ant()
1893 static void rt2800_config_lna_gain(struct rt2x00_dev *rt2x00dev, in rt2800_config_lna_gain() argument
1900 rt2800_eeprom_read(rt2x00dev, EEPROM_LNA, &eeprom); in rt2800_config_lna_gain()
1903 rt2800_eeprom_read(rt2x00dev, EEPROM_LNA, &eeprom); in rt2800_config_lna_gain()
1906 if (rt2x00_rt(rt2x00dev, RT3593)) { in rt2800_config_lna_gain()
1907 rt2800_eeprom_read(rt2x00dev, EEPROM_EXT_LNA2, &eeprom); in rt2800_config_lna_gain()
1911 rt2800_eeprom_read(rt2x00dev, EEPROM_RSSI_BG2, &eeprom); in rt2800_config_lna_gain()
1916 if (rt2x00_rt(rt2x00dev, RT3593)) { in rt2800_config_lna_gain()
1917 rt2800_eeprom_read(rt2x00dev, EEPROM_EXT_LNA2, &eeprom); in rt2800_config_lna_gain()
1921 rt2800_eeprom_read(rt2x00dev, EEPROM_RSSI_A2, &eeprom); in rt2800_config_lna_gain()
1927 rt2x00dev->lna_gain = lna_gain; in rt2800_config_lna_gain()
1932 static void rt2800_adjust_freq_offset(struct rt2x00_dev *rt2x00dev) in rt2800_adjust_freq_offset() argument
1937 freq_offset = rt2x00_get_field8(rt2x00dev->freq_offset, RFCSR17_CODE); in rt2800_adjust_freq_offset()
1940 rt2800_rfcsr_read(rt2x00dev, 17, &rfcsr); in rt2800_adjust_freq_offset()
1947 if (rt2x00_is_usb(rt2x00dev)) { in rt2800_adjust_freq_offset()
1948 rt2800_mcu_request(rt2x00dev, MCU_FREQ_OFFSET, 0xff, in rt2800_adjust_freq_offset()
1961 rt2800_rfcsr_write(rt2x00dev, 17, rfcsr); in rt2800_adjust_freq_offset()
1967 static void rt2800_config_channel_rf2xxx(struct rt2x00_dev *rt2x00dev, in rt2800_config_channel_rf2xxx() argument
1972 rt2x00_set_field32(&rf->rf4, RF4_FREQ_OFFSET, rt2x00dev->freq_offset); in rt2800_config_channel_rf2xxx()
1974 if (rt2x00dev->default_ant.tx_chain_num == 1) in rt2800_config_channel_rf2xxx()
1977 if (rt2x00dev->default_ant.rx_chain_num == 1) { in rt2800_config_channel_rf2xxx()
1980 } else if (rt2x00dev->default_ant.rx_chain_num == 2) in rt2800_config_channel_rf2xxx()
2012 rt2800_rf_write(rt2x00dev, 1, rf->rf1); in rt2800_config_channel_rf2xxx()
2013 rt2800_rf_write(rt2x00dev, 2, rf->rf2); in rt2800_config_channel_rf2xxx()
2014 rt2800_rf_write(rt2x00dev, 3, rf->rf3 & ~0x00000004); in rt2800_config_channel_rf2xxx()
2015 rt2800_rf_write(rt2x00dev, 4, rf->rf4); in rt2800_config_channel_rf2xxx()
2019 rt2800_rf_write(rt2x00dev, 1, rf->rf1); in rt2800_config_channel_rf2xxx()
2020 rt2800_rf_write(rt2x00dev, 2, rf->rf2); in rt2800_config_channel_rf2xxx()
2021 rt2800_rf_write(rt2x00dev, 3, rf->rf3 | 0x00000004); in rt2800_config_channel_rf2xxx()
2022 rt2800_rf_write(rt2x00dev, 4, rf->rf4); in rt2800_config_channel_rf2xxx()
2026 rt2800_rf_write(rt2x00dev, 1, rf->rf1); in rt2800_config_channel_rf2xxx()
2027 rt2800_rf_write(rt2x00dev, 2, rf->rf2); in rt2800_config_channel_rf2xxx()
2028 rt2800_rf_write(rt2x00dev, 3, rf->rf3 & ~0x00000004); in rt2800_config_channel_rf2xxx()
2029 rt2800_rf_write(rt2x00dev, 4, rf->rf4); in rt2800_config_channel_rf2xxx()
2032 static void rt2800_config_channel_rf3xxx(struct rt2x00_dev *rt2x00dev, in rt2800_config_channel_rf3xxx() argument
2037 struct rt2800_drv_data *drv_data = rt2x00dev->drv_data; in rt2800_config_channel_rf3xxx()
2040 rt2800_rfcsr_write(rt2x00dev, 2, rf->rf1); in rt2800_config_channel_rf3xxx()
2042 rt2800_rfcsr_read(rt2x00dev, 3, &rfcsr); in rt2800_config_channel_rf3xxx()
2044 rt2800_rfcsr_write(rt2x00dev, 3, rfcsr); in rt2800_config_channel_rf3xxx()
2046 rt2800_rfcsr_read(rt2x00dev, 6, &rfcsr); in rt2800_config_channel_rf3xxx()
2048 rt2800_rfcsr_write(rt2x00dev, 6, rfcsr); in rt2800_config_channel_rf3xxx()
2050 rt2800_rfcsr_read(rt2x00dev, 12, &rfcsr); in rt2800_config_channel_rf3xxx()
2052 rt2800_rfcsr_write(rt2x00dev, 12, rfcsr); in rt2800_config_channel_rf3xxx()
2054 rt2800_rfcsr_read(rt2x00dev, 13, &rfcsr); in rt2800_config_channel_rf3xxx()
2056 rt2800_rfcsr_write(rt2x00dev, 13, rfcsr); in rt2800_config_channel_rf3xxx()
2058 rt2800_rfcsr_read(rt2x00dev, 1, &rfcsr); in rt2800_config_channel_rf3xxx()
2061 rt2x00dev->default_ant.rx_chain_num <= 1); in rt2800_config_channel_rf3xxx()
2063 rt2x00dev->default_ant.rx_chain_num <= 2); in rt2800_config_channel_rf3xxx()
2066 rt2x00dev->default_ant.tx_chain_num <= 1); in rt2800_config_channel_rf3xxx()
2068 rt2x00dev->default_ant.tx_chain_num <= 2); in rt2800_config_channel_rf3xxx()
2069 rt2800_rfcsr_write(rt2x00dev, 1, rfcsr); in rt2800_config_channel_rf3xxx()
2071 rt2800_rfcsr_read(rt2x00dev, 23, &rfcsr); in rt2800_config_channel_rf3xxx()
2072 rt2x00_set_field8(&rfcsr, RFCSR23_FREQ_OFFSET, rt2x00dev->freq_offset); in rt2800_config_channel_rf3xxx()
2073 rt2800_rfcsr_write(rt2x00dev, 23, rfcsr); in rt2800_config_channel_rf3xxx()
2075 if (rt2x00_rt(rt2x00dev, RT3390)) { in rt2800_config_channel_rf3xxx()
2088 rt2800_rfcsr_read(rt2x00dev, 24, &rfcsr); in rt2800_config_channel_rf3xxx()
2090 rt2800_rfcsr_write(rt2x00dev, 24, rfcsr); in rt2800_config_channel_rf3xxx()
2092 rt2800_rfcsr_read(rt2x00dev, 31, &rfcsr); in rt2800_config_channel_rf3xxx()
2094 rt2800_rfcsr_write(rt2x00dev, 31, rfcsr); in rt2800_config_channel_rf3xxx()
2096 rt2800_rfcsr_read(rt2x00dev, 7, &rfcsr); in rt2800_config_channel_rf3xxx()
2098 rt2800_rfcsr_write(rt2x00dev, 7, rfcsr); in rt2800_config_channel_rf3xxx()
2100 rt2800_rfcsr_read(rt2x00dev, 30, &rfcsr); in rt2800_config_channel_rf3xxx()
2102 rt2800_rfcsr_write(rt2x00dev, 30, rfcsr); in rt2800_config_channel_rf3xxx()
2105 rt2800_rfcsr_write(rt2x00dev, 30, rfcsr); in rt2800_config_channel_rf3xxx()
2108 static void rt2800_config_channel_rf3052(struct rt2x00_dev *rt2x00dev, in rt2800_config_channel_rf3052() argument
2113 struct rt2800_drv_data *drv_data = rt2x00dev->drv_data; in rt2800_config_channel_rf3052()
2118 rt2800_bbp_write(rt2x00dev, 25, drv_data->bbp25); in rt2800_config_channel_rf3052()
2119 rt2800_bbp_write(rt2x00dev, 26, drv_data->bbp26); in rt2800_config_channel_rf3052()
2121 rt2800_bbp_write(rt2x00dev, 25, 0x09); in rt2800_config_channel_rf3052()
2122 rt2800_bbp_write(rt2x00dev, 26, 0xff); in rt2800_config_channel_rf3052()
2125 rt2800_rfcsr_write(rt2x00dev, 2, rf->rf1); in rt2800_config_channel_rf3052()
2126 rt2800_rfcsr_write(rt2x00dev, 3, rf->rf3); in rt2800_config_channel_rf3052()
2128 rt2800_rfcsr_read(rt2x00dev, 6, &rfcsr); in rt2800_config_channel_rf3052()
2134 rt2800_rfcsr_write(rt2x00dev, 6, rfcsr); in rt2800_config_channel_rf3052()
2136 rt2800_rfcsr_read(rt2x00dev, 5, &rfcsr); in rt2800_config_channel_rf3052()
2141 rt2800_rfcsr_write(rt2x00dev, 5, rfcsr); in rt2800_config_channel_rf3052()
2143 rt2800_rfcsr_read(rt2x00dev, 12, &rfcsr); in rt2800_config_channel_rf3052()
2154 rt2800_rfcsr_write(rt2x00dev, 12, rfcsr); in rt2800_config_channel_rf3052()
2156 rt2800_rfcsr_read(rt2x00dev, 13, &rfcsr); in rt2800_config_channel_rf3052()
2167 rt2800_rfcsr_write(rt2x00dev, 13, rfcsr); in rt2800_config_channel_rf3052()
2169 rt2800_rfcsr_read(rt2x00dev, 1, &rfcsr); in rt2800_config_channel_rf3052()
2176 if (rt2x00_has_cap_bt_coexist(rt2x00dev)) { in rt2800_config_channel_rf3052()
2184 switch (rt2x00dev->default_ant.tx_chain_num) { in rt2800_config_channel_rf3052()
2192 switch (rt2x00dev->default_ant.rx_chain_num) { in rt2800_config_channel_rf3052()
2200 rt2800_rfcsr_write(rt2x00dev, 1, rfcsr); in rt2800_config_channel_rf3052()
2202 rt2800_rfcsr_read(rt2x00dev, 23, &rfcsr); in rt2800_config_channel_rf3052()
2203 rt2x00_set_field8(&rfcsr, RFCSR23_FREQ_OFFSET, rt2x00dev->freq_offset); in rt2800_config_channel_rf3052()
2204 rt2800_rfcsr_write(rt2x00dev, 23, rfcsr); in rt2800_config_channel_rf3052()
2207 rt2800_rfcsr_write(rt2x00dev, 24, drv_data->calibration_bw40); in rt2800_config_channel_rf3052()
2208 rt2800_rfcsr_write(rt2x00dev, 31, drv_data->calibration_bw40); in rt2800_config_channel_rf3052()
2210 rt2800_rfcsr_write(rt2x00dev, 24, drv_data->calibration_bw20); in rt2800_config_channel_rf3052()
2211 rt2800_rfcsr_write(rt2x00dev, 31, drv_data->calibration_bw20); in rt2800_config_channel_rf3052()
2215 rt2800_rfcsr_write(rt2x00dev, 7, 0xd8); in rt2800_config_channel_rf3052()
2216 rt2800_rfcsr_write(rt2x00dev, 9, 0xc3); in rt2800_config_channel_rf3052()
2217 rt2800_rfcsr_write(rt2x00dev, 10, 0xf1); in rt2800_config_channel_rf3052()
2218 rt2800_rfcsr_write(rt2x00dev, 11, 0xb9); in rt2800_config_channel_rf3052()
2219 rt2800_rfcsr_write(rt2x00dev, 15, 0x53); in rt2800_config_channel_rf3052()
2223 rt2800_rfcsr_write(rt2x00dev, 16, rfcsr); in rt2800_config_channel_rf3052()
2224 rt2800_rfcsr_write(rt2x00dev, 17, 0x23); in rt2800_config_channel_rf3052()
2225 rt2800_rfcsr_write(rt2x00dev, 19, 0x93); in rt2800_config_channel_rf3052()
2226 rt2800_rfcsr_write(rt2x00dev, 20, 0xb3); in rt2800_config_channel_rf3052()
2227 rt2800_rfcsr_write(rt2x00dev, 25, 0x15); in rt2800_config_channel_rf3052()
2228 rt2800_rfcsr_write(rt2x00dev, 26, 0x85); in rt2800_config_channel_rf3052()
2229 rt2800_rfcsr_write(rt2x00dev, 27, 0x00); in rt2800_config_channel_rf3052()
2230 rt2800_rfcsr_write(rt2x00dev, 29, 0x9b); in rt2800_config_channel_rf3052()
2232 rt2800_rfcsr_read(rt2x00dev, 7, &rfcsr); in rt2800_config_channel_rf3052()
2237 rt2800_rfcsr_write(rt2x00dev, 7, rfcsr); in rt2800_config_channel_rf3052()
2238 rt2800_rfcsr_write(rt2x00dev, 9, 0xc0); in rt2800_config_channel_rf3052()
2239 rt2800_rfcsr_write(rt2x00dev, 10, 0xf1); in rt2800_config_channel_rf3052()
2240 rt2800_rfcsr_write(rt2x00dev, 11, 0x00); in rt2800_config_channel_rf3052()
2241 rt2800_rfcsr_write(rt2x00dev, 15, 0x43); in rt2800_config_channel_rf3052()
2245 rt2800_rfcsr_write(rt2x00dev, 16, rfcsr); in rt2800_config_channel_rf3052()
2246 rt2800_rfcsr_write(rt2x00dev, 17, 0x23); in rt2800_config_channel_rf3052()
2248 rt2800_rfcsr_write(rt2x00dev, 19, 0xb7); in rt2800_config_channel_rf3052()
2249 rt2800_rfcsr_write(rt2x00dev, 20, 0xf6); in rt2800_config_channel_rf3052()
2250 rt2800_rfcsr_write(rt2x00dev, 25, 0x3d); in rt2800_config_channel_rf3052()
2252 rt2800_rfcsr_write(rt2x00dev, 19, 0x74); in rt2800_config_channel_rf3052()
2253 rt2800_rfcsr_write(rt2x00dev, 20, 0xf4); in rt2800_config_channel_rf3052()
2254 rt2800_rfcsr_write(rt2x00dev, 25, 0x01); in rt2800_config_channel_rf3052()
2256 rt2800_rfcsr_write(rt2x00dev, 19, 0x72); in rt2800_config_channel_rf3052()
2257 rt2800_rfcsr_write(rt2x00dev, 20, 0xf3); in rt2800_config_channel_rf3052()
2258 rt2800_rfcsr_write(rt2x00dev, 25, 0x01); in rt2800_config_channel_rf3052()
2260 rt2800_rfcsr_write(rt2x00dev, 26, 0x87); in rt2800_config_channel_rf3052()
2261 rt2800_rfcsr_write(rt2x00dev, 27, 0x01); in rt2800_config_channel_rf3052()
2262 rt2800_rfcsr_write(rt2x00dev, 29, 0x9f); in rt2800_config_channel_rf3052()
2265 rt2800_register_read(rt2x00dev, GPIO_CTRL, &reg); in rt2800_config_channel_rf3052()
2271 rt2800_register_write(rt2x00dev, GPIO_CTRL, reg); in rt2800_config_channel_rf3052()
2273 rt2800_rfcsr_read(rt2x00dev, 7, &rfcsr); in rt2800_config_channel_rf3052()
2275 rt2800_rfcsr_write(rt2x00dev, 7, rfcsr); in rt2800_config_channel_rf3052()
2278 static void rt2800_config_channel_rf3053(struct rt2x00_dev *rt2x00dev, in rt2800_config_channel_rf3053() argument
2283 struct rt2800_drv_data *drv_data = rt2x00dev->drv_data; in rt2800_config_channel_rf3053()
2291 rt2800_bbp_read(rt2x00dev, 109, &bbp); in rt2800_config_channel_rf3053()
2294 rt2800_bbp_write(rt2x00dev, 109, bbp); in rt2800_config_channel_rf3053()
2296 rt2800_bbp_read(rt2x00dev, 110, &bbp); in rt2800_config_channel_rf3053()
2298 rt2800_bbp_write(rt2x00dev, 110, bbp); in rt2800_config_channel_rf3053()
2302 rt2800_bbp_write(rt2x00dev, 25, drv_data->bbp25); in rt2800_config_channel_rf3053()
2303 rt2800_bbp_write(rt2x00dev, 26, drv_data->bbp26); in rt2800_config_channel_rf3053()
2308 rt2800_bbp_write(rt2x00dev, 25, 0x09); in rt2800_config_channel_rf3053()
2310 rt2800_bbp_write(rt2x00dev, 26, 0xff); in rt2800_config_channel_rf3053()
2313 rt2800_rfcsr_write(rt2x00dev, 8, rf->rf1); in rt2800_config_channel_rf3053()
2314 rt2800_rfcsr_write(rt2x00dev, 9, rf->rf3 & 0xf); in rt2800_config_channel_rf3053()
2316 rt2800_rfcsr_read(rt2x00dev, 11, &rfcsr); in rt2800_config_channel_rf3053()
2318 rt2800_rfcsr_write(rt2x00dev, 11, rfcsr); in rt2800_config_channel_rf3053()
2320 rt2800_rfcsr_read(rt2x00dev, 11, &rfcsr); in rt2800_config_channel_rf3053()
2326 rt2800_rfcsr_write(rt2x00dev, 11, rfcsr); in rt2800_config_channel_rf3053()
2328 rt2800_rfcsr_read(rt2x00dev, 53, &rfcsr); in rt2800_config_channel_rf3053()
2334 if (rt2x00_is_usb(rt2x00dev)) in rt2800_config_channel_rf3053()
2341 rt2800_rfcsr_write(rt2x00dev, 53, rfcsr); in rt2800_config_channel_rf3053()
2343 rt2800_rfcsr_read(rt2x00dev, 55, &rfcsr); in rt2800_config_channel_rf3053()
2349 if (rt2x00_is_usb(rt2x00dev)) in rt2800_config_channel_rf3053()
2356 rt2800_rfcsr_write(rt2x00dev, 55, rfcsr); in rt2800_config_channel_rf3053()
2358 rt2800_rfcsr_read(rt2x00dev, 54, &rfcsr); in rt2800_config_channel_rf3053()
2364 if (rt2x00_is_usb(rt2x00dev)) in rt2800_config_channel_rf3053()
2371 rt2800_rfcsr_write(rt2x00dev, 54, rfcsr); in rt2800_config_channel_rf3053()
2373 rt2800_rfcsr_read(rt2x00dev, 1, &rfcsr); in rt2800_config_channel_rf3053()
2383 switch (rt2x00dev->default_ant.tx_chain_num) { in rt2800_config_channel_rf3053()
2395 switch (rt2x00dev->default_ant.rx_chain_num) { in rt2800_config_channel_rf3053()
2406 rt2800_rfcsr_write(rt2x00dev, 1, rfcsr); in rt2800_config_channel_rf3053()
2408 rt2800_adjust_freq_offset(rt2x00dev); in rt2800_config_channel_rf3053()
2425 rt2800_rfcsr_read(rt2x00dev, 32, &rfcsr); in rt2800_config_channel_rf3053()
2432 rt2800_rfcsr_write(rt2x00dev, 31, rfcsr); in rt2800_config_channel_rf3053()
2434 rt2800_rfcsr_read(rt2x00dev, 30, &rfcsr); in rt2800_config_channel_rf3053()
2437 rt2800_rfcsr_write(rt2x00dev, 30, rfcsr); in rt2800_config_channel_rf3053()
2440 rt2800_rfcsr_read(rt2x00dev, 36, &rfcsr); in rt2800_config_channel_rf3053()
2445 rt2800_rfcsr_write(rt2x00dev, 36, rfcsr); in rt2800_config_channel_rf3053()
2447 rt2800_rfcsr_read(rt2x00dev, 34, &rfcsr); in rt2800_config_channel_rf3053()
2452 rt2800_rfcsr_write(rt2x00dev, 34, rfcsr); in rt2800_config_channel_rf3053()
2454 rt2800_rfcsr_read(rt2x00dev, 12, &rfcsr); in rt2800_config_channel_rf3053()
2459 rt2800_rfcsr_write(rt2x00dev, 12, rfcsr); in rt2800_config_channel_rf3053()
2461 rt2800_rfcsr_read(rt2x00dev, 6, &rfcsr); in rt2800_config_channel_rf3053()
2470 rt2800_rfcsr_write(rt2x00dev, 6, rfcsr); in rt2800_config_channel_rf3053()
2472 rt2800_rfcsr_read(rt2x00dev, 30, &rfcsr); in rt2800_config_channel_rf3053()
2474 rt2800_rfcsr_write(rt2x00dev, 30, rfcsr); in rt2800_config_channel_rf3053()
2476 rt2800_rfcsr_write(rt2x00dev, 46, 0x60); in rt2800_config_channel_rf3053()
2479 rt2800_rfcsr_write(rt2x00dev, 10, 0xd3); in rt2800_config_channel_rf3053()
2480 rt2800_rfcsr_write(rt2x00dev, 13, 0x12); in rt2800_config_channel_rf3053()
2482 rt2800_rfcsr_write(rt2x00dev, 10, 0xd8); in rt2800_config_channel_rf3053()
2483 rt2800_rfcsr_write(rt2x00dev, 13, 0x23); in rt2800_config_channel_rf3053()
2486 rt2800_rfcsr_read(rt2x00dev, 51, &rfcsr); in rt2800_config_channel_rf3053()
2488 rt2800_rfcsr_write(rt2x00dev, 51, rfcsr); in rt2800_config_channel_rf3053()
2490 rt2800_rfcsr_read(rt2x00dev, 51, &rfcsr); in rt2800_config_channel_rf3053()
2498 rt2800_rfcsr_write(rt2x00dev, 51, rfcsr); in rt2800_config_channel_rf3053()
2500 rt2800_rfcsr_read(rt2x00dev, 49, &rfcsr); in rt2800_config_channel_rf3053()
2509 rt2800_rfcsr_write(rt2x00dev, 49, rfcsr); in rt2800_config_channel_rf3053()
2511 rt2800_rfcsr_read(rt2x00dev, 50, &rfcsr); in rt2800_config_channel_rf3053()
2513 rt2800_rfcsr_write(rt2x00dev, 50, rfcsr); in rt2800_config_channel_rf3053()
2515 rt2800_rfcsr_read(rt2x00dev, 57, &rfcsr); in rt2800_config_channel_rf3053()
2520 rt2800_rfcsr_write(rt2x00dev, 57, rfcsr); in rt2800_config_channel_rf3053()
2523 rt2800_rfcsr_write(rt2x00dev, 44, 0x93); in rt2800_config_channel_rf3053()
2524 rt2800_rfcsr_write(rt2x00dev, 52, 0x45); in rt2800_config_channel_rf3053()
2526 rt2800_rfcsr_write(rt2x00dev, 44, 0x9b); in rt2800_config_channel_rf3053()
2527 rt2800_rfcsr_write(rt2x00dev, 52, 0x05); in rt2800_config_channel_rf3053()
2531 rt2800_rfcsr_read(rt2x00dev, 3, &rfcsr); in rt2800_config_channel_rf3053()
2542 rt2800_rfcsr_write(rt2x00dev, 3, rfcsr); in rt2800_config_channel_rf3053()
2548 rt2800_rfcsr_write(rt2x00dev, 39, rfcsr); in rt2800_config_channel_rf3053()
2550 rt2800_rfcsr_write(rt2x00dev, 45, 0xbb); in rt2800_config_channel_rf3053()
2555 rt2800_rfcsr_write(rt2x00dev, 39, 0x36); in rt2800_config_channel_rf3053()
2557 rt2800_rfcsr_write(rt2x00dev, 45, 0xeb); in rt2800_config_channel_rf3053()
2562 rt2800_rfcsr_write(rt2x00dev, 39, rfcsr); in rt2800_config_channel_rf3053()
2564 rt2800_rfcsr_write(rt2x00dev, 45, 0xb3); in rt2800_config_channel_rf3053()
2569 rt2800_rfcsr_write(rt2x00dev, 39, rfcsr); in rt2800_config_channel_rf3053()
2571 rt2800_rfcsr_write(rt2x00dev, 45, 0x9b); in rt2800_config_channel_rf3053()
2578 static void rt2800_config_channel_rf3290(struct rt2x00_dev *rt2x00dev, in rt2800_config_channel_rf3290() argument
2585 rt2800_rfcsr_write(rt2x00dev, 8, rf->rf1); in rt2800_config_channel_rf3290()
2586 rt2800_rfcsr_write(rt2x00dev, 9, rf->rf3); in rt2800_config_channel_rf3290()
2587 rt2800_rfcsr_read(rt2x00dev, 11, &rfcsr); in rt2800_config_channel_rf3290()
2589 rt2800_rfcsr_write(rt2x00dev, 11, rfcsr); in rt2800_config_channel_rf3290()
2591 rt2800_rfcsr_read(rt2x00dev, 49, &rfcsr); in rt2800_config_channel_rf3290()
2596 rt2800_rfcsr_write(rt2x00dev, 49, rfcsr); in rt2800_config_channel_rf3290()
2598 rt2800_adjust_freq_offset(rt2x00dev); in rt2800_config_channel_rf3290()
2602 rt2800_bbp_write(rt2x00dev, 68, 0x0c); in rt2800_config_channel_rf3290()
2604 rt2800_bbp_write(rt2x00dev, 68, 0x0b); in rt2800_config_channel_rf3290()
2607 rt2800_bbp_write(rt2x00dev, 59, 0x0f); in rt2800_config_channel_rf3290()
2609 rt2800_bbp_write(rt2x00dev, 59, 0x0e); in rt2800_config_channel_rf3290()
2611 rt2800_bbp_write(rt2x00dev, 59, 0x0d); in rt2800_config_channel_rf3290()
2615 static void rt2800_config_channel_rf3322(struct rt2x00_dev *rt2x00dev, in rt2800_config_channel_rf3322() argument
2622 rt2800_rfcsr_write(rt2x00dev, 8, rf->rf1); in rt2800_config_channel_rf3322()
2623 rt2800_rfcsr_write(rt2x00dev, 9, rf->rf3); in rt2800_config_channel_rf3322()
2625 rt2800_rfcsr_write(rt2x00dev, 11, 0x42); in rt2800_config_channel_rf3322()
2626 rt2800_rfcsr_write(rt2x00dev, 12, 0x1c); in rt2800_config_channel_rf3322()
2627 rt2800_rfcsr_write(rt2x00dev, 13, 0x00); in rt2800_config_channel_rf3322()
2630 rt2800_rfcsr_write(rt2x00dev, 47, POWER_BOUND); in rt2800_config_channel_rf3322()
2632 rt2800_rfcsr_write(rt2x00dev, 47, info->default_power1); in rt2800_config_channel_rf3322()
2635 rt2800_rfcsr_write(rt2x00dev, 48, POWER_BOUND); in rt2800_config_channel_rf3322()
2637 rt2800_rfcsr_write(rt2x00dev, 48, info->default_power2); in rt2800_config_channel_rf3322()
2639 rt2800_adjust_freq_offset(rt2x00dev); in rt2800_config_channel_rf3322()
2641 rt2800_rfcsr_read(rt2x00dev, 1, &rfcsr); in rt2800_config_channel_rf3322()
2645 if ( rt2x00dev->default_ant.tx_chain_num == 2 ) in rt2800_config_channel_rf3322()
2650 if ( rt2x00dev->default_ant.rx_chain_num == 2 ) in rt2800_config_channel_rf3322()
2658 rt2800_rfcsr_write(rt2x00dev, 1, rfcsr); in rt2800_config_channel_rf3322()
2660 rt2800_rfcsr_write(rt2x00dev, 31, 80); in rt2800_config_channel_rf3322()
2663 static void rt2800_config_channel_rf53xx(struct rt2x00_dev *rt2x00dev, in rt2800_config_channel_rf53xx() argument
2670 rt2800_rfcsr_write(rt2x00dev, 8, rf->rf1); in rt2800_config_channel_rf53xx()
2671 rt2800_rfcsr_write(rt2x00dev, 9, rf->rf3); in rt2800_config_channel_rf53xx()
2672 rt2800_rfcsr_read(rt2x00dev, 11, &rfcsr); in rt2800_config_channel_rf53xx()
2674 rt2800_rfcsr_write(rt2x00dev, 11, rfcsr); in rt2800_config_channel_rf53xx()
2676 rt2800_rfcsr_read(rt2x00dev, 49, &rfcsr); in rt2800_config_channel_rf53xx()
2681 rt2800_rfcsr_write(rt2x00dev, 49, rfcsr); in rt2800_config_channel_rf53xx()
2683 if (rt2x00_rt(rt2x00dev, RT5392)) { in rt2800_config_channel_rf53xx()
2684 rt2800_rfcsr_read(rt2x00dev, 50, &rfcsr); in rt2800_config_channel_rf53xx()
2690 rt2800_rfcsr_write(rt2x00dev, 50, rfcsr); in rt2800_config_channel_rf53xx()
2693 rt2800_rfcsr_read(rt2x00dev, 1, &rfcsr); in rt2800_config_channel_rf53xx()
2694 if (rt2x00_rt(rt2x00dev, RT5392)) { in rt2800_config_channel_rf53xx()
2702 rt2800_rfcsr_write(rt2x00dev, 1, rfcsr); in rt2800_config_channel_rf53xx()
2704 rt2800_adjust_freq_offset(rt2x00dev); in rt2800_config_channel_rf53xx()
2709 if (rt2x00_has_cap_bt_coexist(rt2x00dev)) { in rt2800_config_channel_rf53xx()
2710 if (rt2x00_rt_rev_gte(rt2x00dev, RT5390, REV_RT5390F)) { in rt2800_config_channel_rf53xx()
2719 rt2800_rfcsr_write(rt2x00dev, 55, in rt2800_config_channel_rf53xx()
2721 rt2800_rfcsr_write(rt2x00dev, 59, in rt2800_config_channel_rf53xx()
2728 rt2800_rfcsr_write(rt2x00dev, 59, r59_bt[idx]); in rt2800_config_channel_rf53xx()
2731 if (rt2x00_rt_rev_gte(rt2x00dev, RT5390, REV_RT5390F)) { in rt2800_config_channel_rf53xx()
2739 rt2800_rfcsr_write(rt2x00dev, 55, in rt2800_config_channel_rf53xx()
2741 rt2800_rfcsr_write(rt2x00dev, 59, in rt2800_config_channel_rf53xx()
2743 } else if (rt2x00_rt(rt2x00dev, RT5390) || in rt2800_config_channel_rf53xx()
2744 rt2x00_rt(rt2x00dev, RT5392)) { in rt2800_config_channel_rf53xx()
2749 rt2800_rfcsr_write(rt2x00dev, 59, in rt2800_config_channel_rf53xx()
2756 static void rt2800_config_channel_rf55xx(struct rt2x00_dev *rt2x00dev, in rt2800_config_channel_rf55xx() argument
2769 rt2800_register_read(rt2x00dev, LDO_CFG0, &reg); in rt2800_config_channel_rf55xx()
2772 rt2800_register_write(rt2x00dev, LDO_CFG0, reg); in rt2800_config_channel_rf55xx()
2775 rt2800_rfcsr_write(rt2x00dev, 8, rf->rf1 & 0xff); in rt2800_config_channel_rf55xx()
2777 rt2800_rfcsr_read(rt2x00dev, 9, &rfcsr); in rt2800_config_channel_rf55xx()
2781 rt2800_rfcsr_write(rt2x00dev, 9, rfcsr); in rt2800_config_channel_rf55xx()
2783 rt2800_rfcsr_read(rt2x00dev, 11, &rfcsr); in rt2800_config_channel_rf55xx()
2786 rt2800_rfcsr_write(rt2x00dev, 11, rfcsr); in rt2800_config_channel_rf55xx()
2789 rt2800_rfcsr_write(rt2x00dev, 10, 0x90); in rt2800_config_channel_rf55xx()
2791 rt2800_rfcsr_write(rt2x00dev, 11, 0x4A); in rt2800_config_channel_rf55xx()
2792 rt2800_rfcsr_write(rt2x00dev, 12, 0x52); in rt2800_config_channel_rf55xx()
2793 rt2800_rfcsr_write(rt2x00dev, 13, 0x42); in rt2800_config_channel_rf55xx()
2794 rt2800_rfcsr_write(rt2x00dev, 22, 0x40); in rt2800_config_channel_rf55xx()
2795 rt2800_rfcsr_write(rt2x00dev, 24, 0x4A); in rt2800_config_channel_rf55xx()
2796 rt2800_rfcsr_write(rt2x00dev, 25, 0x80); in rt2800_config_channel_rf55xx()
2797 rt2800_rfcsr_write(rt2x00dev, 27, 0x42); in rt2800_config_channel_rf55xx()
2798 rt2800_rfcsr_write(rt2x00dev, 36, 0x80); in rt2800_config_channel_rf55xx()
2799 rt2800_rfcsr_write(rt2x00dev, 37, 0x08); in rt2800_config_channel_rf55xx()
2800 rt2800_rfcsr_write(rt2x00dev, 38, 0x89); in rt2800_config_channel_rf55xx()
2801 rt2800_rfcsr_write(rt2x00dev, 39, 0x1B); in rt2800_config_channel_rf55xx()
2802 rt2800_rfcsr_write(rt2x00dev, 40, 0x0D); in rt2800_config_channel_rf55xx()
2803 rt2800_rfcsr_write(rt2x00dev, 41, 0x9B); in rt2800_config_channel_rf55xx()
2804 rt2800_rfcsr_write(rt2x00dev, 42, 0xD5); in rt2800_config_channel_rf55xx()
2805 rt2800_rfcsr_write(rt2x00dev, 43, 0x72); in rt2800_config_channel_rf55xx()
2806 rt2800_rfcsr_write(rt2x00dev, 44, 0x0E); in rt2800_config_channel_rf55xx()
2807 rt2800_rfcsr_write(rt2x00dev, 45, 0xA2); in rt2800_config_channel_rf55xx()
2808 rt2800_rfcsr_write(rt2x00dev, 46, 0x6B); in rt2800_config_channel_rf55xx()
2809 rt2800_rfcsr_write(rt2x00dev, 48, 0x10); in rt2800_config_channel_rf55xx()
2810 rt2800_rfcsr_write(rt2x00dev, 51, 0x3E); in rt2800_config_channel_rf55xx()
2811 rt2800_rfcsr_write(rt2x00dev, 52, 0x48); in rt2800_config_channel_rf55xx()
2812 rt2800_rfcsr_write(rt2x00dev, 54, 0x38); in rt2800_config_channel_rf55xx()
2813 rt2800_rfcsr_write(rt2x00dev, 56, 0xA1); in rt2800_config_channel_rf55xx()
2814 rt2800_rfcsr_write(rt2x00dev, 57, 0x00); in rt2800_config_channel_rf55xx()
2815 rt2800_rfcsr_write(rt2x00dev, 58, 0x39); in rt2800_config_channel_rf55xx()
2816 rt2800_rfcsr_write(rt2x00dev, 60, 0x45); in rt2800_config_channel_rf55xx()
2817 rt2800_rfcsr_write(rt2x00dev, 61, 0x91); in rt2800_config_channel_rf55xx()
2818 rt2800_rfcsr_write(rt2x00dev, 62, 0x39); in rt2800_config_channel_rf55xx()
2823 rt2800_rfcsr_write(rt2x00dev, 23, rfcsr); in rt2800_config_channel_rf55xx()
2824 rt2800_rfcsr_write(rt2x00dev, 59, rfcsr); in rt2800_config_channel_rf55xx()
2828 rt2800_rfcsr_write(rt2x00dev, 31, 0xF8); in rt2800_config_channel_rf55xx()
2829 rt2800_rfcsr_write(rt2x00dev, 32, 0xC0); in rt2800_config_channel_rf55xx()
2831 rt2800_rfcsr_write(rt2x00dev, 55, 0x06); in rt2800_config_channel_rf55xx()
2833 rt2800_rfcsr_write(rt2x00dev, 55, 0x47); in rt2800_config_channel_rf55xx()
2837 rt2800_rfcsr_write(rt2x00dev, 55, 0x03); in rt2800_config_channel_rf55xx()
2839 rt2800_rfcsr_write(rt2x00dev, 55, 0x43); in rt2800_config_channel_rf55xx()
2845 rt2800_rfcsr_write(rt2x00dev, 10, 0x97); in rt2800_config_channel_rf55xx()
2847 rt2800_rfcsr_write(rt2x00dev, 11, 0x40); in rt2800_config_channel_rf55xx()
2848 rt2800_rfcsr_write(rt2x00dev, 25, 0xBF); in rt2800_config_channel_rf55xx()
2849 rt2800_rfcsr_write(rt2x00dev, 27, 0x42); in rt2800_config_channel_rf55xx()
2850 rt2800_rfcsr_write(rt2x00dev, 36, 0x00); in rt2800_config_channel_rf55xx()
2851 rt2800_rfcsr_write(rt2x00dev, 37, 0x04); in rt2800_config_channel_rf55xx()
2852 rt2800_rfcsr_write(rt2x00dev, 38, 0x85); in rt2800_config_channel_rf55xx()
2853 rt2800_rfcsr_write(rt2x00dev, 40, 0x42); in rt2800_config_channel_rf55xx()
2854 rt2800_rfcsr_write(rt2x00dev, 41, 0xBB); in rt2800_config_channel_rf55xx()
2855 rt2800_rfcsr_write(rt2x00dev, 42, 0xD7); in rt2800_config_channel_rf55xx()
2856 rt2800_rfcsr_write(rt2x00dev, 45, 0x41); in rt2800_config_channel_rf55xx()
2857 rt2800_rfcsr_write(rt2x00dev, 48, 0x00); in rt2800_config_channel_rf55xx()
2858 rt2800_rfcsr_write(rt2x00dev, 57, 0x77); in rt2800_config_channel_rf55xx()
2859 rt2800_rfcsr_write(rt2x00dev, 60, 0x05); in rt2800_config_channel_rf55xx()
2860 rt2800_rfcsr_write(rt2x00dev, 61, 0x01); in rt2800_config_channel_rf55xx()
2866 rt2800_rfcsr_write(rt2x00dev, 12, 0x2E); in rt2800_config_channel_rf55xx()
2867 rt2800_rfcsr_write(rt2x00dev, 13, 0x22); in rt2800_config_channel_rf55xx()
2868 rt2800_rfcsr_write(rt2x00dev, 22, 0x60); in rt2800_config_channel_rf55xx()
2869 rt2800_rfcsr_write(rt2x00dev, 23, 0x7F); in rt2800_config_channel_rf55xx()
2871 rt2800_rfcsr_write(rt2x00dev, 24, 0x09); in rt2800_config_channel_rf55xx()
2873 rt2800_rfcsr_write(rt2x00dev, 24, 0x07); in rt2800_config_channel_rf55xx()
2874 rt2800_rfcsr_write(rt2x00dev, 39, 0x1C); in rt2800_config_channel_rf55xx()
2875 rt2800_rfcsr_write(rt2x00dev, 43, 0x5B); in rt2800_config_channel_rf55xx()
2876 rt2800_rfcsr_write(rt2x00dev, 44, 0X40); in rt2800_config_channel_rf55xx()
2877 rt2800_rfcsr_write(rt2x00dev, 46, 0X00); in rt2800_config_channel_rf55xx()
2878 rt2800_rfcsr_write(rt2x00dev, 51, 0xFE); in rt2800_config_channel_rf55xx()
2879 rt2800_rfcsr_write(rt2x00dev, 52, 0x0C); in rt2800_config_channel_rf55xx()
2880 rt2800_rfcsr_write(rt2x00dev, 54, 0xF8); in rt2800_config_channel_rf55xx()
2882 rt2800_rfcsr_write(rt2x00dev, 55, 0x06), in rt2800_config_channel_rf55xx()
2883 rt2800_rfcsr_write(rt2x00dev, 56, 0xD3); in rt2800_config_channel_rf55xx()
2885 rt2800_rfcsr_write(rt2x00dev, 55, 0x04); in rt2800_config_channel_rf55xx()
2886 rt2800_rfcsr_write(rt2x00dev, 56, 0xBB); in rt2800_config_channel_rf55xx()
2889 rt2800_rfcsr_write(rt2x00dev, 58, 0x15); in rt2800_config_channel_rf55xx()
2890 rt2800_rfcsr_write(rt2x00dev, 59, 0x7F); in rt2800_config_channel_rf55xx()
2891 rt2800_rfcsr_write(rt2x00dev, 62, 0x15); in rt2800_config_channel_rf55xx()
2895 rt2800_rfcsr_write(rt2x00dev, 12, 0x0E); in rt2800_config_channel_rf55xx()
2896 rt2800_rfcsr_write(rt2x00dev, 13, 0x42); in rt2800_config_channel_rf55xx()
2897 rt2800_rfcsr_write(rt2x00dev, 22, 0x40); in rt2800_config_channel_rf55xx()
2899 rt2800_rfcsr_write(rt2x00dev, 23, 0x3C); in rt2800_config_channel_rf55xx()
2900 rt2800_rfcsr_write(rt2x00dev, 24, 0x06); in rt2800_config_channel_rf55xx()
2902 rt2800_rfcsr_write(rt2x00dev, 23, 0x38); in rt2800_config_channel_rf55xx()
2903 rt2800_rfcsr_write(rt2x00dev, 24, 0x05); in rt2800_config_channel_rf55xx()
2906 rt2800_rfcsr_write(rt2x00dev, 39, 0x1A); in rt2800_config_channel_rf55xx()
2907 rt2800_rfcsr_write(rt2x00dev, 43, 0x3B); in rt2800_config_channel_rf55xx()
2908 rt2800_rfcsr_write(rt2x00dev, 44, 0x20); in rt2800_config_channel_rf55xx()
2909 rt2800_rfcsr_write(rt2x00dev, 46, 0x18); in rt2800_config_channel_rf55xx()
2911 rt2800_rfcsr_write(rt2x00dev, 39, 0x18); in rt2800_config_channel_rf55xx()
2912 rt2800_rfcsr_write(rt2x00dev, 43, 0x1B); in rt2800_config_channel_rf55xx()
2913 rt2800_rfcsr_write(rt2x00dev, 44, 0x10); in rt2800_config_channel_rf55xx()
2914 rt2800_rfcsr_write(rt2x00dev, 46, 0X08); in rt2800_config_channel_rf55xx()
2917 rt2800_rfcsr_write(rt2x00dev, 51, 0xFC); in rt2800_config_channel_rf55xx()
2919 rt2800_rfcsr_write(rt2x00dev, 51, 0xEC); in rt2800_config_channel_rf55xx()
2921 rt2800_rfcsr_write(rt2x00dev, 52, 0x06); in rt2800_config_channel_rf55xx()
2923 rt2800_rfcsr_write(rt2x00dev, 52, 0x06); in rt2800_config_channel_rf55xx()
2924 rt2800_rfcsr_write(rt2x00dev, 54, 0xEB); in rt2800_config_channel_rf55xx()
2926 rt2800_rfcsr_write(rt2x00dev, 55, 0x01); in rt2800_config_channel_rf55xx()
2928 rt2800_rfcsr_write(rt2x00dev, 55, 0x00); in rt2800_config_channel_rf55xx()
2930 rt2800_rfcsr_write(rt2x00dev, 56, 0xBB); in rt2800_config_channel_rf55xx()
2932 rt2800_rfcsr_write(rt2x00dev, 56, 0xAB); in rt2800_config_channel_rf55xx()
2934 rt2800_rfcsr_write(rt2x00dev, 58, 0x1D); in rt2800_config_channel_rf55xx()
2936 rt2800_rfcsr_write(rt2x00dev, 58, 0x15); in rt2800_config_channel_rf55xx()
2938 rt2800_rfcsr_write(rt2x00dev, 59, 0x3F); in rt2800_config_channel_rf55xx()
2940 rt2800_rfcsr_write(rt2x00dev, 59, 0x7C); in rt2800_config_channel_rf55xx()
2942 rt2800_rfcsr_write(rt2x00dev, 62, 0x1D); in rt2800_config_channel_rf55xx()
2944 rt2800_rfcsr_write(rt2x00dev, 62, 0x15); in rt2800_config_channel_rf55xx()
2951 rt2800_rfcsr_read(rt2x00dev, 49, &rfcsr); in rt2800_config_channel_rf55xx()
2958 rt2800_rfcsr_write(rt2x00dev, 49, rfcsr); in rt2800_config_channel_rf55xx()
2960 rt2800_rfcsr_read(rt2x00dev, 50, &rfcsr); in rt2800_config_channel_rf55xx()
2967 rt2800_rfcsr_write(rt2x00dev, 50, rfcsr); in rt2800_config_channel_rf55xx()
2969 rt2800_rfcsr_read(rt2x00dev, 1, &rfcsr); in rt2800_config_channel_rf55xx()
2974 rt2x00dev->default_ant.tx_chain_num >= 1); in rt2800_config_channel_rf55xx()
2976 rt2x00dev->default_ant.tx_chain_num == 2); in rt2800_config_channel_rf55xx()
2980 rt2x00dev->default_ant.rx_chain_num >= 1); in rt2800_config_channel_rf55xx()
2982 rt2x00dev->default_ant.rx_chain_num == 2); in rt2800_config_channel_rf55xx()
2985 rt2800_rfcsr_write(rt2x00dev, 1, rfcsr); in rt2800_config_channel_rf55xx()
2986 rt2800_rfcsr_write(rt2x00dev, 6, 0xe4); in rt2800_config_channel_rf55xx()
2989 rt2800_rfcsr_write(rt2x00dev, 30, 0x16); in rt2800_config_channel_rf55xx()
2991 rt2800_rfcsr_write(rt2x00dev, 30, 0x10); in rt2800_config_channel_rf55xx()
2994 rt2800_rfcsr_write(rt2x00dev, 31, 0x80); in rt2800_config_channel_rf55xx()
2995 rt2800_rfcsr_write(rt2x00dev, 32, 0x80); in rt2800_config_channel_rf55xx()
2999 rt2800_adjust_freq_offset(rt2x00dev); in rt2800_config_channel_rf55xx()
3002 rt2800_rfcsr_read(rt2x00dev, 3, &rfcsr); in rt2800_config_channel_rf55xx()
3004 rt2800_rfcsr_write(rt2x00dev, 3, rfcsr); in rt2800_config_channel_rf55xx()
3007 rt2800_bbp_write(rt2x00dev, 62, 0x37 - rt2x00dev->lna_gain); in rt2800_config_channel_rf55xx()
3008 rt2800_bbp_write(rt2x00dev, 63, 0x37 - rt2x00dev->lna_gain); in rt2800_config_channel_rf55xx()
3009 rt2800_bbp_write(rt2x00dev, 64, 0x37 - rt2x00dev->lna_gain); in rt2800_config_channel_rf55xx()
3011 rt2800_bbp_write(rt2x00dev, 79, (rf->channel <= 14) ? 0x1C : 0x18); in rt2800_config_channel_rf55xx()
3012 rt2800_bbp_write(rt2x00dev, 80, (rf->channel <= 14) ? 0x0E : 0x08); in rt2800_config_channel_rf55xx()
3013 rt2800_bbp_write(rt2x00dev, 81, (rf->channel <= 14) ? 0x3A : 0x38); in rt2800_config_channel_rf55xx()
3014 rt2800_bbp_write(rt2x00dev, 82, (rf->channel <= 14) ? 0x62 : 0x92); in rt2800_config_channel_rf55xx()
3017 rt2800_bbp_write(rt2x00dev, 195, 128); in rt2800_config_channel_rf55xx()
3018 rt2800_bbp_write(rt2x00dev, 196, (rf->channel <= 14) ? 0xE0 : 0xF0); in rt2800_config_channel_rf55xx()
3019 rt2800_bbp_write(rt2x00dev, 195, 129); in rt2800_config_channel_rf55xx()
3020 rt2800_bbp_write(rt2x00dev, 196, (rf->channel <= 14) ? 0x1F : 0x1E); in rt2800_config_channel_rf55xx()
3021 rt2800_bbp_write(rt2x00dev, 195, 130); in rt2800_config_channel_rf55xx()
3022 rt2800_bbp_write(rt2x00dev, 196, (rf->channel <= 14) ? 0x38 : 0x28); in rt2800_config_channel_rf55xx()
3023 rt2800_bbp_write(rt2x00dev, 195, 131); in rt2800_config_channel_rf55xx()
3024 rt2800_bbp_write(rt2x00dev, 196, (rf->channel <= 14) ? 0x32 : 0x20); in rt2800_config_channel_rf55xx()
3025 rt2800_bbp_write(rt2x00dev, 195, 133); in rt2800_config_channel_rf55xx()
3026 rt2800_bbp_write(rt2x00dev, 196, (rf->channel <= 14) ? 0x28 : 0x7F); in rt2800_config_channel_rf55xx()
3027 rt2800_bbp_write(rt2x00dev, 195, 124); in rt2800_config_channel_rf55xx()
3028 rt2800_bbp_write(rt2x00dev, 196, (rf->channel <= 14) ? 0x19 : 0x7F); in rt2800_config_channel_rf55xx()
3031 static void rt2800_bbp_write_with_rx_chain(struct rt2x00_dev *rt2x00dev, in rt2800_bbp_write_with_rx_chain() argument
3037 for (chain = 0; chain < rt2x00dev->default_ant.rx_chain_num; chain++) { in rt2800_bbp_write_with_rx_chain()
3038 rt2800_bbp_read(rt2x00dev, 27, &reg); in rt2800_bbp_write_with_rx_chain()
3040 rt2800_bbp_write(rt2x00dev, 27, reg); in rt2800_bbp_write_with_rx_chain()
3042 rt2800_bbp_write(rt2x00dev, word, value); in rt2800_bbp_write_with_rx_chain()
3046 static void rt2800_iq_calibrate(struct rt2x00_dev *rt2x00dev, int channel) in rt2800_iq_calibrate() argument
3051 rt2800_bbp_write(rt2x00dev, 158, 0x2c); in rt2800_iq_calibrate()
3053 cal = rt2x00_eeprom_byte(rt2x00dev, EEPROM_IQ_GAIN_CAL_TX0_2G); in rt2800_iq_calibrate()
3055 cal = rt2x00_eeprom_byte(rt2x00dev, in rt2800_iq_calibrate()
3058 cal = rt2x00_eeprom_byte(rt2x00dev, in rt2800_iq_calibrate()
3061 cal = rt2x00_eeprom_byte(rt2x00dev, in rt2800_iq_calibrate()
3065 rt2800_bbp_write(rt2x00dev, 159, cal); in rt2800_iq_calibrate()
3068 rt2800_bbp_write(rt2x00dev, 158, 0x2d); in rt2800_iq_calibrate()
3070 cal = rt2x00_eeprom_byte(rt2x00dev, EEPROM_IQ_PHASE_CAL_TX0_2G); in rt2800_iq_calibrate()
3072 cal = rt2x00_eeprom_byte(rt2x00dev, in rt2800_iq_calibrate()
3075 cal = rt2x00_eeprom_byte(rt2x00dev, in rt2800_iq_calibrate()
3078 cal = rt2x00_eeprom_byte(rt2x00dev, in rt2800_iq_calibrate()
3082 rt2800_bbp_write(rt2x00dev, 159, cal); in rt2800_iq_calibrate()
3085 rt2800_bbp_write(rt2x00dev, 158, 0x4a); in rt2800_iq_calibrate()
3087 cal = rt2x00_eeprom_byte(rt2x00dev, EEPROM_IQ_GAIN_CAL_TX1_2G); in rt2800_iq_calibrate()
3089 cal = rt2x00_eeprom_byte(rt2x00dev, in rt2800_iq_calibrate()
3092 cal = rt2x00_eeprom_byte(rt2x00dev, in rt2800_iq_calibrate()
3095 cal = rt2x00_eeprom_byte(rt2x00dev, in rt2800_iq_calibrate()
3099 rt2800_bbp_write(rt2x00dev, 159, cal); in rt2800_iq_calibrate()
3102 rt2800_bbp_write(rt2x00dev, 158, 0x4b); in rt2800_iq_calibrate()
3104 cal = rt2x00_eeprom_byte(rt2x00dev, EEPROM_IQ_PHASE_CAL_TX1_2G); in rt2800_iq_calibrate()
3106 cal = rt2x00_eeprom_byte(rt2x00dev, in rt2800_iq_calibrate()
3109 cal = rt2x00_eeprom_byte(rt2x00dev, in rt2800_iq_calibrate()
3112 cal = rt2x00_eeprom_byte(rt2x00dev, in rt2800_iq_calibrate()
3116 rt2800_bbp_write(rt2x00dev, 159, cal); in rt2800_iq_calibrate()
3121 rt2800_bbp_write(rt2x00dev, 158, 0x04); in rt2800_iq_calibrate()
3122 cal = rt2x00_eeprom_byte(rt2x00dev, EEPROM_RF_IQ_COMPENSATION_CONTROL); in rt2800_iq_calibrate()
3123 rt2800_bbp_write(rt2x00dev, 159, cal != 0xff ? cal : 0); in rt2800_iq_calibrate()
3126 rt2800_bbp_write(rt2x00dev, 158, 0x03); in rt2800_iq_calibrate()
3127 cal = rt2x00_eeprom_byte(rt2x00dev, in rt2800_iq_calibrate()
3129 rt2800_bbp_write(rt2x00dev, 159, cal != 0xff ? cal : 0); in rt2800_iq_calibrate()
3132 static char rt2800_txpower_to_dev(struct rt2x00_dev *rt2x00dev, in rt2800_txpower_to_dev() argument
3136 if (rt2x00_rt(rt2x00dev, RT3593)) in rt2800_txpower_to_dev()
3142 if (rt2x00_rt(rt2x00dev, RT3593)) in rt2800_txpower_to_dev()
3149 static void rt2800_config_channel(struct rt2x00_dev *rt2x00dev, in rt2800_config_channel() argument
3158 info->default_power1 = rt2800_txpower_to_dev(rt2x00dev, rf->channel, in rt2800_config_channel()
3160 info->default_power2 = rt2800_txpower_to_dev(rt2x00dev, rf->channel, in rt2800_config_channel()
3162 if (rt2x00dev->default_ant.tx_chain_num > 2) in rt2800_config_channel()
3164 rt2800_txpower_to_dev(rt2x00dev, rf->channel, in rt2800_config_channel()
3167 switch (rt2x00dev->chip.rf) { in rt2800_config_channel()
3173 rt2800_config_channel_rf3xxx(rt2x00dev, conf, rf, info); in rt2800_config_channel()
3176 rt2800_config_channel_rf3052(rt2x00dev, conf, rf, info); in rt2800_config_channel()
3179 rt2800_config_channel_rf3053(rt2x00dev, conf, rf, info); in rt2800_config_channel()
3182 rt2800_config_channel_rf3290(rt2x00dev, conf, rf, info); in rt2800_config_channel()
3185 rt2800_config_channel_rf3322(rt2x00dev, conf, rf, info); in rt2800_config_channel()
3194 rt2800_config_channel_rf53xx(rt2x00dev, conf, rf, info); in rt2800_config_channel()
3197 rt2800_config_channel_rf55xx(rt2x00dev, conf, rf, info); in rt2800_config_channel()
3200 rt2800_config_channel_rf2xxx(rt2x00dev, conf, rf, info); in rt2800_config_channel()
3203 if (rt2x00_rf(rt2x00dev, RF3070) || in rt2800_config_channel()
3204 rt2x00_rf(rt2x00dev, RF3290) || in rt2800_config_channel()
3205 rt2x00_rf(rt2x00dev, RF3322) || in rt2800_config_channel()
3206 rt2x00_rf(rt2x00dev, RF5360) || in rt2800_config_channel()
3207 rt2x00_rf(rt2x00dev, RF5362) || in rt2800_config_channel()
3208 rt2x00_rf(rt2x00dev, RF5370) || in rt2800_config_channel()
3209 rt2x00_rf(rt2x00dev, RF5372) || in rt2800_config_channel()
3210 rt2x00_rf(rt2x00dev, RF5390) || in rt2800_config_channel()
3211 rt2x00_rf(rt2x00dev, RF5392)) { in rt2800_config_channel()
3212 rt2800_rfcsr_read(rt2x00dev, 30, &rfcsr); in rt2800_config_channel()
3215 rt2800_rfcsr_write(rt2x00dev, 30, rfcsr); in rt2800_config_channel()
3217 rt2800_rfcsr_read(rt2x00dev, 3, &rfcsr); in rt2800_config_channel()
3219 rt2800_rfcsr_write(rt2x00dev, 3, rfcsr); in rt2800_config_channel()
3225 if (rt2x00_rt(rt2x00dev, RT3352)) { in rt2800_config_channel()
3226 rt2800_bbp_write(rt2x00dev, 27, 0x0); in rt2800_config_channel()
3227 rt2800_bbp_write(rt2x00dev, 66, 0x26 + rt2x00dev->lna_gain); in rt2800_config_channel()
3228 rt2800_bbp_write(rt2x00dev, 27, 0x20); in rt2800_config_channel()
3229 rt2800_bbp_write(rt2x00dev, 66, 0x26 + rt2x00dev->lna_gain); in rt2800_config_channel()
3230 } else if (rt2x00_rt(rt2x00dev, RT3593)) { in rt2800_config_channel()
3233 rt2800_bbp_write(rt2x00dev, 70, 0x00); in rt2800_config_channel()
3235 rt2800_bbp_write(rt2x00dev, 70, 0x0a); in rt2800_config_channel()
3239 rt2800_bbp_write(rt2x00dev, 105, 0x04); in rt2800_config_channel()
3241 rt2800_bbp_write(rt2x00dev, 105, 0x34); in rt2800_config_channel()
3243 rt2800_bbp_write(rt2x00dev, 62, 0x37 - rt2x00dev->lna_gain); in rt2800_config_channel()
3244 rt2800_bbp_write(rt2x00dev, 63, 0x37 - rt2x00dev->lna_gain); in rt2800_config_channel()
3245 rt2800_bbp_write(rt2x00dev, 64, 0x37 - rt2x00dev->lna_gain); in rt2800_config_channel()
3246 rt2800_bbp_write(rt2x00dev, 77, 0x98); in rt2800_config_channel()
3248 rt2800_bbp_write(rt2x00dev, 62, 0x37 - rt2x00dev->lna_gain); in rt2800_config_channel()
3249 rt2800_bbp_write(rt2x00dev, 63, 0x37 - rt2x00dev->lna_gain); in rt2800_config_channel()
3250 rt2800_bbp_write(rt2x00dev, 64, 0x37 - rt2x00dev->lna_gain); in rt2800_config_channel()
3251 rt2800_bbp_write(rt2x00dev, 86, 0); in rt2800_config_channel()
3255 if (!rt2x00_rt(rt2x00dev, RT5390) && in rt2800_config_channel()
3256 !rt2x00_rt(rt2x00dev, RT5392)) { in rt2800_config_channel()
3257 if (rt2x00_has_cap_external_lna_bg(rt2x00dev)) { in rt2800_config_channel()
3258 rt2800_bbp_write(rt2x00dev, 82, 0x62); in rt2800_config_channel()
3259 rt2800_bbp_write(rt2x00dev, 75, 0x46); in rt2800_config_channel()
3261 if (rt2x00_rt(rt2x00dev, RT3593)) in rt2800_config_channel()
3262 rt2800_bbp_write(rt2x00dev, 82, 0x62); in rt2800_config_channel()
3264 rt2800_bbp_write(rt2x00dev, 82, 0x84); in rt2800_config_channel()
3265 rt2800_bbp_write(rt2x00dev, 75, 0x50); in rt2800_config_channel()
3267 if (rt2x00_rt(rt2x00dev, RT3593)) in rt2800_config_channel()
3268 rt2800_bbp_write(rt2x00dev, 83, 0x8a); in rt2800_config_channel()
3272 if (rt2x00_rt(rt2x00dev, RT3572)) in rt2800_config_channel()
3273 rt2800_bbp_write(rt2x00dev, 82, 0x94); in rt2800_config_channel()
3274 else if (rt2x00_rt(rt2x00dev, RT3593)) in rt2800_config_channel()
3275 rt2800_bbp_write(rt2x00dev, 82, 0x82); in rt2800_config_channel()
3277 rt2800_bbp_write(rt2x00dev, 82, 0xf2); in rt2800_config_channel()
3279 if (rt2x00_rt(rt2x00dev, RT3593)) in rt2800_config_channel()
3280 rt2800_bbp_write(rt2x00dev, 83, 0x9a); in rt2800_config_channel()
3282 if (rt2x00_has_cap_external_lna_a(rt2x00dev)) in rt2800_config_channel()
3283 rt2800_bbp_write(rt2x00dev, 75, 0x46); in rt2800_config_channel()
3285 rt2800_bbp_write(rt2x00dev, 75, 0x50); in rt2800_config_channel()
3288 rt2800_register_read(rt2x00dev, TX_BAND_CFG, &reg); in rt2800_config_channel()
3292 rt2800_register_write(rt2x00dev, TX_BAND_CFG, reg); in rt2800_config_channel()
3294 if (rt2x00_rt(rt2x00dev, RT3572)) in rt2800_config_channel()
3295 rt2800_rfcsr_write(rt2x00dev, 8, 0); in rt2800_config_channel()
3299 switch (rt2x00dev->default_ant.tx_chain_num) { in rt2800_config_channel()
3318 if (rt2x00_has_cap_bt_coexist(rt2x00dev)) in rt2800_config_channel()
3326 switch (rt2x00dev->default_ant.rx_chain_num) { in rt2800_config_channel()
3347 rt2800_register_write(rt2x00dev, TX_PIN_CFG, tx_pin); in rt2800_config_channel()
3349 if (rt2x00_rt(rt2x00dev, RT3572)) { in rt2800_config_channel()
3350 rt2800_rfcsr_write(rt2x00dev, 8, 0x80); in rt2800_config_channel()
3354 reg = 0x1c + (2 * rt2x00dev->lna_gain); in rt2800_config_channel()
3356 reg = 0x22 + ((rt2x00dev->lna_gain * 5) / 3); in rt2800_config_channel()
3358 rt2800_bbp_write_with_rx_chain(rt2x00dev, 66, reg); in rt2800_config_channel()
3361 if (rt2x00_rt(rt2x00dev, RT3593)) { in rt2800_config_channel()
3362 rt2800_register_read(rt2x00dev, GPIO_CTRL, &reg); in rt2800_config_channel()
3365 if (rt2x00_is_usb(rt2x00dev) || in rt2800_config_channel()
3366 rt2x00_is_pcie(rt2x00dev)) { in rt2800_config_channel()
3376 if (rt2x00_is_usb(rt2x00dev)) { in rt2800_config_channel()
3385 } else if (rt2x00_is_pcie(rt2x00dev)) { in rt2800_config_channel()
3391 rt2800_register_write(rt2x00dev, GPIO_CTRL, reg); in rt2800_config_channel()
3395 reg = 0x1c + 2 * rt2x00dev->lna_gain; in rt2800_config_channel()
3397 reg = 0x22 + ((rt2x00dev->lna_gain * 5) / 3); in rt2800_config_channel()
3399 rt2800_bbp_write_with_rx_chain(rt2x00dev, 66, reg); in rt2800_config_channel()
3404 if (rt2x00_rt(rt2x00dev, RT5592)) { in rt2800_config_channel()
3405 rt2800_bbp_write(rt2x00dev, 195, 141); in rt2800_config_channel()
3406 rt2800_bbp_write(rt2x00dev, 196, conf_is_ht40(conf) ? 0x10 : 0x1a); in rt2800_config_channel()
3409 reg = (rf->channel <= 14 ? 0x1c : 0x24) + 2 * rt2x00dev->lna_gain; in rt2800_config_channel()
3410 rt2800_bbp_write_with_rx_chain(rt2x00dev, 66, reg); in rt2800_config_channel()
3412 rt2800_iq_calibrate(rt2x00dev, rf->channel); in rt2800_config_channel()
3415 rt2800_bbp_read(rt2x00dev, 4, &bbp); in rt2800_config_channel()
3417 rt2800_bbp_write(rt2x00dev, 4, bbp); in rt2800_config_channel()
3419 rt2800_bbp_read(rt2x00dev, 3, &bbp); in rt2800_config_channel()
3421 rt2800_bbp_write(rt2x00dev, 3, bbp); in rt2800_config_channel()
3423 if (rt2x00_rt_rev(rt2x00dev, RT2860, REV_RT2860C)) { in rt2800_config_channel()
3425 rt2800_bbp_write(rt2x00dev, 69, 0x1a); in rt2800_config_channel()
3426 rt2800_bbp_write(rt2x00dev, 70, 0x0a); in rt2800_config_channel()
3427 rt2800_bbp_write(rt2x00dev, 73, 0x16); in rt2800_config_channel()
3429 rt2800_bbp_write(rt2x00dev, 69, 0x16); in rt2800_config_channel()
3430 rt2800_bbp_write(rt2x00dev, 70, 0x08); in rt2800_config_channel()
3431 rt2800_bbp_write(rt2x00dev, 73, 0x11); in rt2800_config_channel()
3440 rt2800_register_read(rt2x00dev, CH_IDLE_STA, &reg); in rt2800_config_channel()
3441 rt2800_register_read(rt2x00dev, CH_BUSY_STA, &reg); in rt2800_config_channel()
3442 rt2800_register_read(rt2x00dev, CH_BUSY_STA_SEC, &reg); in rt2800_config_channel()
3447 if (rt2x00_rt(rt2x00dev, RT3352)) { in rt2800_config_channel()
3448 rt2800_bbp_read(rt2x00dev, 49, &bbp); in rt2800_config_channel()
3450 rt2800_bbp_write(rt2x00dev, 49, bbp); in rt2800_config_channel()
3454 static int rt2800_get_gain_calibration_delta(struct rt2x00_dev *rt2x00dev) in rt2800_get_gain_calibration_delta() argument
3465 rt2800_eeprom_read(rt2x00dev, EEPROM_NIC_CONF1, &eeprom); in rt2800_get_gain_calibration_delta()
3477 if (rt2x00dev->curr_band == IEEE80211_BAND_2GHZ) { in rt2800_get_gain_calibration_delta()
3478 rt2800_eeprom_read(rt2x00dev, EEPROM_TSSI_BOUND_BG1, &eeprom); in rt2800_get_gain_calibration_delta()
3484 rt2800_eeprom_read(rt2x00dev, EEPROM_TSSI_BOUND_BG2, &eeprom); in rt2800_get_gain_calibration_delta()
3490 rt2800_eeprom_read(rt2x00dev, EEPROM_TSSI_BOUND_BG3, &eeprom); in rt2800_get_gain_calibration_delta()
3496 rt2800_eeprom_read(rt2x00dev, EEPROM_TSSI_BOUND_BG4, &eeprom); in rt2800_get_gain_calibration_delta()
3502 rt2800_eeprom_read(rt2x00dev, EEPROM_TSSI_BOUND_BG5, &eeprom); in rt2800_get_gain_calibration_delta()
3509 rt2800_eeprom_read(rt2x00dev, EEPROM_TSSI_BOUND_A1, &eeprom); in rt2800_get_gain_calibration_delta()
3515 rt2800_eeprom_read(rt2x00dev, EEPROM_TSSI_BOUND_A2, &eeprom); in rt2800_get_gain_calibration_delta()
3521 rt2800_eeprom_read(rt2x00dev, EEPROM_TSSI_BOUND_A3, &eeprom); in rt2800_get_gain_calibration_delta()
3527 rt2800_eeprom_read(rt2x00dev, EEPROM_TSSI_BOUND_A4, &eeprom); in rt2800_get_gain_calibration_delta()
3533 rt2800_eeprom_read(rt2x00dev, EEPROM_TSSI_BOUND_A5, &eeprom); in rt2800_get_gain_calibration_delta()
3550 rt2800_bbp_read(rt2x00dev, 49, &current_tssi); in rt2800_get_gain_calibration_delta()
3571 static int rt2800_get_txpower_bw_comp(struct rt2x00_dev *rt2x00dev, in rt2800_get_txpower_bw_comp() argument
3579 rt2800_eeprom_read(rt2x00dev, EEPROM_TXPOWER_DELTA, &eeprom); in rt2800_get_txpower_bw_comp()
3585 !test_bit(CONFIG_CHANNEL_HT40, &rt2x00dev->flags)) in rt2800_get_txpower_bw_comp()
3615 static int rt2800_get_txpower_reg_delta(struct rt2x00_dev *rt2x00dev, in rt2800_get_txpower_reg_delta() argument
3620 if (rt2x00_has_cap_power_limit(rt2x00dev)) in rt2800_get_txpower_reg_delta()
3636 static u8 rt2800_compensate_txpower(struct rt2x00_dev *rt2x00dev, int is_rate_b, in rt2800_compensate_txpower() argument
3646 if (rt2x00_rt(rt2x00dev, RT3593)) in rt2800_compensate_txpower()
3649 if (rt2x00_has_cap_power_limit(rt2x00dev)) { in rt2800_compensate_txpower()
3657 rt2800_eeprom_read_from_array(rt2x00dev, EEPROM_TXPOWER_BYRATE, in rt2800_compensate_txpower()
3662 rt2800_eeprom_read(rt2x00dev, EEPROM_EIRP_MAX_TX_POWER, in rt2800_compensate_txpower()
3704 static void rt2800_config_txpower_rt3593(struct rt2x00_dev *rt2x00dev, in rt2800_config_txpower_rt3593() argument
3721 delta = rt2800_get_gain_calibration_delta(rt2x00dev); in rt2800_config_txpower_rt3593()
3728 if (test_bit(CONFIG_CHANNEL_HT40, &rt2x00dev->flags)) in rt2800_config_txpower_rt3593()
3732 rt2800_eeprom_read_from_array(rt2x00dev, EEPROM_TXPOWER_BYRATE, in rt2800_config_txpower_rt3593()
3737 txpower = rt2800_compensate_txpower(rt2x00dev, 1, band, power_level, in rt2800_config_txpower_rt3593()
3748 txpower = rt2800_compensate_txpower(rt2x00dev, 1, band, power_level, in rt2800_config_txpower_rt3593()
3759 txpower = rt2800_compensate_txpower(rt2x00dev, 0, band, power_level, in rt2800_config_txpower_rt3593()
3770 txpower = rt2800_compensate_txpower(rt2x00dev, 0, band, power_level, in rt2800_config_txpower_rt3593()
3780 rt2800_eeprom_read_from_array(rt2x00dev, EEPROM_TXPOWER_BYRATE, in rt2800_config_txpower_rt3593()
3785 txpower = rt2800_compensate_txpower(rt2x00dev, 0, band, power_level, in rt2800_config_txpower_rt3593()
3796 txpower = rt2800_compensate_txpower(rt2x00dev, 0, band, power_level, in rt2800_config_txpower_rt3593()
3807 txpower = rt2800_compensate_txpower(rt2x00dev, 0, band, power_level, in rt2800_config_txpower_rt3593()
3817 rt2800_eeprom_read_from_array(rt2x00dev, EEPROM_TXPOWER_BYRATE, in rt2800_config_txpower_rt3593()
3822 txpower = rt2800_compensate_txpower(rt2x00dev, 0, band, power_level, in rt2800_config_txpower_rt3593()
3833 txpower = rt2800_compensate_txpower(rt2x00dev, 0, band, power_level, in rt2800_config_txpower_rt3593()
3844 txpower = rt2800_compensate_txpower(rt2x00dev, 0, band, power_level, in rt2800_config_txpower_rt3593()
3855 txpower = rt2800_compensate_txpower(rt2x00dev, 0, band, power_level, in rt2800_config_txpower_rt3593()
3865 rt2800_eeprom_read_from_array(rt2x00dev, EEPROM_TXPOWER_BYRATE, in rt2800_config_txpower_rt3593()
3870 txpower = rt2800_compensate_txpower(rt2x00dev, 0, band, power_level, in rt2800_config_txpower_rt3593()
3881 txpower = rt2800_compensate_txpower(rt2x00dev, 0, band, power_level, in rt2800_config_txpower_rt3593()
3892 txpower = rt2800_compensate_txpower(rt2x00dev, 0, band, power_level, in rt2800_config_txpower_rt3593()
3903 txpower = rt2800_compensate_txpower(rt2x00dev, 0, band, power_level, in rt2800_config_txpower_rt3593()
3913 rt2800_eeprom_read_from_array(rt2x00dev, EEPROM_TXPOWER_BYRATE, in rt2800_config_txpower_rt3593()
3918 txpower = rt2800_compensate_txpower(rt2x00dev, 0, band, power_level, in rt2800_config_txpower_rt3593()
3929 txpower = rt2800_compensate_txpower(rt2x00dev, 0, band, power_level, in rt2800_config_txpower_rt3593()
3940 txpower = rt2800_compensate_txpower(rt2x00dev, 0, band, power_level, in rt2800_config_txpower_rt3593()
3951 txpower = rt2800_compensate_txpower(rt2x00dev, 0, band, power_level, in rt2800_config_txpower_rt3593()
3961 rt2800_eeprom_read_from_array(rt2x00dev, EEPROM_TXPOWER_BYRATE, in rt2800_config_txpower_rt3593()
3966 txpower = rt2800_compensate_txpower(rt2x00dev, 0, band, power_level, in rt2800_config_txpower_rt3593()
3977 txpower = rt2800_compensate_txpower(rt2x00dev, 0, band, power_level, in rt2800_config_txpower_rt3593()
3988 txpower = rt2800_compensate_txpower(rt2x00dev, 0, band, power_level, in rt2800_config_txpower_rt3593()
3998 rt2800_eeprom_read_from_array(rt2x00dev, EEPROM_TXPOWER_BYRATE, in rt2800_config_txpower_rt3593()
4003 txpower = rt2800_compensate_txpower(rt2x00dev, 0, band, power_level, in rt2800_config_txpower_rt3593()
4014 txpower = rt2800_compensate_txpower(rt2x00dev, 0, band, power_level, in rt2800_config_txpower_rt3593()
4025 txpower = rt2800_compensate_txpower(rt2x00dev, 0, band, power_level, in rt2800_config_txpower_rt3593()
4034 txpower = rt2800_compensate_txpower(rt2x00dev, 0, band, power_level, in rt2800_config_txpower_rt3593()
4042 rt2800_eeprom_read_from_array(rt2x00dev, EEPROM_TXPOWER_BYRATE, in rt2800_config_txpower_rt3593()
4047 txpower = rt2800_compensate_txpower(rt2x00dev, 0, band, power_level, in rt2800_config_txpower_rt3593()
4056 rt2800_register_write(rt2x00dev, TX_PWR_CFG_0, regs[TX_PWR_CFG_0_IDX]); in rt2800_config_txpower_rt3593()
4057 rt2800_register_write(rt2x00dev, TX_PWR_CFG_1, regs[TX_PWR_CFG_1_IDX]); in rt2800_config_txpower_rt3593()
4058 rt2800_register_write(rt2x00dev, TX_PWR_CFG_2, regs[TX_PWR_CFG_2_IDX]); in rt2800_config_txpower_rt3593()
4059 rt2800_register_write(rt2x00dev, TX_PWR_CFG_3, regs[TX_PWR_CFG_3_IDX]); in rt2800_config_txpower_rt3593()
4060 rt2800_register_write(rt2x00dev, TX_PWR_CFG_4, regs[TX_PWR_CFG_4_IDX]); in rt2800_config_txpower_rt3593()
4061 rt2800_register_write(rt2x00dev, TX_PWR_CFG_5, regs[TX_PWR_CFG_5_IDX]); in rt2800_config_txpower_rt3593()
4062 rt2800_register_write(rt2x00dev, TX_PWR_CFG_6, regs[TX_PWR_CFG_6_IDX]); in rt2800_config_txpower_rt3593()
4063 rt2800_register_write(rt2x00dev, TX_PWR_CFG_7, regs[TX_PWR_CFG_7_IDX]); in rt2800_config_txpower_rt3593()
4064 rt2800_register_write(rt2x00dev, TX_PWR_CFG_8, regs[TX_PWR_CFG_8_IDX]); in rt2800_config_txpower_rt3593()
4065 rt2800_register_write(rt2x00dev, TX_PWR_CFG_9, regs[TX_PWR_CFG_9_IDX]); in rt2800_config_txpower_rt3593()
4067 rt2800_register_write(rt2x00dev, TX_PWR_CFG_0_EXT, in rt2800_config_txpower_rt3593()
4069 rt2800_register_write(rt2x00dev, TX_PWR_CFG_1_EXT, in rt2800_config_txpower_rt3593()
4071 rt2800_register_write(rt2x00dev, TX_PWR_CFG_2_EXT, in rt2800_config_txpower_rt3593()
4073 rt2800_register_write(rt2x00dev, TX_PWR_CFG_3_EXT, in rt2800_config_txpower_rt3593()
4075 rt2800_register_write(rt2x00dev, TX_PWR_CFG_4_EXT, in rt2800_config_txpower_rt3593()
4079 rt2x00_dbg(rt2x00dev, in rt2800_config_txpower_rt3593()
4082 (test_bit(CONFIG_CHANNEL_HT40, &rt2x00dev->flags)) ? in rt2800_config_txpower_rt3593()
4099 static void rt2800_config_txpower_rt28xx(struct rt2x00_dev *rt2x00dev, in rt2800_config_txpower_rt28xx() argument
4113 delta = rt2800_get_txpower_bw_comp(rt2x00dev, band); in rt2800_config_txpower_rt28xx()
4122 switch (rt2x00dev->chip.rt) { in rt2800_config_txpower_rt28xx()
4130 delta += rt2800_get_gain_calibration_delta(rt2x00dev); in rt2800_config_txpower_rt28xx()
4142 delta += rt2800_get_txpower_reg_delta(rt2x00dev, power_level, in rt2800_config_txpower_rt28xx()
4162 rt2800_bbp_read(rt2x00dev, 1, &r1); in rt2800_config_txpower_rt28xx()
4164 rt2800_bbp_write(rt2x00dev, 1, r1); in rt2800_config_txpower_rt28xx()
4173 rt2800_register_read(rt2x00dev, offset, &reg); in rt2800_config_txpower_rt28xx()
4176 rt2800_eeprom_read_from_array(rt2x00dev, EEPROM_TXPOWER_BYRATE, in rt2800_config_txpower_rt28xx()
4187 txpower = rt2800_compensate_txpower(rt2x00dev, is_rate_b, band, in rt2800_config_txpower_rt28xx()
4198 txpower = rt2800_compensate_txpower(rt2x00dev, is_rate_b, band, in rt2800_config_txpower_rt28xx()
4209 txpower = rt2800_compensate_txpower(rt2x00dev, is_rate_b, band, in rt2800_config_txpower_rt28xx()
4220 txpower = rt2800_compensate_txpower(rt2x00dev, is_rate_b, band, in rt2800_config_txpower_rt28xx()
4225 rt2800_eeprom_read_from_array(rt2x00dev, EEPROM_TXPOWER_BYRATE, in rt2800_config_txpower_rt28xx()
4236 txpower = rt2800_compensate_txpower(rt2x00dev, is_rate_b, band, in rt2800_config_txpower_rt28xx()
4247 txpower = rt2800_compensate_txpower(rt2x00dev, is_rate_b, band, in rt2800_config_txpower_rt28xx()
4258 txpower = rt2800_compensate_txpower(rt2x00dev, is_rate_b, band, in rt2800_config_txpower_rt28xx()
4269 txpower = rt2800_compensate_txpower(rt2x00dev, is_rate_b, band, in rt2800_config_txpower_rt28xx()
4273 rt2800_register_write(rt2x00dev, offset, reg); in rt2800_config_txpower_rt28xx()
4280 static void rt2800_config_txpower(struct rt2x00_dev *rt2x00dev, in rt2800_config_txpower() argument
4284 if (rt2x00_rt(rt2x00dev, RT3593)) in rt2800_config_txpower()
4285 rt2800_config_txpower_rt3593(rt2x00dev, chan, power_level); in rt2800_config_txpower()
4287 rt2800_config_txpower_rt28xx(rt2x00dev, chan, power_level); in rt2800_config_txpower()
4290 void rt2800_gain_calibration(struct rt2x00_dev *rt2x00dev) in rt2800_gain_calibration() argument
4292 rt2800_config_txpower(rt2x00dev, rt2x00dev->hw->conf.chandef.chan, in rt2800_gain_calibration()
4293 rt2x00dev->tx_power); in rt2800_gain_calibration()
4297 void rt2800_vco_calibration(struct rt2x00_dev *rt2x00dev) in rt2800_vco_calibration() argument
4310 rt2800_register_read(rt2x00dev, TX_PIN_CFG, &tx_pin); in rt2800_vco_calibration()
4312 rt2800_register_write(rt2x00dev, TX_PIN_CFG, tx_pin); in rt2800_vco_calibration()
4314 switch (rt2x00dev->chip.rf) { in rt2800_vco_calibration()
4321 rt2800_rfcsr_read(rt2x00dev, 7, &rfcsr); in rt2800_vco_calibration()
4323 rt2800_rfcsr_write(rt2x00dev, 7, rfcsr); in rt2800_vco_calibration()
4334 rt2800_rfcsr_read(rt2x00dev, 3, &rfcsr); in rt2800_vco_calibration()
4336 rt2800_rfcsr_write(rt2x00dev, 3, rfcsr); in rt2800_vco_calibration()
4344 rt2800_register_read(rt2x00dev, TX_PIN_CFG, &tx_pin); in rt2800_vco_calibration()
4345 if (rt2x00dev->rf_channel <= 14) { in rt2800_vco_calibration()
4346 switch (rt2x00dev->default_ant.tx_chain_num) { in rt2800_vco_calibration()
4359 switch (rt2x00dev->default_ant.tx_chain_num) { in rt2800_vco_calibration()
4372 rt2800_register_write(rt2x00dev, TX_PIN_CFG, tx_pin); in rt2800_vco_calibration()
4377 static void rt2800_config_retry_limit(struct rt2x00_dev *rt2x00dev, in rt2800_config_retry_limit() argument
4382 rt2800_register_read(rt2x00dev, TX_RTY_CFG, &reg); in rt2800_config_retry_limit()
4387 rt2800_register_write(rt2x00dev, TX_RTY_CFG, reg); in rt2800_config_retry_limit()
4390 static void rt2800_config_ps(struct rt2x00_dev *rt2x00dev, in rt2800_config_ps() argument
4399 rt2800_register_write(rt2x00dev, AUTOWAKEUP_CFG, 0); in rt2800_config_ps()
4401 rt2800_register_read(rt2x00dev, AUTOWAKEUP_CFG, &reg); in rt2800_config_ps()
4406 rt2800_register_write(rt2x00dev, AUTOWAKEUP_CFG, reg); in rt2800_config_ps()
4408 rt2x00dev->ops->lib->set_device_state(rt2x00dev, state); in rt2800_config_ps()
4410 rt2800_register_read(rt2x00dev, AUTOWAKEUP_CFG, &reg); in rt2800_config_ps()
4414 rt2800_register_write(rt2x00dev, AUTOWAKEUP_CFG, reg); in rt2800_config_ps()
4416 rt2x00dev->ops->lib->set_device_state(rt2x00dev, state); in rt2800_config_ps()
4420 void rt2800_config(struct rt2x00_dev *rt2x00dev, in rt2800_config() argument
4425 rt2800_config_lna_gain(rt2x00dev, libconf); in rt2800_config()
4428 rt2800_config_channel(rt2x00dev, libconf->conf, in rt2800_config()
4430 rt2800_config_txpower(rt2x00dev, libconf->conf->chandef.chan, in rt2800_config()
4434 rt2800_config_txpower(rt2x00dev, libconf->conf->chandef.chan, in rt2800_config()
4437 rt2800_config_retry_limit(rt2x00dev, libconf); in rt2800_config()
4439 rt2800_config_ps(rt2x00dev, libconf); in rt2800_config()
4446 void rt2800_link_stats(struct rt2x00_dev *rt2x00dev, struct link_qual *qual) in rt2800_link_stats() argument
4453 rt2800_register_read(rt2x00dev, RX_STA_CNT0, &reg); in rt2800_link_stats()
4458 static u8 rt2800_get_default_vgc(struct rt2x00_dev *rt2x00dev) in rt2800_get_default_vgc() argument
4462 if (rt2x00dev->curr_band == IEEE80211_BAND_2GHZ) { in rt2800_get_default_vgc()
4463 if (rt2x00_rt(rt2x00dev, RT3070) || in rt2800_get_default_vgc()
4464 rt2x00_rt(rt2x00dev, RT3071) || in rt2800_get_default_vgc()
4465 rt2x00_rt(rt2x00dev, RT3090) || in rt2800_get_default_vgc()
4466 rt2x00_rt(rt2x00dev, RT3290) || in rt2800_get_default_vgc()
4467 rt2x00_rt(rt2x00dev, RT3390) || in rt2800_get_default_vgc()
4468 rt2x00_rt(rt2x00dev, RT3572) || in rt2800_get_default_vgc()
4469 rt2x00_rt(rt2x00dev, RT3593) || in rt2800_get_default_vgc()
4470 rt2x00_rt(rt2x00dev, RT5390) || in rt2800_get_default_vgc()
4471 rt2x00_rt(rt2x00dev, RT5392) || in rt2800_get_default_vgc()
4472 rt2x00_rt(rt2x00dev, RT5592)) in rt2800_get_default_vgc()
4473 vgc = 0x1c + (2 * rt2x00dev->lna_gain); in rt2800_get_default_vgc()
4475 vgc = 0x2e + rt2x00dev->lna_gain; in rt2800_get_default_vgc()
4477 if (rt2x00_rt(rt2x00dev, RT3593)) in rt2800_get_default_vgc()
4478 vgc = 0x20 + (rt2x00dev->lna_gain * 5) / 3; in rt2800_get_default_vgc()
4479 else if (rt2x00_rt(rt2x00dev, RT5592)) in rt2800_get_default_vgc()
4480 vgc = 0x24 + (2 * rt2x00dev->lna_gain); in rt2800_get_default_vgc()
4482 if (!test_bit(CONFIG_CHANNEL_HT40, &rt2x00dev->flags)) in rt2800_get_default_vgc()
4483 vgc = 0x32 + (rt2x00dev->lna_gain * 5) / 3; in rt2800_get_default_vgc()
4485 vgc = 0x3a + (rt2x00dev->lna_gain * 5) / 3; in rt2800_get_default_vgc()
4492 static inline void rt2800_set_vgc(struct rt2x00_dev *rt2x00dev, in rt2800_set_vgc() argument
4496 if (rt2x00_rt(rt2x00dev, RT3572) || in rt2800_set_vgc()
4497 rt2x00_rt(rt2x00dev, RT3593)) { in rt2800_set_vgc()
4498 rt2800_bbp_write_with_rx_chain(rt2x00dev, 66, in rt2800_set_vgc()
4500 } else if (rt2x00_rt(rt2x00dev, RT5592)) { in rt2800_set_vgc()
4501 rt2800_bbp_write(rt2x00dev, 83, qual->rssi > -65 ? 0x4a : 0x7a); in rt2800_set_vgc()
4502 rt2800_bbp_write_with_rx_chain(rt2x00dev, 66, vgc_level); in rt2800_set_vgc()
4504 rt2800_bbp_write(rt2x00dev, 66, vgc_level); in rt2800_set_vgc()
4512 void rt2800_reset_tuner(struct rt2x00_dev *rt2x00dev, struct link_qual *qual) in rt2800_reset_tuner() argument
4514 rt2800_set_vgc(rt2x00dev, qual, rt2800_get_default_vgc(rt2x00dev)); in rt2800_reset_tuner()
4518 void rt2800_link_tuner(struct rt2x00_dev *rt2x00dev, struct link_qual *qual, in rt2800_link_tuner() argument
4523 if (rt2x00_rt_rev(rt2x00dev, RT2860, REV_RT2860C)) in rt2800_link_tuner()
4531 vgc = rt2800_get_default_vgc(rt2x00dev); in rt2800_link_tuner()
4533 switch (rt2x00dev->chip.rt) { in rt2800_link_tuner()
4537 if (rt2x00dev->curr_band == IEEE80211_BAND_2GHZ) in rt2800_link_tuner()
4555 rt2800_set_vgc(rt2x00dev, qual, vgc); in rt2800_link_tuner()
4562 static int rt2800_init_registers(struct rt2x00_dev *rt2x00dev) in rt2800_init_registers() argument
4569 rt2800_disable_wpdma(rt2x00dev); in rt2800_init_registers()
4571 ret = rt2800_drv_init_registers(rt2x00dev); in rt2800_init_registers()
4575 rt2800_register_write(rt2x00dev, LEGACY_BASIC_RATE, 0x0000013f); in rt2800_init_registers()
4576 rt2800_register_write(rt2x00dev, HT_BASIC_RATE, 0x00008003); in rt2800_init_registers()
4578 rt2800_register_write(rt2x00dev, MAC_SYS_CTRL, 0x00000000); in rt2800_init_registers()
4580 rt2800_register_read(rt2x00dev, BCN_TIME_CFG, &reg); in rt2800_init_registers()
4587 rt2800_register_write(rt2x00dev, BCN_TIME_CFG, reg); in rt2800_init_registers()
4589 rt2800_config_filter(rt2x00dev, FIF_ALLMULTI); in rt2800_init_registers()
4591 rt2800_register_read(rt2x00dev, BKOFF_SLOT_CFG, &reg); in rt2800_init_registers()
4594 rt2800_register_write(rt2x00dev, BKOFF_SLOT_CFG, reg); in rt2800_init_registers()
4596 if (rt2x00_rt(rt2x00dev, RT3290)) { in rt2800_init_registers()
4597 rt2800_register_read(rt2x00dev, WLAN_FUN_CTRL, &reg); in rt2800_init_registers()
4600 rt2800_register_write(rt2x00dev, WLAN_FUN_CTRL, reg); in rt2800_init_registers()
4603 rt2800_register_read(rt2x00dev, CMB_CTRL, &reg); in rt2800_init_registers()
4607 rt2800_register_write(rt2x00dev, CMB_CTRL, reg); in rt2800_init_registers()
4610 rt2800_register_read(rt2x00dev, OSC_CTRL, &reg); in rt2800_init_registers()
4614 rt2800_register_write(rt2x00dev, OSC_CTRL, reg); in rt2800_init_registers()
4616 rt2800_register_read(rt2x00dev, COEX_CFG0, &reg); in rt2800_init_registers()
4618 rt2800_register_write(rt2x00dev, COEX_CFG0, reg); in rt2800_init_registers()
4620 rt2800_register_read(rt2x00dev, COEX_CFG2, &reg); in rt2800_init_registers()
4625 rt2800_register_write(rt2x00dev, COEX_CFG2, reg); in rt2800_init_registers()
4627 rt2800_register_read(rt2x00dev, PLL_CTRL, &reg); in rt2800_init_registers()
4629 rt2800_register_write(rt2x00dev, PLL_CTRL, reg); in rt2800_init_registers()
4632 if (rt2x00_rt(rt2x00dev, RT3071) || in rt2800_init_registers()
4633 rt2x00_rt(rt2x00dev, RT3090) || in rt2800_init_registers()
4634 rt2x00_rt(rt2x00dev, RT3290) || in rt2800_init_registers()
4635 rt2x00_rt(rt2x00dev, RT3390)) { in rt2800_init_registers()
4637 if (rt2x00_rt(rt2x00dev, RT3290)) in rt2800_init_registers()
4638 rt2800_register_write(rt2x00dev, TX_SW_CFG0, in rt2800_init_registers()
4641 rt2800_register_write(rt2x00dev, TX_SW_CFG0, in rt2800_init_registers()
4644 rt2800_register_write(rt2x00dev, TX_SW_CFG1, 0x00000000); in rt2800_init_registers()
4645 if (rt2x00_rt_rev_lt(rt2x00dev, RT3071, REV_RT3071E) || in rt2800_init_registers()
4646 rt2x00_rt_rev_lt(rt2x00dev, RT3090, REV_RT3090E) || in rt2800_init_registers()
4647 rt2x00_rt_rev_lt(rt2x00dev, RT3390, REV_RT3390E)) { in rt2800_init_registers()
4648 rt2800_eeprom_read(rt2x00dev, EEPROM_NIC_CONF1, in rt2800_init_registers()
4651 rt2800_register_write(rt2x00dev, TX_SW_CFG2, in rt2800_init_registers()
4654 rt2800_register_write(rt2x00dev, TX_SW_CFG2, in rt2800_init_registers()
4657 rt2800_register_write(rt2x00dev, TX_SW_CFG2, 0x00000000); in rt2800_init_registers()
4659 } else if (rt2x00_rt(rt2x00dev, RT3070)) { in rt2800_init_registers()
4660 rt2800_register_write(rt2x00dev, TX_SW_CFG0, 0x00000400); in rt2800_init_registers()
4662 if (rt2x00_rt_rev_lt(rt2x00dev, RT3070, REV_RT3070F)) { in rt2800_init_registers()
4663 rt2800_register_write(rt2x00dev, TX_SW_CFG1, 0x00000000); in rt2800_init_registers()
4664 rt2800_register_write(rt2x00dev, TX_SW_CFG2, 0x0000002c); in rt2800_init_registers()
4666 rt2800_register_write(rt2x00dev, TX_SW_CFG1, 0x00080606); in rt2800_init_registers()
4667 rt2800_register_write(rt2x00dev, TX_SW_CFG2, 0x00000000); in rt2800_init_registers()
4669 } else if (rt2800_is_305x_soc(rt2x00dev)) { in rt2800_init_registers()
4670 rt2800_register_write(rt2x00dev, TX_SW_CFG0, 0x00000400); in rt2800_init_registers()
4671 rt2800_register_write(rt2x00dev, TX_SW_CFG1, 0x00000000); in rt2800_init_registers()
4672 rt2800_register_write(rt2x00dev, TX_SW_CFG2, 0x00000030); in rt2800_init_registers()
4673 } else if (rt2x00_rt(rt2x00dev, RT3352)) { in rt2800_init_registers()
4674 rt2800_register_write(rt2x00dev, TX_SW_CFG0, 0x00000402); in rt2800_init_registers()
4675 rt2800_register_write(rt2x00dev, TX_SW_CFG1, 0x00080606); in rt2800_init_registers()
4676 rt2800_register_write(rt2x00dev, TX_SW_CFG2, 0x00000000); in rt2800_init_registers()
4677 } else if (rt2x00_rt(rt2x00dev, RT3572)) { in rt2800_init_registers()
4678 rt2800_register_write(rt2x00dev, TX_SW_CFG0, 0x00000400); in rt2800_init_registers()
4679 rt2800_register_write(rt2x00dev, TX_SW_CFG1, 0x00080606); in rt2800_init_registers()
4680 } else if (rt2x00_rt(rt2x00dev, RT3593)) { in rt2800_init_registers()
4681 rt2800_register_write(rt2x00dev, TX_SW_CFG0, 0x00000402); in rt2800_init_registers()
4682 rt2800_register_write(rt2x00dev, TX_SW_CFG1, 0x00000000); in rt2800_init_registers()
4683 if (rt2x00_rt_rev_lt(rt2x00dev, RT3593, REV_RT3593E)) { in rt2800_init_registers()
4684 rt2800_eeprom_read(rt2x00dev, EEPROM_NIC_CONF1, in rt2800_init_registers()
4688 rt2800_register_write(rt2x00dev, TX_SW_CFG2, in rt2800_init_registers()
4691 rt2800_register_write(rt2x00dev, TX_SW_CFG2, in rt2800_init_registers()
4694 rt2800_register_write(rt2x00dev, TX_SW_CFG2, in rt2800_init_registers()
4697 } else if (rt2x00_rt(rt2x00dev, RT5390) || in rt2800_init_registers()
4698 rt2x00_rt(rt2x00dev, RT5392) || in rt2800_init_registers()
4699 rt2x00_rt(rt2x00dev, RT5592)) { in rt2800_init_registers()
4700 rt2800_register_write(rt2x00dev, TX_SW_CFG0, 0x00000404); in rt2800_init_registers()
4701 rt2800_register_write(rt2x00dev, TX_SW_CFG1, 0x00080606); in rt2800_init_registers()
4702 rt2800_register_write(rt2x00dev, TX_SW_CFG2, 0x00000000); in rt2800_init_registers()
4704 rt2800_register_write(rt2x00dev, TX_SW_CFG0, 0x00000000); in rt2800_init_registers()
4705 rt2800_register_write(rt2x00dev, TX_SW_CFG1, 0x00080606); in rt2800_init_registers()
4708 rt2800_register_read(rt2x00dev, TX_LINK_CFG, &reg); in rt2800_init_registers()
4717 rt2800_register_write(rt2x00dev, TX_LINK_CFG, reg); in rt2800_init_registers()
4719 rt2800_register_read(rt2x00dev, TX_TIMEOUT_CFG, &reg); in rt2800_init_registers()
4723 rt2800_register_write(rt2x00dev, TX_TIMEOUT_CFG, reg); in rt2800_init_registers()
4725 rt2800_register_read(rt2x00dev, MAX_LEN_CFG, &reg); in rt2800_init_registers()
4727 if (rt2x00_rt_rev_gte(rt2x00dev, RT2872, REV_RT2872E) || in rt2800_init_registers()
4728 rt2x00_rt(rt2x00dev, RT2883) || in rt2800_init_registers()
4729 rt2x00_rt_rev_lt(rt2x00dev, RT3070, REV_RT3070E)) in rt2800_init_registers()
4735 rt2800_register_write(rt2x00dev, MAX_LEN_CFG, reg); in rt2800_init_registers()
4737 rt2800_register_read(rt2x00dev, LED_CFG, &reg); in rt2800_init_registers()
4745 rt2800_register_write(rt2x00dev, LED_CFG, reg); in rt2800_init_registers()
4747 rt2800_register_write(rt2x00dev, PBF_MAX_PCNT, 0x1f3fbf9f); in rt2800_init_registers()
4749 rt2800_register_read(rt2x00dev, TX_RTY_CFG, &reg); in rt2800_init_registers()
4756 rt2800_register_write(rt2x00dev, TX_RTY_CFG, reg); in rt2800_init_registers()
4758 rt2800_register_read(rt2x00dev, AUTO_RSP_CFG, &reg); in rt2800_init_registers()
4766 rt2800_register_write(rt2x00dev, AUTO_RSP_CFG, reg); in rt2800_init_registers()
4768 rt2800_register_read(rt2x00dev, CCK_PROT_CFG, &reg); in rt2800_init_registers()
4779 rt2800_register_write(rt2x00dev, CCK_PROT_CFG, reg); in rt2800_init_registers()
4781 rt2800_register_read(rt2x00dev, OFDM_PROT_CFG, &reg); in rt2800_init_registers()
4792 rt2800_register_write(rt2x00dev, OFDM_PROT_CFG, reg); in rt2800_init_registers()
4794 rt2800_register_read(rt2x00dev, MM20_PROT_CFG, &reg); in rt2800_init_registers()
4805 rt2800_register_write(rt2x00dev, MM20_PROT_CFG, reg); in rt2800_init_registers()
4807 rt2800_register_read(rt2x00dev, MM40_PROT_CFG, &reg); in rt2800_init_registers()
4818 rt2800_register_write(rt2x00dev, MM40_PROT_CFG, reg); in rt2800_init_registers()
4820 rt2800_register_read(rt2x00dev, GF20_PROT_CFG, &reg); in rt2800_init_registers()
4831 rt2800_register_write(rt2x00dev, GF20_PROT_CFG, reg); in rt2800_init_registers()
4833 rt2800_register_read(rt2x00dev, GF40_PROT_CFG, &reg); in rt2800_init_registers()
4844 rt2800_register_write(rt2x00dev, GF40_PROT_CFG, reg); in rt2800_init_registers()
4846 if (rt2x00_is_usb(rt2x00dev)) { in rt2800_init_registers()
4847 rt2800_register_write(rt2x00dev, PBF_CFG, 0xf40006); in rt2800_init_registers()
4849 rt2800_register_read(rt2x00dev, WPDMA_GLO_CFG, &reg); in rt2800_init_registers()
4859 rt2800_register_write(rt2x00dev, WPDMA_GLO_CFG, reg); in rt2800_init_registers()
4866 rt2800_register_read(rt2x00dev, TXOP_CTRL_CFG, &reg); in rt2800_init_registers()
4877 rt2800_register_write(rt2x00dev, TXOP_CTRL_CFG, reg); in rt2800_init_registers()
4879 reg = rt2x00_rt(rt2x00dev, RT5592) ? 0x00000082 : 0x00000002; in rt2800_init_registers()
4880 rt2800_register_write(rt2x00dev, TXOP_HLDR_ET, reg); in rt2800_init_registers()
4882 rt2800_register_read(rt2x00dev, TX_RTS_CFG, &reg); in rt2800_init_registers()
4887 rt2800_register_write(rt2x00dev, TX_RTS_CFG, reg); in rt2800_init_registers()
4889 rt2800_register_write(rt2x00dev, EXP_ACK_TIME, 0x002400ca); in rt2800_init_registers()
4898 rt2800_register_read(rt2x00dev, XIFS_TIME_CFG, &reg); in rt2800_init_registers()
4904 rt2800_register_write(rt2x00dev, XIFS_TIME_CFG, reg); in rt2800_init_registers()
4906 rt2800_register_write(rt2x00dev, PWR_PIN_CFG, 0x00000003); in rt2800_init_registers()
4912 rt2800_register_write(rt2x00dev, in rt2800_init_registers()
4916 rt2800_config_wcid(rt2x00dev, NULL, i); in rt2800_init_registers()
4917 rt2800_delete_wcid_attr(rt2x00dev, i); in rt2800_init_registers()
4918 rt2800_register_write(rt2x00dev, MAC_IVEIV_ENTRY(i), 0); in rt2800_init_registers()
4925 rt2800_clear_beacon_register(rt2x00dev, i); in rt2800_init_registers()
4927 if (rt2x00_is_usb(rt2x00dev)) { in rt2800_init_registers()
4928 rt2800_register_read(rt2x00dev, US_CYC_CNT, &reg); in rt2800_init_registers()
4930 rt2800_register_write(rt2x00dev, US_CYC_CNT, reg); in rt2800_init_registers()
4931 } else if (rt2x00_is_pcie(rt2x00dev)) { in rt2800_init_registers()
4932 rt2800_register_read(rt2x00dev, US_CYC_CNT, &reg); in rt2800_init_registers()
4934 rt2800_register_write(rt2x00dev, US_CYC_CNT, reg); in rt2800_init_registers()
4937 rt2800_register_read(rt2x00dev, HT_FBK_CFG0, &reg); in rt2800_init_registers()
4946 rt2800_register_write(rt2x00dev, HT_FBK_CFG0, reg); in rt2800_init_registers()
4948 rt2800_register_read(rt2x00dev, HT_FBK_CFG1, &reg); in rt2800_init_registers()
4957 rt2800_register_write(rt2x00dev, HT_FBK_CFG1, reg); in rt2800_init_registers()
4959 rt2800_register_read(rt2x00dev, LG_FBK_CFG0, &reg); in rt2800_init_registers()
4968 rt2800_register_write(rt2x00dev, LG_FBK_CFG0, reg); in rt2800_init_registers()
4970 rt2800_register_read(rt2x00dev, LG_FBK_CFG1, &reg); in rt2800_init_registers()
4975 rt2800_register_write(rt2x00dev, LG_FBK_CFG1, reg); in rt2800_init_registers()
4980 rt2800_register_read(rt2x00dev, AMPDU_BA_WINSIZE, &reg); in rt2800_init_registers()
4983 rt2800_register_write(rt2x00dev, AMPDU_BA_WINSIZE, reg); in rt2800_init_registers()
4990 rt2800_register_read(rt2x00dev, RX_STA_CNT0, &reg); in rt2800_init_registers()
4991 rt2800_register_read(rt2x00dev, RX_STA_CNT1, &reg); in rt2800_init_registers()
4992 rt2800_register_read(rt2x00dev, RX_STA_CNT2, &reg); in rt2800_init_registers()
4993 rt2800_register_read(rt2x00dev, TX_STA_CNT0, &reg); in rt2800_init_registers()
4994 rt2800_register_read(rt2x00dev, TX_STA_CNT1, &reg); in rt2800_init_registers()
4995 rt2800_register_read(rt2x00dev, TX_STA_CNT2, &reg); in rt2800_init_registers()
5000 rt2800_register_read(rt2x00dev, INT_TIMER_CFG, &reg); in rt2800_init_registers()
5002 rt2800_register_write(rt2x00dev, INT_TIMER_CFG, reg); in rt2800_init_registers()
5007 rt2800_register_read(rt2x00dev, CH_TIME_CFG, &reg); in rt2800_init_registers()
5013 rt2800_register_write(rt2x00dev, CH_TIME_CFG, reg); in rt2800_init_registers()
5018 static int rt2800_wait_bbp_rf_ready(struct rt2x00_dev *rt2x00dev) in rt2800_wait_bbp_rf_ready() argument
5024 rt2800_register_read(rt2x00dev, MAC_STATUS_CFG, &reg); in rt2800_wait_bbp_rf_ready()
5031 rt2x00_err(rt2x00dev, "BBP/RF register access failed, aborting\n"); in rt2800_wait_bbp_rf_ready()
5035 static int rt2800_wait_bbp_ready(struct rt2x00_dev *rt2x00dev) in rt2800_wait_bbp_ready() argument
5044 rt2800_register_write(rt2x00dev, H2M_BBP_AGENT, 0); in rt2800_wait_bbp_ready()
5045 rt2800_register_write(rt2x00dev, H2M_MAILBOX_CSR, 0); in rt2800_wait_bbp_ready()
5049 rt2800_bbp_read(rt2x00dev, 0, &value); in rt2800_wait_bbp_ready()
5055 rt2x00_err(rt2x00dev, "BBP register access failed, aborting\n"); in rt2800_wait_bbp_ready()
5059 static void rt2800_bbp4_mac_if_ctrl(struct rt2x00_dev *rt2x00dev) in rt2800_bbp4_mac_if_ctrl() argument
5063 rt2800_bbp_read(rt2x00dev, 4, &value); in rt2800_bbp4_mac_if_ctrl()
5065 rt2800_bbp_write(rt2x00dev, 4, value); in rt2800_bbp4_mac_if_ctrl()
5068 static void rt2800_init_freq_calibration(struct rt2x00_dev *rt2x00dev) in rt2800_init_freq_calibration() argument
5070 rt2800_bbp_write(rt2x00dev, 142, 1); in rt2800_init_freq_calibration()
5071 rt2800_bbp_write(rt2x00dev, 143, 57); in rt2800_init_freq_calibration()
5074 static void rt2800_init_bbp_5592_glrt(struct rt2x00_dev *rt2x00dev) in rt2800_init_bbp_5592_glrt() argument
5090 rt2800_bbp_write(rt2x00dev, 195, 128 + i); in rt2800_init_bbp_5592_glrt()
5091 rt2800_bbp_write(rt2x00dev, 196, glrt_table[i]); in rt2800_init_bbp_5592_glrt()
5095 static void rt2800_init_bbp_early(struct rt2x00_dev *rt2x00dev) in rt2800_init_bbp_early() argument
5097 rt2800_bbp_write(rt2x00dev, 65, 0x2C); in rt2800_init_bbp_early()
5098 rt2800_bbp_write(rt2x00dev, 66, 0x38); in rt2800_init_bbp_early()
5099 rt2800_bbp_write(rt2x00dev, 68, 0x0B); in rt2800_init_bbp_early()
5100 rt2800_bbp_write(rt2x00dev, 69, 0x12); in rt2800_init_bbp_early()
5101 rt2800_bbp_write(rt2x00dev, 70, 0x0a); in rt2800_init_bbp_early()
5102 rt2800_bbp_write(rt2x00dev, 73, 0x10); in rt2800_init_bbp_early()
5103 rt2800_bbp_write(rt2x00dev, 81, 0x37); in rt2800_init_bbp_early()
5104 rt2800_bbp_write(rt2x00dev, 82, 0x62); in rt2800_init_bbp_early()
5105 rt2800_bbp_write(rt2x00dev, 83, 0x6A); in rt2800_init_bbp_early()
5106 rt2800_bbp_write(rt2x00dev, 84, 0x99); in rt2800_init_bbp_early()
5107 rt2800_bbp_write(rt2x00dev, 86, 0x00); in rt2800_init_bbp_early()
5108 rt2800_bbp_write(rt2x00dev, 91, 0x04); in rt2800_init_bbp_early()
5109 rt2800_bbp_write(rt2x00dev, 92, 0x00); in rt2800_init_bbp_early()
5110 rt2800_bbp_write(rt2x00dev, 103, 0x00); in rt2800_init_bbp_early()
5111 rt2800_bbp_write(rt2x00dev, 105, 0x05); in rt2800_init_bbp_early()
5112 rt2800_bbp_write(rt2x00dev, 106, 0x35); in rt2800_init_bbp_early()
5115 static void rt2800_disable_unused_dac_adc(struct rt2x00_dev *rt2x00dev) in rt2800_disable_unused_dac_adc() argument
5120 rt2800_bbp_read(rt2x00dev, 138, &value); in rt2800_disable_unused_dac_adc()
5121 rt2800_eeprom_read(rt2x00dev, EEPROM_NIC_CONF0, &eeprom); in rt2800_disable_unused_dac_adc()
5126 rt2800_bbp_write(rt2x00dev, 138, value); in rt2800_disable_unused_dac_adc()
5129 static void rt2800_init_bbp_305x_soc(struct rt2x00_dev *rt2x00dev) in rt2800_init_bbp_305x_soc() argument
5131 rt2800_bbp_write(rt2x00dev, 31, 0x08); in rt2800_init_bbp_305x_soc()
5133 rt2800_bbp_write(rt2x00dev, 65, 0x2c); in rt2800_init_bbp_305x_soc()
5134 rt2800_bbp_write(rt2x00dev, 66, 0x38); in rt2800_init_bbp_305x_soc()
5136 rt2800_bbp_write(rt2x00dev, 69, 0x12); in rt2800_init_bbp_305x_soc()
5137 rt2800_bbp_write(rt2x00dev, 73, 0x10); in rt2800_init_bbp_305x_soc()
5139 rt2800_bbp_write(rt2x00dev, 70, 0x0a); in rt2800_init_bbp_305x_soc()
5141 rt2800_bbp_write(rt2x00dev, 78, 0x0e); in rt2800_init_bbp_305x_soc()
5142 rt2800_bbp_write(rt2x00dev, 80, 0x08); in rt2800_init_bbp_305x_soc()
5144 rt2800_bbp_write(rt2x00dev, 82, 0x62); in rt2800_init_bbp_305x_soc()
5146 rt2800_bbp_write(rt2x00dev, 83, 0x6a); in rt2800_init_bbp_305x_soc()
5148 rt2800_bbp_write(rt2x00dev, 84, 0x99); in rt2800_init_bbp_305x_soc()
5150 rt2800_bbp_write(rt2x00dev, 86, 0x00); in rt2800_init_bbp_305x_soc()
5152 rt2800_bbp_write(rt2x00dev, 91, 0x04); in rt2800_init_bbp_305x_soc()
5154 rt2800_bbp_write(rt2x00dev, 92, 0x00); in rt2800_init_bbp_305x_soc()
5156 rt2800_bbp_write(rt2x00dev, 103, 0xc0); in rt2800_init_bbp_305x_soc()
5158 rt2800_bbp_write(rt2x00dev, 105, 0x01); in rt2800_init_bbp_305x_soc()
5160 rt2800_bbp_write(rt2x00dev, 106, 0x35); in rt2800_init_bbp_305x_soc()
5163 static void rt2800_init_bbp_28xx(struct rt2x00_dev *rt2x00dev) in rt2800_init_bbp_28xx() argument
5165 rt2800_bbp_write(rt2x00dev, 65, 0x2c); in rt2800_init_bbp_28xx()
5166 rt2800_bbp_write(rt2x00dev, 66, 0x38); in rt2800_init_bbp_28xx()
5168 if (rt2x00_rt_rev(rt2x00dev, RT2860, REV_RT2860C)) { in rt2800_init_bbp_28xx()
5169 rt2800_bbp_write(rt2x00dev, 69, 0x16); in rt2800_init_bbp_28xx()
5170 rt2800_bbp_write(rt2x00dev, 73, 0x12); in rt2800_init_bbp_28xx()
5172 rt2800_bbp_write(rt2x00dev, 69, 0x12); in rt2800_init_bbp_28xx()
5173 rt2800_bbp_write(rt2x00dev, 73, 0x10); in rt2800_init_bbp_28xx()
5176 rt2800_bbp_write(rt2x00dev, 70, 0x0a); in rt2800_init_bbp_28xx()
5178 rt2800_bbp_write(rt2x00dev, 81, 0x37); in rt2800_init_bbp_28xx()
5180 rt2800_bbp_write(rt2x00dev, 82, 0x62); in rt2800_init_bbp_28xx()
5182 rt2800_bbp_write(rt2x00dev, 83, 0x6a); in rt2800_init_bbp_28xx()
5184 if (rt2x00_rt_rev(rt2x00dev, RT2860, REV_RT2860D)) in rt2800_init_bbp_28xx()
5185 rt2800_bbp_write(rt2x00dev, 84, 0x19); in rt2800_init_bbp_28xx()
5187 rt2800_bbp_write(rt2x00dev, 84, 0x99); in rt2800_init_bbp_28xx()
5189 rt2800_bbp_write(rt2x00dev, 86, 0x00); in rt2800_init_bbp_28xx()
5191 rt2800_bbp_write(rt2x00dev, 91, 0x04); in rt2800_init_bbp_28xx()
5193 rt2800_bbp_write(rt2x00dev, 92, 0x00); in rt2800_init_bbp_28xx()
5195 rt2800_bbp_write(rt2x00dev, 103, 0x00); in rt2800_init_bbp_28xx()
5197 rt2800_bbp_write(rt2x00dev, 105, 0x05); in rt2800_init_bbp_28xx()
5199 rt2800_bbp_write(rt2x00dev, 106, 0x35); in rt2800_init_bbp_28xx()
5202 static void rt2800_init_bbp_30xx(struct rt2x00_dev *rt2x00dev) in rt2800_init_bbp_30xx() argument
5204 rt2800_bbp_write(rt2x00dev, 65, 0x2c); in rt2800_init_bbp_30xx()
5205 rt2800_bbp_write(rt2x00dev, 66, 0x38); in rt2800_init_bbp_30xx()
5207 rt2800_bbp_write(rt2x00dev, 69, 0x12); in rt2800_init_bbp_30xx()
5208 rt2800_bbp_write(rt2x00dev, 73, 0x10); in rt2800_init_bbp_30xx()
5210 rt2800_bbp_write(rt2x00dev, 70, 0x0a); in rt2800_init_bbp_30xx()
5212 rt2800_bbp_write(rt2x00dev, 79, 0x13); in rt2800_init_bbp_30xx()
5213 rt2800_bbp_write(rt2x00dev, 80, 0x05); in rt2800_init_bbp_30xx()
5214 rt2800_bbp_write(rt2x00dev, 81, 0x33); in rt2800_init_bbp_30xx()
5216 rt2800_bbp_write(rt2x00dev, 82, 0x62); in rt2800_init_bbp_30xx()
5218 rt2800_bbp_write(rt2x00dev, 83, 0x6a); in rt2800_init_bbp_30xx()
5220 rt2800_bbp_write(rt2x00dev, 84, 0x99); in rt2800_init_bbp_30xx()
5222 rt2800_bbp_write(rt2x00dev, 86, 0x00); in rt2800_init_bbp_30xx()
5224 rt2800_bbp_write(rt2x00dev, 91, 0x04); in rt2800_init_bbp_30xx()
5226 rt2800_bbp_write(rt2x00dev, 92, 0x00); in rt2800_init_bbp_30xx()
5228 if (rt2x00_rt_rev_gte(rt2x00dev, RT3070, REV_RT3070F) || in rt2800_init_bbp_30xx()
5229 rt2x00_rt_rev_gte(rt2x00dev, RT3071, REV_RT3071E) || in rt2800_init_bbp_30xx()
5230 rt2x00_rt_rev_gte(rt2x00dev, RT3090, REV_RT3090E)) in rt2800_init_bbp_30xx()
5231 rt2800_bbp_write(rt2x00dev, 103, 0xc0); in rt2800_init_bbp_30xx()
5233 rt2800_bbp_write(rt2x00dev, 103, 0x00); in rt2800_init_bbp_30xx()
5235 rt2800_bbp_write(rt2x00dev, 105, 0x05); in rt2800_init_bbp_30xx()
5237 rt2800_bbp_write(rt2x00dev, 106, 0x35); in rt2800_init_bbp_30xx()
5239 if (rt2x00_rt(rt2x00dev, RT3071) || in rt2800_init_bbp_30xx()
5240 rt2x00_rt(rt2x00dev, RT3090)) in rt2800_init_bbp_30xx()
5241 rt2800_disable_unused_dac_adc(rt2x00dev); in rt2800_init_bbp_30xx()
5244 static void rt2800_init_bbp_3290(struct rt2x00_dev *rt2x00dev) in rt2800_init_bbp_3290() argument
5248 rt2800_bbp4_mac_if_ctrl(rt2x00dev); in rt2800_init_bbp_3290()
5250 rt2800_bbp_write(rt2x00dev, 31, 0x08); in rt2800_init_bbp_3290()
5252 rt2800_bbp_write(rt2x00dev, 65, 0x2c); in rt2800_init_bbp_3290()
5253 rt2800_bbp_write(rt2x00dev, 66, 0x38); in rt2800_init_bbp_3290()
5255 rt2800_bbp_write(rt2x00dev, 68, 0x0b); in rt2800_init_bbp_3290()
5257 rt2800_bbp_write(rt2x00dev, 69, 0x12); in rt2800_init_bbp_3290()
5258 rt2800_bbp_write(rt2x00dev, 73, 0x13); in rt2800_init_bbp_3290()
5259 rt2800_bbp_write(rt2x00dev, 75, 0x46); in rt2800_init_bbp_3290()
5260 rt2800_bbp_write(rt2x00dev, 76, 0x28); in rt2800_init_bbp_3290()
5262 rt2800_bbp_write(rt2x00dev, 77, 0x58); in rt2800_init_bbp_3290()
5264 rt2800_bbp_write(rt2x00dev, 70, 0x0a); in rt2800_init_bbp_3290()
5266 rt2800_bbp_write(rt2x00dev, 74, 0x0b); in rt2800_init_bbp_3290()
5267 rt2800_bbp_write(rt2x00dev, 79, 0x18); in rt2800_init_bbp_3290()
5268 rt2800_bbp_write(rt2x00dev, 80, 0x09); in rt2800_init_bbp_3290()
5269 rt2800_bbp_write(rt2x00dev, 81, 0x33); in rt2800_init_bbp_3290()
5271 rt2800_bbp_write(rt2x00dev, 82, 0x62); in rt2800_init_bbp_3290()
5273 rt2800_bbp_write(rt2x00dev, 83, 0x7a); in rt2800_init_bbp_3290()
5275 rt2800_bbp_write(rt2x00dev, 84, 0x9a); in rt2800_init_bbp_3290()
5277 rt2800_bbp_write(rt2x00dev, 86, 0x38); in rt2800_init_bbp_3290()
5279 rt2800_bbp_write(rt2x00dev, 91, 0x04); in rt2800_init_bbp_3290()
5281 rt2800_bbp_write(rt2x00dev, 92, 0x02); in rt2800_init_bbp_3290()
5283 rt2800_bbp_write(rt2x00dev, 103, 0xc0); in rt2800_init_bbp_3290()
5285 rt2800_bbp_write(rt2x00dev, 104, 0x92); in rt2800_init_bbp_3290()
5287 rt2800_bbp_write(rt2x00dev, 105, 0x1c); in rt2800_init_bbp_3290()
5289 rt2800_bbp_write(rt2x00dev, 106, 0x03); in rt2800_init_bbp_3290()
5291 rt2800_bbp_write(rt2x00dev, 128, 0x12); in rt2800_init_bbp_3290()
5293 rt2800_bbp_write(rt2x00dev, 67, 0x24); in rt2800_init_bbp_3290()
5294 rt2800_bbp_write(rt2x00dev, 143, 0x04); in rt2800_init_bbp_3290()
5295 rt2800_bbp_write(rt2x00dev, 142, 0x99); in rt2800_init_bbp_3290()
5296 rt2800_bbp_write(rt2x00dev, 150, 0x30); in rt2800_init_bbp_3290()
5297 rt2800_bbp_write(rt2x00dev, 151, 0x2e); in rt2800_init_bbp_3290()
5298 rt2800_bbp_write(rt2x00dev, 152, 0x20); in rt2800_init_bbp_3290()
5299 rt2800_bbp_write(rt2x00dev, 153, 0x34); in rt2800_init_bbp_3290()
5300 rt2800_bbp_write(rt2x00dev, 154, 0x40); in rt2800_init_bbp_3290()
5301 rt2800_bbp_write(rt2x00dev, 155, 0x3b); in rt2800_init_bbp_3290()
5302 rt2800_bbp_write(rt2x00dev, 253, 0x04); in rt2800_init_bbp_3290()
5304 rt2800_bbp_read(rt2x00dev, 47, &value); in rt2800_init_bbp_3290()
5306 rt2800_bbp_write(rt2x00dev, 47, value); in rt2800_init_bbp_3290()
5309 rt2800_bbp_read(rt2x00dev, 3, &value); in rt2800_init_bbp_3290()
5312 rt2800_bbp_write(rt2x00dev, 3, value); in rt2800_init_bbp_3290()
5315 static void rt2800_init_bbp_3352(struct rt2x00_dev *rt2x00dev) in rt2800_init_bbp_3352() argument
5317 rt2800_bbp_write(rt2x00dev, 3, 0x00); in rt2800_init_bbp_3352()
5318 rt2800_bbp_write(rt2x00dev, 4, 0x50); in rt2800_init_bbp_3352()
5320 rt2800_bbp_write(rt2x00dev, 31, 0x08); in rt2800_init_bbp_3352()
5322 rt2800_bbp_write(rt2x00dev, 47, 0x48); in rt2800_init_bbp_3352()
5324 rt2800_bbp_write(rt2x00dev, 65, 0x2c); in rt2800_init_bbp_3352()
5325 rt2800_bbp_write(rt2x00dev, 66, 0x38); in rt2800_init_bbp_3352()
5327 rt2800_bbp_write(rt2x00dev, 68, 0x0b); in rt2800_init_bbp_3352()
5329 rt2800_bbp_write(rt2x00dev, 69, 0x12); in rt2800_init_bbp_3352()
5330 rt2800_bbp_write(rt2x00dev, 73, 0x13); in rt2800_init_bbp_3352()
5331 rt2800_bbp_write(rt2x00dev, 75, 0x46); in rt2800_init_bbp_3352()
5332 rt2800_bbp_write(rt2x00dev, 76, 0x28); in rt2800_init_bbp_3352()
5334 rt2800_bbp_write(rt2x00dev, 77, 0x59); in rt2800_init_bbp_3352()
5336 rt2800_bbp_write(rt2x00dev, 70, 0x0a); in rt2800_init_bbp_3352()
5338 rt2800_bbp_write(rt2x00dev, 78, 0x0e); in rt2800_init_bbp_3352()
5339 rt2800_bbp_write(rt2x00dev, 80, 0x08); in rt2800_init_bbp_3352()
5340 rt2800_bbp_write(rt2x00dev, 81, 0x37); in rt2800_init_bbp_3352()
5342 rt2800_bbp_write(rt2x00dev, 82, 0x62); in rt2800_init_bbp_3352()
5344 rt2800_bbp_write(rt2x00dev, 83, 0x6a); in rt2800_init_bbp_3352()
5346 rt2800_bbp_write(rt2x00dev, 84, 0x99); in rt2800_init_bbp_3352()
5348 rt2800_bbp_write(rt2x00dev, 86, 0x38); in rt2800_init_bbp_3352()
5350 rt2800_bbp_write(rt2x00dev, 88, 0x90); in rt2800_init_bbp_3352()
5352 rt2800_bbp_write(rt2x00dev, 91, 0x04); in rt2800_init_bbp_3352()
5354 rt2800_bbp_write(rt2x00dev, 92, 0x02); in rt2800_init_bbp_3352()
5356 rt2800_bbp_write(rt2x00dev, 103, 0xc0); in rt2800_init_bbp_3352()
5358 rt2800_bbp_write(rt2x00dev, 104, 0x92); in rt2800_init_bbp_3352()
5360 rt2800_bbp_write(rt2x00dev, 105, 0x34); in rt2800_init_bbp_3352()
5362 rt2800_bbp_write(rt2x00dev, 106, 0x05); in rt2800_init_bbp_3352()
5364 rt2800_bbp_write(rt2x00dev, 120, 0x50); in rt2800_init_bbp_3352()
5366 rt2800_bbp_write(rt2x00dev, 137, 0x0f); in rt2800_init_bbp_3352()
5368 rt2800_bbp_write(rt2x00dev, 163, 0xbd); in rt2800_init_bbp_3352()
5370 rt2800_bbp_write(rt2x00dev, 179, 0x02); in rt2800_init_bbp_3352()
5371 rt2800_bbp_write(rt2x00dev, 180, 0x00); in rt2800_init_bbp_3352()
5372 rt2800_bbp_write(rt2x00dev, 182, 0x40); in rt2800_init_bbp_3352()
5373 rt2800_bbp_write(rt2x00dev, 180, 0x01); in rt2800_init_bbp_3352()
5374 rt2800_bbp_write(rt2x00dev, 182, 0x9c); in rt2800_init_bbp_3352()
5375 rt2800_bbp_write(rt2x00dev, 179, 0x00); in rt2800_init_bbp_3352()
5377 rt2800_bbp_write(rt2x00dev, 142, 0x04); in rt2800_init_bbp_3352()
5378 rt2800_bbp_write(rt2x00dev, 143, 0x3b); in rt2800_init_bbp_3352()
5379 rt2800_bbp_write(rt2x00dev, 142, 0x06); in rt2800_init_bbp_3352()
5380 rt2800_bbp_write(rt2x00dev, 143, 0xa0); in rt2800_init_bbp_3352()
5381 rt2800_bbp_write(rt2x00dev, 142, 0x07); in rt2800_init_bbp_3352()
5382 rt2800_bbp_write(rt2x00dev, 143, 0xa1); in rt2800_init_bbp_3352()
5383 rt2800_bbp_write(rt2x00dev, 142, 0x08); in rt2800_init_bbp_3352()
5384 rt2800_bbp_write(rt2x00dev, 143, 0xa2); in rt2800_init_bbp_3352()
5386 rt2800_bbp_write(rt2x00dev, 148, 0xc8); in rt2800_init_bbp_3352()
5389 static void rt2800_init_bbp_3390(struct rt2x00_dev *rt2x00dev) in rt2800_init_bbp_3390() argument
5391 rt2800_bbp_write(rt2x00dev, 65, 0x2c); in rt2800_init_bbp_3390()
5392 rt2800_bbp_write(rt2x00dev, 66, 0x38); in rt2800_init_bbp_3390()
5394 rt2800_bbp_write(rt2x00dev, 69, 0x12); in rt2800_init_bbp_3390()
5395 rt2800_bbp_write(rt2x00dev, 73, 0x10); in rt2800_init_bbp_3390()
5397 rt2800_bbp_write(rt2x00dev, 70, 0x0a); in rt2800_init_bbp_3390()
5399 rt2800_bbp_write(rt2x00dev, 79, 0x13); in rt2800_init_bbp_3390()
5400 rt2800_bbp_write(rt2x00dev, 80, 0x05); in rt2800_init_bbp_3390()
5401 rt2800_bbp_write(rt2x00dev, 81, 0x33); in rt2800_init_bbp_3390()
5403 rt2800_bbp_write(rt2x00dev, 82, 0x62); in rt2800_init_bbp_3390()
5405 rt2800_bbp_write(rt2x00dev, 83, 0x6a); in rt2800_init_bbp_3390()
5407 rt2800_bbp_write(rt2x00dev, 84, 0x99); in rt2800_init_bbp_3390()
5409 rt2800_bbp_write(rt2x00dev, 86, 0x00); in rt2800_init_bbp_3390()
5411 rt2800_bbp_write(rt2x00dev, 91, 0x04); in rt2800_init_bbp_3390()
5413 rt2800_bbp_write(rt2x00dev, 92, 0x00); in rt2800_init_bbp_3390()
5415 if (rt2x00_rt_rev_gte(rt2x00dev, RT3390, REV_RT3390E)) in rt2800_init_bbp_3390()
5416 rt2800_bbp_write(rt2x00dev, 103, 0xc0); in rt2800_init_bbp_3390()
5418 rt2800_bbp_write(rt2x00dev, 103, 0x00); in rt2800_init_bbp_3390()
5420 rt2800_bbp_write(rt2x00dev, 105, 0x05); in rt2800_init_bbp_3390()
5422 rt2800_bbp_write(rt2x00dev, 106, 0x35); in rt2800_init_bbp_3390()
5424 rt2800_disable_unused_dac_adc(rt2x00dev); in rt2800_init_bbp_3390()
5427 static void rt2800_init_bbp_3572(struct rt2x00_dev *rt2x00dev) in rt2800_init_bbp_3572() argument
5429 rt2800_bbp_write(rt2x00dev, 31, 0x08); in rt2800_init_bbp_3572()
5431 rt2800_bbp_write(rt2x00dev, 65, 0x2c); in rt2800_init_bbp_3572()
5432 rt2800_bbp_write(rt2x00dev, 66, 0x38); in rt2800_init_bbp_3572()
5434 rt2800_bbp_write(rt2x00dev, 69, 0x12); in rt2800_init_bbp_3572()
5435 rt2800_bbp_write(rt2x00dev, 73, 0x10); in rt2800_init_bbp_3572()
5437 rt2800_bbp_write(rt2x00dev, 70, 0x0a); in rt2800_init_bbp_3572()
5439 rt2800_bbp_write(rt2x00dev, 79, 0x13); in rt2800_init_bbp_3572()
5440 rt2800_bbp_write(rt2x00dev, 80, 0x05); in rt2800_init_bbp_3572()
5441 rt2800_bbp_write(rt2x00dev, 81, 0x33); in rt2800_init_bbp_3572()
5443 rt2800_bbp_write(rt2x00dev, 82, 0x62); in rt2800_init_bbp_3572()
5445 rt2800_bbp_write(rt2x00dev, 83, 0x6a); in rt2800_init_bbp_3572()
5447 rt2800_bbp_write(rt2x00dev, 84, 0x99); in rt2800_init_bbp_3572()
5449 rt2800_bbp_write(rt2x00dev, 86, 0x00); in rt2800_init_bbp_3572()
5451 rt2800_bbp_write(rt2x00dev, 91, 0x04); in rt2800_init_bbp_3572()
5453 rt2800_bbp_write(rt2x00dev, 92, 0x00); in rt2800_init_bbp_3572()
5455 rt2800_bbp_write(rt2x00dev, 103, 0xc0); in rt2800_init_bbp_3572()
5457 rt2800_bbp_write(rt2x00dev, 105, 0x05); in rt2800_init_bbp_3572()
5459 rt2800_bbp_write(rt2x00dev, 106, 0x35); in rt2800_init_bbp_3572()
5461 rt2800_disable_unused_dac_adc(rt2x00dev); in rt2800_init_bbp_3572()
5464 static void rt2800_init_bbp_3593(struct rt2x00_dev *rt2x00dev) in rt2800_init_bbp_3593() argument
5466 rt2800_init_bbp_early(rt2x00dev); in rt2800_init_bbp_3593()
5468 rt2800_bbp_write(rt2x00dev, 79, 0x13); in rt2800_init_bbp_3593()
5469 rt2800_bbp_write(rt2x00dev, 80, 0x05); in rt2800_init_bbp_3593()
5470 rt2800_bbp_write(rt2x00dev, 81, 0x33); in rt2800_init_bbp_3593()
5471 rt2800_bbp_write(rt2x00dev, 137, 0x0f); in rt2800_init_bbp_3593()
5473 rt2800_bbp_write(rt2x00dev, 84, 0x19); in rt2800_init_bbp_3593()
5476 if (rt2x00_rt_rev_gte(rt2x00dev, RT3593, REV_RT3593E)) in rt2800_init_bbp_3593()
5477 rt2800_bbp_write(rt2x00dev, 103, 0xc0); in rt2800_init_bbp_3593()
5480 static void rt2800_init_bbp_53xx(struct rt2x00_dev *rt2x00dev) in rt2800_init_bbp_53xx() argument
5486 rt2800_bbp4_mac_if_ctrl(rt2x00dev); in rt2800_init_bbp_53xx()
5488 rt2800_bbp_write(rt2x00dev, 31, 0x08); in rt2800_init_bbp_53xx()
5490 rt2800_bbp_write(rt2x00dev, 65, 0x2c); in rt2800_init_bbp_53xx()
5491 rt2800_bbp_write(rt2x00dev, 66, 0x38); in rt2800_init_bbp_53xx()
5493 rt2800_bbp_write(rt2x00dev, 68, 0x0b); in rt2800_init_bbp_53xx()
5495 rt2800_bbp_write(rt2x00dev, 69, 0x12); in rt2800_init_bbp_53xx()
5496 rt2800_bbp_write(rt2x00dev, 73, 0x13); in rt2800_init_bbp_53xx()
5497 rt2800_bbp_write(rt2x00dev, 75, 0x46); in rt2800_init_bbp_53xx()
5498 rt2800_bbp_write(rt2x00dev, 76, 0x28); in rt2800_init_bbp_53xx()
5500 rt2800_bbp_write(rt2x00dev, 77, 0x59); in rt2800_init_bbp_53xx()
5502 rt2800_bbp_write(rt2x00dev, 70, 0x0a); in rt2800_init_bbp_53xx()
5504 rt2800_bbp_write(rt2x00dev, 79, 0x13); in rt2800_init_bbp_53xx()
5505 rt2800_bbp_write(rt2x00dev, 80, 0x05); in rt2800_init_bbp_53xx()
5506 rt2800_bbp_write(rt2x00dev, 81, 0x33); in rt2800_init_bbp_53xx()
5508 rt2800_bbp_write(rt2x00dev, 82, 0x62); in rt2800_init_bbp_53xx()
5510 rt2800_bbp_write(rt2x00dev, 83, 0x7a); in rt2800_init_bbp_53xx()
5512 rt2800_bbp_write(rt2x00dev, 84, 0x9a); in rt2800_init_bbp_53xx()
5514 rt2800_bbp_write(rt2x00dev, 86, 0x38); in rt2800_init_bbp_53xx()
5516 if (rt2x00_rt(rt2x00dev, RT5392)) in rt2800_init_bbp_53xx()
5517 rt2800_bbp_write(rt2x00dev, 88, 0x90); in rt2800_init_bbp_53xx()
5519 rt2800_bbp_write(rt2x00dev, 91, 0x04); in rt2800_init_bbp_53xx()
5521 rt2800_bbp_write(rt2x00dev, 92, 0x02); in rt2800_init_bbp_53xx()
5523 if (rt2x00_rt(rt2x00dev, RT5392)) { in rt2800_init_bbp_53xx()
5524 rt2800_bbp_write(rt2x00dev, 95, 0x9a); in rt2800_init_bbp_53xx()
5525 rt2800_bbp_write(rt2x00dev, 98, 0x12); in rt2800_init_bbp_53xx()
5528 rt2800_bbp_write(rt2x00dev, 103, 0xc0); in rt2800_init_bbp_53xx()
5530 rt2800_bbp_write(rt2x00dev, 104, 0x92); in rt2800_init_bbp_53xx()
5532 rt2800_bbp_write(rt2x00dev, 105, 0x3c); in rt2800_init_bbp_53xx()
5534 if (rt2x00_rt(rt2x00dev, RT5390)) in rt2800_init_bbp_53xx()
5535 rt2800_bbp_write(rt2x00dev, 106, 0x03); in rt2800_init_bbp_53xx()
5536 else if (rt2x00_rt(rt2x00dev, RT5392)) in rt2800_init_bbp_53xx()
5537 rt2800_bbp_write(rt2x00dev, 106, 0x12); in rt2800_init_bbp_53xx()
5541 rt2800_bbp_write(rt2x00dev, 128, 0x12); in rt2800_init_bbp_53xx()
5543 if (rt2x00_rt(rt2x00dev, RT5392)) { in rt2800_init_bbp_53xx()
5544 rt2800_bbp_write(rt2x00dev, 134, 0xd0); in rt2800_init_bbp_53xx()
5545 rt2800_bbp_write(rt2x00dev, 135, 0xf6); in rt2800_init_bbp_53xx()
5548 rt2800_disable_unused_dac_adc(rt2x00dev); in rt2800_init_bbp_53xx()
5550 rt2800_eeprom_read(rt2x00dev, EEPROM_NIC_CONF1, &eeprom); in rt2800_init_bbp_53xx()
5556 if (rt2x00_has_cap_bt_coexist(rt2x00dev)) { in rt2800_init_bbp_53xx()
5559 rt2800_register_read(rt2x00dev, GPIO_CTRL, &reg); in rt2800_init_bbp_53xx()
5568 rt2800_register_write(rt2x00dev, GPIO_CTRL, reg); in rt2800_init_bbp_53xx()
5572 if (rt2x00_rt_rev_gte(rt2x00dev, RT5390, REV_RT5390R)) { in rt2800_init_bbp_53xx()
5573 rt2800_bbp_write(rt2x00dev, 150, 0); /* Disable Antenna Software OFDM */ in rt2800_init_bbp_53xx()
5574 rt2800_bbp_write(rt2x00dev, 151, 0); /* Disable Antenna Software CCK */ in rt2800_init_bbp_53xx()
5575 rt2800_bbp_write(rt2x00dev, 154, 0); /* Clear previously selected antenna */ in rt2800_init_bbp_53xx()
5578 rt2800_bbp_read(rt2x00dev, 152, &value); in rt2800_init_bbp_53xx()
5583 rt2800_bbp_write(rt2x00dev, 152, value); in rt2800_init_bbp_53xx()
5585 rt2800_init_freq_calibration(rt2x00dev); in rt2800_init_bbp_53xx()
5588 static void rt2800_init_bbp_5592(struct rt2x00_dev *rt2x00dev) in rt2800_init_bbp_5592() argument
5594 rt2800_init_bbp_early(rt2x00dev); in rt2800_init_bbp_5592()
5596 rt2800_bbp_read(rt2x00dev, 105, &value); in rt2800_init_bbp_5592()
5598 rt2x00dev->default_ant.rx_chain_num == 2); in rt2800_init_bbp_5592()
5599 rt2800_bbp_write(rt2x00dev, 105, value); in rt2800_init_bbp_5592()
5601 rt2800_bbp4_mac_if_ctrl(rt2x00dev); in rt2800_init_bbp_5592()
5603 rt2800_bbp_write(rt2x00dev, 20, 0x06); in rt2800_init_bbp_5592()
5604 rt2800_bbp_write(rt2x00dev, 31, 0x08); in rt2800_init_bbp_5592()
5605 rt2800_bbp_write(rt2x00dev, 65, 0x2C); in rt2800_init_bbp_5592()
5606 rt2800_bbp_write(rt2x00dev, 68, 0xDD); in rt2800_init_bbp_5592()
5607 rt2800_bbp_write(rt2x00dev, 69, 0x1A); in rt2800_init_bbp_5592()
5608 rt2800_bbp_write(rt2x00dev, 70, 0x05); in rt2800_init_bbp_5592()
5609 rt2800_bbp_write(rt2x00dev, 73, 0x13); in rt2800_init_bbp_5592()
5610 rt2800_bbp_write(rt2x00dev, 74, 0x0F); in rt2800_init_bbp_5592()
5611 rt2800_bbp_write(rt2x00dev, 75, 0x4F); in rt2800_init_bbp_5592()
5612 rt2800_bbp_write(rt2x00dev, 76, 0x28); in rt2800_init_bbp_5592()
5613 rt2800_bbp_write(rt2x00dev, 77, 0x59); in rt2800_init_bbp_5592()
5614 rt2800_bbp_write(rt2x00dev, 84, 0x9A); in rt2800_init_bbp_5592()
5615 rt2800_bbp_write(rt2x00dev, 86, 0x38); in rt2800_init_bbp_5592()
5616 rt2800_bbp_write(rt2x00dev, 88, 0x90); in rt2800_init_bbp_5592()
5617 rt2800_bbp_write(rt2x00dev, 91, 0x04); in rt2800_init_bbp_5592()
5618 rt2800_bbp_write(rt2x00dev, 92, 0x02); in rt2800_init_bbp_5592()
5619 rt2800_bbp_write(rt2x00dev, 95, 0x9a); in rt2800_init_bbp_5592()
5620 rt2800_bbp_write(rt2x00dev, 98, 0x12); in rt2800_init_bbp_5592()
5621 rt2800_bbp_write(rt2x00dev, 103, 0xC0); in rt2800_init_bbp_5592()
5622 rt2800_bbp_write(rt2x00dev, 104, 0x92); in rt2800_init_bbp_5592()
5624 rt2800_bbp_write(rt2x00dev, 105, 0x3C); in rt2800_init_bbp_5592()
5625 rt2800_bbp_write(rt2x00dev, 106, 0x35); in rt2800_init_bbp_5592()
5626 rt2800_bbp_write(rt2x00dev, 128, 0x12); in rt2800_init_bbp_5592()
5627 rt2800_bbp_write(rt2x00dev, 134, 0xD0); in rt2800_init_bbp_5592()
5628 rt2800_bbp_write(rt2x00dev, 135, 0xF6); in rt2800_init_bbp_5592()
5629 rt2800_bbp_write(rt2x00dev, 137, 0x0F); in rt2800_init_bbp_5592()
5632 rt2800_init_bbp_5592_glrt(rt2x00dev); in rt2800_init_bbp_5592()
5634 rt2800_bbp4_mac_if_ctrl(rt2x00dev); in rt2800_init_bbp_5592()
5636 rt2800_eeprom_read(rt2x00dev, EEPROM_NIC_CONF1, &eeprom); in rt2800_init_bbp_5592()
5639 rt2800_bbp_read(rt2x00dev, 152, &value); in rt2800_init_bbp_5592()
5647 rt2800_bbp_write(rt2x00dev, 152, value); in rt2800_init_bbp_5592()
5649 if (rt2x00_rt_rev_gte(rt2x00dev, RT5592, REV_RT5592C)) { in rt2800_init_bbp_5592()
5650 rt2800_bbp_read(rt2x00dev, 254, &value); in rt2800_init_bbp_5592()
5652 rt2800_bbp_write(rt2x00dev, 254, value); in rt2800_init_bbp_5592()
5655 rt2800_init_freq_calibration(rt2x00dev); in rt2800_init_bbp_5592()
5657 rt2800_bbp_write(rt2x00dev, 84, 0x19); in rt2800_init_bbp_5592()
5658 if (rt2x00_rt_rev_gte(rt2x00dev, RT5592, REV_RT5592C)) in rt2800_init_bbp_5592()
5659 rt2800_bbp_write(rt2x00dev, 103, 0xc0); in rt2800_init_bbp_5592()
5662 static void rt2800_init_bbp(struct rt2x00_dev *rt2x00dev) in rt2800_init_bbp() argument
5669 if (rt2800_is_305x_soc(rt2x00dev)) in rt2800_init_bbp()
5670 rt2800_init_bbp_305x_soc(rt2x00dev); in rt2800_init_bbp()
5672 switch (rt2x00dev->chip.rt) { in rt2800_init_bbp()
5676 rt2800_init_bbp_28xx(rt2x00dev); in rt2800_init_bbp()
5681 rt2800_init_bbp_30xx(rt2x00dev); in rt2800_init_bbp()
5684 rt2800_init_bbp_3290(rt2x00dev); in rt2800_init_bbp()
5687 rt2800_init_bbp_3352(rt2x00dev); in rt2800_init_bbp()
5690 rt2800_init_bbp_3390(rt2x00dev); in rt2800_init_bbp()
5693 rt2800_init_bbp_3572(rt2x00dev); in rt2800_init_bbp()
5696 rt2800_init_bbp_3593(rt2x00dev); in rt2800_init_bbp()
5700 rt2800_init_bbp_53xx(rt2x00dev); in rt2800_init_bbp()
5703 rt2800_init_bbp_5592(rt2x00dev); in rt2800_init_bbp()
5708 rt2800_eeprom_read_from_array(rt2x00dev, EEPROM_BBP_START, i, in rt2800_init_bbp()
5714 rt2800_bbp_write(rt2x00dev, reg_id, value); in rt2800_init_bbp()
5719 static void rt2800_led_open_drain_enable(struct rt2x00_dev *rt2x00dev) in rt2800_led_open_drain_enable() argument
5723 rt2800_register_read(rt2x00dev, OPT_14_CSR, &reg); in rt2800_led_open_drain_enable()
5725 rt2800_register_write(rt2x00dev, OPT_14_CSR, reg); in rt2800_led_open_drain_enable()
5728 static u8 rt2800_init_rx_filter(struct rt2x00_dev *rt2x00dev, bool bw40, in rt2800_init_rx_filter() argument
5739 rt2800_rfcsr_write(rt2x00dev, 24, rfcsr24); in rt2800_init_rx_filter()
5741 rt2800_bbp_read(rt2x00dev, 4, &bbp); in rt2800_init_rx_filter()
5743 rt2800_bbp_write(rt2x00dev, 4, bbp); in rt2800_init_rx_filter()
5745 rt2800_rfcsr_read(rt2x00dev, 31, &rfcsr); in rt2800_init_rx_filter()
5747 rt2800_rfcsr_write(rt2x00dev, 31, rfcsr); in rt2800_init_rx_filter()
5749 rt2800_rfcsr_read(rt2x00dev, 22, &rfcsr); in rt2800_init_rx_filter()
5751 rt2800_rfcsr_write(rt2x00dev, 22, rfcsr); in rt2800_init_rx_filter()
5756 rt2800_bbp_write(rt2x00dev, 24, 0); in rt2800_init_rx_filter()
5759 rt2800_bbp_write(rt2x00dev, 25, 0x90); in rt2800_init_rx_filter()
5762 rt2800_bbp_read(rt2x00dev, 55, &passband); in rt2800_init_rx_filter()
5770 rt2800_bbp_write(rt2x00dev, 24, 0x06); in rt2800_init_rx_filter()
5773 rt2800_bbp_write(rt2x00dev, 25, 0x90); in rt2800_init_rx_filter()
5776 rt2800_bbp_read(rt2x00dev, 55, &stopband); in rt2800_init_rx_filter()
5784 rt2800_rfcsr_write(rt2x00dev, 24, rfcsr24); in rt2800_init_rx_filter()
5789 rt2800_rfcsr_write(rt2x00dev, 24, rfcsr24); in rt2800_init_rx_filter()
5793 static void rt2800_rf_init_calibration(struct rt2x00_dev *rt2x00dev, in rt2800_rf_init_calibration() argument
5798 rt2800_rfcsr_read(rt2x00dev, rf_reg, &rfcsr); in rt2800_rf_init_calibration()
5800 rt2800_rfcsr_write(rt2x00dev, rf_reg, rfcsr); in rt2800_rf_init_calibration()
5803 rt2800_rfcsr_write(rt2x00dev, rf_reg, rfcsr); in rt2800_rf_init_calibration()
5806 static void rt2800_rx_filter_calibration(struct rt2x00_dev *rt2x00dev) in rt2800_rx_filter_calibration() argument
5808 struct rt2800_drv_data *drv_data = rt2x00dev->drv_data; in rt2800_rx_filter_calibration()
5816 if (rt2x00_rt(rt2x00dev, RT3070)) { in rt2800_rx_filter_calibration()
5825 rt2800_init_rx_filter(rt2x00dev, false, filter_tgt_bw20); in rt2800_rx_filter_calibration()
5827 rt2800_init_rx_filter(rt2x00dev, true, filter_tgt_bw40); in rt2800_rx_filter_calibration()
5832 rt2800_bbp_read(rt2x00dev, 25, &drv_data->bbp25); in rt2800_rx_filter_calibration()
5833 rt2800_bbp_read(rt2x00dev, 26, &drv_data->bbp26); in rt2800_rx_filter_calibration()
5838 rt2800_bbp_write(rt2x00dev, 24, 0); in rt2800_rx_filter_calibration()
5840 rt2800_rfcsr_read(rt2x00dev, 22, &rfcsr); in rt2800_rx_filter_calibration()
5842 rt2800_rfcsr_write(rt2x00dev, 22, rfcsr); in rt2800_rx_filter_calibration()
5847 rt2800_bbp_read(rt2x00dev, 4, &bbp); in rt2800_rx_filter_calibration()
5849 rt2800_bbp_write(rt2x00dev, 4, bbp); in rt2800_rx_filter_calibration()
5852 static void rt2800_normal_mode_setup_3xxx(struct rt2x00_dev *rt2x00dev) in rt2800_normal_mode_setup_3xxx() argument
5854 struct rt2800_drv_data *drv_data = rt2x00dev->drv_data; in rt2800_normal_mode_setup_3xxx()
5858 rt2800_rfcsr_read(rt2x00dev, 17, &rfcsr); in rt2800_normal_mode_setup_3xxx()
5861 if (rt2x00_rt(rt2x00dev, RT3070) || in rt2800_normal_mode_setup_3xxx()
5862 rt2x00_rt_rev_lt(rt2x00dev, RT3071, REV_RT3071E) || in rt2800_normal_mode_setup_3xxx()
5863 rt2x00_rt_rev_lt(rt2x00dev, RT3090, REV_RT3090E) || in rt2800_normal_mode_setup_3xxx()
5864 rt2x00_rt_rev_lt(rt2x00dev, RT3390, REV_RT3390E)) { in rt2800_normal_mode_setup_3xxx()
5865 if (!rt2x00_has_cap_external_lna_bg(rt2x00dev)) in rt2800_normal_mode_setup_3xxx()
5869 min_gain = rt2x00_rt(rt2x00dev, RT3070) ? 1 : 2; in rt2800_normal_mode_setup_3xxx()
5875 rt2800_rfcsr_write(rt2x00dev, 17, rfcsr); in rt2800_normal_mode_setup_3xxx()
5877 if (rt2x00_rt(rt2x00dev, RT3090)) { in rt2800_normal_mode_setup_3xxx()
5879 rt2800_bbp_read(rt2x00dev, 138, &bbp); in rt2800_normal_mode_setup_3xxx()
5880 rt2800_eeprom_read(rt2x00dev, EEPROM_NIC_CONF0, &eeprom); in rt2800_normal_mode_setup_3xxx()
5885 rt2800_bbp_write(rt2x00dev, 138, bbp); in rt2800_normal_mode_setup_3xxx()
5888 if (rt2x00_rt(rt2x00dev, RT3070)) { in rt2800_normal_mode_setup_3xxx()
5889 rt2800_rfcsr_read(rt2x00dev, 27, &rfcsr); in rt2800_normal_mode_setup_3xxx()
5890 if (rt2x00_rt_rev_lt(rt2x00dev, RT3070, REV_RT3070F)) in rt2800_normal_mode_setup_3xxx()
5897 rt2800_rfcsr_write(rt2x00dev, 27, rfcsr); in rt2800_normal_mode_setup_3xxx()
5898 } else if (rt2x00_rt(rt2x00dev, RT3071) || in rt2800_normal_mode_setup_3xxx()
5899 rt2x00_rt(rt2x00dev, RT3090) || in rt2800_normal_mode_setup_3xxx()
5900 rt2x00_rt(rt2x00dev, RT3390)) { in rt2800_normal_mode_setup_3xxx()
5901 rt2800_rfcsr_read(rt2x00dev, 1, &rfcsr); in rt2800_normal_mode_setup_3xxx()
5907 rt2800_rfcsr_write(rt2x00dev, 1, rfcsr); in rt2800_normal_mode_setup_3xxx()
5909 rt2800_rfcsr_read(rt2x00dev, 15, &rfcsr); in rt2800_normal_mode_setup_3xxx()
5911 rt2800_rfcsr_write(rt2x00dev, 15, rfcsr); in rt2800_normal_mode_setup_3xxx()
5913 rt2800_rfcsr_read(rt2x00dev, 20, &rfcsr); in rt2800_normal_mode_setup_3xxx()
5915 rt2800_rfcsr_write(rt2x00dev, 20, rfcsr); in rt2800_normal_mode_setup_3xxx()
5917 rt2800_rfcsr_read(rt2x00dev, 21, &rfcsr); in rt2800_normal_mode_setup_3xxx()
5919 rt2800_rfcsr_write(rt2x00dev, 21, rfcsr); in rt2800_normal_mode_setup_3xxx()
5923 static void rt2800_normal_mode_setup_3593(struct rt2x00_dev *rt2x00dev) in rt2800_normal_mode_setup_3593() argument
5925 struct rt2800_drv_data *drv_data = rt2x00dev->drv_data; in rt2800_normal_mode_setup_3593()
5929 rt2800_rfcsr_read(rt2x00dev, 50, &rfcsr); in rt2800_normal_mode_setup_3593()
5931 rt2800_rfcsr_write(rt2x00dev, 50, rfcsr); in rt2800_normal_mode_setup_3593()
5933 rt2800_rfcsr_read(rt2x00dev, 51, &rfcsr); in rt2800_normal_mode_setup_3593()
5937 rt2800_rfcsr_write(rt2x00dev, 51, rfcsr); in rt2800_normal_mode_setup_3593()
5939 rt2800_rfcsr_read(rt2x00dev, 38, &rfcsr); in rt2800_normal_mode_setup_3593()
5941 rt2800_rfcsr_write(rt2x00dev, 38, rfcsr); in rt2800_normal_mode_setup_3593()
5943 rt2800_rfcsr_read(rt2x00dev, 39, &rfcsr); in rt2800_normal_mode_setup_3593()
5945 rt2800_rfcsr_write(rt2x00dev, 39, rfcsr); in rt2800_normal_mode_setup_3593()
5947 rt2800_rfcsr_read(rt2x00dev, 1, &rfcsr); in rt2800_normal_mode_setup_3593()
5950 rt2800_rfcsr_write(rt2x00dev, 1, rfcsr); in rt2800_normal_mode_setup_3593()
5952 rt2800_rfcsr_read(rt2x00dev, 30, &rfcsr); in rt2800_normal_mode_setup_3593()
5954 rt2800_rfcsr_write(rt2x00dev, 30, rfcsr); in rt2800_normal_mode_setup_3593()
5959 static void rt2800_normal_mode_setup_5xxx(struct rt2x00_dev *rt2x00dev) in rt2800_normal_mode_setup_5xxx() argument
5965 rt2800_bbp_read(rt2x00dev, 138, &reg); in rt2800_normal_mode_setup_5xxx()
5966 rt2800_eeprom_read(rt2x00dev, EEPROM_NIC_CONF0, &eeprom); in rt2800_normal_mode_setup_5xxx()
5971 rt2800_bbp_write(rt2x00dev, 138, reg); in rt2800_normal_mode_setup_5xxx()
5973 rt2800_rfcsr_read(rt2x00dev, 38, &reg); in rt2800_normal_mode_setup_5xxx()
5975 rt2800_rfcsr_write(rt2x00dev, 38, reg); in rt2800_normal_mode_setup_5xxx()
5977 rt2800_rfcsr_read(rt2x00dev, 39, &reg); in rt2800_normal_mode_setup_5xxx()
5979 rt2800_rfcsr_write(rt2x00dev, 39, reg); in rt2800_normal_mode_setup_5xxx()
5981 rt2800_bbp4_mac_if_ctrl(rt2x00dev); in rt2800_normal_mode_setup_5xxx()
5983 rt2800_rfcsr_read(rt2x00dev, 30, &reg); in rt2800_normal_mode_setup_5xxx()
5985 rt2800_rfcsr_write(rt2x00dev, 30, reg); in rt2800_normal_mode_setup_5xxx()
5988 static void rt2800_init_rfcsr_305x_soc(struct rt2x00_dev *rt2x00dev) in rt2800_init_rfcsr_305x_soc() argument
5990 rt2800_rf_init_calibration(rt2x00dev, 30); in rt2800_init_rfcsr_305x_soc()
5992 rt2800_rfcsr_write(rt2x00dev, 0, 0x50); in rt2800_init_rfcsr_305x_soc()
5993 rt2800_rfcsr_write(rt2x00dev, 1, 0x01); in rt2800_init_rfcsr_305x_soc()
5994 rt2800_rfcsr_write(rt2x00dev, 2, 0xf7); in rt2800_init_rfcsr_305x_soc()
5995 rt2800_rfcsr_write(rt2x00dev, 3, 0x75); in rt2800_init_rfcsr_305x_soc()
5996 rt2800_rfcsr_write(rt2x00dev, 4, 0x40); in rt2800_init_rfcsr_305x_soc()
5997 rt2800_rfcsr_write(rt2x00dev, 5, 0x03); in rt2800_init_rfcsr_305x_soc()
5998 rt2800_rfcsr_write(rt2x00dev, 6, 0x02); in rt2800_init_rfcsr_305x_soc()
5999 rt2800_rfcsr_write(rt2x00dev, 7, 0x50); in rt2800_init_rfcsr_305x_soc()
6000 rt2800_rfcsr_write(rt2x00dev, 8, 0x39); in rt2800_init_rfcsr_305x_soc()
6001 rt2800_rfcsr_write(rt2x00dev, 9, 0x0f); in rt2800_init_rfcsr_305x_soc()
6002 rt2800_rfcsr_write(rt2x00dev, 10, 0x60); in rt2800_init_rfcsr_305x_soc()
6003 rt2800_rfcsr_write(rt2x00dev, 11, 0x21); in rt2800_init_rfcsr_305x_soc()
6004 rt2800_rfcsr_write(rt2x00dev, 12, 0x75); in rt2800_init_rfcsr_305x_soc()
6005 rt2800_rfcsr_write(rt2x00dev, 13, 0x75); in rt2800_init_rfcsr_305x_soc()
6006 rt2800_rfcsr_write(rt2x00dev, 14, 0x90); in rt2800_init_rfcsr_305x_soc()
6007 rt2800_rfcsr_write(rt2x00dev, 15, 0x58); in rt2800_init_rfcsr_305x_soc()
6008 rt2800_rfcsr_write(rt2x00dev, 16, 0xb3); in rt2800_init_rfcsr_305x_soc()
6009 rt2800_rfcsr_write(rt2x00dev, 17, 0x92); in rt2800_init_rfcsr_305x_soc()
6010 rt2800_rfcsr_write(rt2x00dev, 18, 0x2c); in rt2800_init_rfcsr_305x_soc()
6011 rt2800_rfcsr_write(rt2x00dev, 19, 0x02); in rt2800_init_rfcsr_305x_soc()
6012 rt2800_rfcsr_write(rt2x00dev, 20, 0xba); in rt2800_init_rfcsr_305x_soc()
6013 rt2800_rfcsr_write(rt2x00dev, 21, 0xdb); in rt2800_init_rfcsr_305x_soc()
6014 rt2800_rfcsr_write(rt2x00dev, 22, 0x00); in rt2800_init_rfcsr_305x_soc()
6015 rt2800_rfcsr_write(rt2x00dev, 23, 0x31); in rt2800_init_rfcsr_305x_soc()
6016 rt2800_rfcsr_write(rt2x00dev, 24, 0x08); in rt2800_init_rfcsr_305x_soc()
6017 rt2800_rfcsr_write(rt2x00dev, 25, 0x01); in rt2800_init_rfcsr_305x_soc()
6018 rt2800_rfcsr_write(rt2x00dev, 26, 0x25); in rt2800_init_rfcsr_305x_soc()
6019 rt2800_rfcsr_write(rt2x00dev, 27, 0x23); in rt2800_init_rfcsr_305x_soc()
6020 rt2800_rfcsr_write(rt2x00dev, 28, 0x13); in rt2800_init_rfcsr_305x_soc()
6021 rt2800_rfcsr_write(rt2x00dev, 29, 0x83); in rt2800_init_rfcsr_305x_soc()
6022 rt2800_rfcsr_write(rt2x00dev, 30, 0x00); in rt2800_init_rfcsr_305x_soc()
6023 rt2800_rfcsr_write(rt2x00dev, 31, 0x00); in rt2800_init_rfcsr_305x_soc()
6026 static void rt2800_init_rfcsr_30xx(struct rt2x00_dev *rt2x00dev) in rt2800_init_rfcsr_30xx() argument
6033 rt2800_rf_init_calibration(rt2x00dev, 30); in rt2800_init_rfcsr_30xx()
6035 rt2800_rfcsr_write(rt2x00dev, 4, 0x40); in rt2800_init_rfcsr_30xx()
6036 rt2800_rfcsr_write(rt2x00dev, 5, 0x03); in rt2800_init_rfcsr_30xx()
6037 rt2800_rfcsr_write(rt2x00dev, 6, 0x02); in rt2800_init_rfcsr_30xx()
6038 rt2800_rfcsr_write(rt2x00dev, 7, 0x60); in rt2800_init_rfcsr_30xx()
6039 rt2800_rfcsr_write(rt2x00dev, 9, 0x0f); in rt2800_init_rfcsr_30xx()
6040 rt2800_rfcsr_write(rt2x00dev, 10, 0x41); in rt2800_init_rfcsr_30xx()
6041 rt2800_rfcsr_write(rt2x00dev, 11, 0x21); in rt2800_init_rfcsr_30xx()
6042 rt2800_rfcsr_write(rt2x00dev, 12, 0x7b); in rt2800_init_rfcsr_30xx()
6043 rt2800_rfcsr_write(rt2x00dev, 14, 0x90); in rt2800_init_rfcsr_30xx()
6044 rt2800_rfcsr_write(rt2x00dev, 15, 0x58); in rt2800_init_rfcsr_30xx()
6045 rt2800_rfcsr_write(rt2x00dev, 16, 0xb3); in rt2800_init_rfcsr_30xx()
6046 rt2800_rfcsr_write(rt2x00dev, 17, 0x92); in rt2800_init_rfcsr_30xx()
6047 rt2800_rfcsr_write(rt2x00dev, 18, 0x2c); in rt2800_init_rfcsr_30xx()
6048 rt2800_rfcsr_write(rt2x00dev, 19, 0x02); in rt2800_init_rfcsr_30xx()
6049 rt2800_rfcsr_write(rt2x00dev, 20, 0xba); in rt2800_init_rfcsr_30xx()
6050 rt2800_rfcsr_write(rt2x00dev, 21, 0xdb); in rt2800_init_rfcsr_30xx()
6051 rt2800_rfcsr_write(rt2x00dev, 24, 0x16); in rt2800_init_rfcsr_30xx()
6052 rt2800_rfcsr_write(rt2x00dev, 25, 0x03); in rt2800_init_rfcsr_30xx()
6053 rt2800_rfcsr_write(rt2x00dev, 29, 0x1f); in rt2800_init_rfcsr_30xx()
6055 if (rt2x00_rt_rev_lt(rt2x00dev, RT3070, REV_RT3070F)) { in rt2800_init_rfcsr_30xx()
6056 rt2800_register_read(rt2x00dev, LDO_CFG0, &reg); in rt2800_init_rfcsr_30xx()
6059 rt2800_register_write(rt2x00dev, LDO_CFG0, reg); in rt2800_init_rfcsr_30xx()
6060 } else if (rt2x00_rt(rt2x00dev, RT3071) || in rt2800_init_rfcsr_30xx()
6061 rt2x00_rt(rt2x00dev, RT3090)) { in rt2800_init_rfcsr_30xx()
6062 rt2800_rfcsr_write(rt2x00dev, 31, 0x14); in rt2800_init_rfcsr_30xx()
6064 rt2800_rfcsr_read(rt2x00dev, 6, &rfcsr); in rt2800_init_rfcsr_30xx()
6066 rt2800_rfcsr_write(rt2x00dev, 6, rfcsr); in rt2800_init_rfcsr_30xx()
6068 rt2800_register_read(rt2x00dev, LDO_CFG0, &reg); in rt2800_init_rfcsr_30xx()
6070 if (rt2x00_rt_rev_lt(rt2x00dev, RT3071, REV_RT3071E) || in rt2800_init_rfcsr_30xx()
6071 rt2x00_rt_rev_lt(rt2x00dev, RT3090, REV_RT3090E)) { in rt2800_init_rfcsr_30xx()
6072 rt2800_eeprom_read(rt2x00dev, EEPROM_NIC_CONF1, in rt2800_init_rfcsr_30xx()
6079 rt2800_register_write(rt2x00dev, LDO_CFG0, reg); in rt2800_init_rfcsr_30xx()
6081 rt2800_register_read(rt2x00dev, GPIO_SWITCH, &reg); in rt2800_init_rfcsr_30xx()
6083 rt2800_register_write(rt2x00dev, GPIO_SWITCH, reg); in rt2800_init_rfcsr_30xx()
6086 rt2800_rx_filter_calibration(rt2x00dev); in rt2800_init_rfcsr_30xx()
6088 if (rt2x00_rt_rev_lt(rt2x00dev, RT3070, REV_RT3070F) || in rt2800_init_rfcsr_30xx()
6089 rt2x00_rt_rev_lt(rt2x00dev, RT3071, REV_RT3071E) || in rt2800_init_rfcsr_30xx()
6090 rt2x00_rt_rev_lt(rt2x00dev, RT3090, REV_RT3090E)) in rt2800_init_rfcsr_30xx()
6091 rt2800_rfcsr_write(rt2x00dev, 27, 0x03); in rt2800_init_rfcsr_30xx()
6093 rt2800_led_open_drain_enable(rt2x00dev); in rt2800_init_rfcsr_30xx()
6094 rt2800_normal_mode_setup_3xxx(rt2x00dev); in rt2800_init_rfcsr_30xx()
6097 static void rt2800_init_rfcsr_3290(struct rt2x00_dev *rt2x00dev) in rt2800_init_rfcsr_3290() argument
6101 rt2800_rf_init_calibration(rt2x00dev, 2); in rt2800_init_rfcsr_3290()
6103 rt2800_rfcsr_write(rt2x00dev, 1, 0x0f); in rt2800_init_rfcsr_3290()
6104 rt2800_rfcsr_write(rt2x00dev, 2, 0x80); in rt2800_init_rfcsr_3290()
6105 rt2800_rfcsr_write(rt2x00dev, 3, 0x08); in rt2800_init_rfcsr_3290()
6106 rt2800_rfcsr_write(rt2x00dev, 4, 0x00); in rt2800_init_rfcsr_3290()
6107 rt2800_rfcsr_write(rt2x00dev, 6, 0xa0); in rt2800_init_rfcsr_3290()
6108 rt2800_rfcsr_write(rt2x00dev, 8, 0xf3); in rt2800_init_rfcsr_3290()
6109 rt2800_rfcsr_write(rt2x00dev, 9, 0x02); in rt2800_init_rfcsr_3290()
6110 rt2800_rfcsr_write(rt2x00dev, 10, 0x53); in rt2800_init_rfcsr_3290()
6111 rt2800_rfcsr_write(rt2x00dev, 11, 0x4a); in rt2800_init_rfcsr_3290()
6112 rt2800_rfcsr_write(rt2x00dev, 12, 0x46); in rt2800_init_rfcsr_3290()
6113 rt2800_rfcsr_write(rt2x00dev, 13, 0x9f); in rt2800_init_rfcsr_3290()
6114 rt2800_rfcsr_write(rt2x00dev, 18, 0x02); in rt2800_init_rfcsr_3290()
6115 rt2800_rfcsr_write(rt2x00dev, 22, 0x20); in rt2800_init_rfcsr_3290()
6116 rt2800_rfcsr_write(rt2x00dev, 25, 0x83); in rt2800_init_rfcsr_3290()
6117 rt2800_rfcsr_write(rt2x00dev, 26, 0x82); in rt2800_init_rfcsr_3290()
6118 rt2800_rfcsr_write(rt2x00dev, 27, 0x09); in rt2800_init_rfcsr_3290()
6119 rt2800_rfcsr_write(rt2x00dev, 29, 0x10); in rt2800_init_rfcsr_3290()
6120 rt2800_rfcsr_write(rt2x00dev, 30, 0x10); in rt2800_init_rfcsr_3290()
6121 rt2800_rfcsr_write(rt2x00dev, 31, 0x80); in rt2800_init_rfcsr_3290()
6122 rt2800_rfcsr_write(rt2x00dev, 32, 0x80); in rt2800_init_rfcsr_3290()
6123 rt2800_rfcsr_write(rt2x00dev, 33, 0x00); in rt2800_init_rfcsr_3290()
6124 rt2800_rfcsr_write(rt2x00dev, 34, 0x05); in rt2800_init_rfcsr_3290()
6125 rt2800_rfcsr_write(rt2x00dev, 35, 0x12); in rt2800_init_rfcsr_3290()
6126 rt2800_rfcsr_write(rt2x00dev, 36, 0x00); in rt2800_init_rfcsr_3290()
6127 rt2800_rfcsr_write(rt2x00dev, 38, 0x85); in rt2800_init_rfcsr_3290()
6128 rt2800_rfcsr_write(rt2x00dev, 39, 0x1b); in rt2800_init_rfcsr_3290()
6129 rt2800_rfcsr_write(rt2x00dev, 40, 0x0b); in rt2800_init_rfcsr_3290()
6130 rt2800_rfcsr_write(rt2x00dev, 41, 0xbb); in rt2800_init_rfcsr_3290()
6131 rt2800_rfcsr_write(rt2x00dev, 42, 0xd5); in rt2800_init_rfcsr_3290()
6132 rt2800_rfcsr_write(rt2x00dev, 43, 0x7b); in rt2800_init_rfcsr_3290()
6133 rt2800_rfcsr_write(rt2x00dev, 44, 0x0e); in rt2800_init_rfcsr_3290()
6134 rt2800_rfcsr_write(rt2x00dev, 45, 0xa2); in rt2800_init_rfcsr_3290()
6135 rt2800_rfcsr_write(rt2x00dev, 46, 0x73); in rt2800_init_rfcsr_3290()
6136 rt2800_rfcsr_write(rt2x00dev, 47, 0x00); in rt2800_init_rfcsr_3290()
6137 rt2800_rfcsr_write(rt2x00dev, 48, 0x10); in rt2800_init_rfcsr_3290()
6138 rt2800_rfcsr_write(rt2x00dev, 49, 0x98); in rt2800_init_rfcsr_3290()
6139 rt2800_rfcsr_write(rt2x00dev, 52, 0x38); in rt2800_init_rfcsr_3290()
6140 rt2800_rfcsr_write(rt2x00dev, 53, 0x00); in rt2800_init_rfcsr_3290()
6141 rt2800_rfcsr_write(rt2x00dev, 54, 0x78); in rt2800_init_rfcsr_3290()
6142 rt2800_rfcsr_write(rt2x00dev, 55, 0x43); in rt2800_init_rfcsr_3290()
6143 rt2800_rfcsr_write(rt2x00dev, 56, 0x02); in rt2800_init_rfcsr_3290()
6144 rt2800_rfcsr_write(rt2x00dev, 57, 0x80); in rt2800_init_rfcsr_3290()
6145 rt2800_rfcsr_write(rt2x00dev, 58, 0x7f); in rt2800_init_rfcsr_3290()
6146 rt2800_rfcsr_write(rt2x00dev, 59, 0x09); in rt2800_init_rfcsr_3290()
6147 rt2800_rfcsr_write(rt2x00dev, 60, 0x45); in rt2800_init_rfcsr_3290()
6148 rt2800_rfcsr_write(rt2x00dev, 61, 0xc1); in rt2800_init_rfcsr_3290()
6150 rt2800_rfcsr_read(rt2x00dev, 29, &rfcsr); in rt2800_init_rfcsr_3290()
6152 rt2800_rfcsr_write(rt2x00dev, 29, rfcsr); in rt2800_init_rfcsr_3290()
6154 rt2800_led_open_drain_enable(rt2x00dev); in rt2800_init_rfcsr_3290()
6155 rt2800_normal_mode_setup_3xxx(rt2x00dev); in rt2800_init_rfcsr_3290()
6158 static void rt2800_init_rfcsr_3352(struct rt2x00_dev *rt2x00dev) in rt2800_init_rfcsr_3352() argument
6160 rt2800_rf_init_calibration(rt2x00dev, 30); in rt2800_init_rfcsr_3352()
6162 rt2800_rfcsr_write(rt2x00dev, 0, 0xf0); in rt2800_init_rfcsr_3352()
6163 rt2800_rfcsr_write(rt2x00dev, 1, 0x23); in rt2800_init_rfcsr_3352()
6164 rt2800_rfcsr_write(rt2x00dev, 2, 0x50); in rt2800_init_rfcsr_3352()
6165 rt2800_rfcsr_write(rt2x00dev, 3, 0x18); in rt2800_init_rfcsr_3352()
6166 rt2800_rfcsr_write(rt2x00dev, 4, 0x00); in rt2800_init_rfcsr_3352()
6167 rt2800_rfcsr_write(rt2x00dev, 5, 0x00); in rt2800_init_rfcsr_3352()
6168 rt2800_rfcsr_write(rt2x00dev, 6, 0x33); in rt2800_init_rfcsr_3352()
6169 rt2800_rfcsr_write(rt2x00dev, 7, 0x00); in rt2800_init_rfcsr_3352()
6170 rt2800_rfcsr_write(rt2x00dev, 8, 0xf1); in rt2800_init_rfcsr_3352()
6171 rt2800_rfcsr_write(rt2x00dev, 9, 0x02); in rt2800_init_rfcsr_3352()
6172 rt2800_rfcsr_write(rt2x00dev, 10, 0xd2); in rt2800_init_rfcsr_3352()
6173 rt2800_rfcsr_write(rt2x00dev, 11, 0x42); in rt2800_init_rfcsr_3352()
6174 rt2800_rfcsr_write(rt2x00dev, 12, 0x1c); in rt2800_init_rfcsr_3352()
6175 rt2800_rfcsr_write(rt2x00dev, 13, 0x00); in rt2800_init_rfcsr_3352()
6176 rt2800_rfcsr_write(rt2x00dev, 14, 0x5a); in rt2800_init_rfcsr_3352()
6177 rt2800_rfcsr_write(rt2x00dev, 15, 0x00); in rt2800_init_rfcsr_3352()
6178 rt2800_rfcsr_write(rt2x00dev, 16, 0x01); in rt2800_init_rfcsr_3352()
6179 rt2800_rfcsr_write(rt2x00dev, 18, 0x45); in rt2800_init_rfcsr_3352()
6180 rt2800_rfcsr_write(rt2x00dev, 19, 0x02); in rt2800_init_rfcsr_3352()
6181 rt2800_rfcsr_write(rt2x00dev, 20, 0x00); in rt2800_init_rfcsr_3352()
6182 rt2800_rfcsr_write(rt2x00dev, 21, 0x00); in rt2800_init_rfcsr_3352()
6183 rt2800_rfcsr_write(rt2x00dev, 22, 0x00); in rt2800_init_rfcsr_3352()
6184 rt2800_rfcsr_write(rt2x00dev, 23, 0x00); in rt2800_init_rfcsr_3352()
6185 rt2800_rfcsr_write(rt2x00dev, 24, 0x00); in rt2800_init_rfcsr_3352()
6186 rt2800_rfcsr_write(rt2x00dev, 25, 0x80); in rt2800_init_rfcsr_3352()
6187 rt2800_rfcsr_write(rt2x00dev, 26, 0x00); in rt2800_init_rfcsr_3352()
6188 rt2800_rfcsr_write(rt2x00dev, 27, 0x03); in rt2800_init_rfcsr_3352()
6189 rt2800_rfcsr_write(rt2x00dev, 28, 0x03); in rt2800_init_rfcsr_3352()
6190 rt2800_rfcsr_write(rt2x00dev, 29, 0x00); in rt2800_init_rfcsr_3352()
6191 rt2800_rfcsr_write(rt2x00dev, 30, 0x10); in rt2800_init_rfcsr_3352()
6192 rt2800_rfcsr_write(rt2x00dev, 31, 0x80); in rt2800_init_rfcsr_3352()
6193 rt2800_rfcsr_write(rt2x00dev, 32, 0x80); in rt2800_init_rfcsr_3352()
6194 rt2800_rfcsr_write(rt2x00dev, 33, 0x00); in rt2800_init_rfcsr_3352()
6195 rt2800_rfcsr_write(rt2x00dev, 34, 0x01); in rt2800_init_rfcsr_3352()
6196 rt2800_rfcsr_write(rt2x00dev, 35, 0x03); in rt2800_init_rfcsr_3352()
6197 rt2800_rfcsr_write(rt2x00dev, 36, 0xbd); in rt2800_init_rfcsr_3352()
6198 rt2800_rfcsr_write(rt2x00dev, 37, 0x3c); in rt2800_init_rfcsr_3352()
6199 rt2800_rfcsr_write(rt2x00dev, 38, 0x5f); in rt2800_init_rfcsr_3352()
6200 rt2800_rfcsr_write(rt2x00dev, 39, 0xc5); in rt2800_init_rfcsr_3352()
6201 rt2800_rfcsr_write(rt2x00dev, 40, 0x33); in rt2800_init_rfcsr_3352()
6202 rt2800_rfcsr_write(rt2x00dev, 41, 0x5b); in rt2800_init_rfcsr_3352()
6203 rt2800_rfcsr_write(rt2x00dev, 42, 0x5b); in rt2800_init_rfcsr_3352()
6204 rt2800_rfcsr_write(rt2x00dev, 43, 0xdb); in rt2800_init_rfcsr_3352()
6205 rt2800_rfcsr_write(rt2x00dev, 44, 0xdb); in rt2800_init_rfcsr_3352()
6206 rt2800_rfcsr_write(rt2x00dev, 45, 0xdb); in rt2800_init_rfcsr_3352()
6207 rt2800_rfcsr_write(rt2x00dev, 46, 0xdd); in rt2800_init_rfcsr_3352()
6208 rt2800_rfcsr_write(rt2x00dev, 47, 0x0d); in rt2800_init_rfcsr_3352()
6209 rt2800_rfcsr_write(rt2x00dev, 48, 0x14); in rt2800_init_rfcsr_3352()
6210 rt2800_rfcsr_write(rt2x00dev, 49, 0x00); in rt2800_init_rfcsr_3352()
6211 rt2800_rfcsr_write(rt2x00dev, 50, 0x2d); in rt2800_init_rfcsr_3352()
6212 rt2800_rfcsr_write(rt2x00dev, 51, 0x7f); in rt2800_init_rfcsr_3352()
6213 rt2800_rfcsr_write(rt2x00dev, 52, 0x00); in rt2800_init_rfcsr_3352()
6214 rt2800_rfcsr_write(rt2x00dev, 53, 0x52); in rt2800_init_rfcsr_3352()
6215 rt2800_rfcsr_write(rt2x00dev, 54, 0x1b); in rt2800_init_rfcsr_3352()
6216 rt2800_rfcsr_write(rt2x00dev, 55, 0x7f); in rt2800_init_rfcsr_3352()
6217 rt2800_rfcsr_write(rt2x00dev, 56, 0x00); in rt2800_init_rfcsr_3352()
6218 rt2800_rfcsr_write(rt2x00dev, 57, 0x52); in rt2800_init_rfcsr_3352()
6219 rt2800_rfcsr_write(rt2x00dev, 58, 0x1b); in rt2800_init_rfcsr_3352()
6220 rt2800_rfcsr_write(rt2x00dev, 59, 0x00); in rt2800_init_rfcsr_3352()
6221 rt2800_rfcsr_write(rt2x00dev, 60, 0x00); in rt2800_init_rfcsr_3352()
6222 rt2800_rfcsr_write(rt2x00dev, 61, 0x00); in rt2800_init_rfcsr_3352()
6223 rt2800_rfcsr_write(rt2x00dev, 62, 0x00); in rt2800_init_rfcsr_3352()
6224 rt2800_rfcsr_write(rt2x00dev, 63, 0x00); in rt2800_init_rfcsr_3352()
6226 rt2800_rx_filter_calibration(rt2x00dev); in rt2800_init_rfcsr_3352()
6227 rt2800_led_open_drain_enable(rt2x00dev); in rt2800_init_rfcsr_3352()
6228 rt2800_normal_mode_setup_3xxx(rt2x00dev); in rt2800_init_rfcsr_3352()
6231 static void rt2800_init_rfcsr_3390(struct rt2x00_dev *rt2x00dev) in rt2800_init_rfcsr_3390() argument
6235 rt2800_rf_init_calibration(rt2x00dev, 30); in rt2800_init_rfcsr_3390()
6237 rt2800_rfcsr_write(rt2x00dev, 0, 0xa0); in rt2800_init_rfcsr_3390()
6238 rt2800_rfcsr_write(rt2x00dev, 1, 0xe1); in rt2800_init_rfcsr_3390()
6239 rt2800_rfcsr_write(rt2x00dev, 2, 0xf1); in rt2800_init_rfcsr_3390()
6240 rt2800_rfcsr_write(rt2x00dev, 3, 0x62); in rt2800_init_rfcsr_3390()
6241 rt2800_rfcsr_write(rt2x00dev, 4, 0x40); in rt2800_init_rfcsr_3390()
6242 rt2800_rfcsr_write(rt2x00dev, 5, 0x8b); in rt2800_init_rfcsr_3390()
6243 rt2800_rfcsr_write(rt2x00dev, 6, 0x42); in rt2800_init_rfcsr_3390()
6244 rt2800_rfcsr_write(rt2x00dev, 7, 0x34); in rt2800_init_rfcsr_3390()
6245 rt2800_rfcsr_write(rt2x00dev, 8, 0x00); in rt2800_init_rfcsr_3390()
6246 rt2800_rfcsr_write(rt2x00dev, 9, 0xc0); in rt2800_init_rfcsr_3390()
6247 rt2800_rfcsr_write(rt2x00dev, 10, 0x61); in rt2800_init_rfcsr_3390()
6248 rt2800_rfcsr_write(rt2x00dev, 11, 0x21); in rt2800_init_rfcsr_3390()
6249 rt2800_rfcsr_write(rt2x00dev, 12, 0x3b); in rt2800_init_rfcsr_3390()
6250 rt2800_rfcsr_write(rt2x00dev, 13, 0xe0); in rt2800_init_rfcsr_3390()
6251 rt2800_rfcsr_write(rt2x00dev, 14, 0x90); in rt2800_init_rfcsr_3390()
6252 rt2800_rfcsr_write(rt2x00dev, 15, 0x53); in rt2800_init_rfcsr_3390()
6253 rt2800_rfcsr_write(rt2x00dev, 16, 0xe0); in rt2800_init_rfcsr_3390()
6254 rt2800_rfcsr_write(rt2x00dev, 17, 0x94); in rt2800_init_rfcsr_3390()
6255 rt2800_rfcsr_write(rt2x00dev, 18, 0x5c); in rt2800_init_rfcsr_3390()
6256 rt2800_rfcsr_write(rt2x00dev, 19, 0x4a); in rt2800_init_rfcsr_3390()
6257 rt2800_rfcsr_write(rt2x00dev, 20, 0xb2); in rt2800_init_rfcsr_3390()
6258 rt2800_rfcsr_write(rt2x00dev, 21, 0xf6); in rt2800_init_rfcsr_3390()
6259 rt2800_rfcsr_write(rt2x00dev, 22, 0x00); in rt2800_init_rfcsr_3390()
6260 rt2800_rfcsr_write(rt2x00dev, 23, 0x14); in rt2800_init_rfcsr_3390()
6261 rt2800_rfcsr_write(rt2x00dev, 24, 0x08); in rt2800_init_rfcsr_3390()
6262 rt2800_rfcsr_write(rt2x00dev, 25, 0x3d); in rt2800_init_rfcsr_3390()
6263 rt2800_rfcsr_write(rt2x00dev, 26, 0x85); in rt2800_init_rfcsr_3390()
6264 rt2800_rfcsr_write(rt2x00dev, 27, 0x00); in rt2800_init_rfcsr_3390()
6265 rt2800_rfcsr_write(rt2x00dev, 28, 0x41); in rt2800_init_rfcsr_3390()
6266 rt2800_rfcsr_write(rt2x00dev, 29, 0x8f); in rt2800_init_rfcsr_3390()
6267 rt2800_rfcsr_write(rt2x00dev, 30, 0x20); in rt2800_init_rfcsr_3390()
6268 rt2800_rfcsr_write(rt2x00dev, 31, 0x0f); in rt2800_init_rfcsr_3390()
6270 rt2800_register_read(rt2x00dev, GPIO_SWITCH, &reg); in rt2800_init_rfcsr_3390()
6272 rt2800_register_write(rt2x00dev, GPIO_SWITCH, reg); in rt2800_init_rfcsr_3390()
6274 rt2800_rx_filter_calibration(rt2x00dev); in rt2800_init_rfcsr_3390()
6276 if (rt2x00_rt_rev_lt(rt2x00dev, RT3390, REV_RT3390E)) in rt2800_init_rfcsr_3390()
6277 rt2800_rfcsr_write(rt2x00dev, 27, 0x03); in rt2800_init_rfcsr_3390()
6279 rt2800_led_open_drain_enable(rt2x00dev); in rt2800_init_rfcsr_3390()
6280 rt2800_normal_mode_setup_3xxx(rt2x00dev); in rt2800_init_rfcsr_3390()
6283 static void rt2800_init_rfcsr_3572(struct rt2x00_dev *rt2x00dev) in rt2800_init_rfcsr_3572() argument
6288 rt2800_rf_init_calibration(rt2x00dev, 30); in rt2800_init_rfcsr_3572()
6290 rt2800_rfcsr_write(rt2x00dev, 0, 0x70); in rt2800_init_rfcsr_3572()
6291 rt2800_rfcsr_write(rt2x00dev, 1, 0x81); in rt2800_init_rfcsr_3572()
6292 rt2800_rfcsr_write(rt2x00dev, 2, 0xf1); in rt2800_init_rfcsr_3572()
6293 rt2800_rfcsr_write(rt2x00dev, 3, 0x02); in rt2800_init_rfcsr_3572()
6294 rt2800_rfcsr_write(rt2x00dev, 4, 0x4c); in rt2800_init_rfcsr_3572()
6295 rt2800_rfcsr_write(rt2x00dev, 5, 0x05); in rt2800_init_rfcsr_3572()
6296 rt2800_rfcsr_write(rt2x00dev, 6, 0x4a); in rt2800_init_rfcsr_3572()
6297 rt2800_rfcsr_write(rt2x00dev, 7, 0xd8); in rt2800_init_rfcsr_3572()
6298 rt2800_rfcsr_write(rt2x00dev, 9, 0xc3); in rt2800_init_rfcsr_3572()
6299 rt2800_rfcsr_write(rt2x00dev, 10, 0xf1); in rt2800_init_rfcsr_3572()
6300 rt2800_rfcsr_write(rt2x00dev, 11, 0xb9); in rt2800_init_rfcsr_3572()
6301 rt2800_rfcsr_write(rt2x00dev, 12, 0x70); in rt2800_init_rfcsr_3572()
6302 rt2800_rfcsr_write(rt2x00dev, 13, 0x65); in rt2800_init_rfcsr_3572()
6303 rt2800_rfcsr_write(rt2x00dev, 14, 0xa0); in rt2800_init_rfcsr_3572()
6304 rt2800_rfcsr_write(rt2x00dev, 15, 0x53); in rt2800_init_rfcsr_3572()
6305 rt2800_rfcsr_write(rt2x00dev, 16, 0x4c); in rt2800_init_rfcsr_3572()
6306 rt2800_rfcsr_write(rt2x00dev, 17, 0x23); in rt2800_init_rfcsr_3572()
6307 rt2800_rfcsr_write(rt2x00dev, 18, 0xac); in rt2800_init_rfcsr_3572()
6308 rt2800_rfcsr_write(rt2x00dev, 19, 0x93); in rt2800_init_rfcsr_3572()
6309 rt2800_rfcsr_write(rt2x00dev, 20, 0xb3); in rt2800_init_rfcsr_3572()
6310 rt2800_rfcsr_write(rt2x00dev, 21, 0xd0); in rt2800_init_rfcsr_3572()
6311 rt2800_rfcsr_write(rt2x00dev, 22, 0x00); in rt2800_init_rfcsr_3572()
6312 rt2800_rfcsr_write(rt2x00dev, 23, 0x3c); in rt2800_init_rfcsr_3572()
6313 rt2800_rfcsr_write(rt2x00dev, 24, 0x16); in rt2800_init_rfcsr_3572()
6314 rt2800_rfcsr_write(rt2x00dev, 25, 0x15); in rt2800_init_rfcsr_3572()
6315 rt2800_rfcsr_write(rt2x00dev, 26, 0x85); in rt2800_init_rfcsr_3572()
6316 rt2800_rfcsr_write(rt2x00dev, 27, 0x00); in rt2800_init_rfcsr_3572()
6317 rt2800_rfcsr_write(rt2x00dev, 28, 0x00); in rt2800_init_rfcsr_3572()
6318 rt2800_rfcsr_write(rt2x00dev, 29, 0x9b); in rt2800_init_rfcsr_3572()
6319 rt2800_rfcsr_write(rt2x00dev, 30, 0x09); in rt2800_init_rfcsr_3572()
6320 rt2800_rfcsr_write(rt2x00dev, 31, 0x10); in rt2800_init_rfcsr_3572()
6322 rt2800_rfcsr_read(rt2x00dev, 6, &rfcsr); in rt2800_init_rfcsr_3572()
6324 rt2800_rfcsr_write(rt2x00dev, 6, rfcsr); in rt2800_init_rfcsr_3572()
6326 rt2800_register_read(rt2x00dev, LDO_CFG0, &reg); in rt2800_init_rfcsr_3572()
6329 rt2800_register_write(rt2x00dev, LDO_CFG0, reg); in rt2800_init_rfcsr_3572()
6331 rt2800_register_read(rt2x00dev, LDO_CFG0, &reg); in rt2800_init_rfcsr_3572()
6334 rt2800_register_write(rt2x00dev, LDO_CFG0, reg); in rt2800_init_rfcsr_3572()
6336 rt2800_rx_filter_calibration(rt2x00dev); in rt2800_init_rfcsr_3572()
6337 rt2800_led_open_drain_enable(rt2x00dev); in rt2800_init_rfcsr_3572()
6338 rt2800_normal_mode_setup_3xxx(rt2x00dev); in rt2800_init_rfcsr_3572()
6341 static void rt3593_post_bbp_init(struct rt2x00_dev *rt2x00dev) in rt3593_post_bbp_init() argument
6346 rt2800_bbp_read(rt2x00dev, 105, &bbp); in rt3593_post_bbp_init()
6347 if (rt2x00dev->default_ant.rx_chain_num == 1) in rt3593_post_bbp_init()
6351 rt2800_bbp_write(rt2x00dev, 105, bbp); in rt3593_post_bbp_init()
6353 rt2800_bbp4_mac_if_ctrl(rt2x00dev); in rt3593_post_bbp_init()
6355 rt2800_bbp_write(rt2x00dev, 92, 0x02); in rt3593_post_bbp_init()
6356 rt2800_bbp_write(rt2x00dev, 82, 0x82); in rt3593_post_bbp_init()
6357 rt2800_bbp_write(rt2x00dev, 106, 0x05); in rt3593_post_bbp_init()
6358 rt2800_bbp_write(rt2x00dev, 104, 0x92); in rt3593_post_bbp_init()
6359 rt2800_bbp_write(rt2x00dev, 88, 0x90); in rt3593_post_bbp_init()
6360 rt2800_bbp_write(rt2x00dev, 148, 0xc8); in rt3593_post_bbp_init()
6361 rt2800_bbp_write(rt2x00dev, 47, 0x48); in rt3593_post_bbp_init()
6362 rt2800_bbp_write(rt2x00dev, 120, 0x50); in rt3593_post_bbp_init()
6365 rt2800_bbp_write(rt2x00dev, 163, 0xbd); in rt3593_post_bbp_init()
6367 rt2800_bbp_write(rt2x00dev, 163, 0x9d); in rt3593_post_bbp_init()
6370 rt2800_bbp_write(rt2x00dev, 142, 6); in rt3593_post_bbp_init()
6371 rt2800_bbp_write(rt2x00dev, 143, 160); in rt3593_post_bbp_init()
6372 rt2800_bbp_write(rt2x00dev, 142, 7); in rt3593_post_bbp_init()
6373 rt2800_bbp_write(rt2x00dev, 143, 161); in rt3593_post_bbp_init()
6374 rt2800_bbp_write(rt2x00dev, 142, 8); in rt3593_post_bbp_init()
6375 rt2800_bbp_write(rt2x00dev, 143, 162); in rt3593_post_bbp_init()
6378 rt2800_bbp_write(rt2x00dev, 31, 0x08); in rt3593_post_bbp_init()
6381 rt2800_bbp_write(rt2x00dev, 68, 0x0b); in rt3593_post_bbp_init()
6384 rt2800_bbp_write(rt2x00dev, 105, 0x04); in rt3593_post_bbp_init()
6388 static void rt2800_init_rfcsr_3593(struct rt2x00_dev *rt2x00dev) in rt2800_init_rfcsr_3593() argument
6390 struct rt2800_drv_data *drv_data = rt2x00dev->drv_data; in rt2800_init_rfcsr_3593()
6395 rt2800_register_read(rt2x00dev, GPIO_SWITCH, &reg); in rt2800_init_rfcsr_3593()
6398 rt2800_register_write(rt2x00dev, GPIO_SWITCH, reg); in rt2800_init_rfcsr_3593()
6401 rt2800_rfcsr_write(rt2x00dev, 1, 0x03); in rt2800_init_rfcsr_3593()
6402 rt2800_rfcsr_write(rt2x00dev, 3, 0x80); in rt2800_init_rfcsr_3593()
6403 rt2800_rfcsr_write(rt2x00dev, 5, 0x00); in rt2800_init_rfcsr_3593()
6404 rt2800_rfcsr_write(rt2x00dev, 6, 0x40); in rt2800_init_rfcsr_3593()
6405 rt2800_rfcsr_write(rt2x00dev, 8, 0xf1); in rt2800_init_rfcsr_3593()
6406 rt2800_rfcsr_write(rt2x00dev, 9, 0x02); in rt2800_init_rfcsr_3593()
6407 rt2800_rfcsr_write(rt2x00dev, 10, 0xd3); in rt2800_init_rfcsr_3593()
6408 rt2800_rfcsr_write(rt2x00dev, 11, 0x40); in rt2800_init_rfcsr_3593()
6409 rt2800_rfcsr_write(rt2x00dev, 12, 0x4e); in rt2800_init_rfcsr_3593()
6410 rt2800_rfcsr_write(rt2x00dev, 13, 0x12); in rt2800_init_rfcsr_3593()
6411 rt2800_rfcsr_write(rt2x00dev, 18, 0x40); in rt2800_init_rfcsr_3593()
6412 rt2800_rfcsr_write(rt2x00dev, 22, 0x20); in rt2800_init_rfcsr_3593()
6413 rt2800_rfcsr_write(rt2x00dev, 30, 0x10); in rt2800_init_rfcsr_3593()
6414 rt2800_rfcsr_write(rt2x00dev, 31, 0x80); in rt2800_init_rfcsr_3593()
6415 rt2800_rfcsr_write(rt2x00dev, 32, 0x78); in rt2800_init_rfcsr_3593()
6416 rt2800_rfcsr_write(rt2x00dev, 33, 0x3b); in rt2800_init_rfcsr_3593()
6417 rt2800_rfcsr_write(rt2x00dev, 34, 0x3c); in rt2800_init_rfcsr_3593()
6418 rt2800_rfcsr_write(rt2x00dev, 35, 0xe0); in rt2800_init_rfcsr_3593()
6419 rt2800_rfcsr_write(rt2x00dev, 38, 0x86); in rt2800_init_rfcsr_3593()
6420 rt2800_rfcsr_write(rt2x00dev, 39, 0x23); in rt2800_init_rfcsr_3593()
6421 rt2800_rfcsr_write(rt2x00dev, 44, 0xd3); in rt2800_init_rfcsr_3593()
6422 rt2800_rfcsr_write(rt2x00dev, 45, 0xbb); in rt2800_init_rfcsr_3593()
6423 rt2800_rfcsr_write(rt2x00dev, 46, 0x60); in rt2800_init_rfcsr_3593()
6424 rt2800_rfcsr_write(rt2x00dev, 49, 0x8e); in rt2800_init_rfcsr_3593()
6425 rt2800_rfcsr_write(rt2x00dev, 50, 0x86); in rt2800_init_rfcsr_3593()
6426 rt2800_rfcsr_write(rt2x00dev, 51, 0x75); in rt2800_init_rfcsr_3593()
6427 rt2800_rfcsr_write(rt2x00dev, 52, 0x45); in rt2800_init_rfcsr_3593()
6428 rt2800_rfcsr_write(rt2x00dev, 53, 0x18); in rt2800_init_rfcsr_3593()
6429 rt2800_rfcsr_write(rt2x00dev, 54, 0x18); in rt2800_init_rfcsr_3593()
6430 rt2800_rfcsr_write(rt2x00dev, 55, 0x18); in rt2800_init_rfcsr_3593()
6431 rt2800_rfcsr_write(rt2x00dev, 56, 0xdb); in rt2800_init_rfcsr_3593()
6432 rt2800_rfcsr_write(rt2x00dev, 57, 0x6e); in rt2800_init_rfcsr_3593()
6436 rt2800_rfcsr_read(rt2x00dev, 2, &rfcsr); in rt2800_init_rfcsr_3593()
6438 rt2800_rfcsr_write(rt2x00dev, 2, rfcsr); in rt2800_init_rfcsr_3593()
6440 rt2800_adjust_freq_offset(rt2x00dev); in rt2800_init_rfcsr_3593()
6442 rt2800_rfcsr_read(rt2x00dev, 18, &rfcsr); in rt2800_init_rfcsr_3593()
6444 rt2800_rfcsr_write(rt2x00dev, 18, rfcsr); in rt2800_init_rfcsr_3593()
6446 rt2800_register_read(rt2x00dev, LDO_CFG0, &reg); in rt2800_init_rfcsr_3593()
6449 rt2800_register_write(rt2x00dev, LDO_CFG0, reg); in rt2800_init_rfcsr_3593()
6451 rt2800_register_read(rt2x00dev, LDO_CFG0, &reg); in rt2800_init_rfcsr_3593()
6453 rt2800_register_write(rt2x00dev, LDO_CFG0, reg); in rt2800_init_rfcsr_3593()
6460 rt2800_bbp_read(rt2x00dev, 25, &drv_data->bbp25); in rt2800_init_rfcsr_3593()
6461 rt2800_bbp_read(rt2x00dev, 26, &drv_data->bbp26); in rt2800_init_rfcsr_3593()
6463 rt2800_led_open_drain_enable(rt2x00dev); in rt2800_init_rfcsr_3593()
6464 rt2800_normal_mode_setup_3593(rt2x00dev); in rt2800_init_rfcsr_3593()
6466 rt3593_post_bbp_init(rt2x00dev); in rt2800_init_rfcsr_3593()
6471 static void rt2800_init_rfcsr_5390(struct rt2x00_dev *rt2x00dev) in rt2800_init_rfcsr_5390() argument
6473 rt2800_rf_init_calibration(rt2x00dev, 2); in rt2800_init_rfcsr_5390()
6475 rt2800_rfcsr_write(rt2x00dev, 1, 0x0f); in rt2800_init_rfcsr_5390()
6476 rt2800_rfcsr_write(rt2x00dev, 2, 0x80); in rt2800_init_rfcsr_5390()
6477 rt2800_rfcsr_write(rt2x00dev, 3, 0x88); in rt2800_init_rfcsr_5390()
6478 rt2800_rfcsr_write(rt2x00dev, 5, 0x10); in rt2800_init_rfcsr_5390()
6479 if (rt2x00_rt_rev_gte(rt2x00dev, RT5390, REV_RT5390F)) in rt2800_init_rfcsr_5390()
6480 rt2800_rfcsr_write(rt2x00dev, 6, 0xe0); in rt2800_init_rfcsr_5390()
6482 rt2800_rfcsr_write(rt2x00dev, 6, 0xa0); in rt2800_init_rfcsr_5390()
6483 rt2800_rfcsr_write(rt2x00dev, 7, 0x00); in rt2800_init_rfcsr_5390()
6484 rt2800_rfcsr_write(rt2x00dev, 10, 0x53); in rt2800_init_rfcsr_5390()
6485 rt2800_rfcsr_write(rt2x00dev, 11, 0x4a); in rt2800_init_rfcsr_5390()
6486 rt2800_rfcsr_write(rt2x00dev, 12, 0x46); in rt2800_init_rfcsr_5390()
6487 rt2800_rfcsr_write(rt2x00dev, 13, 0x9f); in rt2800_init_rfcsr_5390()
6488 rt2800_rfcsr_write(rt2x00dev, 14, 0x00); in rt2800_init_rfcsr_5390()
6489 rt2800_rfcsr_write(rt2x00dev, 15, 0x00); in rt2800_init_rfcsr_5390()
6490 rt2800_rfcsr_write(rt2x00dev, 16, 0x00); in rt2800_init_rfcsr_5390()
6491 rt2800_rfcsr_write(rt2x00dev, 18, 0x03); in rt2800_init_rfcsr_5390()
6492 rt2800_rfcsr_write(rt2x00dev, 19, 0x00); in rt2800_init_rfcsr_5390()
6494 rt2800_rfcsr_write(rt2x00dev, 20, 0x00); in rt2800_init_rfcsr_5390()
6495 rt2800_rfcsr_write(rt2x00dev, 21, 0x00); in rt2800_init_rfcsr_5390()
6496 rt2800_rfcsr_write(rt2x00dev, 22, 0x20); in rt2800_init_rfcsr_5390()
6497 rt2800_rfcsr_write(rt2x00dev, 23, 0x00); in rt2800_init_rfcsr_5390()
6498 rt2800_rfcsr_write(rt2x00dev, 24, 0x00); in rt2800_init_rfcsr_5390()
6499 if (rt2x00_is_usb(rt2x00dev) && in rt2800_init_rfcsr_5390()
6500 rt2x00_rt_rev_gte(rt2x00dev, RT5390, REV_RT5390F)) in rt2800_init_rfcsr_5390()
6501 rt2800_rfcsr_write(rt2x00dev, 25, 0x80); in rt2800_init_rfcsr_5390()
6503 rt2800_rfcsr_write(rt2x00dev, 25, 0xc0); in rt2800_init_rfcsr_5390()
6504 rt2800_rfcsr_write(rt2x00dev, 26, 0x00); in rt2800_init_rfcsr_5390()
6505 rt2800_rfcsr_write(rt2x00dev, 27, 0x09); in rt2800_init_rfcsr_5390()
6506 rt2800_rfcsr_write(rt2x00dev, 28, 0x00); in rt2800_init_rfcsr_5390()
6507 rt2800_rfcsr_write(rt2x00dev, 29, 0x10); in rt2800_init_rfcsr_5390()
6509 rt2800_rfcsr_write(rt2x00dev, 30, 0x10); in rt2800_init_rfcsr_5390()
6510 rt2800_rfcsr_write(rt2x00dev, 31, 0x80); in rt2800_init_rfcsr_5390()
6511 rt2800_rfcsr_write(rt2x00dev, 32, 0x80); in rt2800_init_rfcsr_5390()
6512 rt2800_rfcsr_write(rt2x00dev, 33, 0x00); in rt2800_init_rfcsr_5390()
6513 rt2800_rfcsr_write(rt2x00dev, 34, 0x07); in rt2800_init_rfcsr_5390()
6514 rt2800_rfcsr_write(rt2x00dev, 35, 0x12); in rt2800_init_rfcsr_5390()
6515 rt2800_rfcsr_write(rt2x00dev, 36, 0x00); in rt2800_init_rfcsr_5390()
6516 rt2800_rfcsr_write(rt2x00dev, 37, 0x08); in rt2800_init_rfcsr_5390()
6517 rt2800_rfcsr_write(rt2x00dev, 38, 0x85); in rt2800_init_rfcsr_5390()
6518 rt2800_rfcsr_write(rt2x00dev, 39, 0x1b); in rt2800_init_rfcsr_5390()
6520 rt2800_rfcsr_write(rt2x00dev, 40, 0x0b); in rt2800_init_rfcsr_5390()
6521 rt2800_rfcsr_write(rt2x00dev, 41, 0xbb); in rt2800_init_rfcsr_5390()
6522 rt2800_rfcsr_write(rt2x00dev, 42, 0xd2); in rt2800_init_rfcsr_5390()
6523 rt2800_rfcsr_write(rt2x00dev, 43, 0x9a); in rt2800_init_rfcsr_5390()
6524 rt2800_rfcsr_write(rt2x00dev, 44, 0x0e); in rt2800_init_rfcsr_5390()
6525 rt2800_rfcsr_write(rt2x00dev, 45, 0xa2); in rt2800_init_rfcsr_5390()
6526 if (rt2x00_rt_rev_gte(rt2x00dev, RT5390, REV_RT5390F)) in rt2800_init_rfcsr_5390()
6527 rt2800_rfcsr_write(rt2x00dev, 46, 0x73); in rt2800_init_rfcsr_5390()
6529 rt2800_rfcsr_write(rt2x00dev, 46, 0x7b); in rt2800_init_rfcsr_5390()
6530 rt2800_rfcsr_write(rt2x00dev, 47, 0x00); in rt2800_init_rfcsr_5390()
6531 rt2800_rfcsr_write(rt2x00dev, 48, 0x10); in rt2800_init_rfcsr_5390()
6532 rt2800_rfcsr_write(rt2x00dev, 49, 0x94); in rt2800_init_rfcsr_5390()
6534 rt2800_rfcsr_write(rt2x00dev, 52, 0x38); in rt2800_init_rfcsr_5390()
6535 if (rt2x00_rt_rev_gte(rt2x00dev, RT5390, REV_RT5390F)) in rt2800_init_rfcsr_5390()
6536 rt2800_rfcsr_write(rt2x00dev, 53, 0x00); in rt2800_init_rfcsr_5390()
6538 rt2800_rfcsr_write(rt2x00dev, 53, 0x84); in rt2800_init_rfcsr_5390()
6539 rt2800_rfcsr_write(rt2x00dev, 54, 0x78); in rt2800_init_rfcsr_5390()
6540 rt2800_rfcsr_write(rt2x00dev, 55, 0x44); in rt2800_init_rfcsr_5390()
6541 if (rt2x00_rt_rev_gte(rt2x00dev, RT5390, REV_RT5390F)) in rt2800_init_rfcsr_5390()
6542 rt2800_rfcsr_write(rt2x00dev, 56, 0x42); in rt2800_init_rfcsr_5390()
6544 rt2800_rfcsr_write(rt2x00dev, 56, 0x22); in rt2800_init_rfcsr_5390()
6545 rt2800_rfcsr_write(rt2x00dev, 57, 0x80); in rt2800_init_rfcsr_5390()
6546 rt2800_rfcsr_write(rt2x00dev, 58, 0x7f); in rt2800_init_rfcsr_5390()
6547 rt2800_rfcsr_write(rt2x00dev, 59, 0x8f); in rt2800_init_rfcsr_5390()
6549 rt2800_rfcsr_write(rt2x00dev, 60, 0x45); in rt2800_init_rfcsr_5390()
6550 if (rt2x00_rt_rev_gte(rt2x00dev, RT5390, REV_RT5390F)) { in rt2800_init_rfcsr_5390()
6551 if (rt2x00_is_usb(rt2x00dev)) in rt2800_init_rfcsr_5390()
6552 rt2800_rfcsr_write(rt2x00dev, 61, 0xd1); in rt2800_init_rfcsr_5390()
6554 rt2800_rfcsr_write(rt2x00dev, 61, 0xd5); in rt2800_init_rfcsr_5390()
6556 if (rt2x00_is_usb(rt2x00dev)) in rt2800_init_rfcsr_5390()
6557 rt2800_rfcsr_write(rt2x00dev, 61, 0xdd); in rt2800_init_rfcsr_5390()
6559 rt2800_rfcsr_write(rt2x00dev, 61, 0xb5); in rt2800_init_rfcsr_5390()
6561 rt2800_rfcsr_write(rt2x00dev, 62, 0x00); in rt2800_init_rfcsr_5390()
6562 rt2800_rfcsr_write(rt2x00dev, 63, 0x00); in rt2800_init_rfcsr_5390()
6564 rt2800_normal_mode_setup_5xxx(rt2x00dev); in rt2800_init_rfcsr_5390()
6566 rt2800_led_open_drain_enable(rt2x00dev); in rt2800_init_rfcsr_5390()
6569 static void rt2800_init_rfcsr_5392(struct rt2x00_dev *rt2x00dev) in rt2800_init_rfcsr_5392() argument
6571 rt2800_rf_init_calibration(rt2x00dev, 2); in rt2800_init_rfcsr_5392()
6573 rt2800_rfcsr_write(rt2x00dev, 1, 0x17); in rt2800_init_rfcsr_5392()
6574 rt2800_rfcsr_write(rt2x00dev, 3, 0x88); in rt2800_init_rfcsr_5392()
6575 rt2800_rfcsr_write(rt2x00dev, 5, 0x10); in rt2800_init_rfcsr_5392()
6576 rt2800_rfcsr_write(rt2x00dev, 6, 0xe0); in rt2800_init_rfcsr_5392()
6577 rt2800_rfcsr_write(rt2x00dev, 7, 0x00); in rt2800_init_rfcsr_5392()
6578 rt2800_rfcsr_write(rt2x00dev, 10, 0x53); in rt2800_init_rfcsr_5392()
6579 rt2800_rfcsr_write(rt2x00dev, 11, 0x4a); in rt2800_init_rfcsr_5392()
6580 rt2800_rfcsr_write(rt2x00dev, 12, 0x46); in rt2800_init_rfcsr_5392()
6581 rt2800_rfcsr_write(rt2x00dev, 13, 0x9f); in rt2800_init_rfcsr_5392()
6582 rt2800_rfcsr_write(rt2x00dev, 14, 0x00); in rt2800_init_rfcsr_5392()
6583 rt2800_rfcsr_write(rt2x00dev, 15, 0x00); in rt2800_init_rfcsr_5392()
6584 rt2800_rfcsr_write(rt2x00dev, 16, 0x00); in rt2800_init_rfcsr_5392()
6585 rt2800_rfcsr_write(rt2x00dev, 18, 0x03); in rt2800_init_rfcsr_5392()
6586 rt2800_rfcsr_write(rt2x00dev, 19, 0x4d); in rt2800_init_rfcsr_5392()
6587 rt2800_rfcsr_write(rt2x00dev, 20, 0x00); in rt2800_init_rfcsr_5392()
6588 rt2800_rfcsr_write(rt2x00dev, 21, 0x8d); in rt2800_init_rfcsr_5392()
6589 rt2800_rfcsr_write(rt2x00dev, 22, 0x20); in rt2800_init_rfcsr_5392()
6590 rt2800_rfcsr_write(rt2x00dev, 23, 0x0b); in rt2800_init_rfcsr_5392()
6591 rt2800_rfcsr_write(rt2x00dev, 24, 0x44); in rt2800_init_rfcsr_5392()
6592 rt2800_rfcsr_write(rt2x00dev, 25, 0x80); in rt2800_init_rfcsr_5392()
6593 rt2800_rfcsr_write(rt2x00dev, 26, 0x82); in rt2800_init_rfcsr_5392()
6594 rt2800_rfcsr_write(rt2x00dev, 27, 0x09); in rt2800_init_rfcsr_5392()
6595 rt2800_rfcsr_write(rt2x00dev, 28, 0x00); in rt2800_init_rfcsr_5392()
6596 rt2800_rfcsr_write(rt2x00dev, 29, 0x10); in rt2800_init_rfcsr_5392()
6597 rt2800_rfcsr_write(rt2x00dev, 30, 0x10); in rt2800_init_rfcsr_5392()
6598 rt2800_rfcsr_write(rt2x00dev, 31, 0x80); in rt2800_init_rfcsr_5392()
6599 rt2800_rfcsr_write(rt2x00dev, 32, 0x20); in rt2800_init_rfcsr_5392()
6600 rt2800_rfcsr_write(rt2x00dev, 33, 0xC0); in rt2800_init_rfcsr_5392()
6601 rt2800_rfcsr_write(rt2x00dev, 34, 0x07); in rt2800_init_rfcsr_5392()
6602 rt2800_rfcsr_write(rt2x00dev, 35, 0x12); in rt2800_init_rfcsr_5392()
6603 rt2800_rfcsr_write(rt2x00dev, 36, 0x00); in rt2800_init_rfcsr_5392()
6604 rt2800_rfcsr_write(rt2x00dev, 37, 0x08); in rt2800_init_rfcsr_5392()
6605 rt2800_rfcsr_write(rt2x00dev, 38, 0x89); in rt2800_init_rfcsr_5392()
6606 rt2800_rfcsr_write(rt2x00dev, 39, 0x1b); in rt2800_init_rfcsr_5392()
6607 rt2800_rfcsr_write(rt2x00dev, 40, 0x0f); in rt2800_init_rfcsr_5392()
6608 rt2800_rfcsr_write(rt2x00dev, 41, 0xbb); in rt2800_init_rfcsr_5392()
6609 rt2800_rfcsr_write(rt2x00dev, 42, 0xd5); in rt2800_init_rfcsr_5392()
6610 rt2800_rfcsr_write(rt2x00dev, 43, 0x9b); in rt2800_init_rfcsr_5392()
6611 rt2800_rfcsr_write(rt2x00dev, 44, 0x0e); in rt2800_init_rfcsr_5392()
6612 rt2800_rfcsr_write(rt2x00dev, 45, 0xa2); in rt2800_init_rfcsr_5392()
6613 rt2800_rfcsr_write(rt2x00dev, 46, 0x73); in rt2800_init_rfcsr_5392()
6614 rt2800_rfcsr_write(rt2x00dev, 47, 0x0c); in rt2800_init_rfcsr_5392()
6615 rt2800_rfcsr_write(rt2x00dev, 48, 0x10); in rt2800_init_rfcsr_5392()
6616 rt2800_rfcsr_write(rt2x00dev, 49, 0x94); in rt2800_init_rfcsr_5392()
6617 rt2800_rfcsr_write(rt2x00dev, 50, 0x94); in rt2800_init_rfcsr_5392()
6618 rt2800_rfcsr_write(rt2x00dev, 51, 0x3a); in rt2800_init_rfcsr_5392()
6619 rt2800_rfcsr_write(rt2x00dev, 52, 0x48); in rt2800_init_rfcsr_5392()
6620 rt2800_rfcsr_write(rt2x00dev, 53, 0x44); in rt2800_init_rfcsr_5392()
6621 rt2800_rfcsr_write(rt2x00dev, 54, 0x38); in rt2800_init_rfcsr_5392()
6622 rt2800_rfcsr_write(rt2x00dev, 55, 0x43); in rt2800_init_rfcsr_5392()
6623 rt2800_rfcsr_write(rt2x00dev, 56, 0xa1); in rt2800_init_rfcsr_5392()
6624 rt2800_rfcsr_write(rt2x00dev, 57, 0x00); in rt2800_init_rfcsr_5392()
6625 rt2800_rfcsr_write(rt2x00dev, 58, 0x39); in rt2800_init_rfcsr_5392()
6626 rt2800_rfcsr_write(rt2x00dev, 59, 0x07); in rt2800_init_rfcsr_5392()
6627 rt2800_rfcsr_write(rt2x00dev, 60, 0x45); in rt2800_init_rfcsr_5392()
6628 rt2800_rfcsr_write(rt2x00dev, 61, 0x91); in rt2800_init_rfcsr_5392()
6629 rt2800_rfcsr_write(rt2x00dev, 62, 0x39); in rt2800_init_rfcsr_5392()
6630 rt2800_rfcsr_write(rt2x00dev, 63, 0x07); in rt2800_init_rfcsr_5392()
6632 rt2800_normal_mode_setup_5xxx(rt2x00dev); in rt2800_init_rfcsr_5392()
6634 rt2800_led_open_drain_enable(rt2x00dev); in rt2800_init_rfcsr_5392()
6637 static void rt2800_init_rfcsr_5592(struct rt2x00_dev *rt2x00dev) in rt2800_init_rfcsr_5592() argument
6639 rt2800_rf_init_calibration(rt2x00dev, 30); in rt2800_init_rfcsr_5592()
6641 rt2800_rfcsr_write(rt2x00dev, 1, 0x3F); in rt2800_init_rfcsr_5592()
6642 rt2800_rfcsr_write(rt2x00dev, 3, 0x08); in rt2800_init_rfcsr_5592()
6643 rt2800_rfcsr_write(rt2x00dev, 5, 0x10); in rt2800_init_rfcsr_5592()
6644 rt2800_rfcsr_write(rt2x00dev, 6, 0xE4); in rt2800_init_rfcsr_5592()
6645 rt2800_rfcsr_write(rt2x00dev, 7, 0x00); in rt2800_init_rfcsr_5592()
6646 rt2800_rfcsr_write(rt2x00dev, 14, 0x00); in rt2800_init_rfcsr_5592()
6647 rt2800_rfcsr_write(rt2x00dev, 15, 0x00); in rt2800_init_rfcsr_5592()
6648 rt2800_rfcsr_write(rt2x00dev, 16, 0x00); in rt2800_init_rfcsr_5592()
6649 rt2800_rfcsr_write(rt2x00dev, 18, 0x03); in rt2800_init_rfcsr_5592()
6650 rt2800_rfcsr_write(rt2x00dev, 19, 0x4D); in rt2800_init_rfcsr_5592()
6651 rt2800_rfcsr_write(rt2x00dev, 20, 0x10); in rt2800_init_rfcsr_5592()
6652 rt2800_rfcsr_write(rt2x00dev, 21, 0x8D); in rt2800_init_rfcsr_5592()
6653 rt2800_rfcsr_write(rt2x00dev, 26, 0x82); in rt2800_init_rfcsr_5592()
6654 rt2800_rfcsr_write(rt2x00dev, 28, 0x00); in rt2800_init_rfcsr_5592()
6655 rt2800_rfcsr_write(rt2x00dev, 29, 0x10); in rt2800_init_rfcsr_5592()
6656 rt2800_rfcsr_write(rt2x00dev, 33, 0xC0); in rt2800_init_rfcsr_5592()
6657 rt2800_rfcsr_write(rt2x00dev, 34, 0x07); in rt2800_init_rfcsr_5592()
6658 rt2800_rfcsr_write(rt2x00dev, 35, 0x12); in rt2800_init_rfcsr_5592()
6659 rt2800_rfcsr_write(rt2x00dev, 47, 0x0C); in rt2800_init_rfcsr_5592()
6660 rt2800_rfcsr_write(rt2x00dev, 53, 0x22); in rt2800_init_rfcsr_5592()
6661 rt2800_rfcsr_write(rt2x00dev, 63, 0x07); in rt2800_init_rfcsr_5592()
6663 rt2800_rfcsr_write(rt2x00dev, 2, 0x80); in rt2800_init_rfcsr_5592()
6666 rt2800_adjust_freq_offset(rt2x00dev); in rt2800_init_rfcsr_5592()
6669 if (rt2x00_rt_rev_gte(rt2x00dev, RT5592, REV_RT5592C)) in rt2800_init_rfcsr_5592()
6670 rt2800_bbp_write(rt2x00dev, 103, 0xc0); in rt2800_init_rfcsr_5592()
6672 rt2800_normal_mode_setup_5xxx(rt2x00dev); in rt2800_init_rfcsr_5592()
6674 if (rt2x00_rt_rev_lt(rt2x00dev, RT5592, REV_RT5592C)) in rt2800_init_rfcsr_5592()
6675 rt2800_rfcsr_write(rt2x00dev, 27, 0x03); in rt2800_init_rfcsr_5592()
6677 rt2800_led_open_drain_enable(rt2x00dev); in rt2800_init_rfcsr_5592()
6680 static void rt2800_init_rfcsr(struct rt2x00_dev *rt2x00dev) in rt2800_init_rfcsr() argument
6682 if (rt2800_is_305x_soc(rt2x00dev)) { in rt2800_init_rfcsr()
6683 rt2800_init_rfcsr_305x_soc(rt2x00dev); in rt2800_init_rfcsr()
6687 switch (rt2x00dev->chip.rt) { in rt2800_init_rfcsr()
6691 rt2800_init_rfcsr_30xx(rt2x00dev); in rt2800_init_rfcsr()
6694 rt2800_init_rfcsr_3290(rt2x00dev); in rt2800_init_rfcsr()
6697 rt2800_init_rfcsr_3352(rt2x00dev); in rt2800_init_rfcsr()
6700 rt2800_init_rfcsr_3390(rt2x00dev); in rt2800_init_rfcsr()
6703 rt2800_init_rfcsr_3572(rt2x00dev); in rt2800_init_rfcsr()
6706 rt2800_init_rfcsr_3593(rt2x00dev); in rt2800_init_rfcsr()
6709 rt2800_init_rfcsr_5390(rt2x00dev); in rt2800_init_rfcsr()
6712 rt2800_init_rfcsr_5392(rt2x00dev); in rt2800_init_rfcsr()
6715 rt2800_init_rfcsr_5592(rt2x00dev); in rt2800_init_rfcsr()
6720 int rt2800_enable_radio(struct rt2x00_dev *rt2x00dev) in rt2800_enable_radio() argument
6728 if (unlikely(rt2800_wait_wpdma_ready(rt2x00dev) || in rt2800_enable_radio()
6729 rt2800_init_registers(rt2x00dev))) in rt2800_enable_radio()
6735 if (unlikely(rt2800_wait_bbp_rf_ready(rt2x00dev))) in rt2800_enable_radio()
6741 rt2800_register_write(rt2x00dev, H2M_BBP_AGENT, 0); in rt2800_enable_radio()
6742 rt2800_register_write(rt2x00dev, H2M_MAILBOX_CSR, 0); in rt2800_enable_radio()
6743 if (rt2x00_is_usb(rt2x00dev)) in rt2800_enable_radio()
6744 rt2800_register_write(rt2x00dev, H2M_INT_SRC, 0); in rt2800_enable_radio()
6745 rt2800_mcu_request(rt2x00dev, MCU_BOOT_SIGNAL, 0, 0, 0); in rt2800_enable_radio()
6751 if (unlikely(rt2800_wait_bbp_ready(rt2x00dev))) in rt2800_enable_radio()
6757 rt2800_init_bbp(rt2x00dev); in rt2800_enable_radio()
6758 rt2800_init_rfcsr(rt2x00dev); in rt2800_enable_radio()
6760 if (rt2x00_is_usb(rt2x00dev) && in rt2800_enable_radio()
6761 (rt2x00_rt(rt2x00dev, RT3070) || in rt2800_enable_radio()
6762 rt2x00_rt(rt2x00dev, RT3071) || in rt2800_enable_radio()
6763 rt2x00_rt(rt2x00dev, RT3572))) { in rt2800_enable_radio()
6765 rt2800_mcu_request(rt2x00dev, MCU_CURRENT, 0, 0, 0); in rt2800_enable_radio()
6772 rt2800_register_read(rt2x00dev, MAC_SYS_CTRL, &reg); in rt2800_enable_radio()
6775 rt2800_register_write(rt2x00dev, MAC_SYS_CTRL, reg); in rt2800_enable_radio()
6779 rt2800_register_read(rt2x00dev, WPDMA_GLO_CFG, &reg); in rt2800_enable_radio()
6784 rt2800_register_write(rt2x00dev, WPDMA_GLO_CFG, reg); in rt2800_enable_radio()
6786 rt2800_register_read(rt2x00dev, MAC_SYS_CTRL, &reg); in rt2800_enable_radio()
6789 rt2800_register_write(rt2x00dev, MAC_SYS_CTRL, reg); in rt2800_enable_radio()
6794 rt2800_eeprom_read(rt2x00dev, EEPROM_LED_AG_CONF, &word); in rt2800_enable_radio()
6795 rt2800_mcu_request(rt2x00dev, MCU_LED_AG_CONF, 0xff, in rt2800_enable_radio()
6798 rt2800_eeprom_read(rt2x00dev, EEPROM_LED_ACT_CONF, &word); in rt2800_enable_radio()
6799 rt2800_mcu_request(rt2x00dev, MCU_LED_ACT_CONF, 0xff, in rt2800_enable_radio()
6802 rt2800_eeprom_read(rt2x00dev, EEPROM_LED_POLARITY, &word); in rt2800_enable_radio()
6803 rt2800_mcu_request(rt2x00dev, MCU_LED_LED_POLARITY, 0xff, in rt2800_enable_radio()
6810 void rt2800_disable_radio(struct rt2x00_dev *rt2x00dev) in rt2800_disable_radio() argument
6814 rt2800_disable_wpdma(rt2x00dev); in rt2800_disable_radio()
6817 rt2800_wait_wpdma_ready(rt2x00dev); in rt2800_disable_radio()
6819 rt2800_register_read(rt2x00dev, MAC_SYS_CTRL, &reg); in rt2800_disable_radio()
6822 rt2800_register_write(rt2x00dev, MAC_SYS_CTRL, reg); in rt2800_disable_radio()
6826 int rt2800_efuse_detect(struct rt2x00_dev *rt2x00dev) in rt2800_efuse_detect() argument
6831 if (rt2x00_rt(rt2x00dev, RT3290)) in rt2800_efuse_detect()
6836 rt2800_register_read(rt2x00dev, efuse_ctrl_reg, &reg); in rt2800_efuse_detect()
6841 static void rt2800_efuse_read(struct rt2x00_dev *rt2x00dev, unsigned int i) in rt2800_efuse_read() argument
6850 if (rt2x00_rt(rt2x00dev, RT3290)) { in rt2800_efuse_read()
6863 mutex_lock(&rt2x00dev->csr_mutex); in rt2800_efuse_read()
6865 rt2800_register_read_lock(rt2x00dev, efuse_ctrl_reg, &reg); in rt2800_efuse_read()
6869 rt2800_register_write_lock(rt2x00dev, efuse_ctrl_reg, reg); in rt2800_efuse_read()
6872 rt2800_regbusy_read(rt2x00dev, efuse_ctrl_reg, EFUSE_CTRL_KICK, &reg); in rt2800_efuse_read()
6874 rt2800_register_read_lock(rt2x00dev, efuse_data3_reg, &reg); in rt2800_efuse_read()
6876 *(u32 *)&rt2x00dev->eeprom[i] = cpu_to_le32(reg); in rt2800_efuse_read()
6877 rt2800_register_read_lock(rt2x00dev, efuse_data2_reg, &reg); in rt2800_efuse_read()
6878 *(u32 *)&rt2x00dev->eeprom[i + 2] = cpu_to_le32(reg); in rt2800_efuse_read()
6879 rt2800_register_read_lock(rt2x00dev, efuse_data1_reg, &reg); in rt2800_efuse_read()
6880 *(u32 *)&rt2x00dev->eeprom[i + 4] = cpu_to_le32(reg); in rt2800_efuse_read()
6881 rt2800_register_read_lock(rt2x00dev, efuse_data0_reg, &reg); in rt2800_efuse_read()
6882 *(u32 *)&rt2x00dev->eeprom[i + 6] = cpu_to_le32(reg); in rt2800_efuse_read()
6884 mutex_unlock(&rt2x00dev->csr_mutex); in rt2800_efuse_read()
6887 int rt2800_read_eeprom_efuse(struct rt2x00_dev *rt2x00dev) in rt2800_read_eeprom_efuse() argument
6892 rt2800_efuse_read(rt2x00dev, i); in rt2800_read_eeprom_efuse()
6898 static u8 rt2800_get_txmixer_gain_24g(struct rt2x00_dev *rt2x00dev) in rt2800_get_txmixer_gain_24g() argument
6902 if (rt2x00_rt(rt2x00dev, RT3593)) in rt2800_get_txmixer_gain_24g()
6905 rt2800_eeprom_read(rt2x00dev, EEPROM_TXMIXER_GAIN_BG, &word); in rt2800_get_txmixer_gain_24g()
6912 static u8 rt2800_get_txmixer_gain_5g(struct rt2x00_dev *rt2x00dev) in rt2800_get_txmixer_gain_5g() argument
6916 if (rt2x00_rt(rt2x00dev, RT3593)) in rt2800_get_txmixer_gain_5g()
6919 rt2800_eeprom_read(rt2x00dev, EEPROM_TXMIXER_GAIN_A, &word); in rt2800_get_txmixer_gain_5g()
6926 static int rt2800_validate_eeprom(struct rt2x00_dev *rt2x00dev) in rt2800_validate_eeprom() argument
6928 struct rt2800_drv_data *drv_data = rt2x00dev->drv_data; in rt2800_validate_eeprom()
6937 retval = rt2800_read_eeprom(rt2x00dev); in rt2800_validate_eeprom()
6944 mac = rt2800_eeprom_addr(rt2x00dev, EEPROM_MAC_ADDR_0); in rt2800_validate_eeprom()
6947 rt2x00_eeprom_dbg(rt2x00dev, "MAC: %pM\n", mac); in rt2800_validate_eeprom()
6950 rt2800_eeprom_read(rt2x00dev, EEPROM_NIC_CONF0, &word); in rt2800_validate_eeprom()
6955 rt2800_eeprom_write(rt2x00dev, EEPROM_NIC_CONF0, word); in rt2800_validate_eeprom()
6956 rt2x00_eeprom_dbg(rt2x00dev, "Antenna: 0x%04x\n", word); in rt2800_validate_eeprom()
6957 } else if (rt2x00_rt(rt2x00dev, RT2860) || in rt2800_validate_eeprom()
6958 rt2x00_rt(rt2x00dev, RT2872)) { in rt2800_validate_eeprom()
6964 rt2800_eeprom_write(rt2x00dev, EEPROM_NIC_CONF0, word); in rt2800_validate_eeprom()
6967 rt2800_eeprom_read(rt2x00dev, EEPROM_NIC_CONF1, &word); in rt2800_validate_eeprom()
6984 rt2800_eeprom_write(rt2x00dev, EEPROM_NIC_CONF1, word); in rt2800_validate_eeprom()
6985 rt2x00_eeprom_dbg(rt2x00dev, "NIC: 0x%04x\n", word); in rt2800_validate_eeprom()
6988 rt2800_eeprom_read(rt2x00dev, EEPROM_FREQ, &word); in rt2800_validate_eeprom()
6991 rt2800_eeprom_write(rt2x00dev, EEPROM_FREQ, word); in rt2800_validate_eeprom()
6992 rt2x00_eeprom_dbg(rt2x00dev, "Freq: 0x%04x\n", word); in rt2800_validate_eeprom()
6998 rt2800_eeprom_write(rt2x00dev, EEPROM_FREQ, word); in rt2800_validate_eeprom()
6999 rt2800_eeprom_write(rt2x00dev, EEPROM_LED_AG_CONF, 0x5555); in rt2800_validate_eeprom()
7000 rt2800_eeprom_write(rt2x00dev, EEPROM_LED_ACT_CONF, 0x2221); in rt2800_validate_eeprom()
7001 rt2800_eeprom_write(rt2x00dev, EEPROM_LED_POLARITY, 0xa9f8); in rt2800_validate_eeprom()
7002 rt2x00_eeprom_dbg(rt2x00dev, "Led Mode: 0x%04x\n", word); in rt2800_validate_eeprom()
7010 rt2800_eeprom_read(rt2x00dev, EEPROM_LNA, &word); in rt2800_validate_eeprom()
7013 rt2800_eeprom_read(rt2x00dev, EEPROM_RSSI_BG, &word); in rt2800_validate_eeprom()
7018 rt2800_eeprom_write(rt2x00dev, EEPROM_RSSI_BG, word); in rt2800_validate_eeprom()
7020 drv_data->txmixer_gain_24g = rt2800_get_txmixer_gain_24g(rt2x00dev); in rt2800_validate_eeprom()
7022 rt2800_eeprom_read(rt2x00dev, EEPROM_RSSI_BG2, &word); in rt2800_validate_eeprom()
7025 if (!rt2x00_rt(rt2x00dev, RT3593)) { in rt2800_validate_eeprom()
7031 rt2800_eeprom_write(rt2x00dev, EEPROM_RSSI_BG2, word); in rt2800_validate_eeprom()
7033 drv_data->txmixer_gain_5g = rt2800_get_txmixer_gain_5g(rt2x00dev); in rt2800_validate_eeprom()
7035 rt2800_eeprom_read(rt2x00dev, EEPROM_RSSI_A, &word); in rt2800_validate_eeprom()
7040 rt2800_eeprom_write(rt2x00dev, EEPROM_RSSI_A, word); in rt2800_validate_eeprom()
7042 rt2800_eeprom_read(rt2x00dev, EEPROM_RSSI_A2, &word); in rt2800_validate_eeprom()
7045 if (!rt2x00_rt(rt2x00dev, RT3593)) { in rt2800_validate_eeprom()
7051 rt2800_eeprom_write(rt2x00dev, EEPROM_RSSI_A2, word); in rt2800_validate_eeprom()
7053 if (rt2x00_rt(rt2x00dev, RT3593)) { in rt2800_validate_eeprom()
7054 rt2800_eeprom_read(rt2x00dev, EEPROM_EXT_LNA2, &word); in rt2800_validate_eeprom()
7063 rt2800_eeprom_write(rt2x00dev, EEPROM_EXT_LNA2, word); in rt2800_validate_eeprom()
7069 static int rt2800_init_eeprom(struct rt2x00_dev *rt2x00dev) in rt2800_init_eeprom() argument
7078 rt2800_eeprom_read(rt2x00dev, EEPROM_NIC_CONF0, &eeprom); in rt2800_init_eeprom()
7085 if (rt2x00_rt(rt2x00dev, RT3290) || in rt2800_init_eeprom()
7086 rt2x00_rt(rt2x00dev, RT5390) || in rt2800_init_eeprom()
7087 rt2x00_rt(rt2x00dev, RT5392)) in rt2800_init_eeprom()
7088 rt2800_eeprom_read(rt2x00dev, EEPROM_CHIP_ID, &rf); in rt2800_init_eeprom()
7116 rt2x00_err(rt2x00dev, "Invalid RF chipset 0x%04x detected\n", in rt2800_init_eeprom()
7121 rt2x00_set_rf(rt2x00dev, rf); in rt2800_init_eeprom()
7126 rt2x00dev->default_ant.tx_chain_num = in rt2800_init_eeprom()
7128 rt2x00dev->default_ant.rx_chain_num = in rt2800_init_eeprom()
7131 rt2800_eeprom_read(rt2x00dev, EEPROM_NIC_CONF1, &eeprom); in rt2800_init_eeprom()
7133 if (rt2x00_rt(rt2x00dev, RT3070) || in rt2800_init_eeprom()
7134 rt2x00_rt(rt2x00dev, RT3090) || in rt2800_init_eeprom()
7135 rt2x00_rt(rt2x00dev, RT3352) || in rt2800_init_eeprom()
7136 rt2x00_rt(rt2x00dev, RT3390)) { in rt2800_init_eeprom()
7143 rt2x00dev->default_ant.tx = ANTENNA_A; in rt2800_init_eeprom()
7144 rt2x00dev->default_ant.rx = ANTENNA_A; in rt2800_init_eeprom()
7147 rt2x00dev->default_ant.tx = ANTENNA_A; in rt2800_init_eeprom()
7148 rt2x00dev->default_ant.rx = ANTENNA_B; in rt2800_init_eeprom()
7152 rt2x00dev->default_ant.tx = ANTENNA_A; in rt2800_init_eeprom()
7153 rt2x00dev->default_ant.rx = ANTENNA_A; in rt2800_init_eeprom()
7156 if (rt2x00_rt_rev_gte(rt2x00dev, RT5390, REV_RT5390R)) { in rt2800_init_eeprom()
7157 rt2x00dev->default_ant.tx = ANTENNA_HW_DIVERSITY; /* Unused */ in rt2800_init_eeprom()
7158 rt2x00dev->default_ant.rx = ANTENNA_HW_DIVERSITY; /* Unused */ in rt2800_init_eeprom()
7165 __set_bit(CAPABILITY_EXTERNAL_LNA_A, &rt2x00dev->cap_flags); in rt2800_init_eeprom()
7167 __set_bit(CAPABILITY_EXTERNAL_LNA_BG, &rt2x00dev->cap_flags); in rt2800_init_eeprom()
7173 __set_bit(CAPABILITY_HW_BUTTON, &rt2x00dev->cap_flags); in rt2800_init_eeprom()
7179 __set_bit(CAPABILITY_BT_COEXIST, &rt2x00dev->cap_flags); in rt2800_init_eeprom()
7184 rt2800_eeprom_read(rt2x00dev, EEPROM_FREQ, &eeprom); in rt2800_init_eeprom()
7185 rt2x00dev->freq_offset = rt2x00_get_field16(eeprom, EEPROM_FREQ_OFFSET); in rt2800_init_eeprom()
7191 rt2800_init_led(rt2x00dev, &rt2x00dev->led_radio, LED_TYPE_RADIO); in rt2800_init_eeprom()
7192 rt2800_init_led(rt2x00dev, &rt2x00dev->led_assoc, LED_TYPE_ASSOC); in rt2800_init_eeprom()
7193 rt2800_init_led(rt2x00dev, &rt2x00dev->led_qual, LED_TYPE_QUALITY); in rt2800_init_eeprom()
7195 rt2x00dev->led_mcu_reg = eeprom; in rt2800_init_eeprom()
7201 rt2800_eeprom_read(rt2x00dev, EEPROM_EIRP_MAX_TX_POWER, &eeprom); in rt2800_init_eeprom()
7205 __set_bit(CAPABILITY_POWER_LIMIT, &rt2x00dev->cap_flags); in rt2800_init_eeprom()
7483 static int rt2800_probe_hw_mode(struct rt2x00_dev *rt2x00dev) in rt2800_probe_hw_mode() argument
7485 struct hw_mode_spec *spec = &rt2x00dev->spec; in rt2800_probe_hw_mode()
7496 rt2x00dev->hw->wiphy->flags &= ~WIPHY_FLAG_PS_ON_BY_DEFAULT; in rt2800_probe_hw_mode()
7501 rt2x00dev->hw->flags = in rt2800_probe_hw_mode()
7516 if (!rt2x00_is_usb(rt2x00dev)) in rt2800_probe_hw_mode()
7517 rt2x00dev->hw->flags |= in rt2800_probe_hw_mode()
7520 SET_IEEE80211_DEV(rt2x00dev->hw, rt2x00dev->dev); in rt2800_probe_hw_mode()
7521 SET_IEEE80211_PERM_ADDR(rt2x00dev->hw, in rt2800_probe_hw_mode()
7522 rt2800_eeprom_addr(rt2x00dev, in rt2800_probe_hw_mode()
7534 rt2x00dev->hw->max_rates = 1; in rt2800_probe_hw_mode()
7535 rt2x00dev->hw->max_report_rates = 7; in rt2800_probe_hw_mode()
7536 rt2x00dev->hw->max_rate_tries = 1; in rt2800_probe_hw_mode()
7543 switch (rt2x00dev->chip.rf) { in rt2800_probe_hw_mode()
7581 rt2800_register_read(rt2x00dev, MAC_DEBUG_INDEX, &reg); in rt2800_probe_hw_mode()
7602 if (!rt2x00_rf(rt2x00dev, RF2020)) in rt2800_probe_hw_mode()
7613 if (rt2x00dev->default_ant.tx_chain_num >= 2) in rt2800_probe_hw_mode()
7616 spec->ht.cap |= rt2x00dev->default_ant.rx_chain_num << in rt2800_probe_hw_mode()
7624 ((rt2x00dev->default_ant.tx_chain_num - 1) << in rt2800_probe_hw_mode()
7627 switch (rt2x00dev->default_ant.rx_chain_num) { in rt2800_probe_hw_mode()
7647 default_power1 = rt2800_eeprom_addr(rt2x00dev, EEPROM_TXPOWER_BG1); in rt2800_probe_hw_mode()
7648 default_power2 = rt2800_eeprom_addr(rt2x00dev, EEPROM_TXPOWER_BG2); in rt2800_probe_hw_mode()
7650 if (rt2x00dev->default_ant.tx_chain_num > 2) in rt2800_probe_hw_mode()
7651 default_power3 = rt2800_eeprom_addr(rt2x00dev, in rt2800_probe_hw_mode()
7664 default_power1 = rt2800_eeprom_addr(rt2x00dev, in rt2800_probe_hw_mode()
7666 default_power2 = rt2800_eeprom_addr(rt2x00dev, in rt2800_probe_hw_mode()
7669 if (rt2x00dev->default_ant.tx_chain_num > 2) in rt2800_probe_hw_mode()
7671 rt2800_eeprom_addr(rt2x00dev, in rt2800_probe_hw_mode()
7684 switch (rt2x00dev->chip.rf) { in rt2800_probe_hw_mode()
7700 __set_bit(CAPABILITY_VCO_RECALIBRATION, &rt2x00dev->cap_flags); in rt2800_probe_hw_mode()
7707 static int rt2800_probe_rt(struct rt2x00_dev *rt2x00dev) in rt2800_probe_rt() argument
7713 if (rt2x00_rt(rt2x00dev, RT3290)) in rt2800_probe_rt()
7714 rt2800_register_read(rt2x00dev, MAC_CSR0_3290, &reg); in rt2800_probe_rt()
7716 rt2800_register_read(rt2x00dev, MAC_CSR0, &reg); in rt2800_probe_rt()
7738 rt2x00_err(rt2x00dev, "Invalid RT chipset 0x%04x, rev %04x detected\n", in rt2800_probe_rt()
7743 rt2x00_set_rt(rt2x00dev, rt, rev); in rt2800_probe_rt()
7748 int rt2800_probe_hw(struct rt2x00_dev *rt2x00dev) in rt2800_probe_hw() argument
7753 retval = rt2800_probe_rt(rt2x00dev); in rt2800_probe_hw()
7760 retval = rt2800_validate_eeprom(rt2x00dev); in rt2800_probe_hw()
7764 retval = rt2800_init_eeprom(rt2x00dev); in rt2800_probe_hw()
7772 rt2800_register_read(rt2x00dev, GPIO_CTRL, &reg); in rt2800_probe_hw()
7774 rt2800_register_write(rt2x00dev, GPIO_CTRL, reg); in rt2800_probe_hw()
7779 retval = rt2800_probe_hw_mode(rt2x00dev); in rt2800_probe_hw()
7786 __set_bit(CAPABILITY_CONTROL_FILTERS, &rt2x00dev->cap_flags); in rt2800_probe_hw()
7787 __set_bit(CAPABILITY_CONTROL_FILTER_PSPOLL, &rt2x00dev->cap_flags); in rt2800_probe_hw()
7788 if (!rt2x00_is_usb(rt2x00dev)) in rt2800_probe_hw()
7789 __set_bit(CAPABILITY_PRE_TBTT_INTERRUPT, &rt2x00dev->cap_flags); in rt2800_probe_hw()
7794 if (!rt2x00_is_soc(rt2x00dev)) in rt2800_probe_hw()
7795 __set_bit(REQUIRE_FIRMWARE, &rt2x00dev->cap_flags); in rt2800_probe_hw()
7796 __set_bit(REQUIRE_L2PAD, &rt2x00dev->cap_flags); in rt2800_probe_hw()
7797 __set_bit(REQUIRE_TXSTATUS_FIFO, &rt2x00dev->cap_flags); in rt2800_probe_hw()
7798 if (!rt2800_hwcrypt_disabled(rt2x00dev)) in rt2800_probe_hw()
7799 __set_bit(CAPABILITY_HW_CRYPTO, &rt2x00dev->cap_flags); in rt2800_probe_hw()
7800 __set_bit(CAPABILITY_LINK_TUNING, &rt2x00dev->cap_flags); in rt2800_probe_hw()
7801 __set_bit(REQUIRE_HT_TX_DESC, &rt2x00dev->cap_flags); in rt2800_probe_hw()
7802 if (rt2x00_is_usb(rt2x00dev)) in rt2800_probe_hw()
7803 __set_bit(REQUIRE_PS_AUTOWAKE, &rt2x00dev->cap_flags); in rt2800_probe_hw()
7805 __set_bit(REQUIRE_DMA, &rt2x00dev->cap_flags); in rt2800_probe_hw()
7806 __set_bit(REQUIRE_TASKLET_CONTEXT, &rt2x00dev->cap_flags); in rt2800_probe_hw()
7812 rt2x00dev->rssi_offset = DEFAULT_RSSI_OFFSET; in rt2800_probe_hw()
7824 struct rt2x00_dev *rt2x00dev = hw->priv; in rt2800_get_tkip_seq() local
7829 rt2800_register_multiread(rt2x00dev, offset, in rt2800_get_tkip_seq()
7839 struct rt2x00_dev *rt2x00dev = hw->priv; in rt2800_set_rts_threshold() local
7843 rt2800_register_read(rt2x00dev, TX_RTS_CFG, &reg); in rt2800_set_rts_threshold()
7845 rt2800_register_write(rt2x00dev, TX_RTS_CFG, reg); in rt2800_set_rts_threshold()
7847 rt2800_register_read(rt2x00dev, CCK_PROT_CFG, &reg); in rt2800_set_rts_threshold()
7849 rt2800_register_write(rt2x00dev, CCK_PROT_CFG, reg); in rt2800_set_rts_threshold()
7851 rt2800_register_read(rt2x00dev, OFDM_PROT_CFG, &reg); in rt2800_set_rts_threshold()
7853 rt2800_register_write(rt2x00dev, OFDM_PROT_CFG, reg); in rt2800_set_rts_threshold()
7855 rt2800_register_read(rt2x00dev, MM20_PROT_CFG, &reg); in rt2800_set_rts_threshold()
7857 rt2800_register_write(rt2x00dev, MM20_PROT_CFG, reg); in rt2800_set_rts_threshold()
7859 rt2800_register_read(rt2x00dev, MM40_PROT_CFG, &reg); in rt2800_set_rts_threshold()
7861 rt2800_register_write(rt2x00dev, MM40_PROT_CFG, reg); in rt2800_set_rts_threshold()
7863 rt2800_register_read(rt2x00dev, GF20_PROT_CFG, &reg); in rt2800_set_rts_threshold()
7865 rt2800_register_write(rt2x00dev, GF20_PROT_CFG, reg); in rt2800_set_rts_threshold()
7867 rt2800_register_read(rt2x00dev, GF40_PROT_CFG, &reg); in rt2800_set_rts_threshold()
7869 rt2800_register_write(rt2x00dev, GF40_PROT_CFG, reg); in rt2800_set_rts_threshold()
7879 struct rt2x00_dev *rt2x00dev = hw->priv; in rt2800_conf_tx() local
7903 queue = rt2x00queue_get_tx_queue(rt2x00dev, queue_idx); in rt2800_conf_tx()
7910 rt2800_register_read(rt2x00dev, offset, &reg); in rt2800_conf_tx()
7912 rt2800_register_write(rt2x00dev, offset, reg); in rt2800_conf_tx()
7918 rt2800_register_read(rt2x00dev, WMM_AIFSN_CFG, &reg); in rt2800_conf_tx()
7920 rt2800_register_write(rt2x00dev, WMM_AIFSN_CFG, reg); in rt2800_conf_tx()
7922 rt2800_register_read(rt2x00dev, WMM_CWMIN_CFG, &reg); in rt2800_conf_tx()
7924 rt2800_register_write(rt2x00dev, WMM_CWMIN_CFG, reg); in rt2800_conf_tx()
7926 rt2800_register_read(rt2x00dev, WMM_CWMAX_CFG, &reg); in rt2800_conf_tx()
7928 rt2800_register_write(rt2x00dev, WMM_CWMAX_CFG, reg); in rt2800_conf_tx()
7933 rt2800_register_read(rt2x00dev, offset, &reg); in rt2800_conf_tx()
7938 rt2800_register_write(rt2x00dev, offset, reg); in rt2800_conf_tx()
7946 struct rt2x00_dev *rt2x00dev = hw->priv; in rt2800_get_tsf() local
7950 rt2800_register_read(rt2x00dev, TSF_TIMER_DW1, &reg); in rt2800_get_tsf()
7952 rt2800_register_read(rt2x00dev, TSF_TIMER_DW0, &reg); in rt2800_get_tsf()
8009 struct rt2x00_dev *rt2x00dev = hw->priv; in rt2800_get_survey() local
8018 rt2800_register_read(rt2x00dev, CH_IDLE_STA, &idle); in rt2800_get_survey()
8019 rt2800_register_read(rt2x00dev, CH_BUSY_STA, &busy); in rt2800_get_survey()
8020 rt2800_register_read(rt2x00dev, CH_BUSY_STA_SEC, &busy_ext); in rt2800_get_survey()