Lines Matching refs:rt2x00dev

58 static inline void rt2500usb_register_read(struct rt2x00_dev *rt2x00dev,  in rt2500usb_register_read()  argument
63 rt2x00usb_vendor_request_buff(rt2x00dev, USB_MULTI_READ, in rt2500usb_register_read()
69 static inline void rt2500usb_register_read_lock(struct rt2x00_dev *rt2x00dev, in rt2500usb_register_read_lock() argument
74 rt2x00usb_vendor_req_buff_lock(rt2x00dev, USB_MULTI_READ, in rt2500usb_register_read_lock()
80 static inline void rt2500usb_register_multiread(struct rt2x00_dev *rt2x00dev, in rt2500usb_register_multiread() argument
84 rt2x00usb_vendor_request_buff(rt2x00dev, USB_MULTI_READ, in rt2500usb_register_multiread()
89 static inline void rt2500usb_register_write(struct rt2x00_dev *rt2x00dev, in rt2500usb_register_write() argument
94 rt2x00usb_vendor_request_buff(rt2x00dev, USB_MULTI_WRITE, in rt2500usb_register_write()
99 static inline void rt2500usb_register_write_lock(struct rt2x00_dev *rt2x00dev, in rt2500usb_register_write_lock() argument
104 rt2x00usb_vendor_req_buff_lock(rt2x00dev, USB_MULTI_WRITE, in rt2500usb_register_write_lock()
109 static inline void rt2500usb_register_multiwrite(struct rt2x00_dev *rt2x00dev, in rt2500usb_register_multiwrite() argument
113 rt2x00usb_vendor_request_buff(rt2x00dev, USB_MULTI_WRITE, in rt2500usb_register_multiwrite()
118 static int rt2500usb_regbusy_read(struct rt2x00_dev *rt2x00dev, in rt2500usb_regbusy_read() argument
126 rt2500usb_register_read_lock(rt2x00dev, offset, reg); in rt2500usb_regbusy_read()
132 rt2x00_err(rt2x00dev, "Indirect register access failed: offset=0x%.08x, value=0x%.08x\n", in rt2500usb_regbusy_read()
144 static void rt2500usb_bbp_write(struct rt2x00_dev *rt2x00dev, in rt2500usb_bbp_write() argument
149 mutex_lock(&rt2x00dev->csr_mutex); in rt2500usb_bbp_write()
155 if (WAIT_FOR_BBP(rt2x00dev, &reg)) { in rt2500usb_bbp_write()
161 rt2500usb_register_write_lock(rt2x00dev, PHY_CSR7, reg); in rt2500usb_bbp_write()
164 mutex_unlock(&rt2x00dev->csr_mutex); in rt2500usb_bbp_write()
167 static void rt2500usb_bbp_read(struct rt2x00_dev *rt2x00dev, in rt2500usb_bbp_read() argument
172 mutex_lock(&rt2x00dev->csr_mutex); in rt2500usb_bbp_read()
182 if (WAIT_FOR_BBP(rt2x00dev, &reg)) { in rt2500usb_bbp_read()
187 rt2500usb_register_write_lock(rt2x00dev, PHY_CSR7, reg); in rt2500usb_bbp_read()
189 if (WAIT_FOR_BBP(rt2x00dev, &reg)) in rt2500usb_bbp_read()
190 rt2500usb_register_read_lock(rt2x00dev, PHY_CSR7, &reg); in rt2500usb_bbp_read()
195 mutex_unlock(&rt2x00dev->csr_mutex); in rt2500usb_bbp_read()
198 static void rt2500usb_rf_write(struct rt2x00_dev *rt2x00dev, in rt2500usb_rf_write() argument
203 mutex_lock(&rt2x00dev->csr_mutex); in rt2500usb_rf_write()
209 if (WAIT_FOR_RF(rt2x00dev, &reg)) { in rt2500usb_rf_write()
212 rt2500usb_register_write_lock(rt2x00dev, PHY_CSR9, reg); in rt2500usb_rf_write()
220 rt2500usb_register_write_lock(rt2x00dev, PHY_CSR10, reg); in rt2500usb_rf_write()
221 rt2x00_rf_write(rt2x00dev, word, value); in rt2500usb_rf_write()
224 mutex_unlock(&rt2x00dev->csr_mutex); in rt2500usb_rf_write()
228 static void _rt2500usb_register_read(struct rt2x00_dev *rt2x00dev, in _rt2500usb_register_read() argument
232 rt2500usb_register_read(rt2x00dev, offset, (u16 *)value); in _rt2500usb_register_read()
235 static void _rt2500usb_register_write(struct rt2x00_dev *rt2x00dev, in _rt2500usb_register_write() argument
239 rt2500usb_register_write(rt2x00dev, offset, value); in _rt2500usb_register_write()
276 static int rt2500usb_rfkill_poll(struct rt2x00_dev *rt2x00dev) in rt2500usb_rfkill_poll() argument
280 rt2500usb_register_read(rt2x00dev, MAC_CSR19, &reg); in rt2500usb_rfkill_poll()
293 rt2500usb_register_read(led->rt2x00dev, MAC_CSR20, &reg); in rt2500usb_brightness_set()
300 rt2500usb_register_write(led->rt2x00dev, MAC_CSR20, reg); in rt2500usb_brightness_set()
311 rt2500usb_register_read(led->rt2x00dev, MAC_CSR21, &reg); in rt2500usb_blink_set()
314 rt2500usb_register_write(led->rt2x00dev, MAC_CSR21, reg); in rt2500usb_blink_set()
319 static void rt2500usb_init_led(struct rt2x00_dev *rt2x00dev, in rt2500usb_init_led() argument
323 led->rt2x00dev = rt2x00dev; in rt2500usb_init_led()
339 static int rt2500usb_config_key(struct rt2x00_dev *rt2x00dev, in rt2500usb_config_key() argument
365 rt2500usb_register_read(rt2x00dev, TXRX_CSR0, &reg); in rt2500usb_config_key()
384 rt2500usb_register_multiwrite(rt2x00dev, KEY_ENTRY(key->hw_key_idx), in rt2500usb_config_key()
404 rt2500usb_register_read(rt2x00dev, TXRX_CSR0, &reg); in rt2500usb_config_key()
414 rt2500usb_register_write(rt2x00dev, TXRX_CSR0, reg); in rt2500usb_config_key()
419 static void rt2500usb_config_filter(struct rt2x00_dev *rt2x00dev, in rt2500usb_config_filter() argument
430 rt2500usb_register_read(rt2x00dev, TXRX_CSR2, &reg); in rt2500usb_config_filter()
441 !rt2x00dev->intf_ap_count); in rt2500usb_config_filter()
446 rt2500usb_register_write(rt2x00dev, TXRX_CSR2, reg); in rt2500usb_config_filter()
449 static void rt2500usb_config_intf(struct rt2x00_dev *rt2x00dev, in rt2500usb_config_intf() argument
462 rt2500usb_register_read(rt2x00dev, TXRX_CSR20, &reg); in rt2500usb_config_intf()
466 rt2500usb_register_write(rt2x00dev, TXRX_CSR20, reg); in rt2500usb_config_intf()
471 rt2500usb_register_read(rt2x00dev, TXRX_CSR18, &reg); in rt2500usb_config_intf()
473 rt2500usb_register_write(rt2x00dev, TXRX_CSR18, reg); in rt2500usb_config_intf()
475 rt2500usb_register_read(rt2x00dev, TXRX_CSR19, &reg); in rt2500usb_config_intf()
477 rt2500usb_register_write(rt2x00dev, TXRX_CSR19, reg); in rt2500usb_config_intf()
481 rt2500usb_register_multiwrite(rt2x00dev, MAC_CSR2, conf->mac, in rt2500usb_config_intf()
485 rt2500usb_register_multiwrite(rt2x00dev, MAC_CSR5, conf->bssid, in rt2500usb_config_intf()
489 static void rt2500usb_config_erp(struct rt2x00_dev *rt2x00dev, in rt2500usb_config_erp() argument
496 rt2500usb_register_read(rt2x00dev, TXRX_CSR10, &reg); in rt2500usb_config_erp()
499 rt2500usb_register_write(rt2x00dev, TXRX_CSR10, reg); in rt2500usb_config_erp()
503 rt2500usb_register_write(rt2x00dev, TXRX_CSR11, in rt2500usb_config_erp()
507 rt2500usb_register_read(rt2x00dev, TXRX_CSR18, &reg); in rt2500usb_config_erp()
510 rt2500usb_register_write(rt2x00dev, TXRX_CSR18, reg); in rt2500usb_config_erp()
514 rt2500usb_register_write(rt2x00dev, MAC_CSR10, erp->slot_time); in rt2500usb_config_erp()
515 rt2500usb_register_write(rt2x00dev, MAC_CSR11, erp->sifs); in rt2500usb_config_erp()
516 rt2500usb_register_write(rt2x00dev, MAC_CSR12, erp->eifs); in rt2500usb_config_erp()
520 static void rt2500usb_config_ant(struct rt2x00_dev *rt2x00dev, in rt2500usb_config_ant() argument
535 rt2500usb_bbp_read(rt2x00dev, 2, &r2); in rt2500usb_config_ant()
536 rt2500usb_bbp_read(rt2x00dev, 14, &r14); in rt2500usb_config_ant()
537 rt2500usb_register_read(rt2x00dev, PHY_CSR5, &csr5); in rt2500usb_config_ant()
538 rt2500usb_register_read(rt2x00dev, PHY_CSR6, &csr6); in rt2500usb_config_ant()
581 if (rt2x00_rf(rt2x00dev, RF2525E) || rt2x00_rf(rt2x00dev, RF5222)) { in rt2500usb_config_ant()
589 if (rt2x00_rf(rt2x00dev, RF2525E)) in rt2500usb_config_ant()
596 rt2500usb_bbp_write(rt2x00dev, 2, r2); in rt2500usb_config_ant()
597 rt2500usb_bbp_write(rt2x00dev, 14, r14); in rt2500usb_config_ant()
598 rt2500usb_register_write(rt2x00dev, PHY_CSR5, csr5); in rt2500usb_config_ant()
599 rt2500usb_register_write(rt2x00dev, PHY_CSR6, csr6); in rt2500usb_config_ant()
602 static void rt2500usb_config_channel(struct rt2x00_dev *rt2x00dev, in rt2500usb_config_channel() argument
613 if (rt2x00_rf(rt2x00dev, RF2525E)) { in rt2500usb_config_channel()
621 rt2500usb_rf_write(rt2x00dev, 2, vals[rf->channel - 1]); in rt2500usb_config_channel()
623 rt2500usb_rf_write(rt2x00dev, 4, rf->rf4); in rt2500usb_config_channel()
626 rt2500usb_rf_write(rt2x00dev, 1, rf->rf1); in rt2500usb_config_channel()
627 rt2500usb_rf_write(rt2x00dev, 2, rf->rf2); in rt2500usb_config_channel()
628 rt2500usb_rf_write(rt2x00dev, 3, rf->rf3); in rt2500usb_config_channel()
630 rt2500usb_rf_write(rt2x00dev, 4, rf->rf4); in rt2500usb_config_channel()
633 static void rt2500usb_config_txpower(struct rt2x00_dev *rt2x00dev, in rt2500usb_config_txpower() argument
638 rt2x00_rf_read(rt2x00dev, 3, &rf3); in rt2500usb_config_txpower()
640 rt2500usb_rf_write(rt2x00dev, 3, rf3); in rt2500usb_config_txpower()
643 static void rt2500usb_config_ps(struct rt2x00_dev *rt2x00dev, in rt2500usb_config_ps() argument
652 rt2500usb_register_read(rt2x00dev, MAC_CSR18, &reg); in rt2500usb_config_ps()
654 rt2x00dev->beacon_int - 20); in rt2500usb_config_ps()
660 rt2500usb_register_write(rt2x00dev, MAC_CSR18, reg); in rt2500usb_config_ps()
663 rt2500usb_register_write(rt2x00dev, MAC_CSR18, reg); in rt2500usb_config_ps()
665 rt2500usb_register_read(rt2x00dev, MAC_CSR18, &reg); in rt2500usb_config_ps()
667 rt2500usb_register_write(rt2x00dev, MAC_CSR18, reg); in rt2500usb_config_ps()
670 rt2x00dev->ops->lib->set_device_state(rt2x00dev, state); in rt2500usb_config_ps()
673 static void rt2500usb_config(struct rt2x00_dev *rt2x00dev, in rt2500usb_config() argument
678 rt2500usb_config_channel(rt2x00dev, &libconf->rf, in rt2500usb_config()
682 rt2500usb_config_txpower(rt2x00dev, in rt2500usb_config()
685 rt2500usb_config_ps(rt2x00dev, libconf); in rt2500usb_config()
691 static void rt2500usb_link_stats(struct rt2x00_dev *rt2x00dev, in rt2500usb_link_stats() argument
699 rt2500usb_register_read(rt2x00dev, STA_CSR0, &reg); in rt2500usb_link_stats()
705 rt2500usb_register_read(rt2x00dev, STA_CSR3, &reg); in rt2500usb_link_stats()
709 static void rt2500usb_reset_tuner(struct rt2x00_dev *rt2x00dev, in rt2500usb_reset_tuner() argument
715 rt2x00_eeprom_read(rt2x00dev, EEPROM_BBPTUNE_R24, &eeprom); in rt2500usb_reset_tuner()
717 rt2500usb_bbp_write(rt2x00dev, 24, value); in rt2500usb_reset_tuner()
719 rt2x00_eeprom_read(rt2x00dev, EEPROM_BBPTUNE_R25, &eeprom); in rt2500usb_reset_tuner()
721 rt2500usb_bbp_write(rt2x00dev, 25, value); in rt2500usb_reset_tuner()
723 rt2x00_eeprom_read(rt2x00dev, EEPROM_BBPTUNE_R61, &eeprom); in rt2500usb_reset_tuner()
725 rt2500usb_bbp_write(rt2x00dev, 61, value); in rt2500usb_reset_tuner()
727 rt2x00_eeprom_read(rt2x00dev, EEPROM_BBPTUNE_VGC, &eeprom); in rt2500usb_reset_tuner()
729 rt2500usb_bbp_write(rt2x00dev, 17, value); in rt2500usb_reset_tuner()
739 struct rt2x00_dev *rt2x00dev = queue->rt2x00dev; in rt2500usb_start_queue() local
744 rt2500usb_register_read(rt2x00dev, TXRX_CSR2, &reg); in rt2500usb_start_queue()
746 rt2500usb_register_write(rt2x00dev, TXRX_CSR2, reg); in rt2500usb_start_queue()
749 rt2500usb_register_read(rt2x00dev, TXRX_CSR19, &reg); in rt2500usb_start_queue()
753 rt2500usb_register_write(rt2x00dev, TXRX_CSR19, reg); in rt2500usb_start_queue()
762 struct rt2x00_dev *rt2x00dev = queue->rt2x00dev; in rt2500usb_stop_queue() local
767 rt2500usb_register_read(rt2x00dev, TXRX_CSR2, &reg); in rt2500usb_stop_queue()
769 rt2500usb_register_write(rt2x00dev, TXRX_CSR2, reg); in rt2500usb_stop_queue()
772 rt2500usb_register_read(rt2x00dev, TXRX_CSR19, &reg); in rt2500usb_stop_queue()
776 rt2500usb_register_write(rt2x00dev, TXRX_CSR19, reg); in rt2500usb_stop_queue()
786 static int rt2500usb_init_registers(struct rt2x00_dev *rt2x00dev) in rt2500usb_init_registers() argument
790 rt2x00usb_vendor_request_sw(rt2x00dev, USB_DEVICE_MODE, 0x0001, in rt2500usb_init_registers()
792 rt2x00usb_vendor_request_sw(rt2x00dev, USB_SINGLE_WRITE, 0x0308, in rt2500usb_init_registers()
795 rt2500usb_register_read(rt2x00dev, TXRX_CSR2, &reg); in rt2500usb_init_registers()
797 rt2500usb_register_write(rt2x00dev, TXRX_CSR2, reg); in rt2500usb_init_registers()
799 rt2500usb_register_write(rt2x00dev, MAC_CSR13, 0x1111); in rt2500usb_init_registers()
800 rt2500usb_register_write(rt2x00dev, MAC_CSR14, 0x1e11); in rt2500usb_init_registers()
802 rt2500usb_register_read(rt2x00dev, MAC_CSR1, &reg); in rt2500usb_init_registers()
806 rt2500usb_register_write(rt2x00dev, MAC_CSR1, reg); in rt2500usb_init_registers()
808 rt2500usb_register_read(rt2x00dev, MAC_CSR1, &reg); in rt2500usb_init_registers()
812 rt2500usb_register_write(rt2x00dev, MAC_CSR1, reg); in rt2500usb_init_registers()
814 rt2500usb_register_read(rt2x00dev, TXRX_CSR5, &reg); in rt2500usb_init_registers()
819 rt2500usb_register_write(rt2x00dev, TXRX_CSR5, reg); in rt2500usb_init_registers()
821 rt2500usb_register_read(rt2x00dev, TXRX_CSR6, &reg); in rt2500usb_init_registers()
826 rt2500usb_register_write(rt2x00dev, TXRX_CSR6, reg); in rt2500usb_init_registers()
828 rt2500usb_register_read(rt2x00dev, TXRX_CSR7, &reg); in rt2500usb_init_registers()
833 rt2500usb_register_write(rt2x00dev, TXRX_CSR7, reg); in rt2500usb_init_registers()
835 rt2500usb_register_read(rt2x00dev, TXRX_CSR8, &reg); in rt2500usb_init_registers()
840 rt2500usb_register_write(rt2x00dev, TXRX_CSR8, reg); in rt2500usb_init_registers()
842 rt2500usb_register_read(rt2x00dev, TXRX_CSR19, &reg); in rt2500usb_init_registers()
847 rt2500usb_register_write(rt2x00dev, TXRX_CSR19, reg); in rt2500usb_init_registers()
849 rt2500usb_register_write(rt2x00dev, TXRX_CSR21, 0xe78f); in rt2500usb_init_registers()
850 rt2500usb_register_write(rt2x00dev, MAC_CSR9, 0xff1d); in rt2500usb_init_registers()
852 if (rt2x00dev->ops->lib->set_device_state(rt2x00dev, STATE_AWAKE)) in rt2500usb_init_registers()
855 rt2500usb_register_read(rt2x00dev, MAC_CSR1, &reg); in rt2500usb_init_registers()
859 rt2500usb_register_write(rt2x00dev, MAC_CSR1, reg); in rt2500usb_init_registers()
861 if (rt2x00_rev(rt2x00dev) >= RT2570_VERSION_C) { in rt2500usb_init_registers()
862 rt2500usb_register_read(rt2x00dev, PHY_CSR2, &reg); in rt2500usb_init_registers()
869 rt2500usb_register_write(rt2x00dev, PHY_CSR2, reg); in rt2500usb_init_registers()
871 rt2500usb_register_write(rt2x00dev, MAC_CSR11, 0x0002); in rt2500usb_init_registers()
872 rt2500usb_register_write(rt2x00dev, MAC_CSR22, 0x0053); in rt2500usb_init_registers()
873 rt2500usb_register_write(rt2x00dev, MAC_CSR15, 0x01ee); in rt2500usb_init_registers()
874 rt2500usb_register_write(rt2x00dev, MAC_CSR16, 0x0000); in rt2500usb_init_registers()
876 rt2500usb_register_read(rt2x00dev, MAC_CSR8, &reg); in rt2500usb_init_registers()
878 rt2x00dev->rx->data_size); in rt2500usb_init_registers()
879 rt2500usb_register_write(rt2x00dev, MAC_CSR8, reg); in rt2500usb_init_registers()
881 rt2500usb_register_read(rt2x00dev, TXRX_CSR0, &reg); in rt2500usb_init_registers()
885 rt2500usb_register_write(rt2x00dev, TXRX_CSR0, reg); in rt2500usb_init_registers()
887 rt2500usb_register_read(rt2x00dev, MAC_CSR18, &reg); in rt2500usb_init_registers()
889 rt2500usb_register_write(rt2x00dev, MAC_CSR18, reg); in rt2500usb_init_registers()
891 rt2500usb_register_read(rt2x00dev, PHY_CSR4, &reg); in rt2500usb_init_registers()
893 rt2500usb_register_write(rt2x00dev, PHY_CSR4, reg); in rt2500usb_init_registers()
895 rt2500usb_register_read(rt2x00dev, TXRX_CSR1, &reg); in rt2500usb_init_registers()
897 rt2500usb_register_write(rt2x00dev, TXRX_CSR1, reg); in rt2500usb_init_registers()
902 static int rt2500usb_wait_bbp_ready(struct rt2x00_dev *rt2x00dev) in rt2500usb_wait_bbp_ready() argument
908 rt2500usb_bbp_read(rt2x00dev, 0, &value); in rt2500usb_wait_bbp_ready()
914 rt2x00_err(rt2x00dev, "BBP register access failed, aborting\n"); in rt2500usb_wait_bbp_ready()
918 static int rt2500usb_init_bbp(struct rt2x00_dev *rt2x00dev) in rt2500usb_init_bbp() argument
925 if (unlikely(rt2500usb_wait_bbp_ready(rt2x00dev))) in rt2500usb_init_bbp()
928 rt2500usb_bbp_write(rt2x00dev, 3, 0x02); in rt2500usb_init_bbp()
929 rt2500usb_bbp_write(rt2x00dev, 4, 0x19); in rt2500usb_init_bbp()
930 rt2500usb_bbp_write(rt2x00dev, 14, 0x1c); in rt2500usb_init_bbp()
931 rt2500usb_bbp_write(rt2x00dev, 15, 0x30); in rt2500usb_init_bbp()
932 rt2500usb_bbp_write(rt2x00dev, 16, 0xac); in rt2500usb_init_bbp()
933 rt2500usb_bbp_write(rt2x00dev, 18, 0x18); in rt2500usb_init_bbp()
934 rt2500usb_bbp_write(rt2x00dev, 19, 0xff); in rt2500usb_init_bbp()
935 rt2500usb_bbp_write(rt2x00dev, 20, 0x1e); in rt2500usb_init_bbp()
936 rt2500usb_bbp_write(rt2x00dev, 21, 0x08); in rt2500usb_init_bbp()
937 rt2500usb_bbp_write(rt2x00dev, 22, 0x08); in rt2500usb_init_bbp()
938 rt2500usb_bbp_write(rt2x00dev, 23, 0x08); in rt2500usb_init_bbp()
939 rt2500usb_bbp_write(rt2x00dev, 24, 0x80); in rt2500usb_init_bbp()
940 rt2500usb_bbp_write(rt2x00dev, 25, 0x50); in rt2500usb_init_bbp()
941 rt2500usb_bbp_write(rt2x00dev, 26, 0x08); in rt2500usb_init_bbp()
942 rt2500usb_bbp_write(rt2x00dev, 27, 0x23); in rt2500usb_init_bbp()
943 rt2500usb_bbp_write(rt2x00dev, 30, 0x10); in rt2500usb_init_bbp()
944 rt2500usb_bbp_write(rt2x00dev, 31, 0x2b); in rt2500usb_init_bbp()
945 rt2500usb_bbp_write(rt2x00dev, 32, 0xb9); in rt2500usb_init_bbp()
946 rt2500usb_bbp_write(rt2x00dev, 34, 0x12); in rt2500usb_init_bbp()
947 rt2500usb_bbp_write(rt2x00dev, 35, 0x50); in rt2500usb_init_bbp()
948 rt2500usb_bbp_write(rt2x00dev, 39, 0xc4); in rt2500usb_init_bbp()
949 rt2500usb_bbp_write(rt2x00dev, 40, 0x02); in rt2500usb_init_bbp()
950 rt2500usb_bbp_write(rt2x00dev, 41, 0x60); in rt2500usb_init_bbp()
951 rt2500usb_bbp_write(rt2x00dev, 53, 0x10); in rt2500usb_init_bbp()
952 rt2500usb_bbp_write(rt2x00dev, 54, 0x18); in rt2500usb_init_bbp()
953 rt2500usb_bbp_write(rt2x00dev, 56, 0x08); in rt2500usb_init_bbp()
954 rt2500usb_bbp_write(rt2x00dev, 57, 0x10); in rt2500usb_init_bbp()
955 rt2500usb_bbp_write(rt2x00dev, 58, 0x08); in rt2500usb_init_bbp()
956 rt2500usb_bbp_write(rt2x00dev, 61, 0x60); in rt2500usb_init_bbp()
957 rt2500usb_bbp_write(rt2x00dev, 62, 0x10); in rt2500usb_init_bbp()
958 rt2500usb_bbp_write(rt2x00dev, 75, 0xff); in rt2500usb_init_bbp()
961 rt2x00_eeprom_read(rt2x00dev, EEPROM_BBP_START + i, &eeprom); in rt2500usb_init_bbp()
966 rt2500usb_bbp_write(rt2x00dev, reg_id, value); in rt2500usb_init_bbp()
976 static int rt2500usb_enable_radio(struct rt2x00_dev *rt2x00dev) in rt2500usb_enable_radio() argument
981 if (unlikely(rt2500usb_init_registers(rt2x00dev) || in rt2500usb_enable_radio()
982 rt2500usb_init_bbp(rt2x00dev))) in rt2500usb_enable_radio()
988 static void rt2500usb_disable_radio(struct rt2x00_dev *rt2x00dev) in rt2500usb_disable_radio() argument
990 rt2500usb_register_write(rt2x00dev, MAC_CSR13, 0x2121); in rt2500usb_disable_radio()
991 rt2500usb_register_write(rt2x00dev, MAC_CSR14, 0x2121); in rt2500usb_disable_radio()
996 rt2500usb_register_write(rt2x00dev, TXRX_CSR19, 0); in rt2500usb_disable_radio()
998 rt2x00usb_disable_radio(rt2x00dev); in rt2500usb_disable_radio()
1001 static int rt2500usb_set_state(struct rt2x00_dev *rt2x00dev, in rt2500usb_set_state() argument
1017 rt2500usb_register_write(rt2x00dev, MAC_CSR17, reg); in rt2500usb_set_state()
1019 rt2500usb_register_write(rt2x00dev, MAC_CSR17, reg); in rt2500usb_set_state()
1027 rt2500usb_register_read(rt2x00dev, MAC_CSR17, &reg2); in rt2500usb_set_state()
1032 rt2500usb_register_write(rt2x00dev, MAC_CSR17, reg); in rt2500usb_set_state()
1039 static int rt2500usb_set_device_state(struct rt2x00_dev *rt2x00dev, in rt2500usb_set_device_state() argument
1046 retval = rt2500usb_enable_radio(rt2x00dev); in rt2500usb_set_device_state()
1049 rt2500usb_disable_radio(rt2x00dev); in rt2500usb_set_device_state()
1059 retval = rt2500usb_set_state(rt2x00dev, state); in rt2500usb_set_device_state()
1067 rt2x00_err(rt2x00dev, "Device failed to enter state %d (%d)\n", in rt2500usb_set_device_state()
1141 struct rt2x00_dev *rt2x00dev = entry->queue->rt2x00dev; in rt2500usb_write_beacon() local
1142 struct usb_device *usb_dev = to_usb_device_intf(rt2x00dev->dev); in rt2500usb_write_beacon()
1152 rt2500usb_register_read(rt2x00dev, TXRX_CSR19, &reg); in rt2500usb_write_beacon()
1154 rt2500usb_register_write(rt2x00dev, TXRX_CSR19, reg); in rt2500usb_write_beacon()
1170 rt2x00debug_dump_frame(rt2x00dev, DUMP_FRAME_BEACON, entry->skb); in rt2500usb_write_beacon()
1177 length = rt2x00dev->ops->lib->get_tx_data_len(entry); in rt2500usb_write_beacon()
1212 rt2500usb_register_write(rt2x00dev, TXRX_CSR19, reg); in rt2500usb_write_beacon()
1213 rt2500usb_register_write(rt2x00dev, TXRX_CSR19, reg0); in rt2500usb_write_beacon()
1214 rt2500usb_register_write(rt2x00dev, TXRX_CSR19, reg); in rt2500usb_write_beacon()
1215 rt2500usb_register_write(rt2x00dev, TXRX_CSR19, reg0); in rt2500usb_write_beacon()
1216 rt2500usb_register_write(rt2x00dev, TXRX_CSR19, reg); in rt2500usb_write_beacon()
1239 struct rt2x00_dev *rt2x00dev = entry->queue->rt2x00dev; in rt2500usb_fill_rxdone() local
1293 rt2x00_get_field32(word1, RXD_W1_RSSI) - rt2x00dev->rssi_offset; in rt2500usb_fill_rxdone()
1317 if (!test_bit(DEVICE_STATE_ENABLED_RADIO, &entry->queue->rt2x00dev->flags)) in rt2500usb_beacondone()
1337 static int rt2500usb_validate_eeprom(struct rt2x00_dev *rt2x00dev) in rt2500usb_validate_eeprom() argument
1343 rt2x00usb_eeprom_read(rt2x00dev, rt2x00dev->eeprom, EEPROM_SIZE); in rt2500usb_validate_eeprom()
1348 mac = rt2x00_eeprom_addr(rt2x00dev, EEPROM_MAC_ADDR_0); in rt2500usb_validate_eeprom()
1351 rt2x00_eeprom_dbg(rt2x00dev, "MAC: %pM\n", mac); in rt2500usb_validate_eeprom()
1354 rt2x00_eeprom_read(rt2x00dev, EEPROM_ANTENNA, &word); in rt2500usb_validate_eeprom()
1366 rt2x00_eeprom_write(rt2x00dev, EEPROM_ANTENNA, word); in rt2500usb_validate_eeprom()
1367 rt2x00_eeprom_dbg(rt2x00dev, "Antenna: 0x%04x\n", word); in rt2500usb_validate_eeprom()
1370 rt2x00_eeprom_read(rt2x00dev, EEPROM_NIC, &word); in rt2500usb_validate_eeprom()
1375 rt2x00_eeprom_write(rt2x00dev, EEPROM_NIC, word); in rt2500usb_validate_eeprom()
1376 rt2x00_eeprom_dbg(rt2x00dev, "NIC: 0x%04x\n", word); in rt2500usb_validate_eeprom()
1379 rt2x00_eeprom_read(rt2x00dev, EEPROM_CALIBRATE_OFFSET, &word); in rt2500usb_validate_eeprom()
1383 rt2x00_eeprom_write(rt2x00dev, EEPROM_CALIBRATE_OFFSET, word); in rt2500usb_validate_eeprom()
1384 rt2x00_eeprom_dbg(rt2x00dev, "Calibrate offset: 0x%04x\n", in rt2500usb_validate_eeprom()
1388 rt2x00_eeprom_read(rt2x00dev, EEPROM_BBPTUNE, &word); in rt2500usb_validate_eeprom()
1391 rt2x00_eeprom_write(rt2x00dev, EEPROM_BBPTUNE, word); in rt2500usb_validate_eeprom()
1392 rt2x00_eeprom_dbg(rt2x00dev, "BBPtune: 0x%04x\n", word); in rt2500usb_validate_eeprom()
1399 rt2500usb_bbp_read(rt2x00dev, 17, &bbp); in rt2500usb_validate_eeprom()
1402 rt2x00_eeprom_read(rt2x00dev, EEPROM_BBPTUNE_VGC, &word); in rt2500usb_validate_eeprom()
1406 rt2x00_eeprom_write(rt2x00dev, EEPROM_BBPTUNE_VGC, word); in rt2500usb_validate_eeprom()
1407 rt2x00_eeprom_dbg(rt2x00dev, "BBPtune vgc: 0x%04x\n", word); in rt2500usb_validate_eeprom()
1410 rt2x00_eeprom_write(rt2x00dev, EEPROM_BBPTUNE_VGC, word); in rt2500usb_validate_eeprom()
1413 rt2x00_eeprom_read(rt2x00dev, EEPROM_BBPTUNE_R17, &word); in rt2500usb_validate_eeprom()
1417 rt2x00_eeprom_write(rt2x00dev, EEPROM_BBPTUNE_R17, word); in rt2500usb_validate_eeprom()
1418 rt2x00_eeprom_dbg(rt2x00dev, "BBPtune r17: 0x%04x\n", word); in rt2500usb_validate_eeprom()
1421 rt2x00_eeprom_read(rt2x00dev, EEPROM_BBPTUNE_R24, &word); in rt2500usb_validate_eeprom()
1425 rt2x00_eeprom_write(rt2x00dev, EEPROM_BBPTUNE_R24, word); in rt2500usb_validate_eeprom()
1426 rt2x00_eeprom_dbg(rt2x00dev, "BBPtune r24: 0x%04x\n", word); in rt2500usb_validate_eeprom()
1429 rt2x00_eeprom_read(rt2x00dev, EEPROM_BBPTUNE_R25, &word); in rt2500usb_validate_eeprom()
1433 rt2x00_eeprom_write(rt2x00dev, EEPROM_BBPTUNE_R25, word); in rt2500usb_validate_eeprom()
1434 rt2x00_eeprom_dbg(rt2x00dev, "BBPtune r25: 0x%04x\n", word); in rt2500usb_validate_eeprom()
1437 rt2x00_eeprom_read(rt2x00dev, EEPROM_BBPTUNE_R61, &word); in rt2500usb_validate_eeprom()
1441 rt2x00_eeprom_write(rt2x00dev, EEPROM_BBPTUNE_R61, word); in rt2500usb_validate_eeprom()
1442 rt2x00_eeprom_dbg(rt2x00dev, "BBPtune r61: 0x%04x\n", word); in rt2500usb_validate_eeprom()
1448 static int rt2500usb_init_eeprom(struct rt2x00_dev *rt2x00dev) in rt2500usb_init_eeprom() argument
1457 rt2x00_eeprom_read(rt2x00dev, EEPROM_ANTENNA, &eeprom); in rt2500usb_init_eeprom()
1463 rt2500usb_register_read(rt2x00dev, MAC_CSR0, &reg); in rt2500usb_init_eeprom()
1464 rt2x00_set_chip(rt2x00dev, RT2570, value, reg); in rt2500usb_init_eeprom()
1467 rt2x00_err(rt2x00dev, "Invalid RT chipset detected\n"); in rt2500usb_init_eeprom()
1471 if (!rt2x00_rf(rt2x00dev, RF2522) && in rt2500usb_init_eeprom()
1472 !rt2x00_rf(rt2x00dev, RF2523) && in rt2500usb_init_eeprom()
1473 !rt2x00_rf(rt2x00dev, RF2524) && in rt2500usb_init_eeprom()
1474 !rt2x00_rf(rt2x00dev, RF2525) && in rt2500usb_init_eeprom()
1475 !rt2x00_rf(rt2x00dev, RF2525E) && in rt2500usb_init_eeprom()
1476 !rt2x00_rf(rt2x00dev, RF5222)) { in rt2500usb_init_eeprom()
1477 rt2x00_err(rt2x00dev, "Invalid RF chipset detected\n"); in rt2500usb_init_eeprom()
1484 rt2x00dev->default_ant.tx = in rt2500usb_init_eeprom()
1486 rt2x00dev->default_ant.rx = in rt2500usb_init_eeprom()
1495 if (rt2x00dev->default_ant.tx == ANTENNA_SW_DIVERSITY) in rt2500usb_init_eeprom()
1496 rt2x00dev->default_ant.tx = ANTENNA_HW_DIVERSITY; in rt2500usb_init_eeprom()
1497 if (rt2x00dev->default_ant.rx == ANTENNA_SW_DIVERSITY) in rt2500usb_init_eeprom()
1498 rt2x00dev->default_ant.rx = ANTENNA_HW_DIVERSITY; in rt2500usb_init_eeprom()
1506 rt2500usb_init_led(rt2x00dev, &rt2x00dev->led_radio, LED_TYPE_RADIO); in rt2500usb_init_eeprom()
1510 rt2500usb_init_led(rt2x00dev, &rt2x00dev->led_qual, in rt2500usb_init_eeprom()
1518 __set_bit(CAPABILITY_HW_BUTTON, &rt2x00dev->cap_flags); in rt2500usb_init_eeprom()
1523 rt2x00_eeprom_read(rt2x00dev, EEPROM_CALIBRATE_OFFSET, &eeprom); in rt2500usb_init_eeprom()
1524 rt2x00dev->rssi_offset = in rt2500usb_init_eeprom()
1685 static int rt2500usb_probe_hw_mode(struct rt2x00_dev *rt2x00dev) in rt2500usb_probe_hw_mode() argument
1687 struct hw_mode_spec *spec = &rt2x00dev->spec; in rt2500usb_probe_hw_mode()
1701 rt2x00dev->hw->flags = in rt2500usb_probe_hw_mode()
1710 rt2x00dev->hw->wiphy->flags &= ~WIPHY_FLAG_PS_ON_BY_DEFAULT; in rt2500usb_probe_hw_mode()
1712 SET_IEEE80211_DEV(rt2x00dev->hw, rt2x00dev->dev); in rt2500usb_probe_hw_mode()
1713 SET_IEEE80211_PERM_ADDR(rt2x00dev->hw, in rt2500usb_probe_hw_mode()
1714 rt2x00_eeprom_addr(rt2x00dev, in rt2500usb_probe_hw_mode()
1723 if (rt2x00_rf(rt2x00dev, RF2522)) { in rt2500usb_probe_hw_mode()
1726 } else if (rt2x00_rf(rt2x00dev, RF2523)) { in rt2500usb_probe_hw_mode()
1729 } else if (rt2x00_rf(rt2x00dev, RF2524)) { in rt2500usb_probe_hw_mode()
1732 } else if (rt2x00_rf(rt2x00dev, RF2525)) { in rt2500usb_probe_hw_mode()
1735 } else if (rt2x00_rf(rt2x00dev, RF2525E)) { in rt2500usb_probe_hw_mode()
1738 } else if (rt2x00_rf(rt2x00dev, RF5222)) { in rt2500usb_probe_hw_mode()
1753 tx_power = rt2x00_eeprom_addr(rt2x00dev, EEPROM_TXPOWER_START); in rt2500usb_probe_hw_mode()
1769 static int rt2500usb_probe_hw(struct rt2x00_dev *rt2x00dev) in rt2500usb_probe_hw() argument
1777 retval = rt2500usb_validate_eeprom(rt2x00dev); in rt2500usb_probe_hw()
1781 retval = rt2500usb_init_eeprom(rt2x00dev); in rt2500usb_probe_hw()
1789 rt2500usb_register_read(rt2x00dev, MAC_CSR19, &reg); in rt2500usb_probe_hw()
1791 rt2500usb_register_write(rt2x00dev, MAC_CSR19, reg); in rt2500usb_probe_hw()
1796 retval = rt2500usb_probe_hw_mode(rt2x00dev); in rt2500usb_probe_hw()
1803 __set_bit(REQUIRE_ATIM_QUEUE, &rt2x00dev->cap_flags); in rt2500usb_probe_hw()
1804 __set_bit(REQUIRE_BEACON_GUARD, &rt2x00dev->cap_flags); in rt2500usb_probe_hw()
1806 __set_bit(CAPABILITY_HW_CRYPTO, &rt2x00dev->cap_flags); in rt2500usb_probe_hw()
1807 __set_bit(REQUIRE_COPY_IV, &rt2x00dev->cap_flags); in rt2500usb_probe_hw()
1809 __set_bit(REQUIRE_SW_SEQNO, &rt2x00dev->cap_flags); in rt2500usb_probe_hw()
1810 __set_bit(REQUIRE_PS_AUTOWAKE, &rt2x00dev->cap_flags); in rt2500usb_probe_hw()
1815 rt2x00dev->rssi_offset = DEFAULT_RSSI_OFFSET; in rt2500usb_probe_hw()