Lines Matching refs:rt2x00dev
58 static u16 rt2500usb_register_read(struct rt2x00_dev *rt2x00dev, in rt2500usb_register_read() argument
62 rt2x00usb_vendor_request_buff(rt2x00dev, USB_MULTI_READ, in rt2500usb_register_read()
68 static u16 rt2500usb_register_read_lock(struct rt2x00_dev *rt2x00dev, in rt2500usb_register_read_lock() argument
72 rt2x00usb_vendor_req_buff_lock(rt2x00dev, USB_MULTI_READ, in rt2500usb_register_read_lock()
78 static void rt2500usb_register_write(struct rt2x00_dev *rt2x00dev, in rt2500usb_register_write() argument
83 rt2x00usb_vendor_request_buff(rt2x00dev, USB_MULTI_WRITE, in rt2500usb_register_write()
88 static void rt2500usb_register_write_lock(struct rt2x00_dev *rt2x00dev, in rt2500usb_register_write_lock() argument
93 rt2x00usb_vendor_req_buff_lock(rt2x00dev, USB_MULTI_WRITE, in rt2500usb_register_write_lock()
98 static void rt2500usb_register_multiwrite(struct rt2x00_dev *rt2x00dev, in rt2500usb_register_multiwrite() argument
102 rt2x00usb_vendor_request_buff(rt2x00dev, USB_MULTI_WRITE, in rt2500usb_register_multiwrite()
107 static int rt2500usb_regbusy_read(struct rt2x00_dev *rt2x00dev, in rt2500usb_regbusy_read() argument
115 *reg = rt2500usb_register_read_lock(rt2x00dev, offset); in rt2500usb_regbusy_read()
121 rt2x00_err(rt2x00dev, "Indirect register access failed: offset=0x%.08x, value=0x%.08x\n", in rt2500usb_regbusy_read()
133 static void rt2500usb_bbp_write(struct rt2x00_dev *rt2x00dev, in rt2500usb_bbp_write() argument
138 mutex_lock(&rt2x00dev->csr_mutex); in rt2500usb_bbp_write()
144 if (WAIT_FOR_BBP(rt2x00dev, ®)) { in rt2500usb_bbp_write()
150 rt2500usb_register_write_lock(rt2x00dev, PHY_CSR7, reg); in rt2500usb_bbp_write()
153 mutex_unlock(&rt2x00dev->csr_mutex); in rt2500usb_bbp_write()
156 static u8 rt2500usb_bbp_read(struct rt2x00_dev *rt2x00dev, in rt2500usb_bbp_read() argument
162 mutex_lock(&rt2x00dev->csr_mutex); in rt2500usb_bbp_read()
172 if (WAIT_FOR_BBP(rt2x00dev, ®)) { in rt2500usb_bbp_read()
177 rt2500usb_register_write_lock(rt2x00dev, PHY_CSR7, reg); in rt2500usb_bbp_read()
179 if (WAIT_FOR_BBP(rt2x00dev, ®)) in rt2500usb_bbp_read()
180 reg = rt2500usb_register_read_lock(rt2x00dev, PHY_CSR7); in rt2500usb_bbp_read()
185 mutex_unlock(&rt2x00dev->csr_mutex); in rt2500usb_bbp_read()
190 static void rt2500usb_rf_write(struct rt2x00_dev *rt2x00dev, in rt2500usb_rf_write() argument
195 mutex_lock(&rt2x00dev->csr_mutex); in rt2500usb_rf_write()
201 if (WAIT_FOR_RF(rt2x00dev, ®)) { in rt2500usb_rf_write()
204 rt2500usb_register_write_lock(rt2x00dev, PHY_CSR9, reg); in rt2500usb_rf_write()
212 rt2500usb_register_write_lock(rt2x00dev, PHY_CSR10, reg); in rt2500usb_rf_write()
213 rt2x00_rf_write(rt2x00dev, word, value); in rt2500usb_rf_write()
216 mutex_unlock(&rt2x00dev->csr_mutex); in rt2500usb_rf_write()
220 static u32 _rt2500usb_register_read(struct rt2x00_dev *rt2x00dev, in _rt2500usb_register_read() argument
223 return rt2500usb_register_read(rt2x00dev, offset); in _rt2500usb_register_read()
226 static void _rt2500usb_register_write(struct rt2x00_dev *rt2x00dev, in _rt2500usb_register_write() argument
230 rt2500usb_register_write(rt2x00dev, offset, value); in _rt2500usb_register_write()
267 static int rt2500usb_rfkill_poll(struct rt2x00_dev *rt2x00dev) in rt2500usb_rfkill_poll() argument
271 reg = rt2500usb_register_read(rt2x00dev, MAC_CSR19); in rt2500usb_rfkill_poll()
284 reg = rt2500usb_register_read(led->rt2x00dev, MAC_CSR20); in rt2500usb_brightness_set()
291 rt2500usb_register_write(led->rt2x00dev, MAC_CSR20, reg); in rt2500usb_brightness_set()
302 reg = rt2500usb_register_read(led->rt2x00dev, MAC_CSR21); in rt2500usb_blink_set()
305 rt2500usb_register_write(led->rt2x00dev, MAC_CSR21, reg); in rt2500usb_blink_set()
310 static void rt2500usb_init_led(struct rt2x00_dev *rt2x00dev, in rt2500usb_init_led() argument
314 led->rt2x00dev = rt2x00dev; in rt2500usb_init_led()
330 static int rt2500usb_config_key(struct rt2x00_dev *rt2x00dev, in rt2500usb_config_key() argument
356 reg = rt2500usb_register_read(rt2x00dev, TXRX_CSR0); in rt2500usb_config_key()
375 rt2500usb_register_multiwrite(rt2x00dev, KEY_ENTRY(key->hw_key_idx), in rt2500usb_config_key()
395 reg = rt2500usb_register_read(rt2x00dev, TXRX_CSR0); in rt2500usb_config_key()
405 rt2500usb_register_write(rt2x00dev, TXRX_CSR0, reg); in rt2500usb_config_key()
410 static void rt2500usb_config_filter(struct rt2x00_dev *rt2x00dev, in rt2500usb_config_filter() argument
421 reg = rt2500usb_register_read(rt2x00dev, TXRX_CSR2); in rt2500usb_config_filter()
429 !test_bit(CONFIG_MONITORING, &rt2x00dev->flags)); in rt2500usb_config_filter()
431 !test_bit(CONFIG_MONITORING, &rt2x00dev->flags) && in rt2500usb_config_filter()
432 !rt2x00dev->intf_ap_count); in rt2500usb_config_filter()
437 rt2500usb_register_write(rt2x00dev, TXRX_CSR2, reg); in rt2500usb_config_filter()
440 static void rt2500usb_config_intf(struct rt2x00_dev *rt2x00dev, in rt2500usb_config_intf() argument
453 reg = rt2500usb_register_read(rt2x00dev, TXRX_CSR20); in rt2500usb_config_intf()
457 rt2500usb_register_write(rt2x00dev, TXRX_CSR20, reg); in rt2500usb_config_intf()
462 reg = rt2500usb_register_read(rt2x00dev, TXRX_CSR18); in rt2500usb_config_intf()
464 rt2500usb_register_write(rt2x00dev, TXRX_CSR18, reg); in rt2500usb_config_intf()
466 reg = rt2500usb_register_read(rt2x00dev, TXRX_CSR19); in rt2500usb_config_intf()
468 rt2500usb_register_write(rt2x00dev, TXRX_CSR19, reg); in rt2500usb_config_intf()
472 rt2500usb_register_multiwrite(rt2x00dev, MAC_CSR2, conf->mac, in rt2500usb_config_intf()
476 rt2500usb_register_multiwrite(rt2x00dev, MAC_CSR5, conf->bssid, in rt2500usb_config_intf()
480 static void rt2500usb_config_erp(struct rt2x00_dev *rt2x00dev, in rt2500usb_config_erp() argument
487 reg = rt2500usb_register_read(rt2x00dev, TXRX_CSR10); in rt2500usb_config_erp()
490 rt2500usb_register_write(rt2x00dev, TXRX_CSR10, reg); in rt2500usb_config_erp()
494 rt2500usb_register_write(rt2x00dev, TXRX_CSR11, in rt2500usb_config_erp()
498 reg = rt2500usb_register_read(rt2x00dev, TXRX_CSR18); in rt2500usb_config_erp()
501 rt2500usb_register_write(rt2x00dev, TXRX_CSR18, reg); in rt2500usb_config_erp()
505 rt2500usb_register_write(rt2x00dev, MAC_CSR10, erp->slot_time); in rt2500usb_config_erp()
506 rt2500usb_register_write(rt2x00dev, MAC_CSR11, erp->sifs); in rt2500usb_config_erp()
507 rt2500usb_register_write(rt2x00dev, MAC_CSR12, erp->eifs); in rt2500usb_config_erp()
511 static void rt2500usb_config_ant(struct rt2x00_dev *rt2x00dev, in rt2500usb_config_ant() argument
526 r2 = rt2500usb_bbp_read(rt2x00dev, 2); in rt2500usb_config_ant()
527 r14 = rt2500usb_bbp_read(rt2x00dev, 14); in rt2500usb_config_ant()
528 csr5 = rt2500usb_register_read(rt2x00dev, PHY_CSR5); in rt2500usb_config_ant()
529 csr6 = rt2500usb_register_read(rt2x00dev, PHY_CSR6); in rt2500usb_config_ant()
572 if (rt2x00_rf(rt2x00dev, RF2525E) || rt2x00_rf(rt2x00dev, RF5222)) { in rt2500usb_config_ant()
580 if (rt2x00_rf(rt2x00dev, RF2525E)) in rt2500usb_config_ant()
587 rt2500usb_bbp_write(rt2x00dev, 2, r2); in rt2500usb_config_ant()
588 rt2500usb_bbp_write(rt2x00dev, 14, r14); in rt2500usb_config_ant()
589 rt2500usb_register_write(rt2x00dev, PHY_CSR5, csr5); in rt2500usb_config_ant()
590 rt2500usb_register_write(rt2x00dev, PHY_CSR6, csr6); in rt2500usb_config_ant()
593 static void rt2500usb_config_channel(struct rt2x00_dev *rt2x00dev, in rt2500usb_config_channel() argument
604 if (rt2x00_rf(rt2x00dev, RF2525E)) { in rt2500usb_config_channel()
612 rt2500usb_rf_write(rt2x00dev, 2, vals[rf->channel - 1]); in rt2500usb_config_channel()
614 rt2500usb_rf_write(rt2x00dev, 4, rf->rf4); in rt2500usb_config_channel()
617 rt2500usb_rf_write(rt2x00dev, 1, rf->rf1); in rt2500usb_config_channel()
618 rt2500usb_rf_write(rt2x00dev, 2, rf->rf2); in rt2500usb_config_channel()
619 rt2500usb_rf_write(rt2x00dev, 3, rf->rf3); in rt2500usb_config_channel()
621 rt2500usb_rf_write(rt2x00dev, 4, rf->rf4); in rt2500usb_config_channel()
624 static void rt2500usb_config_txpower(struct rt2x00_dev *rt2x00dev, in rt2500usb_config_txpower() argument
629 rf3 = rt2x00_rf_read(rt2x00dev, 3); in rt2500usb_config_txpower()
631 rt2500usb_rf_write(rt2x00dev, 3, rf3); in rt2500usb_config_txpower()
634 static void rt2500usb_config_ps(struct rt2x00_dev *rt2x00dev, in rt2500usb_config_ps() argument
643 reg = rt2500usb_register_read(rt2x00dev, MAC_CSR18); in rt2500usb_config_ps()
645 rt2x00dev->beacon_int - 20); in rt2500usb_config_ps()
651 rt2500usb_register_write(rt2x00dev, MAC_CSR18, reg); in rt2500usb_config_ps()
654 rt2500usb_register_write(rt2x00dev, MAC_CSR18, reg); in rt2500usb_config_ps()
656 reg = rt2500usb_register_read(rt2x00dev, MAC_CSR18); in rt2500usb_config_ps()
658 rt2500usb_register_write(rt2x00dev, MAC_CSR18, reg); in rt2500usb_config_ps()
661 rt2x00dev->ops->lib->set_device_state(rt2x00dev, state); in rt2500usb_config_ps()
664 static void rt2500usb_config(struct rt2x00_dev *rt2x00dev, in rt2500usb_config() argument
669 rt2500usb_config_channel(rt2x00dev, &libconf->rf, in rt2500usb_config()
673 rt2500usb_config_txpower(rt2x00dev, in rt2500usb_config()
676 rt2500usb_config_ps(rt2x00dev, libconf); in rt2500usb_config()
682 static void rt2500usb_link_stats(struct rt2x00_dev *rt2x00dev, in rt2500usb_link_stats() argument
690 reg = rt2500usb_register_read(rt2x00dev, STA_CSR0); in rt2500usb_link_stats()
696 reg = rt2500usb_register_read(rt2x00dev, STA_CSR3); in rt2500usb_link_stats()
700 static void rt2500usb_reset_tuner(struct rt2x00_dev *rt2x00dev, in rt2500usb_reset_tuner() argument
706 eeprom = rt2x00_eeprom_read(rt2x00dev, EEPROM_BBPTUNE_R24); in rt2500usb_reset_tuner()
708 rt2500usb_bbp_write(rt2x00dev, 24, value); in rt2500usb_reset_tuner()
710 eeprom = rt2x00_eeprom_read(rt2x00dev, EEPROM_BBPTUNE_R25); in rt2500usb_reset_tuner()
712 rt2500usb_bbp_write(rt2x00dev, 25, value); in rt2500usb_reset_tuner()
714 eeprom = rt2x00_eeprom_read(rt2x00dev, EEPROM_BBPTUNE_R61); in rt2500usb_reset_tuner()
716 rt2500usb_bbp_write(rt2x00dev, 61, value); in rt2500usb_reset_tuner()
718 eeprom = rt2x00_eeprom_read(rt2x00dev, EEPROM_BBPTUNE_VGC); in rt2500usb_reset_tuner()
720 rt2500usb_bbp_write(rt2x00dev, 17, value); in rt2500usb_reset_tuner()
730 struct rt2x00_dev *rt2x00dev = queue->rt2x00dev; in rt2500usb_start_queue() local
735 reg = rt2500usb_register_read(rt2x00dev, TXRX_CSR2); in rt2500usb_start_queue()
737 rt2500usb_register_write(rt2x00dev, TXRX_CSR2, reg); in rt2500usb_start_queue()
740 reg = rt2500usb_register_read(rt2x00dev, TXRX_CSR19); in rt2500usb_start_queue()
744 rt2500usb_register_write(rt2x00dev, TXRX_CSR19, reg); in rt2500usb_start_queue()
753 struct rt2x00_dev *rt2x00dev = queue->rt2x00dev; in rt2500usb_stop_queue() local
758 reg = rt2500usb_register_read(rt2x00dev, TXRX_CSR2); in rt2500usb_stop_queue()
760 rt2500usb_register_write(rt2x00dev, TXRX_CSR2, reg); in rt2500usb_stop_queue()
763 reg = rt2500usb_register_read(rt2x00dev, TXRX_CSR19); in rt2500usb_stop_queue()
767 rt2500usb_register_write(rt2x00dev, TXRX_CSR19, reg); in rt2500usb_stop_queue()
777 static int rt2500usb_init_registers(struct rt2x00_dev *rt2x00dev) in rt2500usb_init_registers() argument
781 rt2x00usb_vendor_request_sw(rt2x00dev, USB_DEVICE_MODE, 0x0001, in rt2500usb_init_registers()
783 rt2x00usb_vendor_request_sw(rt2x00dev, USB_SINGLE_WRITE, 0x0308, in rt2500usb_init_registers()
786 reg = rt2500usb_register_read(rt2x00dev, TXRX_CSR2); in rt2500usb_init_registers()
788 rt2500usb_register_write(rt2x00dev, TXRX_CSR2, reg); in rt2500usb_init_registers()
790 rt2500usb_register_write(rt2x00dev, MAC_CSR13, 0x1111); in rt2500usb_init_registers()
791 rt2500usb_register_write(rt2x00dev, MAC_CSR14, 0x1e11); in rt2500usb_init_registers()
793 reg = rt2500usb_register_read(rt2x00dev, MAC_CSR1); in rt2500usb_init_registers()
797 rt2500usb_register_write(rt2x00dev, MAC_CSR1, reg); in rt2500usb_init_registers()
799 reg = rt2500usb_register_read(rt2x00dev, MAC_CSR1); in rt2500usb_init_registers()
803 rt2500usb_register_write(rt2x00dev, MAC_CSR1, reg); in rt2500usb_init_registers()
805 reg = rt2500usb_register_read(rt2x00dev, TXRX_CSR5); in rt2500usb_init_registers()
810 rt2500usb_register_write(rt2x00dev, TXRX_CSR5, reg); in rt2500usb_init_registers()
812 reg = rt2500usb_register_read(rt2x00dev, TXRX_CSR6); in rt2500usb_init_registers()
817 rt2500usb_register_write(rt2x00dev, TXRX_CSR6, reg); in rt2500usb_init_registers()
819 reg = rt2500usb_register_read(rt2x00dev, TXRX_CSR7); in rt2500usb_init_registers()
824 rt2500usb_register_write(rt2x00dev, TXRX_CSR7, reg); in rt2500usb_init_registers()
826 reg = rt2500usb_register_read(rt2x00dev, TXRX_CSR8); in rt2500usb_init_registers()
831 rt2500usb_register_write(rt2x00dev, TXRX_CSR8, reg); in rt2500usb_init_registers()
833 reg = rt2500usb_register_read(rt2x00dev, TXRX_CSR19); in rt2500usb_init_registers()
838 rt2500usb_register_write(rt2x00dev, TXRX_CSR19, reg); in rt2500usb_init_registers()
840 rt2500usb_register_write(rt2x00dev, TXRX_CSR21, 0xe78f); in rt2500usb_init_registers()
841 rt2500usb_register_write(rt2x00dev, MAC_CSR9, 0xff1d); in rt2500usb_init_registers()
843 if (rt2x00dev->ops->lib->set_device_state(rt2x00dev, STATE_AWAKE)) in rt2500usb_init_registers()
846 reg = rt2500usb_register_read(rt2x00dev, MAC_CSR1); in rt2500usb_init_registers()
850 rt2500usb_register_write(rt2x00dev, MAC_CSR1, reg); in rt2500usb_init_registers()
852 if (rt2x00_rev(rt2x00dev) >= RT2570_VERSION_C) { in rt2500usb_init_registers()
853 reg = rt2500usb_register_read(rt2x00dev, PHY_CSR2); in rt2500usb_init_registers()
860 rt2500usb_register_write(rt2x00dev, PHY_CSR2, reg); in rt2500usb_init_registers()
862 rt2500usb_register_write(rt2x00dev, MAC_CSR11, 0x0002); in rt2500usb_init_registers()
863 rt2500usb_register_write(rt2x00dev, MAC_CSR22, 0x0053); in rt2500usb_init_registers()
864 rt2500usb_register_write(rt2x00dev, MAC_CSR15, 0x01ee); in rt2500usb_init_registers()
865 rt2500usb_register_write(rt2x00dev, MAC_CSR16, 0x0000); in rt2500usb_init_registers()
867 reg = rt2500usb_register_read(rt2x00dev, MAC_CSR8); in rt2500usb_init_registers()
869 rt2x00dev->rx->data_size); in rt2500usb_init_registers()
870 rt2500usb_register_write(rt2x00dev, MAC_CSR8, reg); in rt2500usb_init_registers()
872 reg = rt2500usb_register_read(rt2x00dev, TXRX_CSR0); in rt2500usb_init_registers()
876 rt2500usb_register_write(rt2x00dev, TXRX_CSR0, reg); in rt2500usb_init_registers()
878 reg = rt2500usb_register_read(rt2x00dev, MAC_CSR18); in rt2500usb_init_registers()
880 rt2500usb_register_write(rt2x00dev, MAC_CSR18, reg); in rt2500usb_init_registers()
882 reg = rt2500usb_register_read(rt2x00dev, PHY_CSR4); in rt2500usb_init_registers()
884 rt2500usb_register_write(rt2x00dev, PHY_CSR4, reg); in rt2500usb_init_registers()
886 reg = rt2500usb_register_read(rt2x00dev, TXRX_CSR1); in rt2500usb_init_registers()
888 rt2500usb_register_write(rt2x00dev, TXRX_CSR1, reg); in rt2500usb_init_registers()
893 static int rt2500usb_wait_bbp_ready(struct rt2x00_dev *rt2x00dev) in rt2500usb_wait_bbp_ready() argument
899 value = rt2500usb_bbp_read(rt2x00dev, 0); in rt2500usb_wait_bbp_ready()
905 rt2x00_err(rt2x00dev, "BBP register access failed, aborting\n"); in rt2500usb_wait_bbp_ready()
909 static int rt2500usb_init_bbp(struct rt2x00_dev *rt2x00dev) in rt2500usb_init_bbp() argument
916 if (unlikely(rt2500usb_wait_bbp_ready(rt2x00dev))) in rt2500usb_init_bbp()
919 rt2500usb_bbp_write(rt2x00dev, 3, 0x02); in rt2500usb_init_bbp()
920 rt2500usb_bbp_write(rt2x00dev, 4, 0x19); in rt2500usb_init_bbp()
921 rt2500usb_bbp_write(rt2x00dev, 14, 0x1c); in rt2500usb_init_bbp()
922 rt2500usb_bbp_write(rt2x00dev, 15, 0x30); in rt2500usb_init_bbp()
923 rt2500usb_bbp_write(rt2x00dev, 16, 0xac); in rt2500usb_init_bbp()
924 rt2500usb_bbp_write(rt2x00dev, 18, 0x18); in rt2500usb_init_bbp()
925 rt2500usb_bbp_write(rt2x00dev, 19, 0xff); in rt2500usb_init_bbp()
926 rt2500usb_bbp_write(rt2x00dev, 20, 0x1e); in rt2500usb_init_bbp()
927 rt2500usb_bbp_write(rt2x00dev, 21, 0x08); in rt2500usb_init_bbp()
928 rt2500usb_bbp_write(rt2x00dev, 22, 0x08); in rt2500usb_init_bbp()
929 rt2500usb_bbp_write(rt2x00dev, 23, 0x08); in rt2500usb_init_bbp()
930 rt2500usb_bbp_write(rt2x00dev, 24, 0x80); in rt2500usb_init_bbp()
931 rt2500usb_bbp_write(rt2x00dev, 25, 0x50); in rt2500usb_init_bbp()
932 rt2500usb_bbp_write(rt2x00dev, 26, 0x08); in rt2500usb_init_bbp()
933 rt2500usb_bbp_write(rt2x00dev, 27, 0x23); in rt2500usb_init_bbp()
934 rt2500usb_bbp_write(rt2x00dev, 30, 0x10); in rt2500usb_init_bbp()
935 rt2500usb_bbp_write(rt2x00dev, 31, 0x2b); in rt2500usb_init_bbp()
936 rt2500usb_bbp_write(rt2x00dev, 32, 0xb9); in rt2500usb_init_bbp()
937 rt2500usb_bbp_write(rt2x00dev, 34, 0x12); in rt2500usb_init_bbp()
938 rt2500usb_bbp_write(rt2x00dev, 35, 0x50); in rt2500usb_init_bbp()
939 rt2500usb_bbp_write(rt2x00dev, 39, 0xc4); in rt2500usb_init_bbp()
940 rt2500usb_bbp_write(rt2x00dev, 40, 0x02); in rt2500usb_init_bbp()
941 rt2500usb_bbp_write(rt2x00dev, 41, 0x60); in rt2500usb_init_bbp()
942 rt2500usb_bbp_write(rt2x00dev, 53, 0x10); in rt2500usb_init_bbp()
943 rt2500usb_bbp_write(rt2x00dev, 54, 0x18); in rt2500usb_init_bbp()
944 rt2500usb_bbp_write(rt2x00dev, 56, 0x08); in rt2500usb_init_bbp()
945 rt2500usb_bbp_write(rt2x00dev, 57, 0x10); in rt2500usb_init_bbp()
946 rt2500usb_bbp_write(rt2x00dev, 58, 0x08); in rt2500usb_init_bbp()
947 rt2500usb_bbp_write(rt2x00dev, 61, 0x60); in rt2500usb_init_bbp()
948 rt2500usb_bbp_write(rt2x00dev, 62, 0x10); in rt2500usb_init_bbp()
949 rt2500usb_bbp_write(rt2x00dev, 75, 0xff); in rt2500usb_init_bbp()
952 eeprom = rt2x00_eeprom_read(rt2x00dev, EEPROM_BBP_START + i); in rt2500usb_init_bbp()
957 rt2500usb_bbp_write(rt2x00dev, reg_id, value); in rt2500usb_init_bbp()
967 static int rt2500usb_enable_radio(struct rt2x00_dev *rt2x00dev) in rt2500usb_enable_radio() argument
972 if (unlikely(rt2500usb_init_registers(rt2x00dev) || in rt2500usb_enable_radio()
973 rt2500usb_init_bbp(rt2x00dev))) in rt2500usb_enable_radio()
979 static void rt2500usb_disable_radio(struct rt2x00_dev *rt2x00dev) in rt2500usb_disable_radio() argument
981 rt2500usb_register_write(rt2x00dev, MAC_CSR13, 0x2121); in rt2500usb_disable_radio()
982 rt2500usb_register_write(rt2x00dev, MAC_CSR14, 0x2121); in rt2500usb_disable_radio()
987 rt2500usb_register_write(rt2x00dev, TXRX_CSR19, 0); in rt2500usb_disable_radio()
989 rt2x00usb_disable_radio(rt2x00dev); in rt2500usb_disable_radio()
992 static int rt2500usb_set_state(struct rt2x00_dev *rt2x00dev, in rt2500usb_set_state() argument
1008 rt2500usb_register_write(rt2x00dev, MAC_CSR17, reg); in rt2500usb_set_state()
1010 rt2500usb_register_write(rt2x00dev, MAC_CSR17, reg); in rt2500usb_set_state()
1018 reg2 = rt2500usb_register_read(rt2x00dev, MAC_CSR17); in rt2500usb_set_state()
1023 rt2500usb_register_write(rt2x00dev, MAC_CSR17, reg); in rt2500usb_set_state()
1030 static int rt2500usb_set_device_state(struct rt2x00_dev *rt2x00dev, in rt2500usb_set_device_state() argument
1037 retval = rt2500usb_enable_radio(rt2x00dev); in rt2500usb_set_device_state()
1040 rt2500usb_disable_radio(rt2x00dev); in rt2500usb_set_device_state()
1050 retval = rt2500usb_set_state(rt2x00dev, state); in rt2500usb_set_device_state()
1058 rt2x00_err(rt2x00dev, "Device failed to enter state %d (%d)\n", in rt2500usb_set_device_state()
1132 struct rt2x00_dev *rt2x00dev = entry->queue->rt2x00dev; in rt2500usb_write_beacon() local
1133 struct usb_device *usb_dev = to_usb_device_intf(rt2x00dev->dev); in rt2500usb_write_beacon()
1143 reg = rt2500usb_register_read(rt2x00dev, TXRX_CSR19); in rt2500usb_write_beacon()
1145 rt2500usb_register_write(rt2x00dev, TXRX_CSR19, reg); in rt2500usb_write_beacon()
1161 rt2x00debug_dump_frame(rt2x00dev, DUMP_FRAME_BEACON, entry); in rt2500usb_write_beacon()
1168 length = rt2x00dev->ops->lib->get_tx_data_len(entry); in rt2500usb_write_beacon()
1203 rt2500usb_register_write(rt2x00dev, TXRX_CSR19, reg); in rt2500usb_write_beacon()
1204 rt2500usb_register_write(rt2x00dev, TXRX_CSR19, reg0); in rt2500usb_write_beacon()
1205 rt2500usb_register_write(rt2x00dev, TXRX_CSR19, reg); in rt2500usb_write_beacon()
1206 rt2500usb_register_write(rt2x00dev, TXRX_CSR19, reg0); in rt2500usb_write_beacon()
1207 rt2500usb_register_write(rt2x00dev, TXRX_CSR19, reg); in rt2500usb_write_beacon()
1230 struct rt2x00_dev *rt2x00dev = entry->queue->rt2x00dev; in rt2500usb_fill_rxdone() local
1284 rt2x00_get_field32(word1, RXD_W1_RSSI) - rt2x00dev->rssi_offset; in rt2500usb_fill_rxdone()
1308 if (!test_bit(DEVICE_STATE_ENABLED_RADIO, &entry->queue->rt2x00dev->flags)) in rt2500usb_beacondone()
1328 static int rt2500usb_validate_eeprom(struct rt2x00_dev *rt2x00dev) in rt2500usb_validate_eeprom() argument
1334 rt2x00usb_eeprom_read(rt2x00dev, rt2x00dev->eeprom, EEPROM_SIZE); in rt2500usb_validate_eeprom()
1339 mac = rt2x00_eeprom_addr(rt2x00dev, EEPROM_MAC_ADDR_0); in rt2500usb_validate_eeprom()
1340 rt2x00lib_set_mac_address(rt2x00dev, mac); in rt2500usb_validate_eeprom()
1342 word = rt2x00_eeprom_read(rt2x00dev, EEPROM_ANTENNA); in rt2500usb_validate_eeprom()
1354 rt2x00_eeprom_write(rt2x00dev, EEPROM_ANTENNA, word); in rt2500usb_validate_eeprom()
1355 rt2x00_eeprom_dbg(rt2x00dev, "Antenna: 0x%04x\n", word); in rt2500usb_validate_eeprom()
1358 word = rt2x00_eeprom_read(rt2x00dev, EEPROM_NIC); in rt2500usb_validate_eeprom()
1363 rt2x00_eeprom_write(rt2x00dev, EEPROM_NIC, word); in rt2500usb_validate_eeprom()
1364 rt2x00_eeprom_dbg(rt2x00dev, "NIC: 0x%04x\n", word); in rt2500usb_validate_eeprom()
1367 word = rt2x00_eeprom_read(rt2x00dev, EEPROM_CALIBRATE_OFFSET); in rt2500usb_validate_eeprom()
1371 rt2x00_eeprom_write(rt2x00dev, EEPROM_CALIBRATE_OFFSET, word); in rt2500usb_validate_eeprom()
1372 rt2x00_eeprom_dbg(rt2x00dev, "Calibrate offset: 0x%04x\n", in rt2500usb_validate_eeprom()
1376 word = rt2x00_eeprom_read(rt2x00dev, EEPROM_BBPTUNE); in rt2500usb_validate_eeprom()
1379 rt2x00_eeprom_write(rt2x00dev, EEPROM_BBPTUNE, word); in rt2500usb_validate_eeprom()
1380 rt2x00_eeprom_dbg(rt2x00dev, "BBPtune: 0x%04x\n", word); in rt2500usb_validate_eeprom()
1387 bbp = rt2500usb_bbp_read(rt2x00dev, 17); in rt2500usb_validate_eeprom()
1390 word = rt2x00_eeprom_read(rt2x00dev, EEPROM_BBPTUNE_VGC); in rt2500usb_validate_eeprom()
1394 rt2x00_eeprom_write(rt2x00dev, EEPROM_BBPTUNE_VGC, word); in rt2500usb_validate_eeprom()
1395 rt2x00_eeprom_dbg(rt2x00dev, "BBPtune vgc: 0x%04x\n", word); in rt2500usb_validate_eeprom()
1398 rt2x00_eeprom_write(rt2x00dev, EEPROM_BBPTUNE_VGC, word); in rt2500usb_validate_eeprom()
1401 word = rt2x00_eeprom_read(rt2x00dev, EEPROM_BBPTUNE_R17); in rt2500usb_validate_eeprom()
1405 rt2x00_eeprom_write(rt2x00dev, EEPROM_BBPTUNE_R17, word); in rt2500usb_validate_eeprom()
1406 rt2x00_eeprom_dbg(rt2x00dev, "BBPtune r17: 0x%04x\n", word); in rt2500usb_validate_eeprom()
1409 word = rt2x00_eeprom_read(rt2x00dev, EEPROM_BBPTUNE_R24); in rt2500usb_validate_eeprom()
1413 rt2x00_eeprom_write(rt2x00dev, EEPROM_BBPTUNE_R24, word); in rt2500usb_validate_eeprom()
1414 rt2x00_eeprom_dbg(rt2x00dev, "BBPtune r24: 0x%04x\n", word); in rt2500usb_validate_eeprom()
1417 word = rt2x00_eeprom_read(rt2x00dev, EEPROM_BBPTUNE_R25); in rt2500usb_validate_eeprom()
1421 rt2x00_eeprom_write(rt2x00dev, EEPROM_BBPTUNE_R25, word); in rt2500usb_validate_eeprom()
1422 rt2x00_eeprom_dbg(rt2x00dev, "BBPtune r25: 0x%04x\n", word); in rt2500usb_validate_eeprom()
1425 word = rt2x00_eeprom_read(rt2x00dev, EEPROM_BBPTUNE_R61); in rt2500usb_validate_eeprom()
1429 rt2x00_eeprom_write(rt2x00dev, EEPROM_BBPTUNE_R61, word); in rt2500usb_validate_eeprom()
1430 rt2x00_eeprom_dbg(rt2x00dev, "BBPtune r61: 0x%04x\n", word); in rt2500usb_validate_eeprom()
1436 static int rt2500usb_init_eeprom(struct rt2x00_dev *rt2x00dev) in rt2500usb_init_eeprom() argument
1445 eeprom = rt2x00_eeprom_read(rt2x00dev, EEPROM_ANTENNA); in rt2500usb_init_eeprom()
1451 reg = rt2500usb_register_read(rt2x00dev, MAC_CSR0); in rt2500usb_init_eeprom()
1452 rt2x00_set_chip(rt2x00dev, RT2570, value, reg); in rt2500usb_init_eeprom()
1455 rt2x00_err(rt2x00dev, "Invalid RT chipset detected\n"); in rt2500usb_init_eeprom()
1459 if (!rt2x00_rf(rt2x00dev, RF2522) && in rt2500usb_init_eeprom()
1460 !rt2x00_rf(rt2x00dev, RF2523) && in rt2500usb_init_eeprom()
1461 !rt2x00_rf(rt2x00dev, RF2524) && in rt2500usb_init_eeprom()
1462 !rt2x00_rf(rt2x00dev, RF2525) && in rt2500usb_init_eeprom()
1463 !rt2x00_rf(rt2x00dev, RF2525E) && in rt2500usb_init_eeprom()
1464 !rt2x00_rf(rt2x00dev, RF5222)) { in rt2500usb_init_eeprom()
1465 rt2x00_err(rt2x00dev, "Invalid RF chipset detected\n"); in rt2500usb_init_eeprom()
1472 rt2x00dev->default_ant.tx = in rt2500usb_init_eeprom()
1474 rt2x00dev->default_ant.rx = in rt2500usb_init_eeprom()
1483 if (rt2x00dev->default_ant.tx == ANTENNA_SW_DIVERSITY) in rt2500usb_init_eeprom()
1484 rt2x00dev->default_ant.tx = ANTENNA_HW_DIVERSITY; in rt2500usb_init_eeprom()
1485 if (rt2x00dev->default_ant.rx == ANTENNA_SW_DIVERSITY) in rt2500usb_init_eeprom()
1486 rt2x00dev->default_ant.rx = ANTENNA_HW_DIVERSITY; in rt2500usb_init_eeprom()
1494 rt2500usb_init_led(rt2x00dev, &rt2x00dev->led_radio, LED_TYPE_RADIO); in rt2500usb_init_eeprom()
1498 rt2500usb_init_led(rt2x00dev, &rt2x00dev->led_qual, in rt2500usb_init_eeprom()
1506 __set_bit(CAPABILITY_HW_BUTTON, &rt2x00dev->cap_flags); in rt2500usb_init_eeprom()
1511 eeprom = rt2x00_eeprom_read(rt2x00dev, EEPROM_CALIBRATE_OFFSET); in rt2500usb_init_eeprom()
1512 rt2x00dev->rssi_offset = in rt2500usb_init_eeprom()
1673 static int rt2500usb_probe_hw_mode(struct rt2x00_dev *rt2x00dev) in rt2500usb_probe_hw_mode() argument
1675 struct hw_mode_spec *spec = &rt2x00dev->spec; in rt2500usb_probe_hw_mode()
1689 ieee80211_hw_set(rt2x00dev->hw, PS_NULLFUNC_STACK); in rt2500usb_probe_hw_mode()
1690 ieee80211_hw_set(rt2x00dev->hw, SUPPORTS_PS); in rt2500usb_probe_hw_mode()
1691 ieee80211_hw_set(rt2x00dev->hw, RX_INCLUDES_FCS); in rt2500usb_probe_hw_mode()
1692 ieee80211_hw_set(rt2x00dev->hw, SIGNAL_DBM); in rt2500usb_probe_hw_mode()
1697 rt2x00dev->hw->wiphy->flags &= ~WIPHY_FLAG_PS_ON_BY_DEFAULT; in rt2500usb_probe_hw_mode()
1699 SET_IEEE80211_DEV(rt2x00dev->hw, rt2x00dev->dev); in rt2500usb_probe_hw_mode()
1700 SET_IEEE80211_PERM_ADDR(rt2x00dev->hw, in rt2500usb_probe_hw_mode()
1701 rt2x00_eeprom_addr(rt2x00dev, in rt2500usb_probe_hw_mode()
1710 if (rt2x00_rf(rt2x00dev, RF2522)) { in rt2500usb_probe_hw_mode()
1713 } else if (rt2x00_rf(rt2x00dev, RF2523)) { in rt2500usb_probe_hw_mode()
1716 } else if (rt2x00_rf(rt2x00dev, RF2524)) { in rt2500usb_probe_hw_mode()
1719 } else if (rt2x00_rf(rt2x00dev, RF2525)) { in rt2500usb_probe_hw_mode()
1722 } else if (rt2x00_rf(rt2x00dev, RF2525E)) { in rt2500usb_probe_hw_mode()
1725 } else if (rt2x00_rf(rt2x00dev, RF5222)) { in rt2500usb_probe_hw_mode()
1740 tx_power = rt2x00_eeprom_addr(rt2x00dev, EEPROM_TXPOWER_START); in rt2500usb_probe_hw_mode()
1756 static int rt2500usb_probe_hw(struct rt2x00_dev *rt2x00dev) in rt2500usb_probe_hw() argument
1764 retval = rt2500usb_validate_eeprom(rt2x00dev); in rt2500usb_probe_hw()
1768 retval = rt2500usb_init_eeprom(rt2x00dev); in rt2500usb_probe_hw()
1776 reg = rt2500usb_register_read(rt2x00dev, MAC_CSR19); in rt2500usb_probe_hw()
1778 rt2500usb_register_write(rt2x00dev, MAC_CSR19, reg); in rt2500usb_probe_hw()
1783 retval = rt2500usb_probe_hw_mode(rt2x00dev); in rt2500usb_probe_hw()
1790 __set_bit(REQUIRE_ATIM_QUEUE, &rt2x00dev->cap_flags); in rt2500usb_probe_hw()
1791 __set_bit(REQUIRE_BEACON_GUARD, &rt2x00dev->cap_flags); in rt2500usb_probe_hw()
1793 __set_bit(CAPABILITY_HW_CRYPTO, &rt2x00dev->cap_flags); in rt2500usb_probe_hw()
1794 __set_bit(REQUIRE_COPY_IV, &rt2x00dev->cap_flags); in rt2500usb_probe_hw()
1796 __set_bit(REQUIRE_SW_SEQNO, &rt2x00dev->cap_flags); in rt2500usb_probe_hw()
1797 __set_bit(REQUIRE_PS_AUTOWAKE, &rt2x00dev->cap_flags); in rt2500usb_probe_hw()
1802 rt2x00dev->rssi_offset = DEFAULT_RSSI_OFFSET; in rt2500usb_probe_hw()