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, ®)) { 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, ®)) { in rt2800_bbp_read()
132 rt2800_register_write_lock(rt2x00dev, BBP_CSR_CFG, reg); in rt2800_bbp_read()
134 WAIT_FOR_BBP(rt2x00dev, ®); 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, ®)) { 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, ®)) { in rt2800_rfcsr_read()
187 rt2800_register_write_lock(rt2x00dev, RF_CSR_CFG, reg); in rt2800_rfcsr_read()
189 WAIT_FOR_RFCSR(rt2x00dev, ®); 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, ®)) { 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, ®); 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, ®); 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, ®); 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, ®)) { 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, ®); 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, ®); 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, ®); 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, ®); 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, ®); 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, ®); 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, ®); in rt2800_rfkill_poll()
1163 rt2800_register_read(rt2x00dev, GPIO_CTRL, ®); 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, ®); 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, ®); 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, ®); 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, ®); 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, ®); 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 int rt2800_config_pairwise_key(struct rt2x00_dev *rt2x00dev, in rt2800_config_pairwise_key() argument
1408 rt2800_register_multiwrite(rt2x00dev, offset, in rt2800_config_pairwise_key()
1415 rt2800_config_wcid_attr_cipher(rt2x00dev, crypto, key); in rt2800_config_pairwise_key()
1421 int rt2800_sta_add(struct rt2x00_dev *rt2x00dev, struct ieee80211_vif *vif, in rt2800_sta_add() argument
1426 struct rt2800_drv_data *drv_data = rt2x00dev->drv_data; in rt2800_sta_add()
1452 rt2800_delete_wcid_attr(rt2x00dev, wcid); in rt2800_sta_add()
1453 rt2800_config_wcid(rt2x00dev, sta->addr, wcid); in rt2800_sta_add()
1454 rt2800_config_wcid_attr_bssidx(rt2x00dev, wcid, in rt2800_sta_add()
1455 rt2x00lib_get_bssidx(rt2x00dev, vif)); in rt2800_sta_add()
1460 int rt2800_sta_remove(struct rt2x00_dev *rt2x00dev, int wcid) in rt2800_sta_remove() argument
1462 struct rt2800_drv_data *drv_data = rt2x00dev->drv_data; in rt2800_sta_remove()
1470 rt2800_config_wcid(rt2x00dev, NULL, wcid); in rt2800_sta_remove()
1477 void rt2800_config_filter(struct rt2x00_dev *rt2x00dev, in rt2800_config_filter() argument
1488 rt2800_register_read(rt2x00dev, RX_FILTER_CFG, ®); in rt2800_config_filter()
1517 rt2800_register_write(rt2x00dev, RX_FILTER_CFG, reg); in rt2800_config_filter()
1521 void rt2800_config_intf(struct rt2x00_dev *rt2x00dev, struct rt2x00_intf *intf, in rt2800_config_intf() argument
1531 rt2800_register_read(rt2x00dev, BCN_TIME_CFG, ®); in rt2800_config_intf()
1533 rt2800_register_write(rt2x00dev, BCN_TIME_CFG, reg); in rt2800_config_intf()
1539 rt2800_register_read(rt2x00dev, TBTT_SYNC_CFG, ®); in rt2800_config_intf()
1544 rt2800_register_write(rt2x00dev, TBTT_SYNC_CFG, reg); in rt2800_config_intf()
1546 rt2800_register_read(rt2x00dev, TBTT_SYNC_CFG, ®); in rt2800_config_intf()
1551 rt2800_register_write(rt2x00dev, TBTT_SYNC_CFG, reg); in rt2800_config_intf()
1572 rt2800_register_multiwrite(rt2x00dev, MAC_ADDR_DW0, in rt2800_config_intf()
1584 rt2800_register_multiwrite(rt2x00dev, MAC_BSSID_DW0, in rt2800_config_intf()
1590 static void rt2800_config_ht_opmode(struct rt2x00_dev *rt2x00dev, in rt2800_config_ht_opmode() argument
1665 rt2800_register_read(rt2x00dev, MM20_PROT_CFG, ®); in rt2800_config_ht_opmode()
1668 rt2800_register_write(rt2x00dev, MM20_PROT_CFG, reg); in rt2800_config_ht_opmode()
1670 rt2800_register_read(rt2x00dev, MM40_PROT_CFG, ®); in rt2800_config_ht_opmode()
1673 rt2800_register_write(rt2x00dev, MM40_PROT_CFG, reg); in rt2800_config_ht_opmode()
1675 rt2800_register_read(rt2x00dev, GF20_PROT_CFG, ®); in rt2800_config_ht_opmode()
1678 rt2800_register_write(rt2x00dev, GF20_PROT_CFG, reg); in rt2800_config_ht_opmode()
1680 rt2800_register_read(rt2x00dev, GF40_PROT_CFG, ®); in rt2800_config_ht_opmode()
1683 rt2800_register_write(rt2x00dev, GF40_PROT_CFG, reg); in rt2800_config_ht_opmode()
1686 void rt2800_config_erp(struct rt2x00_dev *rt2x00dev, struct rt2x00lib_erp *erp, in rt2800_config_erp() argument
1692 rt2800_register_read(rt2x00dev, AUTO_RSP_CFG, ®); in rt2800_config_erp()
1697 rt2800_register_write(rt2x00dev, AUTO_RSP_CFG, reg); in rt2800_config_erp()
1701 rt2800_register_read(rt2x00dev, OFDM_PROT_CFG, ®); in rt2800_config_erp()
1704 rt2800_register_write(rt2x00dev, OFDM_PROT_CFG, reg); in rt2800_config_erp()
1708 rt2800_register_write(rt2x00dev, LEGACY_BASIC_RATE, in rt2800_config_erp()
1710 rt2800_register_write(rt2x00dev, HT_BASIC_RATE, 0x00008003); in rt2800_config_erp()
1714 rt2800_register_read(rt2x00dev, BKOFF_SLOT_CFG, ®); in rt2800_config_erp()
1717 rt2800_register_write(rt2x00dev, BKOFF_SLOT_CFG, reg); in rt2800_config_erp()
1719 rt2800_register_read(rt2x00dev, XIFS_TIME_CFG, ®); in rt2800_config_erp()
1721 rt2800_register_write(rt2x00dev, XIFS_TIME_CFG, reg); in rt2800_config_erp()
1725 rt2800_register_read(rt2x00dev, BCN_TIME_CFG, ®); in rt2800_config_erp()
1728 rt2800_register_write(rt2x00dev, BCN_TIME_CFG, reg); in rt2800_config_erp()
1732 rt2800_config_ht_opmode(rt2x00dev, erp); in rt2800_config_erp()
1736 static void rt2800_config_3572bt_ant(struct rt2x00_dev *rt2x00dev) in rt2800_config_3572bt_ant() argument
1742 rt2800_register_read(rt2x00dev, GPIO_SWITCH, ®); in rt2800_config_3572bt_ant()
1743 if (rt2x00dev->curr_band == IEEE80211_BAND_5GHZ) { in rt2800_config_3572bt_ant()
1750 rt2800_register_write(rt2x00dev, GPIO_SWITCH, reg); in rt2800_config_3572bt_ant()
1752 rt2800_register_read(rt2x00dev, LED_CFG, ®); in rt2800_config_3572bt_ant()
1757 rt2800_eeprom_read(rt2x00dev, EEPROM_FREQ, &eeprom); in rt2800_config_3572bt_ant()
1762 rt2800_register_write(rt2x00dev, LED_CFG, reg); in rt2800_config_3572bt_ant()
1764 rt2800_mcu_request(rt2x00dev, MCU_BAND_SELECT, 0xff, in rt2800_config_3572bt_ant()
1770 static void rt2800_set_ant_diversity(struct rt2x00_dev *rt2x00dev, in rt2800_set_ant_diversity() argument
1777 if (rt2x00_is_pci(rt2x00dev)) { in rt2800_set_ant_diversity()
1778 rt2800_register_read(rt2x00dev, E2PROM_CSR, ®); in rt2800_set_ant_diversity()
1780 rt2800_register_write(rt2x00dev, E2PROM_CSR, reg); in rt2800_set_ant_diversity()
1781 } else if (rt2x00_is_usb(rt2x00dev)) in rt2800_set_ant_diversity()
1782 rt2800_mcu_request(rt2x00dev, MCU_ANT_SELECT, 0xff, in rt2800_set_ant_diversity()
1785 rt2800_register_read(rt2x00dev, GPIO_CTRL, ®); in rt2800_set_ant_diversity()
1788 rt2800_register_write(rt2x00dev, GPIO_CTRL, reg); in rt2800_set_ant_diversity()
1791 void rt2800_config_ant(struct rt2x00_dev *rt2x00dev, struct antenna_setup *ant) in rt2800_config_ant() argument
1797 rt2800_bbp_read(rt2x00dev, 1, &r1); in rt2800_config_ant()
1798 rt2800_bbp_read(rt2x00dev, 3, &r3); in rt2800_config_ant()
1800 if (rt2x00_rt(rt2x00dev, RT3572) && in rt2800_config_ant()
1801 rt2x00_has_cap_bt_coexist(rt2x00dev)) in rt2800_config_ant()
1802 rt2800_config_3572bt_ant(rt2x00dev); in rt2800_config_ant()
1812 if (rt2x00_rt(rt2x00dev, RT3572) && in rt2800_config_ant()
1813 rt2x00_has_cap_bt_coexist(rt2x00dev)) in rt2800_config_ant()
1828 if (rt2x00_rt(rt2x00dev, RT3070) || in rt2800_config_ant()
1829 rt2x00_rt(rt2x00dev, RT3090) || in rt2800_config_ant()
1830 rt2x00_rt(rt2x00dev, RT3352) || in rt2800_config_ant()
1831 rt2x00_rt(rt2x00dev, RT3390)) { in rt2800_config_ant()
1832 rt2800_eeprom_read(rt2x00dev, in rt2800_config_ant()
1836 rt2800_set_ant_diversity(rt2x00dev, in rt2800_config_ant()
1837 rt2x00dev->default_ant.rx); in rt2800_config_ant()
1842 if (rt2x00_rt(rt2x00dev, RT3572) && in rt2800_config_ant()
1843 rt2x00_has_cap_bt_coexist(rt2x00dev)) { in rt2800_config_ant()
1846 rt2x00dev->curr_band == IEEE80211_BAND_5GHZ); in rt2800_config_ant()
1847 rt2800_set_ant_diversity(rt2x00dev, ANTENNA_B); in rt2800_config_ant()
1857 rt2800_bbp_write(rt2x00dev, 3, r3); in rt2800_config_ant()
1858 rt2800_bbp_write(rt2x00dev, 1, r1); in rt2800_config_ant()
1860 if (rt2x00_rt(rt2x00dev, RT3593)) { in rt2800_config_ant()
1862 rt2800_bbp_write(rt2x00dev, 86, 0x00); in rt2800_config_ant()
1864 rt2800_bbp_write(rt2x00dev, 86, 0x46); in rt2800_config_ant()
1869 static void rt2800_config_lna_gain(struct rt2x00_dev *rt2x00dev, in rt2800_config_lna_gain() argument
1876 rt2800_eeprom_read(rt2x00dev, EEPROM_LNA, &eeprom); in rt2800_config_lna_gain()
1879 rt2800_eeprom_read(rt2x00dev, EEPROM_LNA, &eeprom); in rt2800_config_lna_gain()
1882 if (rt2x00_rt(rt2x00dev, RT3593)) { in rt2800_config_lna_gain()
1883 rt2800_eeprom_read(rt2x00dev, EEPROM_EXT_LNA2, &eeprom); in rt2800_config_lna_gain()
1887 rt2800_eeprom_read(rt2x00dev, EEPROM_RSSI_BG2, &eeprom); in rt2800_config_lna_gain()
1892 if (rt2x00_rt(rt2x00dev, RT3593)) { in rt2800_config_lna_gain()
1893 rt2800_eeprom_read(rt2x00dev, EEPROM_EXT_LNA2, &eeprom); in rt2800_config_lna_gain()
1897 rt2800_eeprom_read(rt2x00dev, EEPROM_RSSI_A2, &eeprom); in rt2800_config_lna_gain()
1903 rt2x00dev->lna_gain = lna_gain; in rt2800_config_lna_gain()
1908 static void rt2800_adjust_freq_offset(struct rt2x00_dev *rt2x00dev) in rt2800_adjust_freq_offset() argument
1913 freq_offset = rt2x00_get_field8(rt2x00dev->freq_offset, RFCSR17_CODE); in rt2800_adjust_freq_offset()
1916 rt2800_rfcsr_read(rt2x00dev, 17, &rfcsr); in rt2800_adjust_freq_offset()
1923 if (rt2x00_is_usb(rt2x00dev)) { in rt2800_adjust_freq_offset()
1924 rt2800_mcu_request(rt2x00dev, MCU_FREQ_OFFSET, 0xff, in rt2800_adjust_freq_offset()
1937 rt2800_rfcsr_write(rt2x00dev, 17, rfcsr); in rt2800_adjust_freq_offset()
1943 static void rt2800_config_channel_rf2xxx(struct rt2x00_dev *rt2x00dev, in rt2800_config_channel_rf2xxx() argument
1948 rt2x00_set_field32(&rf->rf4, RF4_FREQ_OFFSET, rt2x00dev->freq_offset); in rt2800_config_channel_rf2xxx()
1950 if (rt2x00dev->default_ant.tx_chain_num == 1) in rt2800_config_channel_rf2xxx()
1953 if (rt2x00dev->default_ant.rx_chain_num == 1) { in rt2800_config_channel_rf2xxx()
1956 } else if (rt2x00dev->default_ant.rx_chain_num == 2) in rt2800_config_channel_rf2xxx()
1988 rt2800_rf_write(rt2x00dev, 1, rf->rf1); in rt2800_config_channel_rf2xxx()
1989 rt2800_rf_write(rt2x00dev, 2, rf->rf2); in rt2800_config_channel_rf2xxx()
1990 rt2800_rf_write(rt2x00dev, 3, rf->rf3 & ~0x00000004); in rt2800_config_channel_rf2xxx()
1991 rt2800_rf_write(rt2x00dev, 4, rf->rf4); in rt2800_config_channel_rf2xxx()
1995 rt2800_rf_write(rt2x00dev, 1, rf->rf1); in rt2800_config_channel_rf2xxx()
1996 rt2800_rf_write(rt2x00dev, 2, rf->rf2); in rt2800_config_channel_rf2xxx()
1997 rt2800_rf_write(rt2x00dev, 3, rf->rf3 | 0x00000004); in rt2800_config_channel_rf2xxx()
1998 rt2800_rf_write(rt2x00dev, 4, rf->rf4); in rt2800_config_channel_rf2xxx()
2002 rt2800_rf_write(rt2x00dev, 1, rf->rf1); in rt2800_config_channel_rf2xxx()
2003 rt2800_rf_write(rt2x00dev, 2, rf->rf2); in rt2800_config_channel_rf2xxx()
2004 rt2800_rf_write(rt2x00dev, 3, rf->rf3 & ~0x00000004); in rt2800_config_channel_rf2xxx()
2005 rt2800_rf_write(rt2x00dev, 4, rf->rf4); in rt2800_config_channel_rf2xxx()
2008 static void rt2800_config_channel_rf3xxx(struct rt2x00_dev *rt2x00dev, in rt2800_config_channel_rf3xxx() argument
2013 struct rt2800_drv_data *drv_data = rt2x00dev->drv_data; in rt2800_config_channel_rf3xxx()
2016 rt2800_rfcsr_write(rt2x00dev, 2, rf->rf1); in rt2800_config_channel_rf3xxx()
2018 rt2800_rfcsr_read(rt2x00dev, 3, &rfcsr); in rt2800_config_channel_rf3xxx()
2020 rt2800_rfcsr_write(rt2x00dev, 3, rfcsr); in rt2800_config_channel_rf3xxx()
2022 rt2800_rfcsr_read(rt2x00dev, 6, &rfcsr); in rt2800_config_channel_rf3xxx()
2024 rt2800_rfcsr_write(rt2x00dev, 6, rfcsr); in rt2800_config_channel_rf3xxx()
2026 rt2800_rfcsr_read(rt2x00dev, 12, &rfcsr); in rt2800_config_channel_rf3xxx()
2028 rt2800_rfcsr_write(rt2x00dev, 12, rfcsr); in rt2800_config_channel_rf3xxx()
2030 rt2800_rfcsr_read(rt2x00dev, 13, &rfcsr); in rt2800_config_channel_rf3xxx()
2032 rt2800_rfcsr_write(rt2x00dev, 13, rfcsr); in rt2800_config_channel_rf3xxx()
2034 rt2800_rfcsr_read(rt2x00dev, 1, &rfcsr); in rt2800_config_channel_rf3xxx()
2037 rt2x00dev->default_ant.rx_chain_num <= 1); in rt2800_config_channel_rf3xxx()
2039 rt2x00dev->default_ant.rx_chain_num <= 2); in rt2800_config_channel_rf3xxx()
2042 rt2x00dev->default_ant.tx_chain_num <= 1); in rt2800_config_channel_rf3xxx()
2044 rt2x00dev->default_ant.tx_chain_num <= 2); in rt2800_config_channel_rf3xxx()
2045 rt2800_rfcsr_write(rt2x00dev, 1, rfcsr); in rt2800_config_channel_rf3xxx()
2047 rt2800_rfcsr_read(rt2x00dev, 23, &rfcsr); in rt2800_config_channel_rf3xxx()
2048 rt2x00_set_field8(&rfcsr, RFCSR23_FREQ_OFFSET, rt2x00dev->freq_offset); in rt2800_config_channel_rf3xxx()
2049 rt2800_rfcsr_write(rt2x00dev, 23, rfcsr); in rt2800_config_channel_rf3xxx()
2051 if (rt2x00_rt(rt2x00dev, RT3390)) { in rt2800_config_channel_rf3xxx()
2064 rt2800_rfcsr_read(rt2x00dev, 24, &rfcsr); in rt2800_config_channel_rf3xxx()
2066 rt2800_rfcsr_write(rt2x00dev, 24, rfcsr); in rt2800_config_channel_rf3xxx()
2068 rt2800_rfcsr_read(rt2x00dev, 31, &rfcsr); in rt2800_config_channel_rf3xxx()
2070 rt2800_rfcsr_write(rt2x00dev, 31, rfcsr); in rt2800_config_channel_rf3xxx()
2072 rt2800_rfcsr_read(rt2x00dev, 7, &rfcsr); in rt2800_config_channel_rf3xxx()
2074 rt2800_rfcsr_write(rt2x00dev, 7, rfcsr); in rt2800_config_channel_rf3xxx()
2076 rt2800_rfcsr_read(rt2x00dev, 30, &rfcsr); in rt2800_config_channel_rf3xxx()
2078 rt2800_rfcsr_write(rt2x00dev, 30, rfcsr); in rt2800_config_channel_rf3xxx()
2081 rt2800_rfcsr_write(rt2x00dev, 30, rfcsr); in rt2800_config_channel_rf3xxx()
2084 static void rt2800_config_channel_rf3052(struct rt2x00_dev *rt2x00dev, in rt2800_config_channel_rf3052() argument
2089 struct rt2800_drv_data *drv_data = rt2x00dev->drv_data; in rt2800_config_channel_rf3052()
2094 rt2800_bbp_write(rt2x00dev, 25, drv_data->bbp25); in rt2800_config_channel_rf3052()
2095 rt2800_bbp_write(rt2x00dev, 26, drv_data->bbp26); in rt2800_config_channel_rf3052()
2097 rt2800_bbp_write(rt2x00dev, 25, 0x09); in rt2800_config_channel_rf3052()
2098 rt2800_bbp_write(rt2x00dev, 26, 0xff); in rt2800_config_channel_rf3052()
2101 rt2800_rfcsr_write(rt2x00dev, 2, rf->rf1); in rt2800_config_channel_rf3052()
2102 rt2800_rfcsr_write(rt2x00dev, 3, rf->rf3); in rt2800_config_channel_rf3052()
2104 rt2800_rfcsr_read(rt2x00dev, 6, &rfcsr); in rt2800_config_channel_rf3052()
2110 rt2800_rfcsr_write(rt2x00dev, 6, rfcsr); in rt2800_config_channel_rf3052()
2112 rt2800_rfcsr_read(rt2x00dev, 5, &rfcsr); in rt2800_config_channel_rf3052()
2117 rt2800_rfcsr_write(rt2x00dev, 5, rfcsr); in rt2800_config_channel_rf3052()
2119 rt2800_rfcsr_read(rt2x00dev, 12, &rfcsr); in rt2800_config_channel_rf3052()
2130 rt2800_rfcsr_write(rt2x00dev, 12, rfcsr); in rt2800_config_channel_rf3052()
2132 rt2800_rfcsr_read(rt2x00dev, 13, &rfcsr); in rt2800_config_channel_rf3052()
2143 rt2800_rfcsr_write(rt2x00dev, 13, rfcsr); in rt2800_config_channel_rf3052()
2145 rt2800_rfcsr_read(rt2x00dev, 1, &rfcsr); in rt2800_config_channel_rf3052()
2152 if (rt2x00_has_cap_bt_coexist(rt2x00dev)) { in rt2800_config_channel_rf3052()
2160 switch (rt2x00dev->default_ant.tx_chain_num) { in rt2800_config_channel_rf3052()
2168 switch (rt2x00dev->default_ant.rx_chain_num) { in rt2800_config_channel_rf3052()
2176 rt2800_rfcsr_write(rt2x00dev, 1, rfcsr); in rt2800_config_channel_rf3052()
2178 rt2800_rfcsr_read(rt2x00dev, 23, &rfcsr); in rt2800_config_channel_rf3052()
2179 rt2x00_set_field8(&rfcsr, RFCSR23_FREQ_OFFSET, rt2x00dev->freq_offset); in rt2800_config_channel_rf3052()
2180 rt2800_rfcsr_write(rt2x00dev, 23, rfcsr); in rt2800_config_channel_rf3052()
2183 rt2800_rfcsr_write(rt2x00dev, 24, drv_data->calibration_bw40); in rt2800_config_channel_rf3052()
2184 rt2800_rfcsr_write(rt2x00dev, 31, drv_data->calibration_bw40); in rt2800_config_channel_rf3052()
2186 rt2800_rfcsr_write(rt2x00dev, 24, drv_data->calibration_bw20); in rt2800_config_channel_rf3052()
2187 rt2800_rfcsr_write(rt2x00dev, 31, drv_data->calibration_bw20); in rt2800_config_channel_rf3052()
2191 rt2800_rfcsr_write(rt2x00dev, 7, 0xd8); in rt2800_config_channel_rf3052()
2192 rt2800_rfcsr_write(rt2x00dev, 9, 0xc3); in rt2800_config_channel_rf3052()
2193 rt2800_rfcsr_write(rt2x00dev, 10, 0xf1); in rt2800_config_channel_rf3052()
2194 rt2800_rfcsr_write(rt2x00dev, 11, 0xb9); in rt2800_config_channel_rf3052()
2195 rt2800_rfcsr_write(rt2x00dev, 15, 0x53); in rt2800_config_channel_rf3052()
2199 rt2800_rfcsr_write(rt2x00dev, 16, rfcsr); in rt2800_config_channel_rf3052()
2200 rt2800_rfcsr_write(rt2x00dev, 17, 0x23); in rt2800_config_channel_rf3052()
2201 rt2800_rfcsr_write(rt2x00dev, 19, 0x93); in rt2800_config_channel_rf3052()
2202 rt2800_rfcsr_write(rt2x00dev, 20, 0xb3); in rt2800_config_channel_rf3052()
2203 rt2800_rfcsr_write(rt2x00dev, 25, 0x15); in rt2800_config_channel_rf3052()
2204 rt2800_rfcsr_write(rt2x00dev, 26, 0x85); in rt2800_config_channel_rf3052()
2205 rt2800_rfcsr_write(rt2x00dev, 27, 0x00); in rt2800_config_channel_rf3052()
2206 rt2800_rfcsr_write(rt2x00dev, 29, 0x9b); in rt2800_config_channel_rf3052()
2208 rt2800_rfcsr_read(rt2x00dev, 7, &rfcsr); in rt2800_config_channel_rf3052()
2213 rt2800_rfcsr_write(rt2x00dev, 7, rfcsr); in rt2800_config_channel_rf3052()
2214 rt2800_rfcsr_write(rt2x00dev, 9, 0xc0); in rt2800_config_channel_rf3052()
2215 rt2800_rfcsr_write(rt2x00dev, 10, 0xf1); in rt2800_config_channel_rf3052()
2216 rt2800_rfcsr_write(rt2x00dev, 11, 0x00); in rt2800_config_channel_rf3052()
2217 rt2800_rfcsr_write(rt2x00dev, 15, 0x43); in rt2800_config_channel_rf3052()
2221 rt2800_rfcsr_write(rt2x00dev, 16, rfcsr); in rt2800_config_channel_rf3052()
2222 rt2800_rfcsr_write(rt2x00dev, 17, 0x23); in rt2800_config_channel_rf3052()
2224 rt2800_rfcsr_write(rt2x00dev, 19, 0xb7); in rt2800_config_channel_rf3052()
2225 rt2800_rfcsr_write(rt2x00dev, 20, 0xf6); in rt2800_config_channel_rf3052()
2226 rt2800_rfcsr_write(rt2x00dev, 25, 0x3d); in rt2800_config_channel_rf3052()
2228 rt2800_rfcsr_write(rt2x00dev, 19, 0x74); in rt2800_config_channel_rf3052()
2229 rt2800_rfcsr_write(rt2x00dev, 20, 0xf4); in rt2800_config_channel_rf3052()
2230 rt2800_rfcsr_write(rt2x00dev, 25, 0x01); in rt2800_config_channel_rf3052()
2232 rt2800_rfcsr_write(rt2x00dev, 19, 0x72); in rt2800_config_channel_rf3052()
2233 rt2800_rfcsr_write(rt2x00dev, 20, 0xf3); in rt2800_config_channel_rf3052()
2234 rt2800_rfcsr_write(rt2x00dev, 25, 0x01); in rt2800_config_channel_rf3052()
2236 rt2800_rfcsr_write(rt2x00dev, 26, 0x87); in rt2800_config_channel_rf3052()
2237 rt2800_rfcsr_write(rt2x00dev, 27, 0x01); in rt2800_config_channel_rf3052()
2238 rt2800_rfcsr_write(rt2x00dev, 29, 0x9f); in rt2800_config_channel_rf3052()
2241 rt2800_register_read(rt2x00dev, GPIO_CTRL, ®); in rt2800_config_channel_rf3052()
2247 rt2800_register_write(rt2x00dev, GPIO_CTRL, reg); in rt2800_config_channel_rf3052()
2249 rt2800_rfcsr_read(rt2x00dev, 7, &rfcsr); in rt2800_config_channel_rf3052()
2251 rt2800_rfcsr_write(rt2x00dev, 7, rfcsr); in rt2800_config_channel_rf3052()
2254 static void rt2800_config_channel_rf3053(struct rt2x00_dev *rt2x00dev, in rt2800_config_channel_rf3053() argument
2259 struct rt2800_drv_data *drv_data = rt2x00dev->drv_data; in rt2800_config_channel_rf3053()
2267 rt2800_bbp_read(rt2x00dev, 109, &bbp); in rt2800_config_channel_rf3053()
2270 rt2800_bbp_write(rt2x00dev, 109, bbp); in rt2800_config_channel_rf3053()
2272 rt2800_bbp_read(rt2x00dev, 110, &bbp); in rt2800_config_channel_rf3053()
2274 rt2800_bbp_write(rt2x00dev, 110, bbp); in rt2800_config_channel_rf3053()
2278 rt2800_bbp_write(rt2x00dev, 25, drv_data->bbp25); in rt2800_config_channel_rf3053()
2279 rt2800_bbp_write(rt2x00dev, 26, drv_data->bbp26); in rt2800_config_channel_rf3053()
2284 rt2800_bbp_write(rt2x00dev, 25, 0x09); in rt2800_config_channel_rf3053()
2286 rt2800_bbp_write(rt2x00dev, 26, 0xff); in rt2800_config_channel_rf3053()
2289 rt2800_rfcsr_write(rt2x00dev, 8, rf->rf1); in rt2800_config_channel_rf3053()
2290 rt2800_rfcsr_write(rt2x00dev, 9, rf->rf3 & 0xf); in rt2800_config_channel_rf3053()
2292 rt2800_rfcsr_read(rt2x00dev, 11, &rfcsr); in rt2800_config_channel_rf3053()
2294 rt2800_rfcsr_write(rt2x00dev, 11, rfcsr); in rt2800_config_channel_rf3053()
2296 rt2800_rfcsr_read(rt2x00dev, 11, &rfcsr); in rt2800_config_channel_rf3053()
2302 rt2800_rfcsr_write(rt2x00dev, 11, rfcsr); in rt2800_config_channel_rf3053()
2304 rt2800_rfcsr_read(rt2x00dev, 53, &rfcsr); in rt2800_config_channel_rf3053()
2310 if (rt2x00_is_usb(rt2x00dev)) in rt2800_config_channel_rf3053()
2317 rt2800_rfcsr_write(rt2x00dev, 53, rfcsr); in rt2800_config_channel_rf3053()
2319 rt2800_rfcsr_read(rt2x00dev, 55, &rfcsr); in rt2800_config_channel_rf3053()
2325 if (rt2x00_is_usb(rt2x00dev)) in rt2800_config_channel_rf3053()
2332 rt2800_rfcsr_write(rt2x00dev, 55, rfcsr); in rt2800_config_channel_rf3053()
2334 rt2800_rfcsr_read(rt2x00dev, 54, &rfcsr); in rt2800_config_channel_rf3053()
2340 if (rt2x00_is_usb(rt2x00dev)) in rt2800_config_channel_rf3053()
2347 rt2800_rfcsr_write(rt2x00dev, 54, rfcsr); in rt2800_config_channel_rf3053()
2349 rt2800_rfcsr_read(rt2x00dev, 1, &rfcsr); in rt2800_config_channel_rf3053()
2359 switch (rt2x00dev->default_ant.tx_chain_num) { in rt2800_config_channel_rf3053()
2371 switch (rt2x00dev->default_ant.rx_chain_num) { in rt2800_config_channel_rf3053()
2382 rt2800_rfcsr_write(rt2x00dev, 1, rfcsr); in rt2800_config_channel_rf3053()
2384 rt2800_adjust_freq_offset(rt2x00dev); in rt2800_config_channel_rf3053()
2401 rt2800_rfcsr_read(rt2x00dev, 32, &rfcsr); in rt2800_config_channel_rf3053()
2408 rt2800_rfcsr_write(rt2x00dev, 31, rfcsr); in rt2800_config_channel_rf3053()
2410 rt2800_rfcsr_read(rt2x00dev, 30, &rfcsr); in rt2800_config_channel_rf3053()
2413 rt2800_rfcsr_write(rt2x00dev, 30, rfcsr); in rt2800_config_channel_rf3053()
2416 rt2800_rfcsr_read(rt2x00dev, 36, &rfcsr); in rt2800_config_channel_rf3053()
2421 rt2800_rfcsr_write(rt2x00dev, 36, rfcsr); in rt2800_config_channel_rf3053()
2423 rt2800_rfcsr_read(rt2x00dev, 34, &rfcsr); in rt2800_config_channel_rf3053()
2428 rt2800_rfcsr_write(rt2x00dev, 34, rfcsr); in rt2800_config_channel_rf3053()
2430 rt2800_rfcsr_read(rt2x00dev, 12, &rfcsr); in rt2800_config_channel_rf3053()
2435 rt2800_rfcsr_write(rt2x00dev, 12, rfcsr); in rt2800_config_channel_rf3053()
2437 rt2800_rfcsr_read(rt2x00dev, 6, &rfcsr); in rt2800_config_channel_rf3053()
2446 rt2800_rfcsr_write(rt2x00dev, 6, rfcsr); in rt2800_config_channel_rf3053()
2448 rt2800_rfcsr_read(rt2x00dev, 30, &rfcsr); in rt2800_config_channel_rf3053()
2450 rt2800_rfcsr_write(rt2x00dev, 30, rfcsr); in rt2800_config_channel_rf3053()
2452 rt2800_rfcsr_write(rt2x00dev, 46, 0x60); in rt2800_config_channel_rf3053()
2455 rt2800_rfcsr_write(rt2x00dev, 10, 0xd3); in rt2800_config_channel_rf3053()
2456 rt2800_rfcsr_write(rt2x00dev, 13, 0x12); in rt2800_config_channel_rf3053()
2458 rt2800_rfcsr_write(rt2x00dev, 10, 0xd8); in rt2800_config_channel_rf3053()
2459 rt2800_rfcsr_write(rt2x00dev, 13, 0x23); in rt2800_config_channel_rf3053()
2462 rt2800_rfcsr_read(rt2x00dev, 51, &rfcsr); in rt2800_config_channel_rf3053()
2464 rt2800_rfcsr_write(rt2x00dev, 51, rfcsr); in rt2800_config_channel_rf3053()
2466 rt2800_rfcsr_read(rt2x00dev, 51, &rfcsr); in rt2800_config_channel_rf3053()
2474 rt2800_rfcsr_write(rt2x00dev, 51, rfcsr); in rt2800_config_channel_rf3053()
2476 rt2800_rfcsr_read(rt2x00dev, 49, &rfcsr); in rt2800_config_channel_rf3053()
2485 rt2800_rfcsr_write(rt2x00dev, 49, rfcsr); in rt2800_config_channel_rf3053()
2487 rt2800_rfcsr_read(rt2x00dev, 50, &rfcsr); in rt2800_config_channel_rf3053()
2489 rt2800_rfcsr_write(rt2x00dev, 50, rfcsr); in rt2800_config_channel_rf3053()
2491 rt2800_rfcsr_read(rt2x00dev, 57, &rfcsr); in rt2800_config_channel_rf3053()
2496 rt2800_rfcsr_write(rt2x00dev, 57, rfcsr); in rt2800_config_channel_rf3053()
2499 rt2800_rfcsr_write(rt2x00dev, 44, 0x93); in rt2800_config_channel_rf3053()
2500 rt2800_rfcsr_write(rt2x00dev, 52, 0x45); in rt2800_config_channel_rf3053()
2502 rt2800_rfcsr_write(rt2x00dev, 44, 0x9b); in rt2800_config_channel_rf3053()
2503 rt2800_rfcsr_write(rt2x00dev, 52, 0x05); in rt2800_config_channel_rf3053()
2507 rt2800_rfcsr_read(rt2x00dev, 3, &rfcsr); in rt2800_config_channel_rf3053()
2518 rt2800_rfcsr_write(rt2x00dev, 3, rfcsr); in rt2800_config_channel_rf3053()
2524 rt2800_rfcsr_write(rt2x00dev, 39, rfcsr); in rt2800_config_channel_rf3053()
2526 rt2800_rfcsr_write(rt2x00dev, 45, 0xbb); in rt2800_config_channel_rf3053()
2531 rt2800_rfcsr_write(rt2x00dev, 39, 0x36); in rt2800_config_channel_rf3053()
2533 rt2800_rfcsr_write(rt2x00dev, 45, 0xeb); in rt2800_config_channel_rf3053()
2538 rt2800_rfcsr_write(rt2x00dev, 39, rfcsr); in rt2800_config_channel_rf3053()
2540 rt2800_rfcsr_write(rt2x00dev, 45, 0xb3); in rt2800_config_channel_rf3053()
2545 rt2800_rfcsr_write(rt2x00dev, 39, rfcsr); in rt2800_config_channel_rf3053()
2547 rt2800_rfcsr_write(rt2x00dev, 45, 0x9b); in rt2800_config_channel_rf3053()
2554 static void rt2800_config_channel_rf3290(struct rt2x00_dev *rt2x00dev, in rt2800_config_channel_rf3290() argument
2561 rt2800_rfcsr_write(rt2x00dev, 8, rf->rf1); in rt2800_config_channel_rf3290()
2562 rt2800_rfcsr_write(rt2x00dev, 9, rf->rf3); in rt2800_config_channel_rf3290()
2563 rt2800_rfcsr_read(rt2x00dev, 11, &rfcsr); in rt2800_config_channel_rf3290()
2565 rt2800_rfcsr_write(rt2x00dev, 11, rfcsr); in rt2800_config_channel_rf3290()
2567 rt2800_rfcsr_read(rt2x00dev, 49, &rfcsr); in rt2800_config_channel_rf3290()
2572 rt2800_rfcsr_write(rt2x00dev, 49, rfcsr); in rt2800_config_channel_rf3290()
2574 rt2800_adjust_freq_offset(rt2x00dev); in rt2800_config_channel_rf3290()
2578 rt2800_bbp_write(rt2x00dev, 68, 0x0c); in rt2800_config_channel_rf3290()
2580 rt2800_bbp_write(rt2x00dev, 68, 0x0b); in rt2800_config_channel_rf3290()
2583 rt2800_bbp_write(rt2x00dev, 59, 0x0f); in rt2800_config_channel_rf3290()
2585 rt2800_bbp_write(rt2x00dev, 59, 0x0e); in rt2800_config_channel_rf3290()
2587 rt2800_bbp_write(rt2x00dev, 59, 0x0d); in rt2800_config_channel_rf3290()
2591 static void rt2800_config_channel_rf3322(struct rt2x00_dev *rt2x00dev, in rt2800_config_channel_rf3322() argument
2598 rt2800_rfcsr_write(rt2x00dev, 8, rf->rf1); in rt2800_config_channel_rf3322()
2599 rt2800_rfcsr_write(rt2x00dev, 9, rf->rf3); in rt2800_config_channel_rf3322()
2601 rt2800_rfcsr_write(rt2x00dev, 11, 0x42); in rt2800_config_channel_rf3322()
2602 rt2800_rfcsr_write(rt2x00dev, 12, 0x1c); in rt2800_config_channel_rf3322()
2603 rt2800_rfcsr_write(rt2x00dev, 13, 0x00); in rt2800_config_channel_rf3322()
2606 rt2800_rfcsr_write(rt2x00dev, 47, POWER_BOUND); in rt2800_config_channel_rf3322()
2608 rt2800_rfcsr_write(rt2x00dev, 47, info->default_power1); in rt2800_config_channel_rf3322()
2611 rt2800_rfcsr_write(rt2x00dev, 48, POWER_BOUND); in rt2800_config_channel_rf3322()
2613 rt2800_rfcsr_write(rt2x00dev, 48, info->default_power2); in rt2800_config_channel_rf3322()
2615 rt2800_adjust_freq_offset(rt2x00dev); in rt2800_config_channel_rf3322()
2617 rt2800_rfcsr_read(rt2x00dev, 1, &rfcsr); in rt2800_config_channel_rf3322()
2621 if ( rt2x00dev->default_ant.tx_chain_num == 2 ) in rt2800_config_channel_rf3322()
2626 if ( rt2x00dev->default_ant.rx_chain_num == 2 ) in rt2800_config_channel_rf3322()
2634 rt2800_rfcsr_write(rt2x00dev, 1, rfcsr); in rt2800_config_channel_rf3322()
2636 rt2800_rfcsr_write(rt2x00dev, 31, 80); in rt2800_config_channel_rf3322()
2639 static void rt2800_config_channel_rf53xx(struct rt2x00_dev *rt2x00dev, in rt2800_config_channel_rf53xx() argument
2646 rt2800_rfcsr_write(rt2x00dev, 8, rf->rf1); in rt2800_config_channel_rf53xx()
2647 rt2800_rfcsr_write(rt2x00dev, 9, rf->rf3); in rt2800_config_channel_rf53xx()
2648 rt2800_rfcsr_read(rt2x00dev, 11, &rfcsr); in rt2800_config_channel_rf53xx()
2650 rt2800_rfcsr_write(rt2x00dev, 11, rfcsr); in rt2800_config_channel_rf53xx()
2652 rt2800_rfcsr_read(rt2x00dev, 49, &rfcsr); in rt2800_config_channel_rf53xx()
2657 rt2800_rfcsr_write(rt2x00dev, 49, rfcsr); in rt2800_config_channel_rf53xx()
2659 if (rt2x00_rt(rt2x00dev, RT5392)) { in rt2800_config_channel_rf53xx()
2660 rt2800_rfcsr_read(rt2x00dev, 50, &rfcsr); in rt2800_config_channel_rf53xx()
2666 rt2800_rfcsr_write(rt2x00dev, 50, rfcsr); in rt2800_config_channel_rf53xx()
2669 rt2800_rfcsr_read(rt2x00dev, 1, &rfcsr); in rt2800_config_channel_rf53xx()
2670 if (rt2x00_rt(rt2x00dev, RT5392)) { in rt2800_config_channel_rf53xx()
2678 rt2800_rfcsr_write(rt2x00dev, 1, rfcsr); in rt2800_config_channel_rf53xx()
2680 rt2800_adjust_freq_offset(rt2x00dev); in rt2800_config_channel_rf53xx()
2685 if (rt2x00_has_cap_bt_coexist(rt2x00dev)) { in rt2800_config_channel_rf53xx()
2686 if (rt2x00_rt_rev_gte(rt2x00dev, RT5390, REV_RT5390F)) { in rt2800_config_channel_rf53xx()
2695 rt2800_rfcsr_write(rt2x00dev, 55, in rt2800_config_channel_rf53xx()
2697 rt2800_rfcsr_write(rt2x00dev, 59, in rt2800_config_channel_rf53xx()
2704 rt2800_rfcsr_write(rt2x00dev, 59, r59_bt[idx]); in rt2800_config_channel_rf53xx()
2707 if (rt2x00_rt_rev_gte(rt2x00dev, RT5390, REV_RT5390F)) { in rt2800_config_channel_rf53xx()
2715 rt2800_rfcsr_write(rt2x00dev, 55, in rt2800_config_channel_rf53xx()
2717 rt2800_rfcsr_write(rt2x00dev, 59, in rt2800_config_channel_rf53xx()
2719 } else if (rt2x00_rt(rt2x00dev, RT5390) || in rt2800_config_channel_rf53xx()
2720 rt2x00_rt(rt2x00dev, RT5392)) { in rt2800_config_channel_rf53xx()
2725 rt2800_rfcsr_write(rt2x00dev, 59, in rt2800_config_channel_rf53xx()
2732 static void rt2800_config_channel_rf55xx(struct rt2x00_dev *rt2x00dev, in rt2800_config_channel_rf55xx() argument
2745 rt2800_register_read(rt2x00dev, LDO_CFG0, ®); in rt2800_config_channel_rf55xx()
2748 rt2800_register_write(rt2x00dev, LDO_CFG0, reg); in rt2800_config_channel_rf55xx()
2751 rt2800_rfcsr_write(rt2x00dev, 8, rf->rf1 & 0xff); in rt2800_config_channel_rf55xx()
2753 rt2800_rfcsr_read(rt2x00dev, 9, &rfcsr); in rt2800_config_channel_rf55xx()
2757 rt2800_rfcsr_write(rt2x00dev, 9, rfcsr); in rt2800_config_channel_rf55xx()
2759 rt2800_rfcsr_read(rt2x00dev, 11, &rfcsr); in rt2800_config_channel_rf55xx()
2762 rt2800_rfcsr_write(rt2x00dev, 11, rfcsr); in rt2800_config_channel_rf55xx()
2765 rt2800_rfcsr_write(rt2x00dev, 10, 0x90); in rt2800_config_channel_rf55xx()
2767 rt2800_rfcsr_write(rt2x00dev, 11, 0x4A); in rt2800_config_channel_rf55xx()
2768 rt2800_rfcsr_write(rt2x00dev, 12, 0x52); in rt2800_config_channel_rf55xx()
2769 rt2800_rfcsr_write(rt2x00dev, 13, 0x42); in rt2800_config_channel_rf55xx()
2770 rt2800_rfcsr_write(rt2x00dev, 22, 0x40); in rt2800_config_channel_rf55xx()
2771 rt2800_rfcsr_write(rt2x00dev, 24, 0x4A); in rt2800_config_channel_rf55xx()
2772 rt2800_rfcsr_write(rt2x00dev, 25, 0x80); in rt2800_config_channel_rf55xx()
2773 rt2800_rfcsr_write(rt2x00dev, 27, 0x42); in rt2800_config_channel_rf55xx()
2774 rt2800_rfcsr_write(rt2x00dev, 36, 0x80); in rt2800_config_channel_rf55xx()
2775 rt2800_rfcsr_write(rt2x00dev, 37, 0x08); in rt2800_config_channel_rf55xx()
2776 rt2800_rfcsr_write(rt2x00dev, 38, 0x89); in rt2800_config_channel_rf55xx()
2777 rt2800_rfcsr_write(rt2x00dev, 39, 0x1B); in rt2800_config_channel_rf55xx()
2778 rt2800_rfcsr_write(rt2x00dev, 40, 0x0D); in rt2800_config_channel_rf55xx()
2779 rt2800_rfcsr_write(rt2x00dev, 41, 0x9B); in rt2800_config_channel_rf55xx()
2780 rt2800_rfcsr_write(rt2x00dev, 42, 0xD5); in rt2800_config_channel_rf55xx()
2781 rt2800_rfcsr_write(rt2x00dev, 43, 0x72); in rt2800_config_channel_rf55xx()
2782 rt2800_rfcsr_write(rt2x00dev, 44, 0x0E); in rt2800_config_channel_rf55xx()
2783 rt2800_rfcsr_write(rt2x00dev, 45, 0xA2); in rt2800_config_channel_rf55xx()
2784 rt2800_rfcsr_write(rt2x00dev, 46, 0x6B); in rt2800_config_channel_rf55xx()
2785 rt2800_rfcsr_write(rt2x00dev, 48, 0x10); in rt2800_config_channel_rf55xx()
2786 rt2800_rfcsr_write(rt2x00dev, 51, 0x3E); in rt2800_config_channel_rf55xx()
2787 rt2800_rfcsr_write(rt2x00dev, 52, 0x48); in rt2800_config_channel_rf55xx()
2788 rt2800_rfcsr_write(rt2x00dev, 54, 0x38); in rt2800_config_channel_rf55xx()
2789 rt2800_rfcsr_write(rt2x00dev, 56, 0xA1); in rt2800_config_channel_rf55xx()
2790 rt2800_rfcsr_write(rt2x00dev, 57, 0x00); in rt2800_config_channel_rf55xx()
2791 rt2800_rfcsr_write(rt2x00dev, 58, 0x39); in rt2800_config_channel_rf55xx()
2792 rt2800_rfcsr_write(rt2x00dev, 60, 0x45); in rt2800_config_channel_rf55xx()
2793 rt2800_rfcsr_write(rt2x00dev, 61, 0x91); in rt2800_config_channel_rf55xx()
2794 rt2800_rfcsr_write(rt2x00dev, 62, 0x39); in rt2800_config_channel_rf55xx()
2799 rt2800_rfcsr_write(rt2x00dev, 23, rfcsr); in rt2800_config_channel_rf55xx()
2800 rt2800_rfcsr_write(rt2x00dev, 59, rfcsr); in rt2800_config_channel_rf55xx()
2804 rt2800_rfcsr_write(rt2x00dev, 31, 0xF8); in rt2800_config_channel_rf55xx()
2805 rt2800_rfcsr_write(rt2x00dev, 32, 0xC0); in rt2800_config_channel_rf55xx()
2807 rt2800_rfcsr_write(rt2x00dev, 55, 0x06); in rt2800_config_channel_rf55xx()
2809 rt2800_rfcsr_write(rt2x00dev, 55, 0x47); in rt2800_config_channel_rf55xx()
2813 rt2800_rfcsr_write(rt2x00dev, 55, 0x03); in rt2800_config_channel_rf55xx()
2815 rt2800_rfcsr_write(rt2x00dev, 55, 0x43); in rt2800_config_channel_rf55xx()
2821 rt2800_rfcsr_write(rt2x00dev, 10, 0x97); in rt2800_config_channel_rf55xx()
2823 rt2800_rfcsr_write(rt2x00dev, 11, 0x40); in rt2800_config_channel_rf55xx()
2824 rt2800_rfcsr_write(rt2x00dev, 25, 0xBF); in rt2800_config_channel_rf55xx()
2825 rt2800_rfcsr_write(rt2x00dev, 27, 0x42); in rt2800_config_channel_rf55xx()
2826 rt2800_rfcsr_write(rt2x00dev, 36, 0x00); in rt2800_config_channel_rf55xx()
2827 rt2800_rfcsr_write(rt2x00dev, 37, 0x04); in rt2800_config_channel_rf55xx()
2828 rt2800_rfcsr_write(rt2x00dev, 38, 0x85); in rt2800_config_channel_rf55xx()
2829 rt2800_rfcsr_write(rt2x00dev, 40, 0x42); in rt2800_config_channel_rf55xx()
2830 rt2800_rfcsr_write(rt2x00dev, 41, 0xBB); in rt2800_config_channel_rf55xx()
2831 rt2800_rfcsr_write(rt2x00dev, 42, 0xD7); in rt2800_config_channel_rf55xx()
2832 rt2800_rfcsr_write(rt2x00dev, 45, 0x41); in rt2800_config_channel_rf55xx()
2833 rt2800_rfcsr_write(rt2x00dev, 48, 0x00); in rt2800_config_channel_rf55xx()
2834 rt2800_rfcsr_write(rt2x00dev, 57, 0x77); in rt2800_config_channel_rf55xx()
2835 rt2800_rfcsr_write(rt2x00dev, 60, 0x05); in rt2800_config_channel_rf55xx()
2836 rt2800_rfcsr_write(rt2x00dev, 61, 0x01); in rt2800_config_channel_rf55xx()
2842 rt2800_rfcsr_write(rt2x00dev, 12, 0x2E); in rt2800_config_channel_rf55xx()
2843 rt2800_rfcsr_write(rt2x00dev, 13, 0x22); in rt2800_config_channel_rf55xx()
2844 rt2800_rfcsr_write(rt2x00dev, 22, 0x60); in rt2800_config_channel_rf55xx()
2845 rt2800_rfcsr_write(rt2x00dev, 23, 0x7F); in rt2800_config_channel_rf55xx()
2847 rt2800_rfcsr_write(rt2x00dev, 24, 0x09); in rt2800_config_channel_rf55xx()
2849 rt2800_rfcsr_write(rt2x00dev, 24, 0x07); in rt2800_config_channel_rf55xx()
2850 rt2800_rfcsr_write(rt2x00dev, 39, 0x1C); in rt2800_config_channel_rf55xx()
2851 rt2800_rfcsr_write(rt2x00dev, 43, 0x5B); in rt2800_config_channel_rf55xx()
2852 rt2800_rfcsr_write(rt2x00dev, 44, 0X40); in rt2800_config_channel_rf55xx()
2853 rt2800_rfcsr_write(rt2x00dev, 46, 0X00); in rt2800_config_channel_rf55xx()
2854 rt2800_rfcsr_write(rt2x00dev, 51, 0xFE); in rt2800_config_channel_rf55xx()
2855 rt2800_rfcsr_write(rt2x00dev, 52, 0x0C); in rt2800_config_channel_rf55xx()
2856 rt2800_rfcsr_write(rt2x00dev, 54, 0xF8); in rt2800_config_channel_rf55xx()
2858 rt2800_rfcsr_write(rt2x00dev, 55, 0x06), in rt2800_config_channel_rf55xx()
2859 rt2800_rfcsr_write(rt2x00dev, 56, 0xD3); in rt2800_config_channel_rf55xx()
2861 rt2800_rfcsr_write(rt2x00dev, 55, 0x04); in rt2800_config_channel_rf55xx()
2862 rt2800_rfcsr_write(rt2x00dev, 56, 0xBB); in rt2800_config_channel_rf55xx()
2865 rt2800_rfcsr_write(rt2x00dev, 58, 0x15); in rt2800_config_channel_rf55xx()
2866 rt2800_rfcsr_write(rt2x00dev, 59, 0x7F); in rt2800_config_channel_rf55xx()
2867 rt2800_rfcsr_write(rt2x00dev, 62, 0x15); in rt2800_config_channel_rf55xx()
2871 rt2800_rfcsr_write(rt2x00dev, 12, 0x0E); in rt2800_config_channel_rf55xx()
2872 rt2800_rfcsr_write(rt2x00dev, 13, 0x42); in rt2800_config_channel_rf55xx()
2873 rt2800_rfcsr_write(rt2x00dev, 22, 0x40); in rt2800_config_channel_rf55xx()
2875 rt2800_rfcsr_write(rt2x00dev, 23, 0x3C); in rt2800_config_channel_rf55xx()
2876 rt2800_rfcsr_write(rt2x00dev, 24, 0x06); in rt2800_config_channel_rf55xx()
2878 rt2800_rfcsr_write(rt2x00dev, 23, 0x38); in rt2800_config_channel_rf55xx()
2879 rt2800_rfcsr_write(rt2x00dev, 24, 0x05); in rt2800_config_channel_rf55xx()
2882 rt2800_rfcsr_write(rt2x00dev, 39, 0x1A); in rt2800_config_channel_rf55xx()
2883 rt2800_rfcsr_write(rt2x00dev, 43, 0x3B); in rt2800_config_channel_rf55xx()
2884 rt2800_rfcsr_write(rt2x00dev, 44, 0x20); in rt2800_config_channel_rf55xx()
2885 rt2800_rfcsr_write(rt2x00dev, 46, 0x18); in rt2800_config_channel_rf55xx()
2887 rt2800_rfcsr_write(rt2x00dev, 39, 0x18); in rt2800_config_channel_rf55xx()
2888 rt2800_rfcsr_write(rt2x00dev, 43, 0x1B); in rt2800_config_channel_rf55xx()
2889 rt2800_rfcsr_write(rt2x00dev, 44, 0x10); in rt2800_config_channel_rf55xx()
2890 rt2800_rfcsr_write(rt2x00dev, 46, 0X08); in rt2800_config_channel_rf55xx()
2893 rt2800_rfcsr_write(rt2x00dev, 51, 0xFC); in rt2800_config_channel_rf55xx()
2895 rt2800_rfcsr_write(rt2x00dev, 51, 0xEC); in rt2800_config_channel_rf55xx()
2897 rt2800_rfcsr_write(rt2x00dev, 52, 0x06); in rt2800_config_channel_rf55xx()
2899 rt2800_rfcsr_write(rt2x00dev, 52, 0x06); in rt2800_config_channel_rf55xx()
2900 rt2800_rfcsr_write(rt2x00dev, 54, 0xEB); in rt2800_config_channel_rf55xx()
2902 rt2800_rfcsr_write(rt2x00dev, 55, 0x01); in rt2800_config_channel_rf55xx()
2904 rt2800_rfcsr_write(rt2x00dev, 55, 0x00); in rt2800_config_channel_rf55xx()
2906 rt2800_rfcsr_write(rt2x00dev, 56, 0xBB); in rt2800_config_channel_rf55xx()
2908 rt2800_rfcsr_write(rt2x00dev, 56, 0xAB); in rt2800_config_channel_rf55xx()
2910 rt2800_rfcsr_write(rt2x00dev, 58, 0x1D); in rt2800_config_channel_rf55xx()
2912 rt2800_rfcsr_write(rt2x00dev, 58, 0x15); in rt2800_config_channel_rf55xx()
2914 rt2800_rfcsr_write(rt2x00dev, 59, 0x3F); in rt2800_config_channel_rf55xx()
2916 rt2800_rfcsr_write(rt2x00dev, 59, 0x7C); in rt2800_config_channel_rf55xx()
2918 rt2800_rfcsr_write(rt2x00dev, 62, 0x1D); in rt2800_config_channel_rf55xx()
2920 rt2800_rfcsr_write(rt2x00dev, 62, 0x15); in rt2800_config_channel_rf55xx()
2927 rt2800_rfcsr_read(rt2x00dev, 49, &rfcsr); in rt2800_config_channel_rf55xx()
2934 rt2800_rfcsr_write(rt2x00dev, 49, rfcsr); in rt2800_config_channel_rf55xx()
2936 rt2800_rfcsr_read(rt2x00dev, 50, &rfcsr); in rt2800_config_channel_rf55xx()
2943 rt2800_rfcsr_write(rt2x00dev, 50, rfcsr); in rt2800_config_channel_rf55xx()
2945 rt2800_rfcsr_read(rt2x00dev, 1, &rfcsr); in rt2800_config_channel_rf55xx()
2950 rt2x00dev->default_ant.tx_chain_num >= 1); in rt2800_config_channel_rf55xx()
2952 rt2x00dev->default_ant.tx_chain_num == 2); in rt2800_config_channel_rf55xx()
2956 rt2x00dev->default_ant.rx_chain_num >= 1); in rt2800_config_channel_rf55xx()
2958 rt2x00dev->default_ant.rx_chain_num == 2); in rt2800_config_channel_rf55xx()
2961 rt2800_rfcsr_write(rt2x00dev, 1, rfcsr); in rt2800_config_channel_rf55xx()
2962 rt2800_rfcsr_write(rt2x00dev, 6, 0xe4); in rt2800_config_channel_rf55xx()
2965 rt2800_rfcsr_write(rt2x00dev, 30, 0x16); in rt2800_config_channel_rf55xx()
2967 rt2800_rfcsr_write(rt2x00dev, 30, 0x10); in rt2800_config_channel_rf55xx()
2970 rt2800_rfcsr_write(rt2x00dev, 31, 0x80); in rt2800_config_channel_rf55xx()
2971 rt2800_rfcsr_write(rt2x00dev, 32, 0x80); in rt2800_config_channel_rf55xx()
2975 rt2800_adjust_freq_offset(rt2x00dev); in rt2800_config_channel_rf55xx()
2978 rt2800_rfcsr_read(rt2x00dev, 3, &rfcsr); in rt2800_config_channel_rf55xx()
2980 rt2800_rfcsr_write(rt2x00dev, 3, rfcsr); in rt2800_config_channel_rf55xx()
2983 rt2800_bbp_write(rt2x00dev, 62, 0x37 - rt2x00dev->lna_gain); in rt2800_config_channel_rf55xx()
2984 rt2800_bbp_write(rt2x00dev, 63, 0x37 - rt2x00dev->lna_gain); in rt2800_config_channel_rf55xx()
2985 rt2800_bbp_write(rt2x00dev, 64, 0x37 - rt2x00dev->lna_gain); in rt2800_config_channel_rf55xx()
2987 rt2800_bbp_write(rt2x00dev, 79, (rf->channel <= 14) ? 0x1C : 0x18); in rt2800_config_channel_rf55xx()
2988 rt2800_bbp_write(rt2x00dev, 80, (rf->channel <= 14) ? 0x0E : 0x08); in rt2800_config_channel_rf55xx()
2989 rt2800_bbp_write(rt2x00dev, 81, (rf->channel <= 14) ? 0x3A : 0x38); in rt2800_config_channel_rf55xx()
2990 rt2800_bbp_write(rt2x00dev, 82, (rf->channel <= 14) ? 0x62 : 0x92); in rt2800_config_channel_rf55xx()
2993 rt2800_bbp_write(rt2x00dev, 195, 128); in rt2800_config_channel_rf55xx()
2994 rt2800_bbp_write(rt2x00dev, 196, (rf->channel <= 14) ? 0xE0 : 0xF0); in rt2800_config_channel_rf55xx()
2995 rt2800_bbp_write(rt2x00dev, 195, 129); in rt2800_config_channel_rf55xx()
2996 rt2800_bbp_write(rt2x00dev, 196, (rf->channel <= 14) ? 0x1F : 0x1E); in rt2800_config_channel_rf55xx()
2997 rt2800_bbp_write(rt2x00dev, 195, 130); in rt2800_config_channel_rf55xx()
2998 rt2800_bbp_write(rt2x00dev, 196, (rf->channel <= 14) ? 0x38 : 0x28); in rt2800_config_channel_rf55xx()
2999 rt2800_bbp_write(rt2x00dev, 195, 131); in rt2800_config_channel_rf55xx()
3000 rt2800_bbp_write(rt2x00dev, 196, (rf->channel <= 14) ? 0x32 : 0x20); in rt2800_config_channel_rf55xx()
3001 rt2800_bbp_write(rt2x00dev, 195, 133); in rt2800_config_channel_rf55xx()
3002 rt2800_bbp_write(rt2x00dev, 196, (rf->channel <= 14) ? 0x28 : 0x7F); in rt2800_config_channel_rf55xx()
3003 rt2800_bbp_write(rt2x00dev, 195, 124); in rt2800_config_channel_rf55xx()
3004 rt2800_bbp_write(rt2x00dev, 196, (rf->channel <= 14) ? 0x19 : 0x7F); in rt2800_config_channel_rf55xx()
3007 static void rt2800_bbp_write_with_rx_chain(struct rt2x00_dev *rt2x00dev, in rt2800_bbp_write_with_rx_chain() argument
3013 for (chain = 0; chain < rt2x00dev->default_ant.rx_chain_num; chain++) { in rt2800_bbp_write_with_rx_chain()
3014 rt2800_bbp_read(rt2x00dev, 27, ®); in rt2800_bbp_write_with_rx_chain()
3016 rt2800_bbp_write(rt2x00dev, 27, reg); in rt2800_bbp_write_with_rx_chain()
3018 rt2800_bbp_write(rt2x00dev, word, value); in rt2800_bbp_write_with_rx_chain()
3022 static void rt2800_iq_calibrate(struct rt2x00_dev *rt2x00dev, int channel) in rt2800_iq_calibrate() argument
3027 rt2800_bbp_write(rt2x00dev, 158, 0x2c); in rt2800_iq_calibrate()
3029 cal = rt2x00_eeprom_byte(rt2x00dev, EEPROM_IQ_GAIN_CAL_TX0_2G); in rt2800_iq_calibrate()
3031 cal = rt2x00_eeprom_byte(rt2x00dev, in rt2800_iq_calibrate()
3034 cal = rt2x00_eeprom_byte(rt2x00dev, in rt2800_iq_calibrate()
3037 cal = rt2x00_eeprom_byte(rt2x00dev, in rt2800_iq_calibrate()
3041 rt2800_bbp_write(rt2x00dev, 159, cal); in rt2800_iq_calibrate()
3044 rt2800_bbp_write(rt2x00dev, 158, 0x2d); in rt2800_iq_calibrate()
3046 cal = rt2x00_eeprom_byte(rt2x00dev, EEPROM_IQ_PHASE_CAL_TX0_2G); in rt2800_iq_calibrate()
3048 cal = rt2x00_eeprom_byte(rt2x00dev, in rt2800_iq_calibrate()
3051 cal = rt2x00_eeprom_byte(rt2x00dev, in rt2800_iq_calibrate()
3054 cal = rt2x00_eeprom_byte(rt2x00dev, in rt2800_iq_calibrate()
3058 rt2800_bbp_write(rt2x00dev, 159, cal); in rt2800_iq_calibrate()
3061 rt2800_bbp_write(rt2x00dev, 158, 0x4a); in rt2800_iq_calibrate()
3063 cal = rt2x00_eeprom_byte(rt2x00dev, EEPROM_IQ_GAIN_CAL_TX1_2G); in rt2800_iq_calibrate()
3065 cal = rt2x00_eeprom_byte(rt2x00dev, in rt2800_iq_calibrate()
3068 cal = rt2x00_eeprom_byte(rt2x00dev, in rt2800_iq_calibrate()
3071 cal = rt2x00_eeprom_byte(rt2x00dev, in rt2800_iq_calibrate()
3075 rt2800_bbp_write(rt2x00dev, 159, cal); in rt2800_iq_calibrate()
3078 rt2800_bbp_write(rt2x00dev, 158, 0x4b); in rt2800_iq_calibrate()
3080 cal = rt2x00_eeprom_byte(rt2x00dev, EEPROM_IQ_PHASE_CAL_TX1_2G); in rt2800_iq_calibrate()
3082 cal = rt2x00_eeprom_byte(rt2x00dev, in rt2800_iq_calibrate()
3085 cal = rt2x00_eeprom_byte(rt2x00dev, in rt2800_iq_calibrate()
3088 cal = rt2x00_eeprom_byte(rt2x00dev, in rt2800_iq_calibrate()
3092 rt2800_bbp_write(rt2x00dev, 159, cal); in rt2800_iq_calibrate()
3097 rt2800_bbp_write(rt2x00dev, 158, 0x04); in rt2800_iq_calibrate()
3098 cal = rt2x00_eeprom_byte(rt2x00dev, EEPROM_RF_IQ_COMPENSATION_CONTROL); in rt2800_iq_calibrate()
3099 rt2800_bbp_write(rt2x00dev, 159, cal != 0xff ? cal : 0); in rt2800_iq_calibrate()
3102 rt2800_bbp_write(rt2x00dev, 158, 0x03); in rt2800_iq_calibrate()
3103 cal = rt2x00_eeprom_byte(rt2x00dev, in rt2800_iq_calibrate()
3105 rt2800_bbp_write(rt2x00dev, 159, cal != 0xff ? cal : 0); in rt2800_iq_calibrate()
3108 static char rt2800_txpower_to_dev(struct rt2x00_dev *rt2x00dev, in rt2800_txpower_to_dev() argument
3112 if (rt2x00_rt(rt2x00dev, RT3593)) in rt2800_txpower_to_dev()
3118 if (rt2x00_rt(rt2x00dev, RT3593)) in rt2800_txpower_to_dev()
3125 static void rt2800_config_channel(struct rt2x00_dev *rt2x00dev, in rt2800_config_channel() argument
3134 info->default_power1 = rt2800_txpower_to_dev(rt2x00dev, rf->channel, in rt2800_config_channel()
3136 info->default_power2 = rt2800_txpower_to_dev(rt2x00dev, rf->channel, in rt2800_config_channel()
3138 if (rt2x00dev->default_ant.tx_chain_num > 2) in rt2800_config_channel()
3140 rt2800_txpower_to_dev(rt2x00dev, rf->channel, in rt2800_config_channel()
3143 switch (rt2x00dev->chip.rf) { in rt2800_config_channel()
3149 rt2800_config_channel_rf3xxx(rt2x00dev, conf, rf, info); in rt2800_config_channel()
3152 rt2800_config_channel_rf3052(rt2x00dev, conf, rf, info); in rt2800_config_channel()
3155 rt2800_config_channel_rf3053(rt2x00dev, conf, rf, info); in rt2800_config_channel()
3158 rt2800_config_channel_rf3290(rt2x00dev, conf, rf, info); in rt2800_config_channel()
3161 rt2800_config_channel_rf3322(rt2x00dev, conf, rf, info); in rt2800_config_channel()
3170 rt2800_config_channel_rf53xx(rt2x00dev, conf, rf, info); in rt2800_config_channel()
3173 rt2800_config_channel_rf55xx(rt2x00dev, conf, rf, info); in rt2800_config_channel()
3176 rt2800_config_channel_rf2xxx(rt2x00dev, conf, rf, info); in rt2800_config_channel()
3179 if (rt2x00_rf(rt2x00dev, RF3070) || in rt2800_config_channel()
3180 rt2x00_rf(rt2x00dev, RF3290) || in rt2800_config_channel()
3181 rt2x00_rf(rt2x00dev, RF3322) || in rt2800_config_channel()
3182 rt2x00_rf(rt2x00dev, RF5360) || in rt2800_config_channel()
3183 rt2x00_rf(rt2x00dev, RF5362) || in rt2800_config_channel()
3184 rt2x00_rf(rt2x00dev, RF5370) || in rt2800_config_channel()
3185 rt2x00_rf(rt2x00dev, RF5372) || in rt2800_config_channel()
3186 rt2x00_rf(rt2x00dev, RF5390) || in rt2800_config_channel()
3187 rt2x00_rf(rt2x00dev, RF5392)) { in rt2800_config_channel()
3188 rt2800_rfcsr_read(rt2x00dev, 30, &rfcsr); in rt2800_config_channel()
3191 rt2800_rfcsr_write(rt2x00dev, 30, rfcsr); in rt2800_config_channel()
3193 rt2800_rfcsr_read(rt2x00dev, 3, &rfcsr); in rt2800_config_channel()
3195 rt2800_rfcsr_write(rt2x00dev, 3, rfcsr); in rt2800_config_channel()
3201 if (rt2x00_rt(rt2x00dev, RT3352)) { in rt2800_config_channel()
3202 rt2800_bbp_write(rt2x00dev, 27, 0x0); in rt2800_config_channel()
3203 rt2800_bbp_write(rt2x00dev, 66, 0x26 + rt2x00dev->lna_gain); in rt2800_config_channel()
3204 rt2800_bbp_write(rt2x00dev, 27, 0x20); in rt2800_config_channel()
3205 rt2800_bbp_write(rt2x00dev, 66, 0x26 + rt2x00dev->lna_gain); in rt2800_config_channel()
3206 } else if (rt2x00_rt(rt2x00dev, RT3593)) { in rt2800_config_channel()
3209 rt2800_bbp_write(rt2x00dev, 70, 0x00); in rt2800_config_channel()
3211 rt2800_bbp_write(rt2x00dev, 70, 0x0a); in rt2800_config_channel()
3215 rt2800_bbp_write(rt2x00dev, 105, 0x04); in rt2800_config_channel()
3217 rt2800_bbp_write(rt2x00dev, 105, 0x34); in rt2800_config_channel()
3219 rt2800_bbp_write(rt2x00dev, 62, 0x37 - rt2x00dev->lna_gain); in rt2800_config_channel()
3220 rt2800_bbp_write(rt2x00dev, 63, 0x37 - rt2x00dev->lna_gain); in rt2800_config_channel()
3221 rt2800_bbp_write(rt2x00dev, 64, 0x37 - rt2x00dev->lna_gain); in rt2800_config_channel()
3222 rt2800_bbp_write(rt2x00dev, 77, 0x98); in rt2800_config_channel()
3224 rt2800_bbp_write(rt2x00dev, 62, 0x37 - rt2x00dev->lna_gain); in rt2800_config_channel()
3225 rt2800_bbp_write(rt2x00dev, 63, 0x37 - rt2x00dev->lna_gain); in rt2800_config_channel()
3226 rt2800_bbp_write(rt2x00dev, 64, 0x37 - rt2x00dev->lna_gain); in rt2800_config_channel()
3227 rt2800_bbp_write(rt2x00dev, 86, 0); in rt2800_config_channel()
3231 if (!rt2x00_rt(rt2x00dev, RT5390) && in rt2800_config_channel()
3232 !rt2x00_rt(rt2x00dev, RT5392)) { in rt2800_config_channel()
3233 if (rt2x00_has_cap_external_lna_bg(rt2x00dev)) { in rt2800_config_channel()
3234 rt2800_bbp_write(rt2x00dev, 82, 0x62); in rt2800_config_channel()
3235 rt2800_bbp_write(rt2x00dev, 75, 0x46); in rt2800_config_channel()
3237 if (rt2x00_rt(rt2x00dev, RT3593)) in rt2800_config_channel()
3238 rt2800_bbp_write(rt2x00dev, 82, 0x62); in rt2800_config_channel()
3240 rt2800_bbp_write(rt2x00dev, 82, 0x84); in rt2800_config_channel()
3241 rt2800_bbp_write(rt2x00dev, 75, 0x50); in rt2800_config_channel()
3243 if (rt2x00_rt(rt2x00dev, RT3593)) in rt2800_config_channel()
3244 rt2800_bbp_write(rt2x00dev, 83, 0x8a); in rt2800_config_channel()
3248 if (rt2x00_rt(rt2x00dev, RT3572)) in rt2800_config_channel()
3249 rt2800_bbp_write(rt2x00dev, 82, 0x94); in rt2800_config_channel()
3250 else if (rt2x00_rt(rt2x00dev, RT3593)) in rt2800_config_channel()
3251 rt2800_bbp_write(rt2x00dev, 82, 0x82); in rt2800_config_channel()
3253 rt2800_bbp_write(rt2x00dev, 82, 0xf2); in rt2800_config_channel()
3255 if (rt2x00_rt(rt2x00dev, RT3593)) in rt2800_config_channel()
3256 rt2800_bbp_write(rt2x00dev, 83, 0x9a); in rt2800_config_channel()
3258 if (rt2x00_has_cap_external_lna_a(rt2x00dev)) in rt2800_config_channel()
3259 rt2800_bbp_write(rt2x00dev, 75, 0x46); in rt2800_config_channel()
3261 rt2800_bbp_write(rt2x00dev, 75, 0x50); in rt2800_config_channel()
3264 rt2800_register_read(rt2x00dev, TX_BAND_CFG, ®); in rt2800_config_channel()
3268 rt2800_register_write(rt2x00dev, TX_BAND_CFG, reg); in rt2800_config_channel()
3270 if (rt2x00_rt(rt2x00dev, RT3572)) in rt2800_config_channel()
3271 rt2800_rfcsr_write(rt2x00dev, 8, 0); in rt2800_config_channel()
3275 switch (rt2x00dev->default_ant.tx_chain_num) { in rt2800_config_channel()
3294 if (rt2x00_has_cap_bt_coexist(rt2x00dev)) in rt2800_config_channel()
3302 switch (rt2x00dev->default_ant.rx_chain_num) { in rt2800_config_channel()
3323 rt2800_register_write(rt2x00dev, TX_PIN_CFG, tx_pin); in rt2800_config_channel()
3325 if (rt2x00_rt(rt2x00dev, RT3572)) { in rt2800_config_channel()
3326 rt2800_rfcsr_write(rt2x00dev, 8, 0x80); in rt2800_config_channel()
3330 reg = 0x1c + (2 * rt2x00dev->lna_gain); in rt2800_config_channel()
3332 reg = 0x22 + ((rt2x00dev->lna_gain * 5) / 3); in rt2800_config_channel()
3334 rt2800_bbp_write_with_rx_chain(rt2x00dev, 66, reg); in rt2800_config_channel()
3337 if (rt2x00_rt(rt2x00dev, RT3593)) { in rt2800_config_channel()
3338 rt2800_register_read(rt2x00dev, GPIO_CTRL, ®); in rt2800_config_channel()
3341 if (rt2x00_is_usb(rt2x00dev) || in rt2800_config_channel()
3342 rt2x00_is_pcie(rt2x00dev)) { in rt2800_config_channel()
3352 if (rt2x00_is_usb(rt2x00dev)) { in rt2800_config_channel()
3361 } else if (rt2x00_is_pcie(rt2x00dev)) { in rt2800_config_channel()
3367 rt2800_register_write(rt2x00dev, GPIO_CTRL, reg); in rt2800_config_channel()
3371 reg = 0x1c + 2 * rt2x00dev->lna_gain; in rt2800_config_channel()
3373 reg = 0x22 + ((rt2x00dev->lna_gain * 5) / 3); in rt2800_config_channel()
3375 rt2800_bbp_write_with_rx_chain(rt2x00dev, 66, reg); in rt2800_config_channel()
3380 if (rt2x00_rt(rt2x00dev, RT5592)) { in rt2800_config_channel()
3381 rt2800_bbp_write(rt2x00dev, 195, 141); in rt2800_config_channel()
3382 rt2800_bbp_write(rt2x00dev, 196, conf_is_ht40(conf) ? 0x10 : 0x1a); in rt2800_config_channel()
3385 reg = (rf->channel <= 14 ? 0x1c : 0x24) + 2 * rt2x00dev->lna_gain; in rt2800_config_channel()
3386 rt2800_bbp_write_with_rx_chain(rt2x00dev, 66, reg); in rt2800_config_channel()
3388 rt2800_iq_calibrate(rt2x00dev, rf->channel); in rt2800_config_channel()
3391 rt2800_bbp_read(rt2x00dev, 4, &bbp); in rt2800_config_channel()
3393 rt2800_bbp_write(rt2x00dev, 4, bbp); in rt2800_config_channel()
3395 rt2800_bbp_read(rt2x00dev, 3, &bbp); in rt2800_config_channel()
3397 rt2800_bbp_write(rt2x00dev, 3, bbp); in rt2800_config_channel()
3399 if (rt2x00_rt_rev(rt2x00dev, RT2860, REV_RT2860C)) { in rt2800_config_channel()
3401 rt2800_bbp_write(rt2x00dev, 69, 0x1a); in rt2800_config_channel()
3402 rt2800_bbp_write(rt2x00dev, 70, 0x0a); in rt2800_config_channel()
3403 rt2800_bbp_write(rt2x00dev, 73, 0x16); in rt2800_config_channel()
3405 rt2800_bbp_write(rt2x00dev, 69, 0x16); in rt2800_config_channel()
3406 rt2800_bbp_write(rt2x00dev, 70, 0x08); in rt2800_config_channel()
3407 rt2800_bbp_write(rt2x00dev, 73, 0x11); in rt2800_config_channel()
3416 rt2800_register_read(rt2x00dev, CH_IDLE_STA, ®); in rt2800_config_channel()
3417 rt2800_register_read(rt2x00dev, CH_BUSY_STA, ®); in rt2800_config_channel()
3418 rt2800_register_read(rt2x00dev, CH_BUSY_STA_SEC, ®); in rt2800_config_channel()
3423 if (rt2x00_rt(rt2x00dev, RT3352)) { in rt2800_config_channel()
3424 rt2800_bbp_read(rt2x00dev, 49, &bbp); in rt2800_config_channel()
3426 rt2800_bbp_write(rt2x00dev, 49, bbp); in rt2800_config_channel()
3430 static int rt2800_get_gain_calibration_delta(struct rt2x00_dev *rt2x00dev) in rt2800_get_gain_calibration_delta() argument
3441 rt2800_eeprom_read(rt2x00dev, EEPROM_NIC_CONF1, &eeprom); in rt2800_get_gain_calibration_delta()
3453 if (rt2x00dev->curr_band == IEEE80211_BAND_2GHZ) { in rt2800_get_gain_calibration_delta()
3454 rt2800_eeprom_read(rt2x00dev, EEPROM_TSSI_BOUND_BG1, &eeprom); in rt2800_get_gain_calibration_delta()
3460 rt2800_eeprom_read(rt2x00dev, EEPROM_TSSI_BOUND_BG2, &eeprom); in rt2800_get_gain_calibration_delta()
3466 rt2800_eeprom_read(rt2x00dev, EEPROM_TSSI_BOUND_BG3, &eeprom); in rt2800_get_gain_calibration_delta()
3472 rt2800_eeprom_read(rt2x00dev, EEPROM_TSSI_BOUND_BG4, &eeprom); in rt2800_get_gain_calibration_delta()
3478 rt2800_eeprom_read(rt2x00dev, EEPROM_TSSI_BOUND_BG5, &eeprom); in rt2800_get_gain_calibration_delta()
3485 rt2800_eeprom_read(rt2x00dev, EEPROM_TSSI_BOUND_A1, &eeprom); in rt2800_get_gain_calibration_delta()
3491 rt2800_eeprom_read(rt2x00dev, EEPROM_TSSI_BOUND_A2, &eeprom); in rt2800_get_gain_calibration_delta()
3497 rt2800_eeprom_read(rt2x00dev, EEPROM_TSSI_BOUND_A3, &eeprom); in rt2800_get_gain_calibration_delta()
3503 rt2800_eeprom_read(rt2x00dev, EEPROM_TSSI_BOUND_A4, &eeprom); in rt2800_get_gain_calibration_delta()
3509 rt2800_eeprom_read(rt2x00dev, EEPROM_TSSI_BOUND_A5, &eeprom); in rt2800_get_gain_calibration_delta()
3526 rt2800_bbp_read(rt2x00dev, 49, ¤t_tssi); in rt2800_get_gain_calibration_delta()
3547 static int rt2800_get_txpower_bw_comp(struct rt2x00_dev *rt2x00dev, in rt2800_get_txpower_bw_comp() argument
3555 rt2800_eeprom_read(rt2x00dev, EEPROM_TXPOWER_DELTA, &eeprom); in rt2800_get_txpower_bw_comp()
3561 !test_bit(CONFIG_CHANNEL_HT40, &rt2x00dev->flags)) in rt2800_get_txpower_bw_comp()
3591 static int rt2800_get_txpower_reg_delta(struct rt2x00_dev *rt2x00dev, in rt2800_get_txpower_reg_delta() argument
3596 if (rt2x00_has_cap_power_limit(rt2x00dev)) in rt2800_get_txpower_reg_delta()
3612 static u8 rt2800_compensate_txpower(struct rt2x00_dev *rt2x00dev, int is_rate_b, in rt2800_compensate_txpower() argument
3622 if (rt2x00_rt(rt2x00dev, RT3593)) in rt2800_compensate_txpower()
3625 if (rt2x00_has_cap_power_limit(rt2x00dev)) { in rt2800_compensate_txpower()
3633 rt2800_eeprom_read_from_array(rt2x00dev, EEPROM_TXPOWER_BYRATE, in rt2800_compensate_txpower()
3638 rt2800_eeprom_read(rt2x00dev, EEPROM_EIRP_MAX_TX_POWER, in rt2800_compensate_txpower()
3680 static void rt2800_config_txpower_rt3593(struct rt2x00_dev *rt2x00dev, in rt2800_config_txpower_rt3593() argument
3697 delta = rt2800_get_gain_calibration_delta(rt2x00dev); in rt2800_config_txpower_rt3593()
3704 if (test_bit(CONFIG_CHANNEL_HT40, &rt2x00dev->flags)) in rt2800_config_txpower_rt3593()
3708 rt2800_eeprom_read_from_array(rt2x00dev, EEPROM_TXPOWER_BYRATE, in rt2800_config_txpower_rt3593()
3713 txpower = rt2800_compensate_txpower(rt2x00dev, 1, band, power_level, in rt2800_config_txpower_rt3593()
3724 txpower = rt2800_compensate_txpower(rt2x00dev, 1, band, power_level, in rt2800_config_txpower_rt3593()
3735 txpower = rt2800_compensate_txpower(rt2x00dev, 0, band, power_level, in rt2800_config_txpower_rt3593()
3746 txpower = rt2800_compensate_txpower(rt2x00dev, 0, band, power_level, in rt2800_config_txpower_rt3593()
3756 rt2800_eeprom_read_from_array(rt2x00dev, EEPROM_TXPOWER_BYRATE, in rt2800_config_txpower_rt3593()
3761 txpower = rt2800_compensate_txpower(rt2x00dev, 0, band, power_level, in rt2800_config_txpower_rt3593()
3772 txpower = rt2800_compensate_txpower(rt2x00dev, 0, band, power_level, in rt2800_config_txpower_rt3593()
3783 txpower = rt2800_compensate_txpower(rt2x00dev, 0, band, power_level, in rt2800_config_txpower_rt3593()
3793 rt2800_eeprom_read_from_array(rt2x00dev, EEPROM_TXPOWER_BYRATE, in rt2800_config_txpower_rt3593()
3798 txpower = rt2800_compensate_txpower(rt2x00dev, 0, band, power_level, in rt2800_config_txpower_rt3593()
3809 txpower = rt2800_compensate_txpower(rt2x00dev, 0, band, power_level, in rt2800_config_txpower_rt3593()
3820 txpower = rt2800_compensate_txpower(rt2x00dev, 0, band, power_level, in rt2800_config_txpower_rt3593()
3831 txpower = rt2800_compensate_txpower(rt2x00dev, 0, band, power_level, in rt2800_config_txpower_rt3593()
3841 rt2800_eeprom_read_from_array(rt2x00dev, EEPROM_TXPOWER_BYRATE, in rt2800_config_txpower_rt3593()
3846 txpower = rt2800_compensate_txpower(rt2x00dev, 0, band, power_level, in rt2800_config_txpower_rt3593()
3857 txpower = rt2800_compensate_txpower(rt2x00dev, 0, band, power_level, in rt2800_config_txpower_rt3593()
3868 txpower = rt2800_compensate_txpower(rt2x00dev, 0, band, power_level, in rt2800_config_txpower_rt3593()
3879 txpower = rt2800_compensate_txpower(rt2x00dev, 0, band, power_level, in rt2800_config_txpower_rt3593()
3889 rt2800_eeprom_read_from_array(rt2x00dev, EEPROM_TXPOWER_BYRATE, in rt2800_config_txpower_rt3593()
3894 txpower = rt2800_compensate_txpower(rt2x00dev, 0, band, power_level, in rt2800_config_txpower_rt3593()
3905 txpower = rt2800_compensate_txpower(rt2x00dev, 0, band, power_level, in rt2800_config_txpower_rt3593()
3916 txpower = rt2800_compensate_txpower(rt2x00dev, 0, band, power_level, in rt2800_config_txpower_rt3593()
3927 txpower = rt2800_compensate_txpower(rt2x00dev, 0, band, power_level, in rt2800_config_txpower_rt3593()
3937 rt2800_eeprom_read_from_array(rt2x00dev, EEPROM_TXPOWER_BYRATE, in rt2800_config_txpower_rt3593()
3942 txpower = rt2800_compensate_txpower(rt2x00dev, 0, band, power_level, in rt2800_config_txpower_rt3593()
3953 txpower = rt2800_compensate_txpower(rt2x00dev, 0, band, power_level, in rt2800_config_txpower_rt3593()
3964 txpower = rt2800_compensate_txpower(rt2x00dev, 0, band, power_level, in rt2800_config_txpower_rt3593()
3974 rt2800_eeprom_read_from_array(rt2x00dev, EEPROM_TXPOWER_BYRATE, in rt2800_config_txpower_rt3593()
3979 txpower = rt2800_compensate_txpower(rt2x00dev, 0, band, power_level, in rt2800_config_txpower_rt3593()
3990 txpower = rt2800_compensate_txpower(rt2x00dev, 0, band, power_level, in rt2800_config_txpower_rt3593()
4001 txpower = rt2800_compensate_txpower(rt2x00dev, 0, band, power_level, in rt2800_config_txpower_rt3593()
4010 txpower = rt2800_compensate_txpower(rt2x00dev, 0, band, power_level, in rt2800_config_txpower_rt3593()
4018 rt2800_eeprom_read_from_array(rt2x00dev, EEPROM_TXPOWER_BYRATE, in rt2800_config_txpower_rt3593()
4023 txpower = rt2800_compensate_txpower(rt2x00dev, 0, band, power_level, in rt2800_config_txpower_rt3593()
4032 rt2800_register_write(rt2x00dev, TX_PWR_CFG_0, regs[TX_PWR_CFG_0_IDX]); in rt2800_config_txpower_rt3593()
4033 rt2800_register_write(rt2x00dev, TX_PWR_CFG_1, regs[TX_PWR_CFG_1_IDX]); in rt2800_config_txpower_rt3593()
4034 rt2800_register_write(rt2x00dev, TX_PWR_CFG_2, regs[TX_PWR_CFG_2_IDX]); in rt2800_config_txpower_rt3593()
4035 rt2800_register_write(rt2x00dev, TX_PWR_CFG_3, regs[TX_PWR_CFG_3_IDX]); in rt2800_config_txpower_rt3593()
4036 rt2800_register_write(rt2x00dev, TX_PWR_CFG_4, regs[TX_PWR_CFG_4_IDX]); in rt2800_config_txpower_rt3593()
4037 rt2800_register_write(rt2x00dev, TX_PWR_CFG_5, regs[TX_PWR_CFG_5_IDX]); in rt2800_config_txpower_rt3593()
4038 rt2800_register_write(rt2x00dev, TX_PWR_CFG_6, regs[TX_PWR_CFG_6_IDX]); in rt2800_config_txpower_rt3593()
4039 rt2800_register_write(rt2x00dev, TX_PWR_CFG_7, regs[TX_PWR_CFG_7_IDX]); in rt2800_config_txpower_rt3593()
4040 rt2800_register_write(rt2x00dev, TX_PWR_CFG_8, regs[TX_PWR_CFG_8_IDX]); in rt2800_config_txpower_rt3593()
4041 rt2800_register_write(rt2x00dev, TX_PWR_CFG_9, regs[TX_PWR_CFG_9_IDX]); in rt2800_config_txpower_rt3593()
4043 rt2800_register_write(rt2x00dev, TX_PWR_CFG_0_EXT, in rt2800_config_txpower_rt3593()
4045 rt2800_register_write(rt2x00dev, TX_PWR_CFG_1_EXT, in rt2800_config_txpower_rt3593()
4047 rt2800_register_write(rt2x00dev, TX_PWR_CFG_2_EXT, in rt2800_config_txpower_rt3593()
4049 rt2800_register_write(rt2x00dev, TX_PWR_CFG_3_EXT, in rt2800_config_txpower_rt3593()
4051 rt2800_register_write(rt2x00dev, TX_PWR_CFG_4_EXT, in rt2800_config_txpower_rt3593()
4055 rt2x00_dbg(rt2x00dev, in rt2800_config_txpower_rt3593()
4058 (test_bit(CONFIG_CHANNEL_HT40, &rt2x00dev->flags)) ? in rt2800_config_txpower_rt3593()
4075 static void rt2800_config_txpower_rt28xx(struct rt2x00_dev *rt2x00dev, in rt2800_config_txpower_rt28xx() argument
4089 delta = rt2800_get_txpower_bw_comp(rt2x00dev, band); in rt2800_config_txpower_rt28xx()
4098 switch (rt2x00dev->chip.rt) { in rt2800_config_txpower_rt28xx()
4106 delta += rt2800_get_gain_calibration_delta(rt2x00dev); in rt2800_config_txpower_rt28xx()
4118 delta += rt2800_get_txpower_reg_delta(rt2x00dev, power_level, in rt2800_config_txpower_rt28xx()
4138 rt2800_bbp_read(rt2x00dev, 1, &r1); in rt2800_config_txpower_rt28xx()
4140 rt2800_bbp_write(rt2x00dev, 1, r1); in rt2800_config_txpower_rt28xx()
4149 rt2800_register_read(rt2x00dev, offset, ®); in rt2800_config_txpower_rt28xx()
4152 rt2800_eeprom_read_from_array(rt2x00dev, EEPROM_TXPOWER_BYRATE, in rt2800_config_txpower_rt28xx()
4163 txpower = rt2800_compensate_txpower(rt2x00dev, is_rate_b, band, in rt2800_config_txpower_rt28xx()
4174 txpower = rt2800_compensate_txpower(rt2x00dev, is_rate_b, band, in rt2800_config_txpower_rt28xx()
4185 txpower = rt2800_compensate_txpower(rt2x00dev, is_rate_b, band, in rt2800_config_txpower_rt28xx()
4196 txpower = rt2800_compensate_txpower(rt2x00dev, is_rate_b, band, in rt2800_config_txpower_rt28xx()
4201 rt2800_eeprom_read_from_array(rt2x00dev, EEPROM_TXPOWER_BYRATE, in rt2800_config_txpower_rt28xx()
4212 txpower = rt2800_compensate_txpower(rt2x00dev, is_rate_b, band, in rt2800_config_txpower_rt28xx()
4223 txpower = rt2800_compensate_txpower(rt2x00dev, is_rate_b, band, in rt2800_config_txpower_rt28xx()
4234 txpower = rt2800_compensate_txpower(rt2x00dev, is_rate_b, band, in rt2800_config_txpower_rt28xx()
4245 txpower = rt2800_compensate_txpower(rt2x00dev, is_rate_b, band, in rt2800_config_txpower_rt28xx()
4249 rt2800_register_write(rt2x00dev, offset, reg); in rt2800_config_txpower_rt28xx()
4256 static void rt2800_config_txpower(struct rt2x00_dev *rt2x00dev, in rt2800_config_txpower() argument
4260 if (rt2x00_rt(rt2x00dev, RT3593)) in rt2800_config_txpower()
4261 rt2800_config_txpower_rt3593(rt2x00dev, chan, power_level); in rt2800_config_txpower()
4263 rt2800_config_txpower_rt28xx(rt2x00dev, chan, power_level); in rt2800_config_txpower()
4266 void rt2800_gain_calibration(struct rt2x00_dev *rt2x00dev) in rt2800_gain_calibration() argument
4268 rt2800_config_txpower(rt2x00dev, rt2x00dev->hw->conf.chandef.chan, in rt2800_gain_calibration()
4269 rt2x00dev->tx_power); in rt2800_gain_calibration()
4273 void rt2800_vco_calibration(struct rt2x00_dev *rt2x00dev) in rt2800_vco_calibration() argument
4286 rt2800_register_read(rt2x00dev, TX_PIN_CFG, &tx_pin); in rt2800_vco_calibration()
4288 rt2800_register_write(rt2x00dev, TX_PIN_CFG, tx_pin); in rt2800_vco_calibration()
4290 switch (rt2x00dev->chip.rf) { in rt2800_vco_calibration()
4297 rt2800_rfcsr_read(rt2x00dev, 7, &rfcsr); in rt2800_vco_calibration()
4299 rt2800_rfcsr_write(rt2x00dev, 7, rfcsr); in rt2800_vco_calibration()
4310 rt2800_rfcsr_read(rt2x00dev, 3, &rfcsr); in rt2800_vco_calibration()
4312 rt2800_rfcsr_write(rt2x00dev, 3, rfcsr); in rt2800_vco_calibration()
4320 rt2800_register_read(rt2x00dev, TX_PIN_CFG, &tx_pin); in rt2800_vco_calibration()
4321 if (rt2x00dev->rf_channel <= 14) { in rt2800_vco_calibration()
4322 switch (rt2x00dev->default_ant.tx_chain_num) { in rt2800_vco_calibration()
4335 switch (rt2x00dev->default_ant.tx_chain_num) { in rt2800_vco_calibration()
4348 rt2800_register_write(rt2x00dev, TX_PIN_CFG, tx_pin); in rt2800_vco_calibration()
4353 static void rt2800_config_retry_limit(struct rt2x00_dev *rt2x00dev, in rt2800_config_retry_limit() argument
4358 rt2800_register_read(rt2x00dev, TX_RTY_CFG, ®); in rt2800_config_retry_limit()
4363 rt2800_register_write(rt2x00dev, TX_RTY_CFG, reg); in rt2800_config_retry_limit()
4366 static void rt2800_config_ps(struct rt2x00_dev *rt2x00dev, in rt2800_config_ps() argument
4375 rt2800_register_write(rt2x00dev, AUTOWAKEUP_CFG, 0); in rt2800_config_ps()
4377 rt2800_register_read(rt2x00dev, AUTOWAKEUP_CFG, ®); in rt2800_config_ps()
4382 rt2800_register_write(rt2x00dev, AUTOWAKEUP_CFG, reg); in rt2800_config_ps()
4384 rt2x00dev->ops->lib->set_device_state(rt2x00dev, state); in rt2800_config_ps()
4386 rt2800_register_read(rt2x00dev, AUTOWAKEUP_CFG, ®); in rt2800_config_ps()
4390 rt2800_register_write(rt2x00dev, AUTOWAKEUP_CFG, reg); in rt2800_config_ps()
4392 rt2x00dev->ops->lib->set_device_state(rt2x00dev, state); in rt2800_config_ps()
4396 void rt2800_config(struct rt2x00_dev *rt2x00dev, in rt2800_config() argument
4401 rt2800_config_lna_gain(rt2x00dev, libconf); in rt2800_config()
4404 rt2800_config_channel(rt2x00dev, libconf->conf, in rt2800_config()
4406 rt2800_config_txpower(rt2x00dev, libconf->conf->chandef.chan, in rt2800_config()
4410 rt2800_config_txpower(rt2x00dev, libconf->conf->chandef.chan, in rt2800_config()
4413 rt2800_config_retry_limit(rt2x00dev, libconf); in rt2800_config()
4415 rt2800_config_ps(rt2x00dev, libconf); in rt2800_config()
4422 void rt2800_link_stats(struct rt2x00_dev *rt2x00dev, struct link_qual *qual) in rt2800_link_stats() argument
4429 rt2800_register_read(rt2x00dev, RX_STA_CNT0, ®); in rt2800_link_stats()
4434 static u8 rt2800_get_default_vgc(struct rt2x00_dev *rt2x00dev) in rt2800_get_default_vgc() argument
4438 if (rt2x00dev->curr_band == IEEE80211_BAND_2GHZ) { in rt2800_get_default_vgc()
4439 if (rt2x00_rt(rt2x00dev, RT3070) || in rt2800_get_default_vgc()
4440 rt2x00_rt(rt2x00dev, RT3071) || in rt2800_get_default_vgc()
4441 rt2x00_rt(rt2x00dev, RT3090) || in rt2800_get_default_vgc()
4442 rt2x00_rt(rt2x00dev, RT3290) || in rt2800_get_default_vgc()
4443 rt2x00_rt(rt2x00dev, RT3390) || in rt2800_get_default_vgc()
4444 rt2x00_rt(rt2x00dev, RT3572) || in rt2800_get_default_vgc()
4445 rt2x00_rt(rt2x00dev, RT3593) || in rt2800_get_default_vgc()
4446 rt2x00_rt(rt2x00dev, RT5390) || in rt2800_get_default_vgc()
4447 rt2x00_rt(rt2x00dev, RT5392) || in rt2800_get_default_vgc()
4448 rt2x00_rt(rt2x00dev, RT5592)) in rt2800_get_default_vgc()
4449 vgc = 0x1c + (2 * rt2x00dev->lna_gain); in rt2800_get_default_vgc()
4451 vgc = 0x2e + rt2x00dev->lna_gain; in rt2800_get_default_vgc()
4453 if (rt2x00_rt(rt2x00dev, RT3593)) in rt2800_get_default_vgc()
4454 vgc = 0x20 + (rt2x00dev->lna_gain * 5) / 3; in rt2800_get_default_vgc()
4455 else if (rt2x00_rt(rt2x00dev, RT5592)) in rt2800_get_default_vgc()
4456 vgc = 0x24 + (2 * rt2x00dev->lna_gain); in rt2800_get_default_vgc()
4458 if (!test_bit(CONFIG_CHANNEL_HT40, &rt2x00dev->flags)) in rt2800_get_default_vgc()
4459 vgc = 0x32 + (rt2x00dev->lna_gain * 5) / 3; in rt2800_get_default_vgc()
4461 vgc = 0x3a + (rt2x00dev->lna_gain * 5) / 3; in rt2800_get_default_vgc()
4468 static inline void rt2800_set_vgc(struct rt2x00_dev *rt2x00dev, in rt2800_set_vgc() argument
4472 if (rt2x00_rt(rt2x00dev, RT3572) || in rt2800_set_vgc()
4473 rt2x00_rt(rt2x00dev, RT3593)) { in rt2800_set_vgc()
4474 rt2800_bbp_write_with_rx_chain(rt2x00dev, 66, in rt2800_set_vgc()
4476 } else if (rt2x00_rt(rt2x00dev, RT5592)) { in rt2800_set_vgc()
4477 rt2800_bbp_write(rt2x00dev, 83, qual->rssi > -65 ? 0x4a : 0x7a); in rt2800_set_vgc()
4478 rt2800_bbp_write_with_rx_chain(rt2x00dev, 66, vgc_level); in rt2800_set_vgc()
4480 rt2800_bbp_write(rt2x00dev, 66, vgc_level); in rt2800_set_vgc()
4488 void rt2800_reset_tuner(struct rt2x00_dev *rt2x00dev, struct link_qual *qual) in rt2800_reset_tuner() argument
4490 rt2800_set_vgc(rt2x00dev, qual, rt2800_get_default_vgc(rt2x00dev)); in rt2800_reset_tuner()
4494 void rt2800_link_tuner(struct rt2x00_dev *rt2x00dev, struct link_qual *qual, in rt2800_link_tuner() argument
4499 if (rt2x00_rt_rev(rt2x00dev, RT2860, REV_RT2860C)) in rt2800_link_tuner()
4507 vgc = rt2800_get_default_vgc(rt2x00dev); in rt2800_link_tuner()
4509 switch (rt2x00dev->chip.rt) { in rt2800_link_tuner()
4513 if (rt2x00dev->curr_band == IEEE80211_BAND_2GHZ) in rt2800_link_tuner()
4531 rt2800_set_vgc(rt2x00dev, qual, vgc); in rt2800_link_tuner()
4538 static int rt2800_init_registers(struct rt2x00_dev *rt2x00dev) in rt2800_init_registers() argument
4545 rt2800_disable_wpdma(rt2x00dev); in rt2800_init_registers()
4547 ret = rt2800_drv_init_registers(rt2x00dev); in rt2800_init_registers()
4551 rt2800_register_write(rt2x00dev, LEGACY_BASIC_RATE, 0x0000013f); in rt2800_init_registers()
4552 rt2800_register_write(rt2x00dev, HT_BASIC_RATE, 0x00008003); in rt2800_init_registers()
4554 rt2800_register_write(rt2x00dev, MAC_SYS_CTRL, 0x00000000); in rt2800_init_registers()
4556 rt2800_register_read(rt2x00dev, BCN_TIME_CFG, ®); in rt2800_init_registers()
4563 rt2800_register_write(rt2x00dev, BCN_TIME_CFG, reg); in rt2800_init_registers()
4565 rt2800_config_filter(rt2x00dev, FIF_ALLMULTI); in rt2800_init_registers()
4567 rt2800_register_read(rt2x00dev, BKOFF_SLOT_CFG, ®); in rt2800_init_registers()
4570 rt2800_register_write(rt2x00dev, BKOFF_SLOT_CFG, reg); in rt2800_init_registers()
4572 if (rt2x00_rt(rt2x00dev, RT3290)) { in rt2800_init_registers()
4573 rt2800_register_read(rt2x00dev, WLAN_FUN_CTRL, ®); in rt2800_init_registers()
4576 rt2800_register_write(rt2x00dev, WLAN_FUN_CTRL, reg); in rt2800_init_registers()
4579 rt2800_register_read(rt2x00dev, CMB_CTRL, ®); in rt2800_init_registers()
4583 rt2800_register_write(rt2x00dev, CMB_CTRL, reg); in rt2800_init_registers()
4586 rt2800_register_read(rt2x00dev, OSC_CTRL, ®); in rt2800_init_registers()
4590 rt2800_register_write(rt2x00dev, OSC_CTRL, reg); in rt2800_init_registers()
4592 rt2800_register_read(rt2x00dev, COEX_CFG0, ®); in rt2800_init_registers()
4594 rt2800_register_write(rt2x00dev, COEX_CFG0, reg); in rt2800_init_registers()
4596 rt2800_register_read(rt2x00dev, COEX_CFG2, ®); in rt2800_init_registers()
4601 rt2800_register_write(rt2x00dev, COEX_CFG2, reg); in rt2800_init_registers()
4603 rt2800_register_read(rt2x00dev, PLL_CTRL, ®); in rt2800_init_registers()
4605 rt2800_register_write(rt2x00dev, PLL_CTRL, reg); in rt2800_init_registers()
4608 if (rt2x00_rt(rt2x00dev, RT3071) || in rt2800_init_registers()
4609 rt2x00_rt(rt2x00dev, RT3090) || in rt2800_init_registers()
4610 rt2x00_rt(rt2x00dev, RT3290) || in rt2800_init_registers()
4611 rt2x00_rt(rt2x00dev, RT3390)) { in rt2800_init_registers()
4613 if (rt2x00_rt(rt2x00dev, RT3290)) in rt2800_init_registers()
4614 rt2800_register_write(rt2x00dev, TX_SW_CFG0, in rt2800_init_registers()
4617 rt2800_register_write(rt2x00dev, TX_SW_CFG0, in rt2800_init_registers()
4620 rt2800_register_write(rt2x00dev, TX_SW_CFG1, 0x00000000); in rt2800_init_registers()
4621 if (rt2x00_rt_rev_lt(rt2x00dev, RT3071, REV_RT3071E) || in rt2800_init_registers()
4622 rt2x00_rt_rev_lt(rt2x00dev, RT3090, REV_RT3090E) || in rt2800_init_registers()
4623 rt2x00_rt_rev_lt(rt2x00dev, RT3390, REV_RT3390E)) { in rt2800_init_registers()
4624 rt2800_eeprom_read(rt2x00dev, EEPROM_NIC_CONF1, in rt2800_init_registers()
4627 rt2800_register_write(rt2x00dev, TX_SW_CFG2, in rt2800_init_registers()
4630 rt2800_register_write(rt2x00dev, TX_SW_CFG2, in rt2800_init_registers()
4633 rt2800_register_write(rt2x00dev, TX_SW_CFG2, 0x00000000); in rt2800_init_registers()
4635 } else if (rt2x00_rt(rt2x00dev, RT3070)) { in rt2800_init_registers()
4636 rt2800_register_write(rt2x00dev, TX_SW_CFG0, 0x00000400); in rt2800_init_registers()
4638 if (rt2x00_rt_rev_lt(rt2x00dev, RT3070, REV_RT3070F)) { in rt2800_init_registers()
4639 rt2800_register_write(rt2x00dev, TX_SW_CFG1, 0x00000000); in rt2800_init_registers()
4640 rt2800_register_write(rt2x00dev, TX_SW_CFG2, 0x0000002c); in rt2800_init_registers()
4642 rt2800_register_write(rt2x00dev, TX_SW_CFG1, 0x00080606); in rt2800_init_registers()
4643 rt2800_register_write(rt2x00dev, TX_SW_CFG2, 0x00000000); in rt2800_init_registers()
4645 } else if (rt2800_is_305x_soc(rt2x00dev)) { in rt2800_init_registers()
4646 rt2800_register_write(rt2x00dev, TX_SW_CFG0, 0x00000400); in rt2800_init_registers()
4647 rt2800_register_write(rt2x00dev, TX_SW_CFG1, 0x00000000); in rt2800_init_registers()
4648 rt2800_register_write(rt2x00dev, TX_SW_CFG2, 0x00000030); in rt2800_init_registers()
4649 } else if (rt2x00_rt(rt2x00dev, RT3352)) { in rt2800_init_registers()
4650 rt2800_register_write(rt2x00dev, TX_SW_CFG0, 0x00000402); in rt2800_init_registers()
4651 rt2800_register_write(rt2x00dev, TX_SW_CFG1, 0x00080606); in rt2800_init_registers()
4652 rt2800_register_write(rt2x00dev, TX_SW_CFG2, 0x00000000); in rt2800_init_registers()
4653 } else if (rt2x00_rt(rt2x00dev, RT3572)) { in rt2800_init_registers()
4654 rt2800_register_write(rt2x00dev, TX_SW_CFG0, 0x00000400); in rt2800_init_registers()
4655 rt2800_register_write(rt2x00dev, TX_SW_CFG1, 0x00080606); in rt2800_init_registers()
4656 } else if (rt2x00_rt(rt2x00dev, RT3593)) { in rt2800_init_registers()
4657 rt2800_register_write(rt2x00dev, TX_SW_CFG0, 0x00000402); in rt2800_init_registers()
4658 rt2800_register_write(rt2x00dev, TX_SW_CFG1, 0x00000000); in rt2800_init_registers()
4659 if (rt2x00_rt_rev_lt(rt2x00dev, RT3593, REV_RT3593E)) { in rt2800_init_registers()
4660 rt2800_eeprom_read(rt2x00dev, EEPROM_NIC_CONF1, in rt2800_init_registers()
4664 rt2800_register_write(rt2x00dev, TX_SW_CFG2, in rt2800_init_registers()
4667 rt2800_register_write(rt2x00dev, TX_SW_CFG2, in rt2800_init_registers()
4670 rt2800_register_write(rt2x00dev, TX_SW_CFG2, in rt2800_init_registers()
4673 } else if (rt2x00_rt(rt2x00dev, RT5390) || in rt2800_init_registers()
4674 rt2x00_rt(rt2x00dev, RT5392) || in rt2800_init_registers()
4675 rt2x00_rt(rt2x00dev, RT5592)) { in rt2800_init_registers()
4676 rt2800_register_write(rt2x00dev, TX_SW_CFG0, 0x00000404); in rt2800_init_registers()
4677 rt2800_register_write(rt2x00dev, TX_SW_CFG1, 0x00080606); in rt2800_init_registers()
4678 rt2800_register_write(rt2x00dev, TX_SW_CFG2, 0x00000000); in rt2800_init_registers()
4680 rt2800_register_write(rt2x00dev, TX_SW_CFG0, 0x00000000); in rt2800_init_registers()
4681 rt2800_register_write(rt2x00dev, TX_SW_CFG1, 0x00080606); in rt2800_init_registers()
4684 rt2800_register_read(rt2x00dev, TX_LINK_CFG, ®); in rt2800_init_registers()
4693 rt2800_register_write(rt2x00dev, TX_LINK_CFG, reg); in rt2800_init_registers()
4695 rt2800_register_read(rt2x00dev, TX_TIMEOUT_CFG, ®); in rt2800_init_registers()
4699 rt2800_register_write(rt2x00dev, TX_TIMEOUT_CFG, reg); in rt2800_init_registers()
4701 rt2800_register_read(rt2x00dev, MAX_LEN_CFG, ®); in rt2800_init_registers()
4703 if (rt2x00_rt_rev_gte(rt2x00dev, RT2872, REV_RT2872E) || in rt2800_init_registers()
4704 rt2x00_rt(rt2x00dev, RT2883) || in rt2800_init_registers()
4705 rt2x00_rt_rev_lt(rt2x00dev, RT3070, REV_RT3070E)) in rt2800_init_registers()
4711 rt2800_register_write(rt2x00dev, MAX_LEN_CFG, reg); in rt2800_init_registers()
4713 rt2800_register_read(rt2x00dev, LED_CFG, ®); in rt2800_init_registers()
4721 rt2800_register_write(rt2x00dev, LED_CFG, reg); in rt2800_init_registers()
4723 rt2800_register_write(rt2x00dev, PBF_MAX_PCNT, 0x1f3fbf9f); in rt2800_init_registers()
4725 rt2800_register_read(rt2x00dev, TX_RTY_CFG, ®); in rt2800_init_registers()
4732 rt2800_register_write(rt2x00dev, TX_RTY_CFG, reg); in rt2800_init_registers()
4734 rt2800_register_read(rt2x00dev, AUTO_RSP_CFG, ®); in rt2800_init_registers()
4742 rt2800_register_write(rt2x00dev, AUTO_RSP_CFG, reg); in rt2800_init_registers()
4744 rt2800_register_read(rt2x00dev, CCK_PROT_CFG, ®); in rt2800_init_registers()
4755 rt2800_register_write(rt2x00dev, CCK_PROT_CFG, reg); in rt2800_init_registers()
4757 rt2800_register_read(rt2x00dev, OFDM_PROT_CFG, ®); in rt2800_init_registers()
4768 rt2800_register_write(rt2x00dev, OFDM_PROT_CFG, reg); in rt2800_init_registers()
4770 rt2800_register_read(rt2x00dev, MM20_PROT_CFG, ®); in rt2800_init_registers()
4781 rt2800_register_write(rt2x00dev, MM20_PROT_CFG, reg); in rt2800_init_registers()
4783 rt2800_register_read(rt2x00dev, MM40_PROT_CFG, ®); in rt2800_init_registers()
4794 rt2800_register_write(rt2x00dev, MM40_PROT_CFG, reg); in rt2800_init_registers()
4796 rt2800_register_read(rt2x00dev, GF20_PROT_CFG, ®); in rt2800_init_registers()
4807 rt2800_register_write(rt2x00dev, GF20_PROT_CFG, reg); in rt2800_init_registers()
4809 rt2800_register_read(rt2x00dev, GF40_PROT_CFG, ®); in rt2800_init_registers()
4820 rt2800_register_write(rt2x00dev, GF40_PROT_CFG, reg); in rt2800_init_registers()
4822 if (rt2x00_is_usb(rt2x00dev)) { in rt2800_init_registers()
4823 rt2800_register_write(rt2x00dev, PBF_CFG, 0xf40006); in rt2800_init_registers()
4825 rt2800_register_read(rt2x00dev, WPDMA_GLO_CFG, ®); in rt2800_init_registers()
4835 rt2800_register_write(rt2x00dev, WPDMA_GLO_CFG, reg); in rt2800_init_registers()
4842 rt2800_register_read(rt2x00dev, TXOP_CTRL_CFG, ®); in rt2800_init_registers()
4853 rt2800_register_write(rt2x00dev, TXOP_CTRL_CFG, reg); in rt2800_init_registers()
4855 reg = rt2x00_rt(rt2x00dev, RT5592) ? 0x00000082 : 0x00000002; in rt2800_init_registers()
4856 rt2800_register_write(rt2x00dev, TXOP_HLDR_ET, reg); in rt2800_init_registers()
4858 rt2800_register_read(rt2x00dev, TX_RTS_CFG, ®); in rt2800_init_registers()
4863 rt2800_register_write(rt2x00dev, TX_RTS_CFG, reg); in rt2800_init_registers()
4865 rt2800_register_write(rt2x00dev, EXP_ACK_TIME, 0x002400ca); in rt2800_init_registers()
4874 rt2800_register_read(rt2x00dev, XIFS_TIME_CFG, ®); in rt2800_init_registers()
4880 rt2800_register_write(rt2x00dev, XIFS_TIME_CFG, reg); in rt2800_init_registers()
4882 rt2800_register_write(rt2x00dev, PWR_PIN_CFG, 0x00000003); in rt2800_init_registers()
4888 rt2800_register_write(rt2x00dev, in rt2800_init_registers()
4892 rt2800_config_wcid(rt2x00dev, NULL, i); in rt2800_init_registers()
4893 rt2800_delete_wcid_attr(rt2x00dev, i); in rt2800_init_registers()
4894 rt2800_register_write(rt2x00dev, MAC_IVEIV_ENTRY(i), 0); in rt2800_init_registers()
4901 rt2800_clear_beacon_register(rt2x00dev, i); in rt2800_init_registers()
4903 if (rt2x00_is_usb(rt2x00dev)) { in rt2800_init_registers()
4904 rt2800_register_read(rt2x00dev, US_CYC_CNT, ®); in rt2800_init_registers()
4906 rt2800_register_write(rt2x00dev, US_CYC_CNT, reg); in rt2800_init_registers()
4907 } else if (rt2x00_is_pcie(rt2x00dev)) { in rt2800_init_registers()
4908 rt2800_register_read(rt2x00dev, US_CYC_CNT, ®); in rt2800_init_registers()
4910 rt2800_register_write(rt2x00dev, US_CYC_CNT, reg); in rt2800_init_registers()
4913 rt2800_register_read(rt2x00dev, HT_FBK_CFG0, ®); in rt2800_init_registers()
4922 rt2800_register_write(rt2x00dev, HT_FBK_CFG0, reg); in rt2800_init_registers()
4924 rt2800_register_read(rt2x00dev, HT_FBK_CFG1, ®); in rt2800_init_registers()
4933 rt2800_register_write(rt2x00dev, HT_FBK_CFG1, reg); in rt2800_init_registers()
4935 rt2800_register_read(rt2x00dev, LG_FBK_CFG0, ®); in rt2800_init_registers()
4944 rt2800_register_write(rt2x00dev, LG_FBK_CFG0, reg); in rt2800_init_registers()
4946 rt2800_register_read(rt2x00dev, LG_FBK_CFG1, ®); in rt2800_init_registers()
4951 rt2800_register_write(rt2x00dev, LG_FBK_CFG1, reg); in rt2800_init_registers()
4956 rt2800_register_read(rt2x00dev, AMPDU_BA_WINSIZE, ®); in rt2800_init_registers()
4959 rt2800_register_write(rt2x00dev, AMPDU_BA_WINSIZE, reg); in rt2800_init_registers()
4966 rt2800_register_read(rt2x00dev, RX_STA_CNT0, ®); in rt2800_init_registers()
4967 rt2800_register_read(rt2x00dev, RX_STA_CNT1, ®); in rt2800_init_registers()
4968 rt2800_register_read(rt2x00dev, RX_STA_CNT2, ®); in rt2800_init_registers()
4969 rt2800_register_read(rt2x00dev, TX_STA_CNT0, ®); in rt2800_init_registers()
4970 rt2800_register_read(rt2x00dev, TX_STA_CNT1, ®); in rt2800_init_registers()
4971 rt2800_register_read(rt2x00dev, TX_STA_CNT2, ®); in rt2800_init_registers()
4976 rt2800_register_read(rt2x00dev, INT_TIMER_CFG, ®); in rt2800_init_registers()
4978 rt2800_register_write(rt2x00dev, INT_TIMER_CFG, reg); in rt2800_init_registers()
4983 rt2800_register_read(rt2x00dev, CH_TIME_CFG, ®); in rt2800_init_registers()
4989 rt2800_register_write(rt2x00dev, CH_TIME_CFG, reg); in rt2800_init_registers()
4994 static int rt2800_wait_bbp_rf_ready(struct rt2x00_dev *rt2x00dev) in rt2800_wait_bbp_rf_ready() argument
5000 rt2800_register_read(rt2x00dev, MAC_STATUS_CFG, ®); in rt2800_wait_bbp_rf_ready()
5007 rt2x00_err(rt2x00dev, "BBP/RF register access failed, aborting\n"); in rt2800_wait_bbp_rf_ready()
5011 static int rt2800_wait_bbp_ready(struct rt2x00_dev *rt2x00dev) in rt2800_wait_bbp_ready() argument
5020 rt2800_register_write(rt2x00dev, H2M_BBP_AGENT, 0); in rt2800_wait_bbp_ready()
5021 rt2800_register_write(rt2x00dev, H2M_MAILBOX_CSR, 0); in rt2800_wait_bbp_ready()
5025 rt2800_bbp_read(rt2x00dev, 0, &value); in rt2800_wait_bbp_ready()
5031 rt2x00_err(rt2x00dev, "BBP register access failed, aborting\n"); in rt2800_wait_bbp_ready()
5035 static void rt2800_bbp4_mac_if_ctrl(struct rt2x00_dev *rt2x00dev) in rt2800_bbp4_mac_if_ctrl() argument
5039 rt2800_bbp_read(rt2x00dev, 4, &value); in rt2800_bbp4_mac_if_ctrl()
5041 rt2800_bbp_write(rt2x00dev, 4, value); in rt2800_bbp4_mac_if_ctrl()
5044 static void rt2800_init_freq_calibration(struct rt2x00_dev *rt2x00dev) in rt2800_init_freq_calibration() argument
5046 rt2800_bbp_write(rt2x00dev, 142, 1); in rt2800_init_freq_calibration()
5047 rt2800_bbp_write(rt2x00dev, 143, 57); in rt2800_init_freq_calibration()
5050 static void rt2800_init_bbp_5592_glrt(struct rt2x00_dev *rt2x00dev) in rt2800_init_bbp_5592_glrt() argument
5066 rt2800_bbp_write(rt2x00dev, 195, 128 + i); in rt2800_init_bbp_5592_glrt()
5067 rt2800_bbp_write(rt2x00dev, 196, glrt_table[i]); in rt2800_init_bbp_5592_glrt()
5071 static void rt2800_init_bbp_early(struct rt2x00_dev *rt2x00dev) in rt2800_init_bbp_early() argument
5073 rt2800_bbp_write(rt2x00dev, 65, 0x2C); in rt2800_init_bbp_early()
5074 rt2800_bbp_write(rt2x00dev, 66, 0x38); in rt2800_init_bbp_early()
5075 rt2800_bbp_write(rt2x00dev, 68, 0x0B); in rt2800_init_bbp_early()
5076 rt2800_bbp_write(rt2x00dev, 69, 0x12); in rt2800_init_bbp_early()
5077 rt2800_bbp_write(rt2x00dev, 70, 0x0a); in rt2800_init_bbp_early()
5078 rt2800_bbp_write(rt2x00dev, 73, 0x10); in rt2800_init_bbp_early()
5079 rt2800_bbp_write(rt2x00dev, 81, 0x37); in rt2800_init_bbp_early()
5080 rt2800_bbp_write(rt2x00dev, 82, 0x62); in rt2800_init_bbp_early()
5081 rt2800_bbp_write(rt2x00dev, 83, 0x6A); in rt2800_init_bbp_early()
5082 rt2800_bbp_write(rt2x00dev, 84, 0x99); in rt2800_init_bbp_early()
5083 rt2800_bbp_write(rt2x00dev, 86, 0x00); in rt2800_init_bbp_early()
5084 rt2800_bbp_write(rt2x00dev, 91, 0x04); in rt2800_init_bbp_early()
5085 rt2800_bbp_write(rt2x00dev, 92, 0x00); in rt2800_init_bbp_early()
5086 rt2800_bbp_write(rt2x00dev, 103, 0x00); in rt2800_init_bbp_early()
5087 rt2800_bbp_write(rt2x00dev, 105, 0x05); in rt2800_init_bbp_early()
5088 rt2800_bbp_write(rt2x00dev, 106, 0x35); in rt2800_init_bbp_early()
5091 static void rt2800_disable_unused_dac_adc(struct rt2x00_dev *rt2x00dev) in rt2800_disable_unused_dac_adc() argument
5096 rt2800_bbp_read(rt2x00dev, 138, &value); in rt2800_disable_unused_dac_adc()
5097 rt2800_eeprom_read(rt2x00dev, EEPROM_NIC_CONF0, &eeprom); in rt2800_disable_unused_dac_adc()
5102 rt2800_bbp_write(rt2x00dev, 138, value); in rt2800_disable_unused_dac_adc()
5105 static void rt2800_init_bbp_305x_soc(struct rt2x00_dev *rt2x00dev) in rt2800_init_bbp_305x_soc() argument
5107 rt2800_bbp_write(rt2x00dev, 31, 0x08); in rt2800_init_bbp_305x_soc()
5109 rt2800_bbp_write(rt2x00dev, 65, 0x2c); in rt2800_init_bbp_305x_soc()
5110 rt2800_bbp_write(rt2x00dev, 66, 0x38); in rt2800_init_bbp_305x_soc()
5112 rt2800_bbp_write(rt2x00dev, 69, 0x12); in rt2800_init_bbp_305x_soc()
5113 rt2800_bbp_write(rt2x00dev, 73, 0x10); in rt2800_init_bbp_305x_soc()
5115 rt2800_bbp_write(rt2x00dev, 70, 0x0a); in rt2800_init_bbp_305x_soc()
5117 rt2800_bbp_write(rt2x00dev, 78, 0x0e); in rt2800_init_bbp_305x_soc()
5118 rt2800_bbp_write(rt2x00dev, 80, 0x08); in rt2800_init_bbp_305x_soc()
5120 rt2800_bbp_write(rt2x00dev, 82, 0x62); in rt2800_init_bbp_305x_soc()
5122 rt2800_bbp_write(rt2x00dev, 83, 0x6a); in rt2800_init_bbp_305x_soc()
5124 rt2800_bbp_write(rt2x00dev, 84, 0x99); in rt2800_init_bbp_305x_soc()
5126 rt2800_bbp_write(rt2x00dev, 86, 0x00); in rt2800_init_bbp_305x_soc()
5128 rt2800_bbp_write(rt2x00dev, 91, 0x04); in rt2800_init_bbp_305x_soc()
5130 rt2800_bbp_write(rt2x00dev, 92, 0x00); in rt2800_init_bbp_305x_soc()
5132 rt2800_bbp_write(rt2x00dev, 103, 0xc0); in rt2800_init_bbp_305x_soc()
5134 rt2800_bbp_write(rt2x00dev, 105, 0x01); in rt2800_init_bbp_305x_soc()
5136 rt2800_bbp_write(rt2x00dev, 106, 0x35); in rt2800_init_bbp_305x_soc()
5139 static void rt2800_init_bbp_28xx(struct rt2x00_dev *rt2x00dev) in rt2800_init_bbp_28xx() argument
5141 rt2800_bbp_write(rt2x00dev, 65, 0x2c); in rt2800_init_bbp_28xx()
5142 rt2800_bbp_write(rt2x00dev, 66, 0x38); in rt2800_init_bbp_28xx()
5144 if (rt2x00_rt_rev(rt2x00dev, RT2860, REV_RT2860C)) { in rt2800_init_bbp_28xx()
5145 rt2800_bbp_write(rt2x00dev, 69, 0x16); in rt2800_init_bbp_28xx()
5146 rt2800_bbp_write(rt2x00dev, 73, 0x12); in rt2800_init_bbp_28xx()
5148 rt2800_bbp_write(rt2x00dev, 69, 0x12); in rt2800_init_bbp_28xx()
5149 rt2800_bbp_write(rt2x00dev, 73, 0x10); in rt2800_init_bbp_28xx()
5152 rt2800_bbp_write(rt2x00dev, 70, 0x0a); in rt2800_init_bbp_28xx()
5154 rt2800_bbp_write(rt2x00dev, 81, 0x37); in rt2800_init_bbp_28xx()
5156 rt2800_bbp_write(rt2x00dev, 82, 0x62); in rt2800_init_bbp_28xx()
5158 rt2800_bbp_write(rt2x00dev, 83, 0x6a); in rt2800_init_bbp_28xx()
5160 if (rt2x00_rt_rev(rt2x00dev, RT2860, REV_RT2860D)) in rt2800_init_bbp_28xx()
5161 rt2800_bbp_write(rt2x00dev, 84, 0x19); in rt2800_init_bbp_28xx()
5163 rt2800_bbp_write(rt2x00dev, 84, 0x99); in rt2800_init_bbp_28xx()
5165 rt2800_bbp_write(rt2x00dev, 86, 0x00); in rt2800_init_bbp_28xx()
5167 rt2800_bbp_write(rt2x00dev, 91, 0x04); in rt2800_init_bbp_28xx()
5169 rt2800_bbp_write(rt2x00dev, 92, 0x00); in rt2800_init_bbp_28xx()
5171 rt2800_bbp_write(rt2x00dev, 103, 0x00); in rt2800_init_bbp_28xx()
5173 rt2800_bbp_write(rt2x00dev, 105, 0x05); in rt2800_init_bbp_28xx()
5175 rt2800_bbp_write(rt2x00dev, 106, 0x35); in rt2800_init_bbp_28xx()
5178 static void rt2800_init_bbp_30xx(struct rt2x00_dev *rt2x00dev) in rt2800_init_bbp_30xx() argument
5180 rt2800_bbp_write(rt2x00dev, 65, 0x2c); in rt2800_init_bbp_30xx()
5181 rt2800_bbp_write(rt2x00dev, 66, 0x38); in rt2800_init_bbp_30xx()
5183 rt2800_bbp_write(rt2x00dev, 69, 0x12); in rt2800_init_bbp_30xx()
5184 rt2800_bbp_write(rt2x00dev, 73, 0x10); in rt2800_init_bbp_30xx()
5186 rt2800_bbp_write(rt2x00dev, 70, 0x0a); in rt2800_init_bbp_30xx()
5188 rt2800_bbp_write(rt2x00dev, 79, 0x13); in rt2800_init_bbp_30xx()
5189 rt2800_bbp_write(rt2x00dev, 80, 0x05); in rt2800_init_bbp_30xx()
5190 rt2800_bbp_write(rt2x00dev, 81, 0x33); in rt2800_init_bbp_30xx()
5192 rt2800_bbp_write(rt2x00dev, 82, 0x62); in rt2800_init_bbp_30xx()
5194 rt2800_bbp_write(rt2x00dev, 83, 0x6a); in rt2800_init_bbp_30xx()
5196 rt2800_bbp_write(rt2x00dev, 84, 0x99); in rt2800_init_bbp_30xx()
5198 rt2800_bbp_write(rt2x00dev, 86, 0x00); in rt2800_init_bbp_30xx()
5200 rt2800_bbp_write(rt2x00dev, 91, 0x04); in rt2800_init_bbp_30xx()
5202 rt2800_bbp_write(rt2x00dev, 92, 0x00); in rt2800_init_bbp_30xx()
5204 if (rt2x00_rt_rev_gte(rt2x00dev, RT3070, REV_RT3070F) || in rt2800_init_bbp_30xx()
5205 rt2x00_rt_rev_gte(rt2x00dev, RT3071, REV_RT3071E) || in rt2800_init_bbp_30xx()
5206 rt2x00_rt_rev_gte(rt2x00dev, RT3090, REV_RT3090E)) in rt2800_init_bbp_30xx()
5207 rt2800_bbp_write(rt2x00dev, 103, 0xc0); in rt2800_init_bbp_30xx()
5209 rt2800_bbp_write(rt2x00dev, 103, 0x00); in rt2800_init_bbp_30xx()
5211 rt2800_bbp_write(rt2x00dev, 105, 0x05); in rt2800_init_bbp_30xx()
5213 rt2800_bbp_write(rt2x00dev, 106, 0x35); in rt2800_init_bbp_30xx()
5215 if (rt2x00_rt(rt2x00dev, RT3071) || in rt2800_init_bbp_30xx()
5216 rt2x00_rt(rt2x00dev, RT3090)) in rt2800_init_bbp_30xx()
5217 rt2800_disable_unused_dac_adc(rt2x00dev); in rt2800_init_bbp_30xx()
5220 static void rt2800_init_bbp_3290(struct rt2x00_dev *rt2x00dev) in rt2800_init_bbp_3290() argument
5224 rt2800_bbp4_mac_if_ctrl(rt2x00dev); in rt2800_init_bbp_3290()
5226 rt2800_bbp_write(rt2x00dev, 31, 0x08); in rt2800_init_bbp_3290()
5228 rt2800_bbp_write(rt2x00dev, 65, 0x2c); in rt2800_init_bbp_3290()
5229 rt2800_bbp_write(rt2x00dev, 66, 0x38); in rt2800_init_bbp_3290()
5231 rt2800_bbp_write(rt2x00dev, 68, 0x0b); in rt2800_init_bbp_3290()
5233 rt2800_bbp_write(rt2x00dev, 69, 0x12); in rt2800_init_bbp_3290()
5234 rt2800_bbp_write(rt2x00dev, 73, 0x13); in rt2800_init_bbp_3290()
5235 rt2800_bbp_write(rt2x00dev, 75, 0x46); in rt2800_init_bbp_3290()
5236 rt2800_bbp_write(rt2x00dev, 76, 0x28); in rt2800_init_bbp_3290()
5238 rt2800_bbp_write(rt2x00dev, 77, 0x58); in rt2800_init_bbp_3290()
5240 rt2800_bbp_write(rt2x00dev, 70, 0x0a); in rt2800_init_bbp_3290()
5242 rt2800_bbp_write(rt2x00dev, 74, 0x0b); in rt2800_init_bbp_3290()
5243 rt2800_bbp_write(rt2x00dev, 79, 0x18); in rt2800_init_bbp_3290()
5244 rt2800_bbp_write(rt2x00dev, 80, 0x09); in rt2800_init_bbp_3290()
5245 rt2800_bbp_write(rt2x00dev, 81, 0x33); in rt2800_init_bbp_3290()
5247 rt2800_bbp_write(rt2x00dev, 82, 0x62); in rt2800_init_bbp_3290()
5249 rt2800_bbp_write(rt2x00dev, 83, 0x7a); in rt2800_init_bbp_3290()
5251 rt2800_bbp_write(rt2x00dev, 84, 0x9a); in rt2800_init_bbp_3290()
5253 rt2800_bbp_write(rt2x00dev, 86, 0x38); in rt2800_init_bbp_3290()
5255 rt2800_bbp_write(rt2x00dev, 91, 0x04); in rt2800_init_bbp_3290()
5257 rt2800_bbp_write(rt2x00dev, 92, 0x02); in rt2800_init_bbp_3290()
5259 rt2800_bbp_write(rt2x00dev, 103, 0xc0); in rt2800_init_bbp_3290()
5261 rt2800_bbp_write(rt2x00dev, 104, 0x92); in rt2800_init_bbp_3290()
5263 rt2800_bbp_write(rt2x00dev, 105, 0x1c); in rt2800_init_bbp_3290()
5265 rt2800_bbp_write(rt2x00dev, 106, 0x03); in rt2800_init_bbp_3290()
5267 rt2800_bbp_write(rt2x00dev, 128, 0x12); in rt2800_init_bbp_3290()
5269 rt2800_bbp_write(rt2x00dev, 67, 0x24); in rt2800_init_bbp_3290()
5270 rt2800_bbp_write(rt2x00dev, 143, 0x04); in rt2800_init_bbp_3290()
5271 rt2800_bbp_write(rt2x00dev, 142, 0x99); in rt2800_init_bbp_3290()
5272 rt2800_bbp_write(rt2x00dev, 150, 0x30); in rt2800_init_bbp_3290()
5273 rt2800_bbp_write(rt2x00dev, 151, 0x2e); in rt2800_init_bbp_3290()
5274 rt2800_bbp_write(rt2x00dev, 152, 0x20); in rt2800_init_bbp_3290()
5275 rt2800_bbp_write(rt2x00dev, 153, 0x34); in rt2800_init_bbp_3290()
5276 rt2800_bbp_write(rt2x00dev, 154, 0x40); in rt2800_init_bbp_3290()
5277 rt2800_bbp_write(rt2x00dev, 155, 0x3b); in rt2800_init_bbp_3290()
5278 rt2800_bbp_write(rt2x00dev, 253, 0x04); in rt2800_init_bbp_3290()
5280 rt2800_bbp_read(rt2x00dev, 47, &value); in rt2800_init_bbp_3290()
5282 rt2800_bbp_write(rt2x00dev, 47, value); in rt2800_init_bbp_3290()
5285 rt2800_bbp_read(rt2x00dev, 3, &value); in rt2800_init_bbp_3290()
5288 rt2800_bbp_write(rt2x00dev, 3, value); in rt2800_init_bbp_3290()
5291 static void rt2800_init_bbp_3352(struct rt2x00_dev *rt2x00dev) in rt2800_init_bbp_3352() argument
5293 rt2800_bbp_write(rt2x00dev, 3, 0x00); in rt2800_init_bbp_3352()
5294 rt2800_bbp_write(rt2x00dev, 4, 0x50); in rt2800_init_bbp_3352()
5296 rt2800_bbp_write(rt2x00dev, 31, 0x08); in rt2800_init_bbp_3352()
5298 rt2800_bbp_write(rt2x00dev, 47, 0x48); in rt2800_init_bbp_3352()
5300 rt2800_bbp_write(rt2x00dev, 65, 0x2c); in rt2800_init_bbp_3352()
5301 rt2800_bbp_write(rt2x00dev, 66, 0x38); in rt2800_init_bbp_3352()
5303 rt2800_bbp_write(rt2x00dev, 68, 0x0b); in rt2800_init_bbp_3352()
5305 rt2800_bbp_write(rt2x00dev, 69, 0x12); in rt2800_init_bbp_3352()
5306 rt2800_bbp_write(rt2x00dev, 73, 0x13); in rt2800_init_bbp_3352()
5307 rt2800_bbp_write(rt2x00dev, 75, 0x46); in rt2800_init_bbp_3352()
5308 rt2800_bbp_write(rt2x00dev, 76, 0x28); in rt2800_init_bbp_3352()
5310 rt2800_bbp_write(rt2x00dev, 77, 0x59); in rt2800_init_bbp_3352()
5312 rt2800_bbp_write(rt2x00dev, 70, 0x0a); in rt2800_init_bbp_3352()
5314 rt2800_bbp_write(rt2x00dev, 78, 0x0e); in rt2800_init_bbp_3352()
5315 rt2800_bbp_write(rt2x00dev, 80, 0x08); in rt2800_init_bbp_3352()
5316 rt2800_bbp_write(rt2x00dev, 81, 0x37); in rt2800_init_bbp_3352()
5318 rt2800_bbp_write(rt2x00dev, 82, 0x62); in rt2800_init_bbp_3352()
5320 rt2800_bbp_write(rt2x00dev, 83, 0x6a); in rt2800_init_bbp_3352()
5322 rt2800_bbp_write(rt2x00dev, 84, 0x99); in rt2800_init_bbp_3352()
5324 rt2800_bbp_write(rt2x00dev, 86, 0x38); in rt2800_init_bbp_3352()
5326 rt2800_bbp_write(rt2x00dev, 88, 0x90); in rt2800_init_bbp_3352()
5328 rt2800_bbp_write(rt2x00dev, 91, 0x04); in rt2800_init_bbp_3352()
5330 rt2800_bbp_write(rt2x00dev, 92, 0x02); in rt2800_init_bbp_3352()
5332 rt2800_bbp_write(rt2x00dev, 103, 0xc0); in rt2800_init_bbp_3352()
5334 rt2800_bbp_write(rt2x00dev, 104, 0x92); in rt2800_init_bbp_3352()
5336 rt2800_bbp_write(rt2x00dev, 105, 0x34); in rt2800_init_bbp_3352()
5338 rt2800_bbp_write(rt2x00dev, 106, 0x05); in rt2800_init_bbp_3352()
5340 rt2800_bbp_write(rt2x00dev, 120, 0x50); in rt2800_init_bbp_3352()
5342 rt2800_bbp_write(rt2x00dev, 137, 0x0f); in rt2800_init_bbp_3352()
5344 rt2800_bbp_write(rt2x00dev, 163, 0xbd); in rt2800_init_bbp_3352()
5346 rt2800_bbp_write(rt2x00dev, 179, 0x02); in rt2800_init_bbp_3352()
5347 rt2800_bbp_write(rt2x00dev, 180, 0x00); in rt2800_init_bbp_3352()
5348 rt2800_bbp_write(rt2x00dev, 182, 0x40); in rt2800_init_bbp_3352()
5349 rt2800_bbp_write(rt2x00dev, 180, 0x01); in rt2800_init_bbp_3352()
5350 rt2800_bbp_write(rt2x00dev, 182, 0x9c); in rt2800_init_bbp_3352()
5351 rt2800_bbp_write(rt2x00dev, 179, 0x00); in rt2800_init_bbp_3352()
5353 rt2800_bbp_write(rt2x00dev, 142, 0x04); in rt2800_init_bbp_3352()
5354 rt2800_bbp_write(rt2x00dev, 143, 0x3b); in rt2800_init_bbp_3352()
5355 rt2800_bbp_write(rt2x00dev, 142, 0x06); in rt2800_init_bbp_3352()
5356 rt2800_bbp_write(rt2x00dev, 143, 0xa0); in rt2800_init_bbp_3352()
5357 rt2800_bbp_write(rt2x00dev, 142, 0x07); in rt2800_init_bbp_3352()
5358 rt2800_bbp_write(rt2x00dev, 143, 0xa1); in rt2800_init_bbp_3352()
5359 rt2800_bbp_write(rt2x00dev, 142, 0x08); in rt2800_init_bbp_3352()
5360 rt2800_bbp_write(rt2x00dev, 143, 0xa2); in rt2800_init_bbp_3352()
5362 rt2800_bbp_write(rt2x00dev, 148, 0xc8); in rt2800_init_bbp_3352()
5365 static void rt2800_init_bbp_3390(struct rt2x00_dev *rt2x00dev) in rt2800_init_bbp_3390() argument
5367 rt2800_bbp_write(rt2x00dev, 65, 0x2c); in rt2800_init_bbp_3390()
5368 rt2800_bbp_write(rt2x00dev, 66, 0x38); in rt2800_init_bbp_3390()
5370 rt2800_bbp_write(rt2x00dev, 69, 0x12); in rt2800_init_bbp_3390()
5371 rt2800_bbp_write(rt2x00dev, 73, 0x10); in rt2800_init_bbp_3390()
5373 rt2800_bbp_write(rt2x00dev, 70, 0x0a); in rt2800_init_bbp_3390()
5375 rt2800_bbp_write(rt2x00dev, 79, 0x13); in rt2800_init_bbp_3390()
5376 rt2800_bbp_write(rt2x00dev, 80, 0x05); in rt2800_init_bbp_3390()
5377 rt2800_bbp_write(rt2x00dev, 81, 0x33); in rt2800_init_bbp_3390()
5379 rt2800_bbp_write(rt2x00dev, 82, 0x62); in rt2800_init_bbp_3390()
5381 rt2800_bbp_write(rt2x00dev, 83, 0x6a); in rt2800_init_bbp_3390()
5383 rt2800_bbp_write(rt2x00dev, 84, 0x99); in rt2800_init_bbp_3390()
5385 rt2800_bbp_write(rt2x00dev, 86, 0x00); in rt2800_init_bbp_3390()
5387 rt2800_bbp_write(rt2x00dev, 91, 0x04); in rt2800_init_bbp_3390()
5389 rt2800_bbp_write(rt2x00dev, 92, 0x00); in rt2800_init_bbp_3390()
5391 if (rt2x00_rt_rev_gte(rt2x00dev, RT3390, REV_RT3390E)) in rt2800_init_bbp_3390()
5392 rt2800_bbp_write(rt2x00dev, 103, 0xc0); in rt2800_init_bbp_3390()
5394 rt2800_bbp_write(rt2x00dev, 103, 0x00); in rt2800_init_bbp_3390()
5396 rt2800_bbp_write(rt2x00dev, 105, 0x05); in rt2800_init_bbp_3390()
5398 rt2800_bbp_write(rt2x00dev, 106, 0x35); in rt2800_init_bbp_3390()
5400 rt2800_disable_unused_dac_adc(rt2x00dev); in rt2800_init_bbp_3390()
5403 static void rt2800_init_bbp_3572(struct rt2x00_dev *rt2x00dev) in rt2800_init_bbp_3572() argument
5405 rt2800_bbp_write(rt2x00dev, 31, 0x08); in rt2800_init_bbp_3572()
5407 rt2800_bbp_write(rt2x00dev, 65, 0x2c); in rt2800_init_bbp_3572()
5408 rt2800_bbp_write(rt2x00dev, 66, 0x38); in rt2800_init_bbp_3572()
5410 rt2800_bbp_write(rt2x00dev, 69, 0x12); in rt2800_init_bbp_3572()
5411 rt2800_bbp_write(rt2x00dev, 73, 0x10); in rt2800_init_bbp_3572()
5413 rt2800_bbp_write(rt2x00dev, 70, 0x0a); in rt2800_init_bbp_3572()
5415 rt2800_bbp_write(rt2x00dev, 79, 0x13); in rt2800_init_bbp_3572()
5416 rt2800_bbp_write(rt2x00dev, 80, 0x05); in rt2800_init_bbp_3572()
5417 rt2800_bbp_write(rt2x00dev, 81, 0x33); in rt2800_init_bbp_3572()
5419 rt2800_bbp_write(rt2x00dev, 82, 0x62); in rt2800_init_bbp_3572()
5421 rt2800_bbp_write(rt2x00dev, 83, 0x6a); in rt2800_init_bbp_3572()
5423 rt2800_bbp_write(rt2x00dev, 84, 0x99); in rt2800_init_bbp_3572()
5425 rt2800_bbp_write(rt2x00dev, 86, 0x00); in rt2800_init_bbp_3572()
5427 rt2800_bbp_write(rt2x00dev, 91, 0x04); in rt2800_init_bbp_3572()
5429 rt2800_bbp_write(rt2x00dev, 92, 0x00); in rt2800_init_bbp_3572()
5431 rt2800_bbp_write(rt2x00dev, 103, 0xc0); in rt2800_init_bbp_3572()
5433 rt2800_bbp_write(rt2x00dev, 105, 0x05); in rt2800_init_bbp_3572()
5435 rt2800_bbp_write(rt2x00dev, 106, 0x35); in rt2800_init_bbp_3572()
5437 rt2800_disable_unused_dac_adc(rt2x00dev); in rt2800_init_bbp_3572()
5440 static void rt2800_init_bbp_3593(struct rt2x00_dev *rt2x00dev) in rt2800_init_bbp_3593() argument
5442 rt2800_init_bbp_early(rt2x00dev); in rt2800_init_bbp_3593()
5444 rt2800_bbp_write(rt2x00dev, 79, 0x13); in rt2800_init_bbp_3593()
5445 rt2800_bbp_write(rt2x00dev, 80, 0x05); in rt2800_init_bbp_3593()
5446 rt2800_bbp_write(rt2x00dev, 81, 0x33); in rt2800_init_bbp_3593()
5447 rt2800_bbp_write(rt2x00dev, 137, 0x0f); in rt2800_init_bbp_3593()
5449 rt2800_bbp_write(rt2x00dev, 84, 0x19); in rt2800_init_bbp_3593()
5452 if (rt2x00_rt_rev_gte(rt2x00dev, RT3593, REV_RT3593E)) in rt2800_init_bbp_3593()
5453 rt2800_bbp_write(rt2x00dev, 103, 0xc0); in rt2800_init_bbp_3593()
5456 static void rt2800_init_bbp_53xx(struct rt2x00_dev *rt2x00dev) in rt2800_init_bbp_53xx() argument
5462 rt2800_bbp4_mac_if_ctrl(rt2x00dev); in rt2800_init_bbp_53xx()
5464 rt2800_bbp_write(rt2x00dev, 31, 0x08); in rt2800_init_bbp_53xx()
5466 rt2800_bbp_write(rt2x00dev, 65, 0x2c); in rt2800_init_bbp_53xx()
5467 rt2800_bbp_write(rt2x00dev, 66, 0x38); in rt2800_init_bbp_53xx()
5469 rt2800_bbp_write(rt2x00dev, 68, 0x0b); in rt2800_init_bbp_53xx()
5471 rt2800_bbp_write(rt2x00dev, 69, 0x12); in rt2800_init_bbp_53xx()
5472 rt2800_bbp_write(rt2x00dev, 73, 0x13); in rt2800_init_bbp_53xx()
5473 rt2800_bbp_write(rt2x00dev, 75, 0x46); in rt2800_init_bbp_53xx()
5474 rt2800_bbp_write(rt2x00dev, 76, 0x28); in rt2800_init_bbp_53xx()
5476 rt2800_bbp_write(rt2x00dev, 77, 0x59); in rt2800_init_bbp_53xx()
5478 rt2800_bbp_write(rt2x00dev, 70, 0x0a); in rt2800_init_bbp_53xx()
5480 rt2800_bbp_write(rt2x00dev, 79, 0x13); in rt2800_init_bbp_53xx()
5481 rt2800_bbp_write(rt2x00dev, 80, 0x05); in rt2800_init_bbp_53xx()
5482 rt2800_bbp_write(rt2x00dev, 81, 0x33); in rt2800_init_bbp_53xx()
5484 rt2800_bbp_write(rt2x00dev, 82, 0x62); in rt2800_init_bbp_53xx()
5486 rt2800_bbp_write(rt2x00dev, 83, 0x7a); in rt2800_init_bbp_53xx()
5488 rt2800_bbp_write(rt2x00dev, 84, 0x9a); in rt2800_init_bbp_53xx()
5490 rt2800_bbp_write(rt2x00dev, 86, 0x38); in rt2800_init_bbp_53xx()
5492 if (rt2x00_rt(rt2x00dev, RT5392)) in rt2800_init_bbp_53xx()
5493 rt2800_bbp_write(rt2x00dev, 88, 0x90); in rt2800_init_bbp_53xx()
5495 rt2800_bbp_write(rt2x00dev, 91, 0x04); in rt2800_init_bbp_53xx()
5497 rt2800_bbp_write(rt2x00dev, 92, 0x02); in rt2800_init_bbp_53xx()
5499 if (rt2x00_rt(rt2x00dev, RT5392)) { in rt2800_init_bbp_53xx()
5500 rt2800_bbp_write(rt2x00dev, 95, 0x9a); in rt2800_init_bbp_53xx()
5501 rt2800_bbp_write(rt2x00dev, 98, 0x12); in rt2800_init_bbp_53xx()
5504 rt2800_bbp_write(rt2x00dev, 103, 0xc0); in rt2800_init_bbp_53xx()
5506 rt2800_bbp_write(rt2x00dev, 104, 0x92); in rt2800_init_bbp_53xx()
5508 rt2800_bbp_write(rt2x00dev, 105, 0x3c); in rt2800_init_bbp_53xx()
5510 if (rt2x00_rt(rt2x00dev, RT5390)) in rt2800_init_bbp_53xx()
5511 rt2800_bbp_write(rt2x00dev, 106, 0x03); in rt2800_init_bbp_53xx()
5512 else if (rt2x00_rt(rt2x00dev, RT5392)) in rt2800_init_bbp_53xx()
5513 rt2800_bbp_write(rt2x00dev, 106, 0x12); in rt2800_init_bbp_53xx()
5517 rt2800_bbp_write(rt2x00dev, 128, 0x12); in rt2800_init_bbp_53xx()
5519 if (rt2x00_rt(rt2x00dev, RT5392)) { in rt2800_init_bbp_53xx()
5520 rt2800_bbp_write(rt2x00dev, 134, 0xd0); in rt2800_init_bbp_53xx()
5521 rt2800_bbp_write(rt2x00dev, 135, 0xf6); in rt2800_init_bbp_53xx()
5524 rt2800_disable_unused_dac_adc(rt2x00dev); in rt2800_init_bbp_53xx()
5526 rt2800_eeprom_read(rt2x00dev, EEPROM_NIC_CONF1, &eeprom); in rt2800_init_bbp_53xx()
5532 if (rt2x00_has_cap_bt_coexist(rt2x00dev)) { in rt2800_init_bbp_53xx()
5535 rt2800_register_read(rt2x00dev, GPIO_CTRL, ®); in rt2800_init_bbp_53xx()
5544 rt2800_register_write(rt2x00dev, GPIO_CTRL, reg); in rt2800_init_bbp_53xx()
5548 if (rt2x00_rt_rev_gte(rt2x00dev, RT5390, REV_RT5390R)) { in rt2800_init_bbp_53xx()
5549 rt2800_bbp_write(rt2x00dev, 150, 0); /* Disable Antenna Software OFDM */ in rt2800_init_bbp_53xx()
5550 rt2800_bbp_write(rt2x00dev, 151, 0); /* Disable Antenna Software CCK */ in rt2800_init_bbp_53xx()
5551 rt2800_bbp_write(rt2x00dev, 154, 0); /* Clear previously selected antenna */ in rt2800_init_bbp_53xx()
5554 rt2800_bbp_read(rt2x00dev, 152, &value); in rt2800_init_bbp_53xx()
5559 rt2800_bbp_write(rt2x00dev, 152, value); in rt2800_init_bbp_53xx()
5561 rt2800_init_freq_calibration(rt2x00dev); in rt2800_init_bbp_53xx()
5564 static void rt2800_init_bbp_5592(struct rt2x00_dev *rt2x00dev) in rt2800_init_bbp_5592() argument
5570 rt2800_init_bbp_early(rt2x00dev); in rt2800_init_bbp_5592()
5572 rt2800_bbp_read(rt2x00dev, 105, &value); in rt2800_init_bbp_5592()
5574 rt2x00dev->default_ant.rx_chain_num == 2); in rt2800_init_bbp_5592()
5575 rt2800_bbp_write(rt2x00dev, 105, value); in rt2800_init_bbp_5592()
5577 rt2800_bbp4_mac_if_ctrl(rt2x00dev); in rt2800_init_bbp_5592()
5579 rt2800_bbp_write(rt2x00dev, 20, 0x06); in rt2800_init_bbp_5592()
5580 rt2800_bbp_write(rt2x00dev, 31, 0x08); in rt2800_init_bbp_5592()
5581 rt2800_bbp_write(rt2x00dev, 65, 0x2C); in rt2800_init_bbp_5592()
5582 rt2800_bbp_write(rt2x00dev, 68, 0xDD); in rt2800_init_bbp_5592()
5583 rt2800_bbp_write(rt2x00dev, 69, 0x1A); in rt2800_init_bbp_5592()
5584 rt2800_bbp_write(rt2x00dev, 70, 0x05); in rt2800_init_bbp_5592()
5585 rt2800_bbp_write(rt2x00dev, 73, 0x13); in rt2800_init_bbp_5592()
5586 rt2800_bbp_write(rt2x00dev, 74, 0x0F); in rt2800_init_bbp_5592()
5587 rt2800_bbp_write(rt2x00dev, 75, 0x4F); in rt2800_init_bbp_5592()
5588 rt2800_bbp_write(rt2x00dev, 76, 0x28); in rt2800_init_bbp_5592()
5589 rt2800_bbp_write(rt2x00dev, 77, 0x59); in rt2800_init_bbp_5592()
5590 rt2800_bbp_write(rt2x00dev, 84, 0x9A); in rt2800_init_bbp_5592()
5591 rt2800_bbp_write(rt2x00dev, 86, 0x38); in rt2800_init_bbp_5592()
5592 rt2800_bbp_write(rt2x00dev, 88, 0x90); in rt2800_init_bbp_5592()
5593 rt2800_bbp_write(rt2x00dev, 91, 0x04); in rt2800_init_bbp_5592()
5594 rt2800_bbp_write(rt2x00dev, 92, 0x02); in rt2800_init_bbp_5592()
5595 rt2800_bbp_write(rt2x00dev, 95, 0x9a); in rt2800_init_bbp_5592()
5596 rt2800_bbp_write(rt2x00dev, 98, 0x12); in rt2800_init_bbp_5592()
5597 rt2800_bbp_write(rt2x00dev, 103, 0xC0); in rt2800_init_bbp_5592()
5598 rt2800_bbp_write(rt2x00dev, 104, 0x92); in rt2800_init_bbp_5592()
5600 rt2800_bbp_write(rt2x00dev, 105, 0x3C); in rt2800_init_bbp_5592()
5601 rt2800_bbp_write(rt2x00dev, 106, 0x35); in rt2800_init_bbp_5592()
5602 rt2800_bbp_write(rt2x00dev, 128, 0x12); in rt2800_init_bbp_5592()
5603 rt2800_bbp_write(rt2x00dev, 134, 0xD0); in rt2800_init_bbp_5592()
5604 rt2800_bbp_write(rt2x00dev, 135, 0xF6); in rt2800_init_bbp_5592()
5605 rt2800_bbp_write(rt2x00dev, 137, 0x0F); in rt2800_init_bbp_5592()
5608 rt2800_init_bbp_5592_glrt(rt2x00dev); in rt2800_init_bbp_5592()
5610 rt2800_bbp4_mac_if_ctrl(rt2x00dev); in rt2800_init_bbp_5592()
5612 rt2800_eeprom_read(rt2x00dev, EEPROM_NIC_CONF1, &eeprom); in rt2800_init_bbp_5592()
5615 rt2800_bbp_read(rt2x00dev, 152, &value); in rt2800_init_bbp_5592()
5623 rt2800_bbp_write(rt2x00dev, 152, value); in rt2800_init_bbp_5592()
5625 if (rt2x00_rt_rev_gte(rt2x00dev, RT5592, REV_RT5592C)) { in rt2800_init_bbp_5592()
5626 rt2800_bbp_read(rt2x00dev, 254, &value); in rt2800_init_bbp_5592()
5628 rt2800_bbp_write(rt2x00dev, 254, value); in rt2800_init_bbp_5592()
5631 rt2800_init_freq_calibration(rt2x00dev); in rt2800_init_bbp_5592()
5633 rt2800_bbp_write(rt2x00dev, 84, 0x19); in rt2800_init_bbp_5592()
5634 if (rt2x00_rt_rev_gte(rt2x00dev, RT5592, REV_RT5592C)) in rt2800_init_bbp_5592()
5635 rt2800_bbp_write(rt2x00dev, 103, 0xc0); in rt2800_init_bbp_5592()
5638 static void rt2800_init_bbp(struct rt2x00_dev *rt2x00dev) in rt2800_init_bbp() argument
5645 if (rt2800_is_305x_soc(rt2x00dev)) in rt2800_init_bbp()
5646 rt2800_init_bbp_305x_soc(rt2x00dev); in rt2800_init_bbp()
5648 switch (rt2x00dev->chip.rt) { in rt2800_init_bbp()
5652 rt2800_init_bbp_28xx(rt2x00dev); in rt2800_init_bbp()
5657 rt2800_init_bbp_30xx(rt2x00dev); in rt2800_init_bbp()
5660 rt2800_init_bbp_3290(rt2x00dev); in rt2800_init_bbp()
5663 rt2800_init_bbp_3352(rt2x00dev); in rt2800_init_bbp()
5666 rt2800_init_bbp_3390(rt2x00dev); in rt2800_init_bbp()
5669 rt2800_init_bbp_3572(rt2x00dev); in rt2800_init_bbp()
5672 rt2800_init_bbp_3593(rt2x00dev); in rt2800_init_bbp()
5676 rt2800_init_bbp_53xx(rt2x00dev); in rt2800_init_bbp()
5679 rt2800_init_bbp_5592(rt2x00dev); in rt2800_init_bbp()
5684 rt2800_eeprom_read_from_array(rt2x00dev, EEPROM_BBP_START, i, in rt2800_init_bbp()
5690 rt2800_bbp_write(rt2x00dev, reg_id, value); in rt2800_init_bbp()
5695 static void rt2800_led_open_drain_enable(struct rt2x00_dev *rt2x00dev) in rt2800_led_open_drain_enable() argument
5699 rt2800_register_read(rt2x00dev, OPT_14_CSR, ®); in rt2800_led_open_drain_enable()
5701 rt2800_register_write(rt2x00dev, OPT_14_CSR, reg); in rt2800_led_open_drain_enable()
5704 static u8 rt2800_init_rx_filter(struct rt2x00_dev *rt2x00dev, bool bw40, in rt2800_init_rx_filter() argument
5715 rt2800_rfcsr_write(rt2x00dev, 24, rfcsr24); in rt2800_init_rx_filter()
5717 rt2800_bbp_read(rt2x00dev, 4, &bbp); in rt2800_init_rx_filter()
5719 rt2800_bbp_write(rt2x00dev, 4, bbp); in rt2800_init_rx_filter()
5721 rt2800_rfcsr_read(rt2x00dev, 31, &rfcsr); in rt2800_init_rx_filter()
5723 rt2800_rfcsr_write(rt2x00dev, 31, rfcsr); in rt2800_init_rx_filter()
5725 rt2800_rfcsr_read(rt2x00dev, 22, &rfcsr); in rt2800_init_rx_filter()
5727 rt2800_rfcsr_write(rt2x00dev, 22, rfcsr); in rt2800_init_rx_filter()
5732 rt2800_bbp_write(rt2x00dev, 24, 0); in rt2800_init_rx_filter()
5735 rt2800_bbp_write(rt2x00dev, 25, 0x90); in rt2800_init_rx_filter()
5738 rt2800_bbp_read(rt2x00dev, 55, &passband); in rt2800_init_rx_filter()
5746 rt2800_bbp_write(rt2x00dev, 24, 0x06); in rt2800_init_rx_filter()
5749 rt2800_bbp_write(rt2x00dev, 25, 0x90); in rt2800_init_rx_filter()
5752 rt2800_bbp_read(rt2x00dev, 55, &stopband); in rt2800_init_rx_filter()
5760 rt2800_rfcsr_write(rt2x00dev, 24, rfcsr24); in rt2800_init_rx_filter()
5765 rt2800_rfcsr_write(rt2x00dev, 24, rfcsr24); in rt2800_init_rx_filter()
5769 static void rt2800_rf_init_calibration(struct rt2x00_dev *rt2x00dev, in rt2800_rf_init_calibration() argument
5774 rt2800_rfcsr_read(rt2x00dev, rf_reg, &rfcsr); in rt2800_rf_init_calibration()
5776 rt2800_rfcsr_write(rt2x00dev, rf_reg, rfcsr); in rt2800_rf_init_calibration()
5779 rt2800_rfcsr_write(rt2x00dev, rf_reg, rfcsr); in rt2800_rf_init_calibration()
5782 static void rt2800_rx_filter_calibration(struct rt2x00_dev *rt2x00dev) in rt2800_rx_filter_calibration() argument
5784 struct rt2800_drv_data *drv_data = rt2x00dev->drv_data; in rt2800_rx_filter_calibration()
5792 if (rt2x00_rt(rt2x00dev, RT3070)) { in rt2800_rx_filter_calibration()
5801 rt2800_init_rx_filter(rt2x00dev, false, filter_tgt_bw20); in rt2800_rx_filter_calibration()
5803 rt2800_init_rx_filter(rt2x00dev, true, filter_tgt_bw40); in rt2800_rx_filter_calibration()
5808 rt2800_bbp_read(rt2x00dev, 25, &drv_data->bbp25); in rt2800_rx_filter_calibration()
5809 rt2800_bbp_read(rt2x00dev, 26, &drv_data->bbp26); in rt2800_rx_filter_calibration()
5814 rt2800_bbp_write(rt2x00dev, 24, 0); in rt2800_rx_filter_calibration()
5816 rt2800_rfcsr_read(rt2x00dev, 22, &rfcsr); in rt2800_rx_filter_calibration()
5818 rt2800_rfcsr_write(rt2x00dev, 22, rfcsr); in rt2800_rx_filter_calibration()
5823 rt2800_bbp_read(rt2x00dev, 4, &bbp); in rt2800_rx_filter_calibration()
5825 rt2800_bbp_write(rt2x00dev, 4, bbp); in rt2800_rx_filter_calibration()
5828 static void rt2800_normal_mode_setup_3xxx(struct rt2x00_dev *rt2x00dev) in rt2800_normal_mode_setup_3xxx() argument
5830 struct rt2800_drv_data *drv_data = rt2x00dev->drv_data; in rt2800_normal_mode_setup_3xxx()
5834 rt2800_rfcsr_read(rt2x00dev, 17, &rfcsr); in rt2800_normal_mode_setup_3xxx()
5837 if (rt2x00_rt(rt2x00dev, RT3070) || in rt2800_normal_mode_setup_3xxx()
5838 rt2x00_rt_rev_lt(rt2x00dev, RT3071, REV_RT3071E) || in rt2800_normal_mode_setup_3xxx()
5839 rt2x00_rt_rev_lt(rt2x00dev, RT3090, REV_RT3090E) || in rt2800_normal_mode_setup_3xxx()
5840 rt2x00_rt_rev_lt(rt2x00dev, RT3390, REV_RT3390E)) { in rt2800_normal_mode_setup_3xxx()
5841 if (!rt2x00_has_cap_external_lna_bg(rt2x00dev)) in rt2800_normal_mode_setup_3xxx()
5845 min_gain = rt2x00_rt(rt2x00dev, RT3070) ? 1 : 2; in rt2800_normal_mode_setup_3xxx()
5851 rt2800_rfcsr_write(rt2x00dev, 17, rfcsr); in rt2800_normal_mode_setup_3xxx()
5853 if (rt2x00_rt(rt2x00dev, RT3090)) { in rt2800_normal_mode_setup_3xxx()
5855 rt2800_bbp_read(rt2x00dev, 138, &bbp); in rt2800_normal_mode_setup_3xxx()
5856 rt2800_eeprom_read(rt2x00dev, EEPROM_NIC_CONF0, &eeprom); in rt2800_normal_mode_setup_3xxx()
5861 rt2800_bbp_write(rt2x00dev, 138, bbp); in rt2800_normal_mode_setup_3xxx()
5864 if (rt2x00_rt(rt2x00dev, RT3070)) { in rt2800_normal_mode_setup_3xxx()
5865 rt2800_rfcsr_read(rt2x00dev, 27, &rfcsr); in rt2800_normal_mode_setup_3xxx()
5866 if (rt2x00_rt_rev_lt(rt2x00dev, RT3070, REV_RT3070F)) in rt2800_normal_mode_setup_3xxx()
5873 rt2800_rfcsr_write(rt2x00dev, 27, rfcsr); in rt2800_normal_mode_setup_3xxx()
5874 } else if (rt2x00_rt(rt2x00dev, RT3071) || in rt2800_normal_mode_setup_3xxx()
5875 rt2x00_rt(rt2x00dev, RT3090) || in rt2800_normal_mode_setup_3xxx()
5876 rt2x00_rt(rt2x00dev, RT3390)) { in rt2800_normal_mode_setup_3xxx()
5877 rt2800_rfcsr_read(rt2x00dev, 1, &rfcsr); in rt2800_normal_mode_setup_3xxx()
5883 rt2800_rfcsr_write(rt2x00dev, 1, rfcsr); in rt2800_normal_mode_setup_3xxx()
5885 rt2800_rfcsr_read(rt2x00dev, 15, &rfcsr); in rt2800_normal_mode_setup_3xxx()
5887 rt2800_rfcsr_write(rt2x00dev, 15, rfcsr); in rt2800_normal_mode_setup_3xxx()
5889 rt2800_rfcsr_read(rt2x00dev, 20, &rfcsr); in rt2800_normal_mode_setup_3xxx()
5891 rt2800_rfcsr_write(rt2x00dev, 20, rfcsr); in rt2800_normal_mode_setup_3xxx()
5893 rt2800_rfcsr_read(rt2x00dev, 21, &rfcsr); in rt2800_normal_mode_setup_3xxx()
5895 rt2800_rfcsr_write(rt2x00dev, 21, rfcsr); in rt2800_normal_mode_setup_3xxx()
5899 static void rt2800_normal_mode_setup_3593(struct rt2x00_dev *rt2x00dev) in rt2800_normal_mode_setup_3593() argument
5901 struct rt2800_drv_data *drv_data = rt2x00dev->drv_data; in rt2800_normal_mode_setup_3593()
5905 rt2800_rfcsr_read(rt2x00dev, 50, &rfcsr); in rt2800_normal_mode_setup_3593()
5907 rt2800_rfcsr_write(rt2x00dev, 50, rfcsr); in rt2800_normal_mode_setup_3593()
5909 rt2800_rfcsr_read(rt2x00dev, 51, &rfcsr); in rt2800_normal_mode_setup_3593()
5913 rt2800_rfcsr_write(rt2x00dev, 51, rfcsr); in rt2800_normal_mode_setup_3593()
5915 rt2800_rfcsr_read(rt2x00dev, 38, &rfcsr); in rt2800_normal_mode_setup_3593()
5917 rt2800_rfcsr_write(rt2x00dev, 38, rfcsr); in rt2800_normal_mode_setup_3593()
5919 rt2800_rfcsr_read(rt2x00dev, 39, &rfcsr); in rt2800_normal_mode_setup_3593()
5921 rt2800_rfcsr_write(rt2x00dev, 39, rfcsr); in rt2800_normal_mode_setup_3593()
5923 rt2800_rfcsr_read(rt2x00dev, 1, &rfcsr); in rt2800_normal_mode_setup_3593()
5926 rt2800_rfcsr_write(rt2x00dev, 1, rfcsr); in rt2800_normal_mode_setup_3593()
5928 rt2800_rfcsr_read(rt2x00dev, 30, &rfcsr); in rt2800_normal_mode_setup_3593()
5930 rt2800_rfcsr_write(rt2x00dev, 30, rfcsr); in rt2800_normal_mode_setup_3593()
5935 static void rt2800_normal_mode_setup_5xxx(struct rt2x00_dev *rt2x00dev) in rt2800_normal_mode_setup_5xxx() argument
5941 rt2800_bbp_read(rt2x00dev, 138, ®); in rt2800_normal_mode_setup_5xxx()
5942 rt2800_eeprom_read(rt2x00dev, EEPROM_NIC_CONF0, &eeprom); in rt2800_normal_mode_setup_5xxx()
5947 rt2800_bbp_write(rt2x00dev, 138, reg); in rt2800_normal_mode_setup_5xxx()
5949 rt2800_rfcsr_read(rt2x00dev, 38, ®); in rt2800_normal_mode_setup_5xxx()
5951 rt2800_rfcsr_write(rt2x00dev, 38, reg); in rt2800_normal_mode_setup_5xxx()
5953 rt2800_rfcsr_read(rt2x00dev, 39, ®); in rt2800_normal_mode_setup_5xxx()
5955 rt2800_rfcsr_write(rt2x00dev, 39, reg); in rt2800_normal_mode_setup_5xxx()
5957 rt2800_bbp4_mac_if_ctrl(rt2x00dev); in rt2800_normal_mode_setup_5xxx()
5959 rt2800_rfcsr_read(rt2x00dev, 30, ®); in rt2800_normal_mode_setup_5xxx()
5961 rt2800_rfcsr_write(rt2x00dev, 30, reg); in rt2800_normal_mode_setup_5xxx()
5964 static void rt2800_init_rfcsr_305x_soc(struct rt2x00_dev *rt2x00dev) in rt2800_init_rfcsr_305x_soc() argument
5966 rt2800_rf_init_calibration(rt2x00dev, 30); in rt2800_init_rfcsr_305x_soc()
5968 rt2800_rfcsr_write(rt2x00dev, 0, 0x50); in rt2800_init_rfcsr_305x_soc()
5969 rt2800_rfcsr_write(rt2x00dev, 1, 0x01); in rt2800_init_rfcsr_305x_soc()
5970 rt2800_rfcsr_write(rt2x00dev, 2, 0xf7); in rt2800_init_rfcsr_305x_soc()
5971 rt2800_rfcsr_write(rt2x00dev, 3, 0x75); in rt2800_init_rfcsr_305x_soc()
5972 rt2800_rfcsr_write(rt2x00dev, 4, 0x40); in rt2800_init_rfcsr_305x_soc()
5973 rt2800_rfcsr_write(rt2x00dev, 5, 0x03); in rt2800_init_rfcsr_305x_soc()
5974 rt2800_rfcsr_write(rt2x00dev, 6, 0x02); in rt2800_init_rfcsr_305x_soc()
5975 rt2800_rfcsr_write(rt2x00dev, 7, 0x50); in rt2800_init_rfcsr_305x_soc()
5976 rt2800_rfcsr_write(rt2x00dev, 8, 0x39); in rt2800_init_rfcsr_305x_soc()
5977 rt2800_rfcsr_write(rt2x00dev, 9, 0x0f); in rt2800_init_rfcsr_305x_soc()
5978 rt2800_rfcsr_write(rt2x00dev, 10, 0x60); in rt2800_init_rfcsr_305x_soc()
5979 rt2800_rfcsr_write(rt2x00dev, 11, 0x21); in rt2800_init_rfcsr_305x_soc()
5980 rt2800_rfcsr_write(rt2x00dev, 12, 0x75); in rt2800_init_rfcsr_305x_soc()
5981 rt2800_rfcsr_write(rt2x00dev, 13, 0x75); in rt2800_init_rfcsr_305x_soc()
5982 rt2800_rfcsr_write(rt2x00dev, 14, 0x90); in rt2800_init_rfcsr_305x_soc()
5983 rt2800_rfcsr_write(rt2x00dev, 15, 0x58); in rt2800_init_rfcsr_305x_soc()
5984 rt2800_rfcsr_write(rt2x00dev, 16, 0xb3); in rt2800_init_rfcsr_305x_soc()
5985 rt2800_rfcsr_write(rt2x00dev, 17, 0x92); in rt2800_init_rfcsr_305x_soc()
5986 rt2800_rfcsr_write(rt2x00dev, 18, 0x2c); in rt2800_init_rfcsr_305x_soc()
5987 rt2800_rfcsr_write(rt2x00dev, 19, 0x02); in rt2800_init_rfcsr_305x_soc()
5988 rt2800_rfcsr_write(rt2x00dev, 20, 0xba); in rt2800_init_rfcsr_305x_soc()
5989 rt2800_rfcsr_write(rt2x00dev, 21, 0xdb); in rt2800_init_rfcsr_305x_soc()
5990 rt2800_rfcsr_write(rt2x00dev, 22, 0x00); in rt2800_init_rfcsr_305x_soc()
5991 rt2800_rfcsr_write(rt2x00dev, 23, 0x31); in rt2800_init_rfcsr_305x_soc()
5992 rt2800_rfcsr_write(rt2x00dev, 24, 0x08); in rt2800_init_rfcsr_305x_soc()
5993 rt2800_rfcsr_write(rt2x00dev, 25, 0x01); in rt2800_init_rfcsr_305x_soc()
5994 rt2800_rfcsr_write(rt2x00dev, 26, 0x25); in rt2800_init_rfcsr_305x_soc()
5995 rt2800_rfcsr_write(rt2x00dev, 27, 0x23); in rt2800_init_rfcsr_305x_soc()
5996 rt2800_rfcsr_write(rt2x00dev, 28, 0x13); in rt2800_init_rfcsr_305x_soc()
5997 rt2800_rfcsr_write(rt2x00dev, 29, 0x83); in rt2800_init_rfcsr_305x_soc()
5998 rt2800_rfcsr_write(rt2x00dev, 30, 0x00); in rt2800_init_rfcsr_305x_soc()
5999 rt2800_rfcsr_write(rt2x00dev, 31, 0x00); in rt2800_init_rfcsr_305x_soc()
6002 static void rt2800_init_rfcsr_30xx(struct rt2x00_dev *rt2x00dev) in rt2800_init_rfcsr_30xx() argument
6009 rt2800_rf_init_calibration(rt2x00dev, 30); in rt2800_init_rfcsr_30xx()
6011 rt2800_rfcsr_write(rt2x00dev, 4, 0x40); in rt2800_init_rfcsr_30xx()
6012 rt2800_rfcsr_write(rt2x00dev, 5, 0x03); in rt2800_init_rfcsr_30xx()
6013 rt2800_rfcsr_write(rt2x00dev, 6, 0x02); in rt2800_init_rfcsr_30xx()
6014 rt2800_rfcsr_write(rt2x00dev, 7, 0x60); in rt2800_init_rfcsr_30xx()
6015 rt2800_rfcsr_write(rt2x00dev, 9, 0x0f); in rt2800_init_rfcsr_30xx()
6016 rt2800_rfcsr_write(rt2x00dev, 10, 0x41); in rt2800_init_rfcsr_30xx()
6017 rt2800_rfcsr_write(rt2x00dev, 11, 0x21); in rt2800_init_rfcsr_30xx()
6018 rt2800_rfcsr_write(rt2x00dev, 12, 0x7b); in rt2800_init_rfcsr_30xx()
6019 rt2800_rfcsr_write(rt2x00dev, 14, 0x90); in rt2800_init_rfcsr_30xx()
6020 rt2800_rfcsr_write(rt2x00dev, 15, 0x58); in rt2800_init_rfcsr_30xx()
6021 rt2800_rfcsr_write(rt2x00dev, 16, 0xb3); in rt2800_init_rfcsr_30xx()
6022 rt2800_rfcsr_write(rt2x00dev, 17, 0x92); in rt2800_init_rfcsr_30xx()
6023 rt2800_rfcsr_write(rt2x00dev, 18, 0x2c); in rt2800_init_rfcsr_30xx()
6024 rt2800_rfcsr_write(rt2x00dev, 19, 0x02); in rt2800_init_rfcsr_30xx()
6025 rt2800_rfcsr_write(rt2x00dev, 20, 0xba); in rt2800_init_rfcsr_30xx()
6026 rt2800_rfcsr_write(rt2x00dev, 21, 0xdb); in rt2800_init_rfcsr_30xx()
6027 rt2800_rfcsr_write(rt2x00dev, 24, 0x16); in rt2800_init_rfcsr_30xx()
6028 rt2800_rfcsr_write(rt2x00dev, 25, 0x03); in rt2800_init_rfcsr_30xx()
6029 rt2800_rfcsr_write(rt2x00dev, 29, 0x1f); in rt2800_init_rfcsr_30xx()
6031 if (rt2x00_rt_rev_lt(rt2x00dev, RT3070, REV_RT3070F)) { in rt2800_init_rfcsr_30xx()
6032 rt2800_register_read(rt2x00dev, LDO_CFG0, ®); in rt2800_init_rfcsr_30xx()
6035 rt2800_register_write(rt2x00dev, LDO_CFG0, reg); in rt2800_init_rfcsr_30xx()
6036 } else if (rt2x00_rt(rt2x00dev, RT3071) || in rt2800_init_rfcsr_30xx()
6037 rt2x00_rt(rt2x00dev, RT3090)) { in rt2800_init_rfcsr_30xx()
6038 rt2800_rfcsr_write(rt2x00dev, 31, 0x14); in rt2800_init_rfcsr_30xx()
6040 rt2800_rfcsr_read(rt2x00dev, 6, &rfcsr); in rt2800_init_rfcsr_30xx()
6042 rt2800_rfcsr_write(rt2x00dev, 6, rfcsr); in rt2800_init_rfcsr_30xx()
6044 rt2800_register_read(rt2x00dev, LDO_CFG0, ®); in rt2800_init_rfcsr_30xx()
6046 if (rt2x00_rt_rev_lt(rt2x00dev, RT3071, REV_RT3071E) || in rt2800_init_rfcsr_30xx()
6047 rt2x00_rt_rev_lt(rt2x00dev, RT3090, REV_RT3090E)) { in rt2800_init_rfcsr_30xx()
6048 rt2800_eeprom_read(rt2x00dev, EEPROM_NIC_CONF1, in rt2800_init_rfcsr_30xx()
6055 rt2800_register_write(rt2x00dev, LDO_CFG0, reg); in rt2800_init_rfcsr_30xx()
6057 rt2800_register_read(rt2x00dev, GPIO_SWITCH, ®); in rt2800_init_rfcsr_30xx()
6059 rt2800_register_write(rt2x00dev, GPIO_SWITCH, reg); in rt2800_init_rfcsr_30xx()
6062 rt2800_rx_filter_calibration(rt2x00dev); in rt2800_init_rfcsr_30xx()
6064 if (rt2x00_rt_rev_lt(rt2x00dev, RT3070, REV_RT3070F) || in rt2800_init_rfcsr_30xx()
6065 rt2x00_rt_rev_lt(rt2x00dev, RT3071, REV_RT3071E) || in rt2800_init_rfcsr_30xx()
6066 rt2x00_rt_rev_lt(rt2x00dev, RT3090, REV_RT3090E)) in rt2800_init_rfcsr_30xx()
6067 rt2800_rfcsr_write(rt2x00dev, 27, 0x03); in rt2800_init_rfcsr_30xx()
6069 rt2800_led_open_drain_enable(rt2x00dev); in rt2800_init_rfcsr_30xx()
6070 rt2800_normal_mode_setup_3xxx(rt2x00dev); in rt2800_init_rfcsr_30xx()
6073 static void rt2800_init_rfcsr_3290(struct rt2x00_dev *rt2x00dev) in rt2800_init_rfcsr_3290() argument
6077 rt2800_rf_init_calibration(rt2x00dev, 2); in rt2800_init_rfcsr_3290()
6079 rt2800_rfcsr_write(rt2x00dev, 1, 0x0f); in rt2800_init_rfcsr_3290()
6080 rt2800_rfcsr_write(rt2x00dev, 2, 0x80); in rt2800_init_rfcsr_3290()
6081 rt2800_rfcsr_write(rt2x00dev, 3, 0x08); in rt2800_init_rfcsr_3290()
6082 rt2800_rfcsr_write(rt2x00dev, 4, 0x00); in rt2800_init_rfcsr_3290()
6083 rt2800_rfcsr_write(rt2x00dev, 6, 0xa0); in rt2800_init_rfcsr_3290()
6084 rt2800_rfcsr_write(rt2x00dev, 8, 0xf3); in rt2800_init_rfcsr_3290()
6085 rt2800_rfcsr_write(rt2x00dev, 9, 0x02); in rt2800_init_rfcsr_3290()
6086 rt2800_rfcsr_write(rt2x00dev, 10, 0x53); in rt2800_init_rfcsr_3290()
6087 rt2800_rfcsr_write(rt2x00dev, 11, 0x4a); in rt2800_init_rfcsr_3290()
6088 rt2800_rfcsr_write(rt2x00dev, 12, 0x46); in rt2800_init_rfcsr_3290()
6089 rt2800_rfcsr_write(rt2x00dev, 13, 0x9f); in rt2800_init_rfcsr_3290()
6090 rt2800_rfcsr_write(rt2x00dev, 18, 0x02); in rt2800_init_rfcsr_3290()
6091 rt2800_rfcsr_write(rt2x00dev, 22, 0x20); in rt2800_init_rfcsr_3290()
6092 rt2800_rfcsr_write(rt2x00dev, 25, 0x83); in rt2800_init_rfcsr_3290()
6093 rt2800_rfcsr_write(rt2x00dev, 26, 0x82); in rt2800_init_rfcsr_3290()
6094 rt2800_rfcsr_write(rt2x00dev, 27, 0x09); in rt2800_init_rfcsr_3290()
6095 rt2800_rfcsr_write(rt2x00dev, 29, 0x10); in rt2800_init_rfcsr_3290()
6096 rt2800_rfcsr_write(rt2x00dev, 30, 0x10); in rt2800_init_rfcsr_3290()
6097 rt2800_rfcsr_write(rt2x00dev, 31, 0x80); in rt2800_init_rfcsr_3290()
6098 rt2800_rfcsr_write(rt2x00dev, 32, 0x80); in rt2800_init_rfcsr_3290()
6099 rt2800_rfcsr_write(rt2x00dev, 33, 0x00); in rt2800_init_rfcsr_3290()
6100 rt2800_rfcsr_write(rt2x00dev, 34, 0x05); in rt2800_init_rfcsr_3290()
6101 rt2800_rfcsr_write(rt2x00dev, 35, 0x12); in rt2800_init_rfcsr_3290()
6102 rt2800_rfcsr_write(rt2x00dev, 36, 0x00); in rt2800_init_rfcsr_3290()
6103 rt2800_rfcsr_write(rt2x00dev, 38, 0x85); in rt2800_init_rfcsr_3290()
6104 rt2800_rfcsr_write(rt2x00dev, 39, 0x1b); in rt2800_init_rfcsr_3290()
6105 rt2800_rfcsr_write(rt2x00dev, 40, 0x0b); in rt2800_init_rfcsr_3290()
6106 rt2800_rfcsr_write(rt2x00dev, 41, 0xbb); in rt2800_init_rfcsr_3290()
6107 rt2800_rfcsr_write(rt2x00dev, 42, 0xd5); in rt2800_init_rfcsr_3290()
6108 rt2800_rfcsr_write(rt2x00dev, 43, 0x7b); in rt2800_init_rfcsr_3290()
6109 rt2800_rfcsr_write(rt2x00dev, 44, 0x0e); in rt2800_init_rfcsr_3290()
6110 rt2800_rfcsr_write(rt2x00dev, 45, 0xa2); in rt2800_init_rfcsr_3290()
6111 rt2800_rfcsr_write(rt2x00dev, 46, 0x73); in rt2800_init_rfcsr_3290()
6112 rt2800_rfcsr_write(rt2x00dev, 47, 0x00); in rt2800_init_rfcsr_3290()
6113 rt2800_rfcsr_write(rt2x00dev, 48, 0x10); in rt2800_init_rfcsr_3290()
6114 rt2800_rfcsr_write(rt2x00dev, 49, 0x98); in rt2800_init_rfcsr_3290()
6115 rt2800_rfcsr_write(rt2x00dev, 52, 0x38); in rt2800_init_rfcsr_3290()
6116 rt2800_rfcsr_write(rt2x00dev, 53, 0x00); in rt2800_init_rfcsr_3290()
6117 rt2800_rfcsr_write(rt2x00dev, 54, 0x78); in rt2800_init_rfcsr_3290()
6118 rt2800_rfcsr_write(rt2x00dev, 55, 0x43); in rt2800_init_rfcsr_3290()
6119 rt2800_rfcsr_write(rt2x00dev, 56, 0x02); in rt2800_init_rfcsr_3290()
6120 rt2800_rfcsr_write(rt2x00dev, 57, 0x80); in rt2800_init_rfcsr_3290()
6121 rt2800_rfcsr_write(rt2x00dev, 58, 0x7f); in rt2800_init_rfcsr_3290()
6122 rt2800_rfcsr_write(rt2x00dev, 59, 0x09); in rt2800_init_rfcsr_3290()
6123 rt2800_rfcsr_write(rt2x00dev, 60, 0x45); in rt2800_init_rfcsr_3290()
6124 rt2800_rfcsr_write(rt2x00dev, 61, 0xc1); in rt2800_init_rfcsr_3290()
6126 rt2800_rfcsr_read(rt2x00dev, 29, &rfcsr); in rt2800_init_rfcsr_3290()
6128 rt2800_rfcsr_write(rt2x00dev, 29, rfcsr); in rt2800_init_rfcsr_3290()
6130 rt2800_led_open_drain_enable(rt2x00dev); in rt2800_init_rfcsr_3290()
6131 rt2800_normal_mode_setup_3xxx(rt2x00dev); in rt2800_init_rfcsr_3290()
6134 static void rt2800_init_rfcsr_3352(struct rt2x00_dev *rt2x00dev) in rt2800_init_rfcsr_3352() argument
6136 rt2800_rf_init_calibration(rt2x00dev, 30); in rt2800_init_rfcsr_3352()
6138 rt2800_rfcsr_write(rt2x00dev, 0, 0xf0); in rt2800_init_rfcsr_3352()
6139 rt2800_rfcsr_write(rt2x00dev, 1, 0x23); in rt2800_init_rfcsr_3352()
6140 rt2800_rfcsr_write(rt2x00dev, 2, 0x50); in rt2800_init_rfcsr_3352()
6141 rt2800_rfcsr_write(rt2x00dev, 3, 0x18); in rt2800_init_rfcsr_3352()
6142 rt2800_rfcsr_write(rt2x00dev, 4, 0x00); in rt2800_init_rfcsr_3352()
6143 rt2800_rfcsr_write(rt2x00dev, 5, 0x00); in rt2800_init_rfcsr_3352()
6144 rt2800_rfcsr_write(rt2x00dev, 6, 0x33); in rt2800_init_rfcsr_3352()
6145 rt2800_rfcsr_write(rt2x00dev, 7, 0x00); in rt2800_init_rfcsr_3352()
6146 rt2800_rfcsr_write(rt2x00dev, 8, 0xf1); in rt2800_init_rfcsr_3352()
6147 rt2800_rfcsr_write(rt2x00dev, 9, 0x02); in rt2800_init_rfcsr_3352()
6148 rt2800_rfcsr_write(rt2x00dev, 10, 0xd2); in rt2800_init_rfcsr_3352()
6149 rt2800_rfcsr_write(rt2x00dev, 11, 0x42); in rt2800_init_rfcsr_3352()
6150 rt2800_rfcsr_write(rt2x00dev, 12, 0x1c); in rt2800_init_rfcsr_3352()
6151 rt2800_rfcsr_write(rt2x00dev, 13, 0x00); in rt2800_init_rfcsr_3352()
6152 rt2800_rfcsr_write(rt2x00dev, 14, 0x5a); in rt2800_init_rfcsr_3352()
6153 rt2800_rfcsr_write(rt2x00dev, 15, 0x00); in rt2800_init_rfcsr_3352()
6154 rt2800_rfcsr_write(rt2x00dev, 16, 0x01); in rt2800_init_rfcsr_3352()
6155 rt2800_rfcsr_write(rt2x00dev, 18, 0x45); in rt2800_init_rfcsr_3352()
6156 rt2800_rfcsr_write(rt2x00dev, 19, 0x02); in rt2800_init_rfcsr_3352()
6157 rt2800_rfcsr_write(rt2x00dev, 20, 0x00); in rt2800_init_rfcsr_3352()
6158 rt2800_rfcsr_write(rt2x00dev, 21, 0x00); in rt2800_init_rfcsr_3352()
6159 rt2800_rfcsr_write(rt2x00dev, 22, 0x00); in rt2800_init_rfcsr_3352()
6160 rt2800_rfcsr_write(rt2x00dev, 23, 0x00); in rt2800_init_rfcsr_3352()
6161 rt2800_rfcsr_write(rt2x00dev, 24, 0x00); in rt2800_init_rfcsr_3352()
6162 rt2800_rfcsr_write(rt2x00dev, 25, 0x80); in rt2800_init_rfcsr_3352()
6163 rt2800_rfcsr_write(rt2x00dev, 26, 0x00); in rt2800_init_rfcsr_3352()
6164 rt2800_rfcsr_write(rt2x00dev, 27, 0x03); in rt2800_init_rfcsr_3352()
6165 rt2800_rfcsr_write(rt2x00dev, 28, 0x03); in rt2800_init_rfcsr_3352()
6166 rt2800_rfcsr_write(rt2x00dev, 29, 0x00); in rt2800_init_rfcsr_3352()
6167 rt2800_rfcsr_write(rt2x00dev, 30, 0x10); in rt2800_init_rfcsr_3352()
6168 rt2800_rfcsr_write(rt2x00dev, 31, 0x80); in rt2800_init_rfcsr_3352()
6169 rt2800_rfcsr_write(rt2x00dev, 32, 0x80); in rt2800_init_rfcsr_3352()
6170 rt2800_rfcsr_write(rt2x00dev, 33, 0x00); in rt2800_init_rfcsr_3352()
6171 rt2800_rfcsr_write(rt2x00dev, 34, 0x01); in rt2800_init_rfcsr_3352()
6172 rt2800_rfcsr_write(rt2x00dev, 35, 0x03); in rt2800_init_rfcsr_3352()
6173 rt2800_rfcsr_write(rt2x00dev, 36, 0xbd); in rt2800_init_rfcsr_3352()
6174 rt2800_rfcsr_write(rt2x00dev, 37, 0x3c); in rt2800_init_rfcsr_3352()
6175 rt2800_rfcsr_write(rt2x00dev, 38, 0x5f); in rt2800_init_rfcsr_3352()
6176 rt2800_rfcsr_write(rt2x00dev, 39, 0xc5); in rt2800_init_rfcsr_3352()
6177 rt2800_rfcsr_write(rt2x00dev, 40, 0x33); in rt2800_init_rfcsr_3352()
6178 rt2800_rfcsr_write(rt2x00dev, 41, 0x5b); in rt2800_init_rfcsr_3352()
6179 rt2800_rfcsr_write(rt2x00dev, 42, 0x5b); in rt2800_init_rfcsr_3352()
6180 rt2800_rfcsr_write(rt2x00dev, 43, 0xdb); in rt2800_init_rfcsr_3352()
6181 rt2800_rfcsr_write(rt2x00dev, 44, 0xdb); in rt2800_init_rfcsr_3352()
6182 rt2800_rfcsr_write(rt2x00dev, 45, 0xdb); in rt2800_init_rfcsr_3352()
6183 rt2800_rfcsr_write(rt2x00dev, 46, 0xdd); in rt2800_init_rfcsr_3352()
6184 rt2800_rfcsr_write(rt2x00dev, 47, 0x0d); in rt2800_init_rfcsr_3352()
6185 rt2800_rfcsr_write(rt2x00dev, 48, 0x14); in rt2800_init_rfcsr_3352()
6186 rt2800_rfcsr_write(rt2x00dev, 49, 0x00); in rt2800_init_rfcsr_3352()
6187 rt2800_rfcsr_write(rt2x00dev, 50, 0x2d); in rt2800_init_rfcsr_3352()
6188 rt2800_rfcsr_write(rt2x00dev, 51, 0x7f); in rt2800_init_rfcsr_3352()
6189 rt2800_rfcsr_write(rt2x00dev, 52, 0x00); in rt2800_init_rfcsr_3352()
6190 rt2800_rfcsr_write(rt2x00dev, 53, 0x52); in rt2800_init_rfcsr_3352()
6191 rt2800_rfcsr_write(rt2x00dev, 54, 0x1b); in rt2800_init_rfcsr_3352()
6192 rt2800_rfcsr_write(rt2x00dev, 55, 0x7f); in rt2800_init_rfcsr_3352()
6193 rt2800_rfcsr_write(rt2x00dev, 56, 0x00); in rt2800_init_rfcsr_3352()
6194 rt2800_rfcsr_write(rt2x00dev, 57, 0x52); in rt2800_init_rfcsr_3352()
6195 rt2800_rfcsr_write(rt2x00dev, 58, 0x1b); in rt2800_init_rfcsr_3352()
6196 rt2800_rfcsr_write(rt2x00dev, 59, 0x00); in rt2800_init_rfcsr_3352()
6197 rt2800_rfcsr_write(rt2x00dev, 60, 0x00); in rt2800_init_rfcsr_3352()
6198 rt2800_rfcsr_write(rt2x00dev, 61, 0x00); in rt2800_init_rfcsr_3352()
6199 rt2800_rfcsr_write(rt2x00dev, 62, 0x00); in rt2800_init_rfcsr_3352()
6200 rt2800_rfcsr_write(rt2x00dev, 63, 0x00); in rt2800_init_rfcsr_3352()
6202 rt2800_rx_filter_calibration(rt2x00dev); in rt2800_init_rfcsr_3352()
6203 rt2800_led_open_drain_enable(rt2x00dev); in rt2800_init_rfcsr_3352()
6204 rt2800_normal_mode_setup_3xxx(rt2x00dev); in rt2800_init_rfcsr_3352()
6207 static void rt2800_init_rfcsr_3390(struct rt2x00_dev *rt2x00dev) in rt2800_init_rfcsr_3390() argument
6211 rt2800_rf_init_calibration(rt2x00dev, 30); in rt2800_init_rfcsr_3390()
6213 rt2800_rfcsr_write(rt2x00dev, 0, 0xa0); in rt2800_init_rfcsr_3390()
6214 rt2800_rfcsr_write(rt2x00dev, 1, 0xe1); in rt2800_init_rfcsr_3390()
6215 rt2800_rfcsr_write(rt2x00dev, 2, 0xf1); in rt2800_init_rfcsr_3390()
6216 rt2800_rfcsr_write(rt2x00dev, 3, 0x62); in rt2800_init_rfcsr_3390()
6217 rt2800_rfcsr_write(rt2x00dev, 4, 0x40); in rt2800_init_rfcsr_3390()
6218 rt2800_rfcsr_write(rt2x00dev, 5, 0x8b); in rt2800_init_rfcsr_3390()
6219 rt2800_rfcsr_write(rt2x00dev, 6, 0x42); in rt2800_init_rfcsr_3390()
6220 rt2800_rfcsr_write(rt2x00dev, 7, 0x34); in rt2800_init_rfcsr_3390()
6221 rt2800_rfcsr_write(rt2x00dev, 8, 0x00); in rt2800_init_rfcsr_3390()
6222 rt2800_rfcsr_write(rt2x00dev, 9, 0xc0); in rt2800_init_rfcsr_3390()
6223 rt2800_rfcsr_write(rt2x00dev, 10, 0x61); in rt2800_init_rfcsr_3390()
6224 rt2800_rfcsr_write(rt2x00dev, 11, 0x21); in rt2800_init_rfcsr_3390()
6225 rt2800_rfcsr_write(rt2x00dev, 12, 0x3b); in rt2800_init_rfcsr_3390()
6226 rt2800_rfcsr_write(rt2x00dev, 13, 0xe0); in rt2800_init_rfcsr_3390()
6227 rt2800_rfcsr_write(rt2x00dev, 14, 0x90); in rt2800_init_rfcsr_3390()
6228 rt2800_rfcsr_write(rt2x00dev, 15, 0x53); in rt2800_init_rfcsr_3390()
6229 rt2800_rfcsr_write(rt2x00dev, 16, 0xe0); in rt2800_init_rfcsr_3390()
6230 rt2800_rfcsr_write(rt2x00dev, 17, 0x94); in rt2800_init_rfcsr_3390()
6231 rt2800_rfcsr_write(rt2x00dev, 18, 0x5c); in rt2800_init_rfcsr_3390()
6232 rt2800_rfcsr_write(rt2x00dev, 19, 0x4a); in rt2800_init_rfcsr_3390()
6233 rt2800_rfcsr_write(rt2x00dev, 20, 0xb2); in rt2800_init_rfcsr_3390()
6234 rt2800_rfcsr_write(rt2x00dev, 21, 0xf6); in rt2800_init_rfcsr_3390()
6235 rt2800_rfcsr_write(rt2x00dev, 22, 0x00); in rt2800_init_rfcsr_3390()
6236 rt2800_rfcsr_write(rt2x00dev, 23, 0x14); in rt2800_init_rfcsr_3390()
6237 rt2800_rfcsr_write(rt2x00dev, 24, 0x08); in rt2800_init_rfcsr_3390()
6238 rt2800_rfcsr_write(rt2x00dev, 25, 0x3d); in rt2800_init_rfcsr_3390()
6239 rt2800_rfcsr_write(rt2x00dev, 26, 0x85); in rt2800_init_rfcsr_3390()
6240 rt2800_rfcsr_write(rt2x00dev, 27, 0x00); in rt2800_init_rfcsr_3390()
6241 rt2800_rfcsr_write(rt2x00dev, 28, 0x41); in rt2800_init_rfcsr_3390()
6242 rt2800_rfcsr_write(rt2x00dev, 29, 0x8f); in rt2800_init_rfcsr_3390()
6243 rt2800_rfcsr_write(rt2x00dev, 30, 0x20); in rt2800_init_rfcsr_3390()
6244 rt2800_rfcsr_write(rt2x00dev, 31, 0x0f); in rt2800_init_rfcsr_3390()
6246 rt2800_register_read(rt2x00dev, GPIO_SWITCH, ®); in rt2800_init_rfcsr_3390()
6248 rt2800_register_write(rt2x00dev, GPIO_SWITCH, reg); in rt2800_init_rfcsr_3390()
6250 rt2800_rx_filter_calibration(rt2x00dev); in rt2800_init_rfcsr_3390()
6252 if (rt2x00_rt_rev_lt(rt2x00dev, RT3390, REV_RT3390E)) in rt2800_init_rfcsr_3390()
6253 rt2800_rfcsr_write(rt2x00dev, 27, 0x03); in rt2800_init_rfcsr_3390()
6255 rt2800_led_open_drain_enable(rt2x00dev); in rt2800_init_rfcsr_3390()
6256 rt2800_normal_mode_setup_3xxx(rt2x00dev); in rt2800_init_rfcsr_3390()
6259 static void rt2800_init_rfcsr_3572(struct rt2x00_dev *rt2x00dev) in rt2800_init_rfcsr_3572() argument
6264 rt2800_rf_init_calibration(rt2x00dev, 30); in rt2800_init_rfcsr_3572()
6266 rt2800_rfcsr_write(rt2x00dev, 0, 0x70); in rt2800_init_rfcsr_3572()
6267 rt2800_rfcsr_write(rt2x00dev, 1, 0x81); in rt2800_init_rfcsr_3572()
6268 rt2800_rfcsr_write(rt2x00dev, 2, 0xf1); in rt2800_init_rfcsr_3572()
6269 rt2800_rfcsr_write(rt2x00dev, 3, 0x02); in rt2800_init_rfcsr_3572()
6270 rt2800_rfcsr_write(rt2x00dev, 4, 0x4c); in rt2800_init_rfcsr_3572()
6271 rt2800_rfcsr_write(rt2x00dev, 5, 0x05); in rt2800_init_rfcsr_3572()
6272 rt2800_rfcsr_write(rt2x00dev, 6, 0x4a); in rt2800_init_rfcsr_3572()
6273 rt2800_rfcsr_write(rt2x00dev, 7, 0xd8); in rt2800_init_rfcsr_3572()
6274 rt2800_rfcsr_write(rt2x00dev, 9, 0xc3); in rt2800_init_rfcsr_3572()
6275 rt2800_rfcsr_write(rt2x00dev, 10, 0xf1); in rt2800_init_rfcsr_3572()
6276 rt2800_rfcsr_write(rt2x00dev, 11, 0xb9); in rt2800_init_rfcsr_3572()
6277 rt2800_rfcsr_write(rt2x00dev, 12, 0x70); in rt2800_init_rfcsr_3572()
6278 rt2800_rfcsr_write(rt2x00dev, 13, 0x65); in rt2800_init_rfcsr_3572()
6279 rt2800_rfcsr_write(rt2x00dev, 14, 0xa0); in rt2800_init_rfcsr_3572()
6280 rt2800_rfcsr_write(rt2x00dev, 15, 0x53); in rt2800_init_rfcsr_3572()
6281 rt2800_rfcsr_write(rt2x00dev, 16, 0x4c); in rt2800_init_rfcsr_3572()
6282 rt2800_rfcsr_write(rt2x00dev, 17, 0x23); in rt2800_init_rfcsr_3572()
6283 rt2800_rfcsr_write(rt2x00dev, 18, 0xac); in rt2800_init_rfcsr_3572()
6284 rt2800_rfcsr_write(rt2x00dev, 19, 0x93); in rt2800_init_rfcsr_3572()
6285 rt2800_rfcsr_write(rt2x00dev, 20, 0xb3); in rt2800_init_rfcsr_3572()
6286 rt2800_rfcsr_write(rt2x00dev, 21, 0xd0); in rt2800_init_rfcsr_3572()
6287 rt2800_rfcsr_write(rt2x00dev, 22, 0x00); in rt2800_init_rfcsr_3572()
6288 rt2800_rfcsr_write(rt2x00dev, 23, 0x3c); in rt2800_init_rfcsr_3572()
6289 rt2800_rfcsr_write(rt2x00dev, 24, 0x16); in rt2800_init_rfcsr_3572()
6290 rt2800_rfcsr_write(rt2x00dev, 25, 0x15); in rt2800_init_rfcsr_3572()
6291 rt2800_rfcsr_write(rt2x00dev, 26, 0x85); in rt2800_init_rfcsr_3572()
6292 rt2800_rfcsr_write(rt2x00dev, 27, 0x00); in rt2800_init_rfcsr_3572()
6293 rt2800_rfcsr_write(rt2x00dev, 28, 0x00); in rt2800_init_rfcsr_3572()
6294 rt2800_rfcsr_write(rt2x00dev, 29, 0x9b); in rt2800_init_rfcsr_3572()
6295 rt2800_rfcsr_write(rt2x00dev, 30, 0x09); in rt2800_init_rfcsr_3572()
6296 rt2800_rfcsr_write(rt2x00dev, 31, 0x10); in rt2800_init_rfcsr_3572()
6298 rt2800_rfcsr_read(rt2x00dev, 6, &rfcsr); in rt2800_init_rfcsr_3572()
6300 rt2800_rfcsr_write(rt2x00dev, 6, rfcsr); in rt2800_init_rfcsr_3572()
6302 rt2800_register_read(rt2x00dev, LDO_CFG0, ®); in rt2800_init_rfcsr_3572()
6305 rt2800_register_write(rt2x00dev, LDO_CFG0, reg); in rt2800_init_rfcsr_3572()
6307 rt2800_register_read(rt2x00dev, LDO_CFG0, ®); in rt2800_init_rfcsr_3572()
6310 rt2800_register_write(rt2x00dev, LDO_CFG0, reg); in rt2800_init_rfcsr_3572()
6312 rt2800_rx_filter_calibration(rt2x00dev); in rt2800_init_rfcsr_3572()
6313 rt2800_led_open_drain_enable(rt2x00dev); in rt2800_init_rfcsr_3572()
6314 rt2800_normal_mode_setup_3xxx(rt2x00dev); in rt2800_init_rfcsr_3572()
6317 static void rt3593_post_bbp_init(struct rt2x00_dev *rt2x00dev) in rt3593_post_bbp_init() argument
6322 rt2800_bbp_read(rt2x00dev, 105, &bbp); in rt3593_post_bbp_init()
6323 if (rt2x00dev->default_ant.rx_chain_num == 1) in rt3593_post_bbp_init()
6327 rt2800_bbp_write(rt2x00dev, 105, bbp); in rt3593_post_bbp_init()
6329 rt2800_bbp4_mac_if_ctrl(rt2x00dev); in rt3593_post_bbp_init()
6331 rt2800_bbp_write(rt2x00dev, 92, 0x02); in rt3593_post_bbp_init()
6332 rt2800_bbp_write(rt2x00dev, 82, 0x82); in rt3593_post_bbp_init()
6333 rt2800_bbp_write(rt2x00dev, 106, 0x05); in rt3593_post_bbp_init()
6334 rt2800_bbp_write(rt2x00dev, 104, 0x92); in rt3593_post_bbp_init()
6335 rt2800_bbp_write(rt2x00dev, 88, 0x90); in rt3593_post_bbp_init()
6336 rt2800_bbp_write(rt2x00dev, 148, 0xc8); in rt3593_post_bbp_init()
6337 rt2800_bbp_write(rt2x00dev, 47, 0x48); in rt3593_post_bbp_init()
6338 rt2800_bbp_write(rt2x00dev, 120, 0x50); in rt3593_post_bbp_init()
6341 rt2800_bbp_write(rt2x00dev, 163, 0xbd); in rt3593_post_bbp_init()
6343 rt2800_bbp_write(rt2x00dev, 163, 0x9d); in rt3593_post_bbp_init()
6346 rt2800_bbp_write(rt2x00dev, 142, 6); in rt3593_post_bbp_init()
6347 rt2800_bbp_write(rt2x00dev, 143, 160); in rt3593_post_bbp_init()
6348 rt2800_bbp_write(rt2x00dev, 142, 7); in rt3593_post_bbp_init()
6349 rt2800_bbp_write(rt2x00dev, 143, 161); in rt3593_post_bbp_init()
6350 rt2800_bbp_write(rt2x00dev, 142, 8); in rt3593_post_bbp_init()
6351 rt2800_bbp_write(rt2x00dev, 143, 162); in rt3593_post_bbp_init()
6354 rt2800_bbp_write(rt2x00dev, 31, 0x08); in rt3593_post_bbp_init()
6357 rt2800_bbp_write(rt2x00dev, 68, 0x0b); in rt3593_post_bbp_init()
6360 rt2800_bbp_write(rt2x00dev, 105, 0x04); in rt3593_post_bbp_init()
6364 static void rt2800_init_rfcsr_3593(struct rt2x00_dev *rt2x00dev) in rt2800_init_rfcsr_3593() argument
6366 struct rt2800_drv_data *drv_data = rt2x00dev->drv_data; in rt2800_init_rfcsr_3593()
6371 rt2800_register_read(rt2x00dev, GPIO_SWITCH, ®); in rt2800_init_rfcsr_3593()
6374 rt2800_register_write(rt2x00dev, GPIO_SWITCH, reg); in rt2800_init_rfcsr_3593()
6377 rt2800_rfcsr_write(rt2x00dev, 1, 0x03); in rt2800_init_rfcsr_3593()
6378 rt2800_rfcsr_write(rt2x00dev, 3, 0x80); in rt2800_init_rfcsr_3593()
6379 rt2800_rfcsr_write(rt2x00dev, 5, 0x00); in rt2800_init_rfcsr_3593()
6380 rt2800_rfcsr_write(rt2x00dev, 6, 0x40); in rt2800_init_rfcsr_3593()
6381 rt2800_rfcsr_write(rt2x00dev, 8, 0xf1); in rt2800_init_rfcsr_3593()
6382 rt2800_rfcsr_write(rt2x00dev, 9, 0x02); in rt2800_init_rfcsr_3593()
6383 rt2800_rfcsr_write(rt2x00dev, 10, 0xd3); in rt2800_init_rfcsr_3593()
6384 rt2800_rfcsr_write(rt2x00dev, 11, 0x40); in rt2800_init_rfcsr_3593()
6385 rt2800_rfcsr_write(rt2x00dev, 12, 0x4e); in rt2800_init_rfcsr_3593()
6386 rt2800_rfcsr_write(rt2x00dev, 13, 0x12); in rt2800_init_rfcsr_3593()
6387 rt2800_rfcsr_write(rt2x00dev, 18, 0x40); in rt2800_init_rfcsr_3593()
6388 rt2800_rfcsr_write(rt2x00dev, 22, 0x20); in rt2800_init_rfcsr_3593()
6389 rt2800_rfcsr_write(rt2x00dev, 30, 0x10); in rt2800_init_rfcsr_3593()
6390 rt2800_rfcsr_write(rt2x00dev, 31, 0x80); in rt2800_init_rfcsr_3593()
6391 rt2800_rfcsr_write(rt2x00dev, 32, 0x78); in rt2800_init_rfcsr_3593()
6392 rt2800_rfcsr_write(rt2x00dev, 33, 0x3b); in rt2800_init_rfcsr_3593()
6393 rt2800_rfcsr_write(rt2x00dev, 34, 0x3c); in rt2800_init_rfcsr_3593()
6394 rt2800_rfcsr_write(rt2x00dev, 35, 0xe0); in rt2800_init_rfcsr_3593()
6395 rt2800_rfcsr_write(rt2x00dev, 38, 0x86); in rt2800_init_rfcsr_3593()
6396 rt2800_rfcsr_write(rt2x00dev, 39, 0x23); in rt2800_init_rfcsr_3593()
6397 rt2800_rfcsr_write(rt2x00dev, 44, 0xd3); in rt2800_init_rfcsr_3593()
6398 rt2800_rfcsr_write(rt2x00dev, 45, 0xbb); in rt2800_init_rfcsr_3593()
6399 rt2800_rfcsr_write(rt2x00dev, 46, 0x60); in rt2800_init_rfcsr_3593()
6400 rt2800_rfcsr_write(rt2x00dev, 49, 0x8e); in rt2800_init_rfcsr_3593()
6401 rt2800_rfcsr_write(rt2x00dev, 50, 0x86); in rt2800_init_rfcsr_3593()
6402 rt2800_rfcsr_write(rt2x00dev, 51, 0x75); in rt2800_init_rfcsr_3593()
6403 rt2800_rfcsr_write(rt2x00dev, 52, 0x45); in rt2800_init_rfcsr_3593()
6404 rt2800_rfcsr_write(rt2x00dev, 53, 0x18); in rt2800_init_rfcsr_3593()
6405 rt2800_rfcsr_write(rt2x00dev, 54, 0x18); in rt2800_init_rfcsr_3593()
6406 rt2800_rfcsr_write(rt2x00dev, 55, 0x18); in rt2800_init_rfcsr_3593()
6407 rt2800_rfcsr_write(rt2x00dev, 56, 0xdb); in rt2800_init_rfcsr_3593()
6408 rt2800_rfcsr_write(rt2x00dev, 57, 0x6e); in rt2800_init_rfcsr_3593()
6412 rt2800_rfcsr_read(rt2x00dev, 2, &rfcsr); in rt2800_init_rfcsr_3593()
6414 rt2800_rfcsr_write(rt2x00dev, 2, rfcsr); in rt2800_init_rfcsr_3593()
6416 rt2800_adjust_freq_offset(rt2x00dev); in rt2800_init_rfcsr_3593()
6418 rt2800_rfcsr_read(rt2x00dev, 18, &rfcsr); in rt2800_init_rfcsr_3593()
6420 rt2800_rfcsr_write(rt2x00dev, 18, rfcsr); in rt2800_init_rfcsr_3593()
6422 rt2800_register_read(rt2x00dev, LDO_CFG0, ®); in rt2800_init_rfcsr_3593()
6425 rt2800_register_write(rt2x00dev, LDO_CFG0, reg); in rt2800_init_rfcsr_3593()
6427 rt2800_register_read(rt2x00dev, LDO_CFG0, ®); in rt2800_init_rfcsr_3593()
6429 rt2800_register_write(rt2x00dev, LDO_CFG0, reg); in rt2800_init_rfcsr_3593()
6436 rt2800_bbp_read(rt2x00dev, 25, &drv_data->bbp25); in rt2800_init_rfcsr_3593()
6437 rt2800_bbp_read(rt2x00dev, 26, &drv_data->bbp26); in rt2800_init_rfcsr_3593()
6439 rt2800_led_open_drain_enable(rt2x00dev); in rt2800_init_rfcsr_3593()
6440 rt2800_normal_mode_setup_3593(rt2x00dev); in rt2800_init_rfcsr_3593()
6442 rt3593_post_bbp_init(rt2x00dev); in rt2800_init_rfcsr_3593()
6447 static void rt2800_init_rfcsr_5390(struct rt2x00_dev *rt2x00dev) in rt2800_init_rfcsr_5390() argument
6449 rt2800_rf_init_calibration(rt2x00dev, 2); in rt2800_init_rfcsr_5390()
6451 rt2800_rfcsr_write(rt2x00dev, 1, 0x0f); in rt2800_init_rfcsr_5390()
6452 rt2800_rfcsr_write(rt2x00dev, 2, 0x80); in rt2800_init_rfcsr_5390()
6453 rt2800_rfcsr_write(rt2x00dev, 3, 0x88); in rt2800_init_rfcsr_5390()
6454 rt2800_rfcsr_write(rt2x00dev, 5, 0x10); in rt2800_init_rfcsr_5390()
6455 if (rt2x00_rt_rev_gte(rt2x00dev, RT5390, REV_RT5390F)) in rt2800_init_rfcsr_5390()
6456 rt2800_rfcsr_write(rt2x00dev, 6, 0xe0); in rt2800_init_rfcsr_5390()
6458 rt2800_rfcsr_write(rt2x00dev, 6, 0xa0); in rt2800_init_rfcsr_5390()
6459 rt2800_rfcsr_write(rt2x00dev, 7, 0x00); in rt2800_init_rfcsr_5390()
6460 rt2800_rfcsr_write(rt2x00dev, 10, 0x53); in rt2800_init_rfcsr_5390()
6461 rt2800_rfcsr_write(rt2x00dev, 11, 0x4a); in rt2800_init_rfcsr_5390()
6462 rt2800_rfcsr_write(rt2x00dev, 12, 0x46); in rt2800_init_rfcsr_5390()
6463 rt2800_rfcsr_write(rt2x00dev, 13, 0x9f); in rt2800_init_rfcsr_5390()
6464 rt2800_rfcsr_write(rt2x00dev, 14, 0x00); in rt2800_init_rfcsr_5390()
6465 rt2800_rfcsr_write(rt2x00dev, 15, 0x00); in rt2800_init_rfcsr_5390()
6466 rt2800_rfcsr_write(rt2x00dev, 16, 0x00); in rt2800_init_rfcsr_5390()
6467 rt2800_rfcsr_write(rt2x00dev, 18, 0x03); in rt2800_init_rfcsr_5390()
6468 rt2800_rfcsr_write(rt2x00dev, 19, 0x00); in rt2800_init_rfcsr_5390()
6470 rt2800_rfcsr_write(rt2x00dev, 20, 0x00); in rt2800_init_rfcsr_5390()
6471 rt2800_rfcsr_write(rt2x00dev, 21, 0x00); in rt2800_init_rfcsr_5390()
6472 rt2800_rfcsr_write(rt2x00dev, 22, 0x20); in rt2800_init_rfcsr_5390()
6473 rt2800_rfcsr_write(rt2x00dev, 23, 0x00); in rt2800_init_rfcsr_5390()
6474 rt2800_rfcsr_write(rt2x00dev, 24, 0x00); in rt2800_init_rfcsr_5390()
6475 if (rt2x00_is_usb(rt2x00dev) && in rt2800_init_rfcsr_5390()
6476 rt2x00_rt_rev_gte(rt2x00dev, RT5390, REV_RT5390F)) in rt2800_init_rfcsr_5390()
6477 rt2800_rfcsr_write(rt2x00dev, 25, 0x80); in rt2800_init_rfcsr_5390()
6479 rt2800_rfcsr_write(rt2x00dev, 25, 0xc0); in rt2800_init_rfcsr_5390()
6480 rt2800_rfcsr_write(rt2x00dev, 26, 0x00); in rt2800_init_rfcsr_5390()
6481 rt2800_rfcsr_write(rt2x00dev, 27, 0x09); in rt2800_init_rfcsr_5390()
6482 rt2800_rfcsr_write(rt2x00dev, 28, 0x00); in rt2800_init_rfcsr_5390()
6483 rt2800_rfcsr_write(rt2x00dev, 29, 0x10); in rt2800_init_rfcsr_5390()
6485 rt2800_rfcsr_write(rt2x00dev, 30, 0x10); in rt2800_init_rfcsr_5390()
6486 rt2800_rfcsr_write(rt2x00dev, 31, 0x80); in rt2800_init_rfcsr_5390()
6487 rt2800_rfcsr_write(rt2x00dev, 32, 0x80); in rt2800_init_rfcsr_5390()
6488 rt2800_rfcsr_write(rt2x00dev, 33, 0x00); in rt2800_init_rfcsr_5390()
6489 rt2800_rfcsr_write(rt2x00dev, 34, 0x07); in rt2800_init_rfcsr_5390()
6490 rt2800_rfcsr_write(rt2x00dev, 35, 0x12); in rt2800_init_rfcsr_5390()
6491 rt2800_rfcsr_write(rt2x00dev, 36, 0x00); in rt2800_init_rfcsr_5390()
6492 rt2800_rfcsr_write(rt2x00dev, 37, 0x08); in rt2800_init_rfcsr_5390()
6493 rt2800_rfcsr_write(rt2x00dev, 38, 0x85); in rt2800_init_rfcsr_5390()
6494 rt2800_rfcsr_write(rt2x00dev, 39, 0x1b); in rt2800_init_rfcsr_5390()
6496 rt2800_rfcsr_write(rt2x00dev, 40, 0x0b); in rt2800_init_rfcsr_5390()
6497 rt2800_rfcsr_write(rt2x00dev, 41, 0xbb); in rt2800_init_rfcsr_5390()
6498 rt2800_rfcsr_write(rt2x00dev, 42, 0xd2); in rt2800_init_rfcsr_5390()
6499 rt2800_rfcsr_write(rt2x00dev, 43, 0x9a); in rt2800_init_rfcsr_5390()
6500 rt2800_rfcsr_write(rt2x00dev, 44, 0x0e); in rt2800_init_rfcsr_5390()
6501 rt2800_rfcsr_write(rt2x00dev, 45, 0xa2); in rt2800_init_rfcsr_5390()
6502 if (rt2x00_rt_rev_gte(rt2x00dev, RT5390, REV_RT5390F)) in rt2800_init_rfcsr_5390()
6503 rt2800_rfcsr_write(rt2x00dev, 46, 0x73); in rt2800_init_rfcsr_5390()
6505 rt2800_rfcsr_write(rt2x00dev, 46, 0x7b); in rt2800_init_rfcsr_5390()
6506 rt2800_rfcsr_write(rt2x00dev, 47, 0x00); in rt2800_init_rfcsr_5390()
6507 rt2800_rfcsr_write(rt2x00dev, 48, 0x10); in rt2800_init_rfcsr_5390()
6508 rt2800_rfcsr_write(rt2x00dev, 49, 0x94); in rt2800_init_rfcsr_5390()
6510 rt2800_rfcsr_write(rt2x00dev, 52, 0x38); in rt2800_init_rfcsr_5390()
6511 if (rt2x00_rt_rev_gte(rt2x00dev, RT5390, REV_RT5390F)) in rt2800_init_rfcsr_5390()
6512 rt2800_rfcsr_write(rt2x00dev, 53, 0x00); in rt2800_init_rfcsr_5390()
6514 rt2800_rfcsr_write(rt2x00dev, 53, 0x84); in rt2800_init_rfcsr_5390()
6515 rt2800_rfcsr_write(rt2x00dev, 54, 0x78); in rt2800_init_rfcsr_5390()
6516 rt2800_rfcsr_write(rt2x00dev, 55, 0x44); in rt2800_init_rfcsr_5390()
6517 if (rt2x00_rt_rev_gte(rt2x00dev, RT5390, REV_RT5390F)) in rt2800_init_rfcsr_5390()
6518 rt2800_rfcsr_write(rt2x00dev, 56, 0x42); in rt2800_init_rfcsr_5390()
6520 rt2800_rfcsr_write(rt2x00dev, 56, 0x22); in rt2800_init_rfcsr_5390()
6521 rt2800_rfcsr_write(rt2x00dev, 57, 0x80); in rt2800_init_rfcsr_5390()
6522 rt2800_rfcsr_write(rt2x00dev, 58, 0x7f); in rt2800_init_rfcsr_5390()
6523 rt2800_rfcsr_write(rt2x00dev, 59, 0x8f); in rt2800_init_rfcsr_5390()
6525 rt2800_rfcsr_write(rt2x00dev, 60, 0x45); in rt2800_init_rfcsr_5390()
6526 if (rt2x00_rt_rev_gte(rt2x00dev, RT5390, REV_RT5390F)) { in rt2800_init_rfcsr_5390()
6527 if (rt2x00_is_usb(rt2x00dev)) in rt2800_init_rfcsr_5390()
6528 rt2800_rfcsr_write(rt2x00dev, 61, 0xd1); in rt2800_init_rfcsr_5390()
6530 rt2800_rfcsr_write(rt2x00dev, 61, 0xd5); in rt2800_init_rfcsr_5390()
6532 if (rt2x00_is_usb(rt2x00dev)) in rt2800_init_rfcsr_5390()
6533 rt2800_rfcsr_write(rt2x00dev, 61, 0xdd); in rt2800_init_rfcsr_5390()
6535 rt2800_rfcsr_write(rt2x00dev, 61, 0xb5); in rt2800_init_rfcsr_5390()
6537 rt2800_rfcsr_write(rt2x00dev, 62, 0x00); in rt2800_init_rfcsr_5390()
6538 rt2800_rfcsr_write(rt2x00dev, 63, 0x00); in rt2800_init_rfcsr_5390()
6540 rt2800_normal_mode_setup_5xxx(rt2x00dev); in rt2800_init_rfcsr_5390()
6542 rt2800_led_open_drain_enable(rt2x00dev); in rt2800_init_rfcsr_5390()
6545 static void rt2800_init_rfcsr_5392(struct rt2x00_dev *rt2x00dev) in rt2800_init_rfcsr_5392() argument
6547 rt2800_rf_init_calibration(rt2x00dev, 2); in rt2800_init_rfcsr_5392()
6549 rt2800_rfcsr_write(rt2x00dev, 1, 0x17); in rt2800_init_rfcsr_5392()
6550 rt2800_rfcsr_write(rt2x00dev, 3, 0x88); in rt2800_init_rfcsr_5392()
6551 rt2800_rfcsr_write(rt2x00dev, 5, 0x10); in rt2800_init_rfcsr_5392()
6552 rt2800_rfcsr_write(rt2x00dev, 6, 0xe0); in rt2800_init_rfcsr_5392()
6553 rt2800_rfcsr_write(rt2x00dev, 7, 0x00); in rt2800_init_rfcsr_5392()
6554 rt2800_rfcsr_write(rt2x00dev, 10, 0x53); in rt2800_init_rfcsr_5392()
6555 rt2800_rfcsr_write(rt2x00dev, 11, 0x4a); in rt2800_init_rfcsr_5392()
6556 rt2800_rfcsr_write(rt2x00dev, 12, 0x46); in rt2800_init_rfcsr_5392()
6557 rt2800_rfcsr_write(rt2x00dev, 13, 0x9f); in rt2800_init_rfcsr_5392()
6558 rt2800_rfcsr_write(rt2x00dev, 14, 0x00); in rt2800_init_rfcsr_5392()
6559 rt2800_rfcsr_write(rt2x00dev, 15, 0x00); in rt2800_init_rfcsr_5392()
6560 rt2800_rfcsr_write(rt2x00dev, 16, 0x00); in rt2800_init_rfcsr_5392()
6561 rt2800_rfcsr_write(rt2x00dev, 18, 0x03); in rt2800_init_rfcsr_5392()
6562 rt2800_rfcsr_write(rt2x00dev, 19, 0x4d); in rt2800_init_rfcsr_5392()
6563 rt2800_rfcsr_write(rt2x00dev, 20, 0x00); in rt2800_init_rfcsr_5392()
6564 rt2800_rfcsr_write(rt2x00dev, 21, 0x8d); in rt2800_init_rfcsr_5392()
6565 rt2800_rfcsr_write(rt2x00dev, 22, 0x20); in rt2800_init_rfcsr_5392()
6566 rt2800_rfcsr_write(rt2x00dev, 23, 0x0b); in rt2800_init_rfcsr_5392()
6567 rt2800_rfcsr_write(rt2x00dev, 24, 0x44); in rt2800_init_rfcsr_5392()
6568 rt2800_rfcsr_write(rt2x00dev, 25, 0x80); in rt2800_init_rfcsr_5392()
6569 rt2800_rfcsr_write(rt2x00dev, 26, 0x82); in rt2800_init_rfcsr_5392()
6570 rt2800_rfcsr_write(rt2x00dev, 27, 0x09); in rt2800_init_rfcsr_5392()
6571 rt2800_rfcsr_write(rt2x00dev, 28, 0x00); in rt2800_init_rfcsr_5392()
6572 rt2800_rfcsr_write(rt2x00dev, 29, 0x10); in rt2800_init_rfcsr_5392()
6573 rt2800_rfcsr_write(rt2x00dev, 30, 0x10); in rt2800_init_rfcsr_5392()
6574 rt2800_rfcsr_write(rt2x00dev, 31, 0x80); in rt2800_init_rfcsr_5392()
6575 rt2800_rfcsr_write(rt2x00dev, 32, 0x20); in rt2800_init_rfcsr_5392()
6576 rt2800_rfcsr_write(rt2x00dev, 33, 0xC0); in rt2800_init_rfcsr_5392()
6577 rt2800_rfcsr_write(rt2x00dev, 34, 0x07); in rt2800_init_rfcsr_5392()
6578 rt2800_rfcsr_write(rt2x00dev, 35, 0x12); in rt2800_init_rfcsr_5392()
6579 rt2800_rfcsr_write(rt2x00dev, 36, 0x00); in rt2800_init_rfcsr_5392()
6580 rt2800_rfcsr_write(rt2x00dev, 37, 0x08); in rt2800_init_rfcsr_5392()
6581 rt2800_rfcsr_write(rt2x00dev, 38, 0x89); in rt2800_init_rfcsr_5392()
6582 rt2800_rfcsr_write(rt2x00dev, 39, 0x1b); in rt2800_init_rfcsr_5392()
6583 rt2800_rfcsr_write(rt2x00dev, 40, 0x0f); in rt2800_init_rfcsr_5392()
6584 rt2800_rfcsr_write(rt2x00dev, 41, 0xbb); in rt2800_init_rfcsr_5392()
6585 rt2800_rfcsr_write(rt2x00dev, 42, 0xd5); in rt2800_init_rfcsr_5392()
6586 rt2800_rfcsr_write(rt2x00dev, 43, 0x9b); in rt2800_init_rfcsr_5392()
6587 rt2800_rfcsr_write(rt2x00dev, 44, 0x0e); in rt2800_init_rfcsr_5392()
6588 rt2800_rfcsr_write(rt2x00dev, 45, 0xa2); in rt2800_init_rfcsr_5392()
6589 rt2800_rfcsr_write(rt2x00dev, 46, 0x73); in rt2800_init_rfcsr_5392()
6590 rt2800_rfcsr_write(rt2x00dev, 47, 0x0c); in rt2800_init_rfcsr_5392()
6591 rt2800_rfcsr_write(rt2x00dev, 48, 0x10); in rt2800_init_rfcsr_5392()
6592 rt2800_rfcsr_write(rt2x00dev, 49, 0x94); in rt2800_init_rfcsr_5392()
6593 rt2800_rfcsr_write(rt2x00dev, 50, 0x94); in rt2800_init_rfcsr_5392()
6594 rt2800_rfcsr_write(rt2x00dev, 51, 0x3a); in rt2800_init_rfcsr_5392()
6595 rt2800_rfcsr_write(rt2x00dev, 52, 0x48); in rt2800_init_rfcsr_5392()
6596 rt2800_rfcsr_write(rt2x00dev, 53, 0x44); in rt2800_init_rfcsr_5392()
6597 rt2800_rfcsr_write(rt2x00dev, 54, 0x38); in rt2800_init_rfcsr_5392()
6598 rt2800_rfcsr_write(rt2x00dev, 55, 0x43); in rt2800_init_rfcsr_5392()
6599 rt2800_rfcsr_write(rt2x00dev, 56, 0xa1); in rt2800_init_rfcsr_5392()
6600 rt2800_rfcsr_write(rt2x00dev, 57, 0x00); in rt2800_init_rfcsr_5392()
6601 rt2800_rfcsr_write(rt2x00dev, 58, 0x39); in rt2800_init_rfcsr_5392()
6602 rt2800_rfcsr_write(rt2x00dev, 59, 0x07); in rt2800_init_rfcsr_5392()
6603 rt2800_rfcsr_write(rt2x00dev, 60, 0x45); in rt2800_init_rfcsr_5392()
6604 rt2800_rfcsr_write(rt2x00dev, 61, 0x91); in rt2800_init_rfcsr_5392()
6605 rt2800_rfcsr_write(rt2x00dev, 62, 0x39); in rt2800_init_rfcsr_5392()
6606 rt2800_rfcsr_write(rt2x00dev, 63, 0x07); in rt2800_init_rfcsr_5392()
6608 rt2800_normal_mode_setup_5xxx(rt2x00dev); in rt2800_init_rfcsr_5392()
6610 rt2800_led_open_drain_enable(rt2x00dev); in rt2800_init_rfcsr_5392()
6613 static void rt2800_init_rfcsr_5592(struct rt2x00_dev *rt2x00dev) in rt2800_init_rfcsr_5592() argument
6615 rt2800_rf_init_calibration(rt2x00dev, 30); in rt2800_init_rfcsr_5592()
6617 rt2800_rfcsr_write(rt2x00dev, 1, 0x3F); in rt2800_init_rfcsr_5592()
6618 rt2800_rfcsr_write(rt2x00dev, 3, 0x08); in rt2800_init_rfcsr_5592()
6619 rt2800_rfcsr_write(rt2x00dev, 5, 0x10); in rt2800_init_rfcsr_5592()
6620 rt2800_rfcsr_write(rt2x00dev, 6, 0xE4); in rt2800_init_rfcsr_5592()
6621 rt2800_rfcsr_write(rt2x00dev, 7, 0x00); in rt2800_init_rfcsr_5592()
6622 rt2800_rfcsr_write(rt2x00dev, 14, 0x00); in rt2800_init_rfcsr_5592()
6623 rt2800_rfcsr_write(rt2x00dev, 15, 0x00); in rt2800_init_rfcsr_5592()
6624 rt2800_rfcsr_write(rt2x00dev, 16, 0x00); in rt2800_init_rfcsr_5592()
6625 rt2800_rfcsr_write(rt2x00dev, 18, 0x03); in rt2800_init_rfcsr_5592()
6626 rt2800_rfcsr_write(rt2x00dev, 19, 0x4D); in rt2800_init_rfcsr_5592()
6627 rt2800_rfcsr_write(rt2x00dev, 20, 0x10); in rt2800_init_rfcsr_5592()
6628 rt2800_rfcsr_write(rt2x00dev, 21, 0x8D); in rt2800_init_rfcsr_5592()
6629 rt2800_rfcsr_write(rt2x00dev, 26, 0x82); in rt2800_init_rfcsr_5592()
6630 rt2800_rfcsr_write(rt2x00dev, 28, 0x00); in rt2800_init_rfcsr_5592()
6631 rt2800_rfcsr_write(rt2x00dev, 29, 0x10); in rt2800_init_rfcsr_5592()
6632 rt2800_rfcsr_write(rt2x00dev, 33, 0xC0); in rt2800_init_rfcsr_5592()
6633 rt2800_rfcsr_write(rt2x00dev, 34, 0x07); in rt2800_init_rfcsr_5592()
6634 rt2800_rfcsr_write(rt2x00dev, 35, 0x12); in rt2800_init_rfcsr_5592()
6635 rt2800_rfcsr_write(rt2x00dev, 47, 0x0C); in rt2800_init_rfcsr_5592()
6636 rt2800_rfcsr_write(rt2x00dev, 53, 0x22); in rt2800_init_rfcsr_5592()
6637 rt2800_rfcsr_write(rt2x00dev, 63, 0x07); in rt2800_init_rfcsr_5592()
6639 rt2800_rfcsr_write(rt2x00dev, 2, 0x80); in rt2800_init_rfcsr_5592()
6642 rt2800_adjust_freq_offset(rt2x00dev); in rt2800_init_rfcsr_5592()
6645 if (rt2x00_rt_rev_gte(rt2x00dev, RT5592, REV_RT5592C)) in rt2800_init_rfcsr_5592()
6646 rt2800_bbp_write(rt2x00dev, 103, 0xc0); in rt2800_init_rfcsr_5592()
6648 rt2800_normal_mode_setup_5xxx(rt2x00dev); in rt2800_init_rfcsr_5592()
6650 if (rt2x00_rt_rev_lt(rt2x00dev, RT5592, REV_RT5592C)) in rt2800_init_rfcsr_5592()
6651 rt2800_rfcsr_write(rt2x00dev, 27, 0x03); in rt2800_init_rfcsr_5592()
6653 rt2800_led_open_drain_enable(rt2x00dev); in rt2800_init_rfcsr_5592()
6656 static void rt2800_init_rfcsr(struct rt2x00_dev *rt2x00dev) in rt2800_init_rfcsr() argument
6658 if (rt2800_is_305x_soc(rt2x00dev)) { in rt2800_init_rfcsr()
6659 rt2800_init_rfcsr_305x_soc(rt2x00dev); in rt2800_init_rfcsr()
6663 switch (rt2x00dev->chip.rt) { in rt2800_init_rfcsr()
6667 rt2800_init_rfcsr_30xx(rt2x00dev); in rt2800_init_rfcsr()
6670 rt2800_init_rfcsr_3290(rt2x00dev); in rt2800_init_rfcsr()
6673 rt2800_init_rfcsr_3352(rt2x00dev); in rt2800_init_rfcsr()
6676 rt2800_init_rfcsr_3390(rt2x00dev); in rt2800_init_rfcsr()
6679 rt2800_init_rfcsr_3572(rt2x00dev); in rt2800_init_rfcsr()
6682 rt2800_init_rfcsr_3593(rt2x00dev); in rt2800_init_rfcsr()
6685 rt2800_init_rfcsr_5390(rt2x00dev); in rt2800_init_rfcsr()
6688 rt2800_init_rfcsr_5392(rt2x00dev); in rt2800_init_rfcsr()
6691 rt2800_init_rfcsr_5592(rt2x00dev); in rt2800_init_rfcsr()
6696 int rt2800_enable_radio(struct rt2x00_dev *rt2x00dev) in rt2800_enable_radio() argument
6704 if (unlikely(rt2800_wait_wpdma_ready(rt2x00dev) || in rt2800_enable_radio()
6705 rt2800_init_registers(rt2x00dev))) in rt2800_enable_radio()
6711 if (unlikely(rt2800_wait_bbp_rf_ready(rt2x00dev))) in rt2800_enable_radio()
6717 rt2800_register_write(rt2x00dev, H2M_BBP_AGENT, 0); in rt2800_enable_radio()
6718 rt2800_register_write(rt2x00dev, H2M_MAILBOX_CSR, 0); in rt2800_enable_radio()
6719 if (rt2x00_is_usb(rt2x00dev)) in rt2800_enable_radio()
6720 rt2800_register_write(rt2x00dev, H2M_INT_SRC, 0); in rt2800_enable_radio()
6721 rt2800_mcu_request(rt2x00dev, MCU_BOOT_SIGNAL, 0, 0, 0); in rt2800_enable_radio()
6727 if (unlikely(rt2800_wait_bbp_ready(rt2x00dev))) in rt2800_enable_radio()
6733 rt2800_init_bbp(rt2x00dev); in rt2800_enable_radio()
6734 rt2800_init_rfcsr(rt2x00dev); in rt2800_enable_radio()
6736 if (rt2x00_is_usb(rt2x00dev) && in rt2800_enable_radio()
6737 (rt2x00_rt(rt2x00dev, RT3070) || in rt2800_enable_radio()
6738 rt2x00_rt(rt2x00dev, RT3071) || in rt2800_enable_radio()
6739 rt2x00_rt(rt2x00dev, RT3572))) { in rt2800_enable_radio()
6741 rt2800_mcu_request(rt2x00dev, MCU_CURRENT, 0, 0, 0); in rt2800_enable_radio()
6748 rt2800_register_read(rt2x00dev, MAC_SYS_CTRL, ®); in rt2800_enable_radio()
6751 rt2800_register_write(rt2x00dev, MAC_SYS_CTRL, reg); in rt2800_enable_radio()
6755 rt2800_register_read(rt2x00dev, WPDMA_GLO_CFG, ®); in rt2800_enable_radio()
6760 rt2800_register_write(rt2x00dev, WPDMA_GLO_CFG, reg); in rt2800_enable_radio()
6762 rt2800_register_read(rt2x00dev, MAC_SYS_CTRL, ®); in rt2800_enable_radio()
6765 rt2800_register_write(rt2x00dev, MAC_SYS_CTRL, reg); in rt2800_enable_radio()
6770 rt2800_eeprom_read(rt2x00dev, EEPROM_LED_AG_CONF, &word); in rt2800_enable_radio()
6771 rt2800_mcu_request(rt2x00dev, MCU_LED_AG_CONF, 0xff, in rt2800_enable_radio()
6774 rt2800_eeprom_read(rt2x00dev, EEPROM_LED_ACT_CONF, &word); in rt2800_enable_radio()
6775 rt2800_mcu_request(rt2x00dev, MCU_LED_ACT_CONF, 0xff, in rt2800_enable_radio()
6778 rt2800_eeprom_read(rt2x00dev, EEPROM_LED_POLARITY, &word); in rt2800_enable_radio()
6779 rt2800_mcu_request(rt2x00dev, MCU_LED_LED_POLARITY, 0xff, in rt2800_enable_radio()
6786 void rt2800_disable_radio(struct rt2x00_dev *rt2x00dev) in rt2800_disable_radio() argument
6790 rt2800_disable_wpdma(rt2x00dev); in rt2800_disable_radio()
6793 rt2800_wait_wpdma_ready(rt2x00dev); in rt2800_disable_radio()
6795 rt2800_register_read(rt2x00dev, MAC_SYS_CTRL, ®); in rt2800_disable_radio()
6798 rt2800_register_write(rt2x00dev, MAC_SYS_CTRL, reg); in rt2800_disable_radio()
6802 int rt2800_efuse_detect(struct rt2x00_dev *rt2x00dev) in rt2800_efuse_detect() argument
6807 if (rt2x00_rt(rt2x00dev, RT3290)) in rt2800_efuse_detect()
6812 rt2800_register_read(rt2x00dev, efuse_ctrl_reg, ®); in rt2800_efuse_detect()
6817 static void rt2800_efuse_read(struct rt2x00_dev *rt2x00dev, unsigned int i) in rt2800_efuse_read() argument
6826 if (rt2x00_rt(rt2x00dev, RT3290)) { in rt2800_efuse_read()
6839 mutex_lock(&rt2x00dev->csr_mutex); in rt2800_efuse_read()
6841 rt2800_register_read_lock(rt2x00dev, efuse_ctrl_reg, ®); in rt2800_efuse_read()
6845 rt2800_register_write_lock(rt2x00dev, efuse_ctrl_reg, reg); in rt2800_efuse_read()
6848 rt2800_regbusy_read(rt2x00dev, efuse_ctrl_reg, EFUSE_CTRL_KICK, ®); in rt2800_efuse_read()
6850 rt2800_register_read_lock(rt2x00dev, efuse_data3_reg, ®); in rt2800_efuse_read()
6852 *(u32 *)&rt2x00dev->eeprom[i] = cpu_to_le32(reg); in rt2800_efuse_read()
6853 rt2800_register_read_lock(rt2x00dev, efuse_data2_reg, ®); in rt2800_efuse_read()
6854 *(u32 *)&rt2x00dev->eeprom[i + 2] = cpu_to_le32(reg); in rt2800_efuse_read()
6855 rt2800_register_read_lock(rt2x00dev, efuse_data1_reg, ®); in rt2800_efuse_read()
6856 *(u32 *)&rt2x00dev->eeprom[i + 4] = cpu_to_le32(reg); in rt2800_efuse_read()
6857 rt2800_register_read_lock(rt2x00dev, efuse_data0_reg, ®); in rt2800_efuse_read()
6858 *(u32 *)&rt2x00dev->eeprom[i + 6] = cpu_to_le32(reg); in rt2800_efuse_read()
6860 mutex_unlock(&rt2x00dev->csr_mutex); in rt2800_efuse_read()
6863 int rt2800_read_eeprom_efuse(struct rt2x00_dev *rt2x00dev) in rt2800_read_eeprom_efuse() argument
6868 rt2800_efuse_read(rt2x00dev, i); in rt2800_read_eeprom_efuse()
6874 static u8 rt2800_get_txmixer_gain_24g(struct rt2x00_dev *rt2x00dev) in rt2800_get_txmixer_gain_24g() argument
6878 if (rt2x00_rt(rt2x00dev, RT3593)) in rt2800_get_txmixer_gain_24g()
6881 rt2800_eeprom_read(rt2x00dev, EEPROM_TXMIXER_GAIN_BG, &word); in rt2800_get_txmixer_gain_24g()
6888 static u8 rt2800_get_txmixer_gain_5g(struct rt2x00_dev *rt2x00dev) in rt2800_get_txmixer_gain_5g() argument
6892 if (rt2x00_rt(rt2x00dev, RT3593)) in rt2800_get_txmixer_gain_5g()
6895 rt2800_eeprom_read(rt2x00dev, EEPROM_TXMIXER_GAIN_A, &word); in rt2800_get_txmixer_gain_5g()
6902 static int rt2800_validate_eeprom(struct rt2x00_dev *rt2x00dev) in rt2800_validate_eeprom() argument
6904 struct rt2800_drv_data *drv_data = rt2x00dev->drv_data; in rt2800_validate_eeprom()
6913 retval = rt2800_read_eeprom(rt2x00dev); in rt2800_validate_eeprom()
6920 mac = rt2800_eeprom_addr(rt2x00dev, EEPROM_MAC_ADDR_0); in rt2800_validate_eeprom()
6923 rt2x00_eeprom_dbg(rt2x00dev, "MAC: %pM\n", mac); in rt2800_validate_eeprom()
6926 rt2800_eeprom_read(rt2x00dev, EEPROM_NIC_CONF0, &word); in rt2800_validate_eeprom()
6931 rt2800_eeprom_write(rt2x00dev, EEPROM_NIC_CONF0, word); in rt2800_validate_eeprom()
6932 rt2x00_eeprom_dbg(rt2x00dev, "Antenna: 0x%04x\n", word); in rt2800_validate_eeprom()
6933 } else if (rt2x00_rt(rt2x00dev, RT2860) || in rt2800_validate_eeprom()
6934 rt2x00_rt(rt2x00dev, RT2872)) { in rt2800_validate_eeprom()
6940 rt2800_eeprom_write(rt2x00dev, EEPROM_NIC_CONF0, word); in rt2800_validate_eeprom()
6943 rt2800_eeprom_read(rt2x00dev, EEPROM_NIC_CONF1, &word); in rt2800_validate_eeprom()
6960 rt2800_eeprom_write(rt2x00dev, EEPROM_NIC_CONF1, word); in rt2800_validate_eeprom()
6961 rt2x00_eeprom_dbg(rt2x00dev, "NIC: 0x%04x\n", word); in rt2800_validate_eeprom()
6964 rt2800_eeprom_read(rt2x00dev, EEPROM_FREQ, &word); in rt2800_validate_eeprom()
6967 rt2800_eeprom_write(rt2x00dev, EEPROM_FREQ, word); in rt2800_validate_eeprom()
6968 rt2x00_eeprom_dbg(rt2x00dev, "Freq: 0x%04x\n", word); in rt2800_validate_eeprom()
6974 rt2800_eeprom_write(rt2x00dev, EEPROM_FREQ, word); in rt2800_validate_eeprom()
6975 rt2800_eeprom_write(rt2x00dev, EEPROM_LED_AG_CONF, 0x5555); in rt2800_validate_eeprom()
6976 rt2800_eeprom_write(rt2x00dev, EEPROM_LED_ACT_CONF, 0x2221); in rt2800_validate_eeprom()
6977 rt2800_eeprom_write(rt2x00dev, EEPROM_LED_POLARITY, 0xa9f8); in rt2800_validate_eeprom()
6978 rt2x00_eeprom_dbg(rt2x00dev, "Led Mode: 0x%04x\n", word); in rt2800_validate_eeprom()
6986 rt2800_eeprom_read(rt2x00dev, EEPROM_LNA, &word); in rt2800_validate_eeprom()
6989 rt2800_eeprom_read(rt2x00dev, EEPROM_RSSI_BG, &word); in rt2800_validate_eeprom()
6994 rt2800_eeprom_write(rt2x00dev, EEPROM_RSSI_BG, word); in rt2800_validate_eeprom()
6996 drv_data->txmixer_gain_24g = rt2800_get_txmixer_gain_24g(rt2x00dev); in rt2800_validate_eeprom()
6998 rt2800_eeprom_read(rt2x00dev, EEPROM_RSSI_BG2, &word); in rt2800_validate_eeprom()
7001 if (!rt2x00_rt(rt2x00dev, RT3593)) { in rt2800_validate_eeprom()
7007 rt2800_eeprom_write(rt2x00dev, EEPROM_RSSI_BG2, word); in rt2800_validate_eeprom()
7009 drv_data->txmixer_gain_5g = rt2800_get_txmixer_gain_5g(rt2x00dev); in rt2800_validate_eeprom()
7011 rt2800_eeprom_read(rt2x00dev, EEPROM_RSSI_A, &word); in rt2800_validate_eeprom()
7016 rt2800_eeprom_write(rt2x00dev, EEPROM_RSSI_A, word); in rt2800_validate_eeprom()
7018 rt2800_eeprom_read(rt2x00dev, EEPROM_RSSI_A2, &word); in rt2800_validate_eeprom()
7021 if (!rt2x00_rt(rt2x00dev, RT3593)) { in rt2800_validate_eeprom()
7027 rt2800_eeprom_write(rt2x00dev, EEPROM_RSSI_A2, word); in rt2800_validate_eeprom()
7029 if (rt2x00_rt(rt2x00dev, RT3593)) { in rt2800_validate_eeprom()
7030 rt2800_eeprom_read(rt2x00dev, EEPROM_EXT_LNA2, &word); in rt2800_validate_eeprom()
7039 rt2800_eeprom_write(rt2x00dev, EEPROM_EXT_LNA2, word); in rt2800_validate_eeprom()
7045 static int rt2800_init_eeprom(struct rt2x00_dev *rt2x00dev) in rt2800_init_eeprom() argument
7054 rt2800_eeprom_read(rt2x00dev, EEPROM_NIC_CONF0, &eeprom); in rt2800_init_eeprom()
7061 if (rt2x00_rt(rt2x00dev, RT3290) || in rt2800_init_eeprom()
7062 rt2x00_rt(rt2x00dev, RT5390) || in rt2800_init_eeprom()
7063 rt2x00_rt(rt2x00dev, RT5392)) in rt2800_init_eeprom()
7064 rt2800_eeprom_read(rt2x00dev, EEPROM_CHIP_ID, &rf); in rt2800_init_eeprom()
7092 rt2x00_err(rt2x00dev, "Invalid RF chipset 0x%04x detected\n", in rt2800_init_eeprom()
7097 rt2x00_set_rf(rt2x00dev, rf); in rt2800_init_eeprom()
7102 rt2x00dev->default_ant.tx_chain_num = in rt2800_init_eeprom()
7104 rt2x00dev->default_ant.rx_chain_num = in rt2800_init_eeprom()
7107 rt2800_eeprom_read(rt2x00dev, EEPROM_NIC_CONF1, &eeprom); in rt2800_init_eeprom()
7109 if (rt2x00_rt(rt2x00dev, RT3070) || in rt2800_init_eeprom()
7110 rt2x00_rt(rt2x00dev, RT3090) || in rt2800_init_eeprom()
7111 rt2x00_rt(rt2x00dev, RT3352) || in rt2800_init_eeprom()
7112 rt2x00_rt(rt2x00dev, RT3390)) { in rt2800_init_eeprom()
7119 rt2x00dev->default_ant.tx = ANTENNA_A; in rt2800_init_eeprom()
7120 rt2x00dev->default_ant.rx = ANTENNA_A; in rt2800_init_eeprom()
7123 rt2x00dev->default_ant.tx = ANTENNA_A; in rt2800_init_eeprom()
7124 rt2x00dev->default_ant.rx = ANTENNA_B; in rt2800_init_eeprom()
7128 rt2x00dev->default_ant.tx = ANTENNA_A; in rt2800_init_eeprom()
7129 rt2x00dev->default_ant.rx = ANTENNA_A; in rt2800_init_eeprom()
7132 if (rt2x00_rt_rev_gte(rt2x00dev, RT5390, REV_RT5390R)) { in rt2800_init_eeprom()
7133 rt2x00dev->default_ant.tx = ANTENNA_HW_DIVERSITY; /* Unused */ in rt2800_init_eeprom()
7134 rt2x00dev->default_ant.rx = ANTENNA_HW_DIVERSITY; /* Unused */ in rt2800_init_eeprom()
7141 __set_bit(CAPABILITY_EXTERNAL_LNA_A, &rt2x00dev->cap_flags); in rt2800_init_eeprom()
7143 __set_bit(CAPABILITY_EXTERNAL_LNA_BG, &rt2x00dev->cap_flags); in rt2800_init_eeprom()
7149 __set_bit(CAPABILITY_HW_BUTTON, &rt2x00dev->cap_flags); in rt2800_init_eeprom()
7155 __set_bit(CAPABILITY_BT_COEXIST, &rt2x00dev->cap_flags); in rt2800_init_eeprom()
7160 rt2800_eeprom_read(rt2x00dev, EEPROM_FREQ, &eeprom); in rt2800_init_eeprom()
7161 rt2x00dev->freq_offset = rt2x00_get_field16(eeprom, EEPROM_FREQ_OFFSET); in rt2800_init_eeprom()
7167 rt2800_init_led(rt2x00dev, &rt2x00dev->led_radio, LED_TYPE_RADIO); in rt2800_init_eeprom()
7168 rt2800_init_led(rt2x00dev, &rt2x00dev->led_assoc, LED_TYPE_ASSOC); in rt2800_init_eeprom()
7169 rt2800_init_led(rt2x00dev, &rt2x00dev->led_qual, LED_TYPE_QUALITY); in rt2800_init_eeprom()
7171 rt2x00dev->led_mcu_reg = eeprom; in rt2800_init_eeprom()
7177 rt2800_eeprom_read(rt2x00dev, EEPROM_EIRP_MAX_TX_POWER, &eeprom); in rt2800_init_eeprom()
7181 __set_bit(CAPABILITY_POWER_LIMIT, &rt2x00dev->cap_flags); in rt2800_init_eeprom()
7459 static int rt2800_probe_hw_mode(struct rt2x00_dev *rt2x00dev) in rt2800_probe_hw_mode() argument
7461 struct hw_mode_spec *spec = &rt2x00dev->spec; in rt2800_probe_hw_mode()
7472 rt2x00dev->hw->wiphy->flags &= ~WIPHY_FLAG_PS_ON_BY_DEFAULT; in rt2800_probe_hw_mode()
7477 ieee80211_hw_set(rt2x00dev->hw, SUPPORTS_HT_CCK_RATES); in rt2800_probe_hw_mode()
7478 ieee80211_hw_set(rt2x00dev->hw, REPORTS_TX_ACK_STATUS); in rt2800_probe_hw_mode()
7479 ieee80211_hw_set(rt2x00dev->hw, AMPDU_AGGREGATION); in rt2800_probe_hw_mode()
7480 ieee80211_hw_set(rt2x00dev->hw, PS_NULLFUNC_STACK); in rt2800_probe_hw_mode()
7481 ieee80211_hw_set(rt2x00dev->hw, SIGNAL_DBM); in rt2800_probe_hw_mode()
7482 ieee80211_hw_set(rt2x00dev->hw, SUPPORTS_PS); in rt2800_probe_hw_mode()
7491 if (!rt2x00_is_usb(rt2x00dev)) in rt2800_probe_hw_mode()
7492 ieee80211_hw_set(rt2x00dev->hw, HOST_BROADCAST_PS_BUFFERING); in rt2800_probe_hw_mode()
7494 SET_IEEE80211_DEV(rt2x00dev->hw, rt2x00dev->dev); in rt2800_probe_hw_mode()
7495 SET_IEEE80211_PERM_ADDR(rt2x00dev->hw, in rt2800_probe_hw_mode()
7496 rt2800_eeprom_addr(rt2x00dev, in rt2800_probe_hw_mode()
7508 rt2x00dev->hw->max_rates = 1; in rt2800_probe_hw_mode()
7509 rt2x00dev->hw->max_report_rates = 7; in rt2800_probe_hw_mode()
7510 rt2x00dev->hw->max_rate_tries = 1; in rt2800_probe_hw_mode()
7517 switch (rt2x00dev->chip.rf) { in rt2800_probe_hw_mode()
7555 rt2800_register_read(rt2x00dev, MAC_DEBUG_INDEX, ®); in rt2800_probe_hw_mode()
7576 if (!rt2x00_rf(rt2x00dev, RF2020)) in rt2800_probe_hw_mode()
7587 if (rt2x00dev->default_ant.tx_chain_num >= 2) in rt2800_probe_hw_mode()
7590 spec->ht.cap |= rt2x00dev->default_ant.rx_chain_num << in rt2800_probe_hw_mode()
7598 ((rt2x00dev->default_ant.tx_chain_num - 1) << in rt2800_probe_hw_mode()
7601 switch (rt2x00dev->default_ant.rx_chain_num) { in rt2800_probe_hw_mode()
7621 default_power1 = rt2800_eeprom_addr(rt2x00dev, EEPROM_TXPOWER_BG1); in rt2800_probe_hw_mode()
7622 default_power2 = rt2800_eeprom_addr(rt2x00dev, EEPROM_TXPOWER_BG2); in rt2800_probe_hw_mode()
7624 if (rt2x00dev->default_ant.tx_chain_num > 2) in rt2800_probe_hw_mode()
7625 default_power3 = rt2800_eeprom_addr(rt2x00dev, in rt2800_probe_hw_mode()
7638 default_power1 = rt2800_eeprom_addr(rt2x00dev, in rt2800_probe_hw_mode()
7640 default_power2 = rt2800_eeprom_addr(rt2x00dev, in rt2800_probe_hw_mode()
7643 if (rt2x00dev->default_ant.tx_chain_num > 2) in rt2800_probe_hw_mode()
7645 rt2800_eeprom_addr(rt2x00dev, in rt2800_probe_hw_mode()
7658 switch (rt2x00dev->chip.rf) { in rt2800_probe_hw_mode()
7674 __set_bit(CAPABILITY_VCO_RECALIBRATION, &rt2x00dev->cap_flags); in rt2800_probe_hw_mode()
7681 static int rt2800_probe_rt(struct rt2x00_dev *rt2x00dev) in rt2800_probe_rt() argument
7687 if (rt2x00_rt(rt2x00dev, RT3290)) in rt2800_probe_rt()
7688 rt2800_register_read(rt2x00dev, MAC_CSR0_3290, ®); in rt2800_probe_rt()
7690 rt2800_register_read(rt2x00dev, MAC_CSR0, ®); in rt2800_probe_rt()
7712 rt2x00_err(rt2x00dev, "Invalid RT chipset 0x%04x, rev %04x detected\n", in rt2800_probe_rt()
7717 rt2x00_set_rt(rt2x00dev, rt, rev); in rt2800_probe_rt()
7722 int rt2800_probe_hw(struct rt2x00_dev *rt2x00dev) in rt2800_probe_hw() argument
7727 retval = rt2800_probe_rt(rt2x00dev); in rt2800_probe_hw()
7734 retval = rt2800_validate_eeprom(rt2x00dev); in rt2800_probe_hw()
7738 retval = rt2800_init_eeprom(rt2x00dev); in rt2800_probe_hw()
7746 rt2800_register_read(rt2x00dev, GPIO_CTRL, ®); in rt2800_probe_hw()
7748 rt2800_register_write(rt2x00dev, GPIO_CTRL, reg); in rt2800_probe_hw()
7753 retval = rt2800_probe_hw_mode(rt2x00dev); in rt2800_probe_hw()
7760 __set_bit(CAPABILITY_CONTROL_FILTERS, &rt2x00dev->cap_flags); in rt2800_probe_hw()
7761 __set_bit(CAPABILITY_CONTROL_FILTER_PSPOLL, &rt2x00dev->cap_flags); in rt2800_probe_hw()
7762 if (!rt2x00_is_usb(rt2x00dev)) in rt2800_probe_hw()
7763 __set_bit(CAPABILITY_PRE_TBTT_INTERRUPT, &rt2x00dev->cap_flags); in rt2800_probe_hw()
7768 if (!rt2x00_is_soc(rt2x00dev)) in rt2800_probe_hw()
7769 __set_bit(REQUIRE_FIRMWARE, &rt2x00dev->cap_flags); in rt2800_probe_hw()
7770 __set_bit(REQUIRE_L2PAD, &rt2x00dev->cap_flags); in rt2800_probe_hw()
7771 __set_bit(REQUIRE_TXSTATUS_FIFO, &rt2x00dev->cap_flags); in rt2800_probe_hw()
7772 if (!rt2800_hwcrypt_disabled(rt2x00dev)) in rt2800_probe_hw()
7773 __set_bit(CAPABILITY_HW_CRYPTO, &rt2x00dev->cap_flags); in rt2800_probe_hw()
7774 __set_bit(CAPABILITY_LINK_TUNING, &rt2x00dev->cap_flags); in rt2800_probe_hw()
7775 __set_bit(REQUIRE_HT_TX_DESC, &rt2x00dev->cap_flags); in rt2800_probe_hw()
7776 if (rt2x00_is_usb(rt2x00dev)) in rt2800_probe_hw()
7777 __set_bit(REQUIRE_PS_AUTOWAKE, &rt2x00dev->cap_flags); in rt2800_probe_hw()
7779 __set_bit(REQUIRE_DMA, &rt2x00dev->cap_flags); in rt2800_probe_hw()
7780 __set_bit(REQUIRE_TASKLET_CONTEXT, &rt2x00dev->cap_flags); in rt2800_probe_hw()
7786 rt2x00dev->rssi_offset = DEFAULT_RSSI_OFFSET; in rt2800_probe_hw()
7799 struct rt2x00_dev *rt2x00dev = hw->priv; in rt2800_get_key_seq() local
7807 rt2800_register_multiread(rt2x00dev, offset, in rt2800_get_key_seq()
7817 struct rt2x00_dev *rt2x00dev = hw->priv; in rt2800_set_rts_threshold() local
7821 rt2800_register_read(rt2x00dev, TX_RTS_CFG, ®); in rt2800_set_rts_threshold()
7823 rt2800_register_write(rt2x00dev, TX_RTS_CFG, reg); in rt2800_set_rts_threshold()
7825 rt2800_register_read(rt2x00dev, CCK_PROT_CFG, ®); in rt2800_set_rts_threshold()
7827 rt2800_register_write(rt2x00dev, CCK_PROT_CFG, reg); in rt2800_set_rts_threshold()
7829 rt2800_register_read(rt2x00dev, OFDM_PROT_CFG, ®); in rt2800_set_rts_threshold()
7831 rt2800_register_write(rt2x00dev, OFDM_PROT_CFG, reg); in rt2800_set_rts_threshold()
7833 rt2800_register_read(rt2x00dev, MM20_PROT_CFG, ®); in rt2800_set_rts_threshold()
7835 rt2800_register_write(rt2x00dev, MM20_PROT_CFG, reg); in rt2800_set_rts_threshold()
7837 rt2800_register_read(rt2x00dev, MM40_PROT_CFG, ®); in rt2800_set_rts_threshold()
7839 rt2800_register_write(rt2x00dev, MM40_PROT_CFG, reg); in rt2800_set_rts_threshold()
7841 rt2800_register_read(rt2x00dev, GF20_PROT_CFG, ®); in rt2800_set_rts_threshold()
7843 rt2800_register_write(rt2x00dev, GF20_PROT_CFG, reg); in rt2800_set_rts_threshold()
7845 rt2800_register_read(rt2x00dev, GF40_PROT_CFG, ®); in rt2800_set_rts_threshold()
7847 rt2800_register_write(rt2x00dev, GF40_PROT_CFG, reg); in rt2800_set_rts_threshold()
7857 struct rt2x00_dev *rt2x00dev = hw->priv; in rt2800_conf_tx() local
7881 queue = rt2x00queue_get_tx_queue(rt2x00dev, queue_idx); in rt2800_conf_tx()
7888 rt2800_register_read(rt2x00dev, offset, ®); in rt2800_conf_tx()
7890 rt2800_register_write(rt2x00dev, offset, reg); in rt2800_conf_tx()
7896 rt2800_register_read(rt2x00dev, WMM_AIFSN_CFG, ®); in rt2800_conf_tx()
7898 rt2800_register_write(rt2x00dev, WMM_AIFSN_CFG, reg); in rt2800_conf_tx()
7900 rt2800_register_read(rt2x00dev, WMM_CWMIN_CFG, ®); in rt2800_conf_tx()
7902 rt2800_register_write(rt2x00dev, WMM_CWMIN_CFG, reg); in rt2800_conf_tx()
7904 rt2800_register_read(rt2x00dev, WMM_CWMAX_CFG, ®); in rt2800_conf_tx()
7906 rt2800_register_write(rt2x00dev, WMM_CWMAX_CFG, reg); in rt2800_conf_tx()
7911 rt2800_register_read(rt2x00dev, offset, ®); in rt2800_conf_tx()
7916 rt2800_register_write(rt2x00dev, offset, reg); in rt2800_conf_tx()
7924 struct rt2x00_dev *rt2x00dev = hw->priv; in rt2800_get_tsf() local
7928 rt2800_register_read(rt2x00dev, TSF_TIMER_DW1, ®); in rt2800_get_tsf()
7930 rt2800_register_read(rt2x00dev, TSF_TIMER_DW0, ®); in rt2800_get_tsf()
7987 struct rt2x00_dev *rt2x00dev = hw->priv; in rt2800_get_survey() local
7996 rt2800_register_read(rt2x00dev, CH_IDLE_STA, &idle); in rt2800_get_survey()
7997 rt2800_register_read(rt2x00dev, CH_BUSY_STA, &busy); in rt2800_get_survey()
7998 rt2800_register_read(rt2x00dev, CH_BUSY_STA_SEC, &busy_ext); in rt2800_get_survey()