Lines Matching refs:mac
80 #define RF_LO_WRITE(mac, lo) bwi_rf_lo_write((mac), (lo)) argument
108 #define SAVE_RF_REG(mac, regs, n) (regs)->rf_##n = RF_READ((mac), 0x##n) argument
109 #define RESTORE_RF_REG(mac, regs, n) RF_WRITE((mac), 0x##n, (regs)->rf_##n) argument
111 #define SAVE_PHY_REG(mac, regs, n) (regs)->phy_##n = PHY_READ((mac), 0x##n) argument
112 #define RESTORE_PHY_REG(mac, regs, n) PHY_WRITE((mac), 0x##n, (regs)->phy_##n) argument
161 bwi_nrssi_11g(struct bwi_mac *mac) in bwi_nrssi_11g() argument
167 val = (int16_t)__SHIFTOUT(PHY_READ(mac, 0x47f), NRSSI_11G_MASK); in bwi_nrssi_11g()
176 bwi_get_rf_lo(struct bwi_mac *mac, uint16_t rf_atten, uint16_t bbp_atten) in bwi_get_rf_lo() argument
183 return &mac->mac_rf.rf_lo[n]; in bwi_get_rf_lo()
187 bwi_rf_lo_isused(struct bwi_mac *mac, const struct bwi_rf_lo *lo) in bwi_rf_lo_isused() argument
189 struct bwi_rf *rf = &mac->mac_rf; in bwi_rf_lo_isused()
199 bwi_rf_write(struct bwi_mac *mac, uint16_t ctrl, uint16_t data) in bwi_rf_write() argument
201 struct bwi_softc *sc = mac->mac_sc; in bwi_rf_write()
208 bwi_rf_read(struct bwi_mac *mac, uint16_t ctrl) in bwi_rf_read() argument
210 struct bwi_rf *rf = &mac->mac_rf; in bwi_rf_read()
211 struct bwi_softc *sc = mac->mac_sc; in bwi_rf_read()
227 bwi_rf_attach(struct bwi_mac *mac) in bwi_rf_attach() argument
229 struct bwi_softc *sc = mac->mac_sc; in bwi_rf_attach()
230 struct bwi_phy *phy = &mac->mac_phy; in bwi_rf_attach()
231 struct bwi_rf *rf = &mac->mac_rf; in bwi_rf_attach()
318 if (mac->mac_rev >= 5) in bwi_rf_attach()
342 bwi_rf_set_chan(struct bwi_mac *mac, u_int chan, int work_around) in bwi_rf_set_chan() argument
344 struct bwi_softc *sc = mac->mac_sc; in bwi_rf_set_chan()
349 MOBJ_WRITE_2(mac, BWI_COMM_MOBJ, BWI_COMM_MOBJ_CHAN, chan); in bwi_rf_set_chan()
354 bwi_rf_work_around(mac, chan); in bwi_rf_set_chan()
360 HFLAGS_CLRBITS(mac, BWI_HFLAG_NOT_JAPAN); in bwi_rf_set_chan()
362 HFLAGS_SETBITS(mac, BWI_HFLAG_NOT_JAPAN); in bwi_rf_set_chan()
369 mac->mac_rf.rf_curchan = chan; in bwi_rf_set_chan()
373 bwi_rf_get_gains(struct bwi_mac *mac) in bwi_rf_get_gains() argument
387 struct bwi_softc *sc = mac->mac_sc; in bwi_rf_get_gains()
388 struct bwi_phy *phy = &mac->mac_phy; in bwi_rf_get_gains()
389 struct bwi_rf *rf = &mac->mac_rf; in bwi_rf_get_gains()
399 save_phy[i] = PHY_READ(mac, save_phy_regs[i]); in bwi_rf_get_gains()
400 PHY_READ(mac, 0x2d); /* dummy read */ in bwi_rf_get_gains()
403 save_rf[i] = RF_READ(mac, save_rf_regs[i]); in bwi_rf_get_gains()
405 PHY_CLRBITS(mac, 0x429, 0xc000); in bwi_rf_get_gains()
406 PHY_SETBITS(mac, 0x1, 0x8000); in bwi_rf_get_gains()
408 PHY_SETBITS(mac, 0x811, 0x2); in bwi_rf_get_gains()
409 PHY_CLRBITS(mac, 0x812, 0x2); in bwi_rf_get_gains()
410 PHY_SETBITS(mac, 0x811, 0x1); in bwi_rf_get_gains()
411 PHY_CLRBITS(mac, 0x812, 0x1); in bwi_rf_get_gains()
413 PHY_SETBITS(mac, 0x814, 0x1); in bwi_rf_get_gains()
414 PHY_CLRBITS(mac, 0x815, 0x1); in bwi_rf_get_gains()
415 PHY_SETBITS(mac, 0x814, 0x2); in bwi_rf_get_gains()
416 PHY_CLRBITS(mac, 0x815, 0x2); in bwi_rf_get_gains()
418 PHY_SETBITS(mac, 0x811, 0xc); in bwi_rf_get_gains()
419 PHY_SETBITS(mac, 0x812, 0xc); in bwi_rf_get_gains()
420 PHY_SETBITS(mac, 0x811, 0x30); in bwi_rf_get_gains()
421 PHY_FILT_SETBITS(mac, 0x812, 0xffcf, 0x10); in bwi_rf_get_gains()
423 PHY_WRITE(mac, 0x5a, 0x780); in bwi_rf_get_gains()
424 PHY_WRITE(mac, 0x59, 0xc810); in bwi_rf_get_gains()
425 PHY_WRITE(mac, 0x58, 0xd); in bwi_rf_get_gains()
426 PHY_SETBITS(mac, 0xa, 0x2000); in bwi_rf_get_gains()
428 PHY_SETBITS(mac, 0x814, 0x4); in bwi_rf_get_gains()
429 PHY_CLRBITS(mac, 0x815, 0x4); in bwi_rf_get_gains()
431 PHY_FILT_SETBITS(mac, 0x3, 0xff9f, 0x40); in bwi_rf_get_gains()
435 RF_WRITE(mac, 0x43, loop1_max); in bwi_rf_get_gains()
438 RF_WRITE(mac, 0x52, 0x0); in bwi_rf_get_gains()
439 RF_FILT_SETBITS(mac, 0x43, 0xfff0, loop1_max); in bwi_rf_get_gains()
442 bwi_phy_set_bbp_atten(mac, 11); in bwi_rf_get_gains()
445 PHY_WRITE(mac, 0x80f, 0xc020); in bwi_rf_get_gains()
447 PHY_WRITE(mac, 0x80f, 0x8020); in bwi_rf_get_gains()
448 PHY_WRITE(mac, 0x810, 0); in bwi_rf_get_gains()
450 PHY_FILT_SETBITS(mac, 0x2b, 0xffc0, 0x1); in bwi_rf_get_gains()
451 PHY_FILT_SETBITS(mac, 0x2b, 0xc0ff, 0x800); in bwi_rf_get_gains()
452 PHY_SETBITS(mac, 0x811, 0x100); in bwi_rf_get_gains()
453 PHY_CLRBITS(mac, 0x812, 0x3000); in bwi_rf_get_gains()
457 PHY_SETBITS(mac, 0x811, 0x800); in bwi_rf_get_gains()
458 PHY_SETBITS(mac, 0x812, 0x8000); in bwi_rf_get_gains()
460 RF_CLRBITS(mac, 0x7a, 0xff08); in bwi_rf_get_gains()
469 RF_WRITE(mac, 0x43, i); in bwi_rf_get_gains()
471 if (bwi_rf_gain_max_reached(mac, j)) in bwi_rf_get_gains()
484 PHY_SETBITS(mac, 0x812, 0x30); in bwi_rf_get_gains()
488 if (bwi_rf_gain_max_reached(mac, i)) in bwi_rf_get_gains()
500 PHY_WRITE(mac, save_phy_regs[i], save_phy[i]); in bwi_rf_get_gains()
502 bwi_phy_set_bbp_atten(mac, mac->mac_tpctl.bbp_atten); in bwi_rf_get_gains()
505 RF_WRITE(mac, save_rf_regs[i], save_rf[i]); in bwi_rf_get_gains()
507 PHY_WRITE(mac, save_phy_regs[2], save_phy[2] | 0x3); in bwi_rf_get_gains()
509 PHY_WRITE(mac, save_phy_regs[2], save_phy[2]); in bwi_rf_get_gains()
510 PHY_WRITE(mac, save_phy_regs[3], save_phy[3]); in bwi_rf_get_gains()
511 PHY_WRITE(mac, save_phy_regs[0], save_phy[0]); in bwi_rf_get_gains()
512 PHY_WRITE(mac, save_phy_regs[1], save_phy[1]); in bwi_rf_get_gains()
519 DPRINTF(mac->mac_sc, BWI_DBG_RF | BWI_DBG_INIT, in bwi_rf_get_gains()
528 bwi_rf_init(struct bwi_mac *mac) in bwi_rf_init() argument
530 struct bwi_rf *rf = &mac->mac_rf; in bwi_rf_init()
536 RF_WRITE(mac, 0x78, rf->rf_calib); in bwi_rf_init()
538 bwi_rf_init_bcm2050(mac); in bwi_rf_init()
543 bwi_rf_off_11a(struct bwi_mac *mac) in bwi_rf_off_11a() argument
545 RF_WRITE(mac, 0x4, 0xff); in bwi_rf_off_11a()
546 RF_WRITE(mac, 0x5, 0xfb); in bwi_rf_off_11a()
548 PHY_SETBITS(mac, 0x10, 0x8); in bwi_rf_off_11a()
549 PHY_SETBITS(mac, 0x11, 0x8); in bwi_rf_off_11a()
551 PHY_WRITE(mac, 0x15, 0xaa00); in bwi_rf_off_11a()
555 bwi_rf_off_11bg(struct bwi_mac *mac) in bwi_rf_off_11bg() argument
557 PHY_WRITE(mac, 0x15, 0xaa00); in bwi_rf_off_11bg()
561 bwi_rf_off_11g_rev5(struct bwi_mac *mac) in bwi_rf_off_11g_rev5() argument
563 PHY_SETBITS(mac, 0x811, 0x8c); in bwi_rf_off_11g_rev5()
564 PHY_CLRBITS(mac, 0x812, 0x8c); in bwi_rf_off_11g_rev5()
568 bwi_rf_work_around(struct bwi_mac *mac, u_int chan) in bwi_rf_work_around() argument
570 struct bwi_softc *sc = mac->mac_sc; in bwi_rf_work_around()
571 struct bwi_rf *rf = &mac->mac_rf; in bwi_rf_work_around()
590 bwi_rf_lo_find(struct bwi_mac *mac, const struct bwi_tpctl *tpctl) in bwi_rf_lo_find() argument
628 return bwi_get_rf_lo(mac, rf_atten, bbp_atten); in bwi_rf_lo_find()
632 bwi_rf_lo_adjust(struct bwi_mac *mac, const struct bwi_tpctl *tpctl) in bwi_rf_lo_adjust() argument
636 lo = bwi_rf_lo_find(mac, tpctl); in bwi_rf_lo_adjust()
637 RF_LO_WRITE(mac, lo); in bwi_rf_lo_adjust()
641 bwi_rf_lo_write(struct bwi_mac *mac, const struct bwi_rf_lo *lo) in bwi_rf_lo_write() argument
648 PHY_WRITE(mac, BWI_PHYR_RF_LO, val); in bwi_rf_lo_write()
652 bwi_rf_gain_max_reached(struct bwi_mac *mac, int idx) in bwi_rf_gain_max_reached() argument
654 PHY_FILT_SETBITS(mac, 0x812, 0xf0ff, idx << 8); in bwi_rf_gain_max_reached()
655 PHY_FILT_SETBITS(mac, 0x15, 0xfff, 0xa000); in bwi_rf_gain_max_reached()
656 PHY_SETBITS(mac, 0x15, 0xf000); in bwi_rf_gain_max_reached()
660 return (PHY_READ(mac, 0x2d) >= 0xdfc); in bwi_rf_gain_max_reached()
677 bwi_phy812_value(struct bwi_mac *mac, uint16_t lpd) in bwi_phy812_value() argument
679 struct bwi_softc *sc = mac->mac_sc; in bwi_phy812_value()
680 struct bwi_phy *phy = &mac->mac_phy; in bwi_phy812_value()
681 struct bwi_rf *rf = &mac->mac_rf; in bwi_phy812_value()
749 bwi_rf_init_bcm2050(struct bwi_mac *mac) in bwi_rf_init_bcm2050() argument
770 struct bwi_softc *sc = mac->mac_sc; in bwi_rf_init_bcm2050()
771 struct bwi_phy *phy = &mac->mac_phy; in bwi_rf_init_bcm2050()
772 struct bwi_rf *rf = &mac->mac_rf; in bwi_rf_init_bcm2050()
779 save_rf[i] = RF_READ(mac, save_rf_regs[i]); in bwi_rf_init_bcm2050()
781 save_phy_comm[i] = PHY_READ(mac, save_phy_regs_comm[i]); in bwi_rf_init_bcm2050()
784 phyr_30 = PHY_READ(mac, 0x30); in bwi_rf_init_bcm2050()
787 PHY_WRITE(mac, 0x30, 0xff); in bwi_rf_init_bcm2050()
792 PHY_READ(mac, save_phy_regs_11g[i]); in bwi_rf_init_bcm2050()
795 PHY_SETBITS(mac, 0x814, 0x3); in bwi_rf_init_bcm2050()
796 PHY_CLRBITS(mac, 0x815, 0x3); in bwi_rf_init_bcm2050()
797 PHY_CLRBITS(mac, 0x429, 0x8000); in bwi_rf_init_bcm2050()
798 PHY_CLRBITS(mac, 0x802, 0x3); in bwi_rf_init_bcm2050()
800 phyr_80f = PHY_READ(mac, 0x80f); in bwi_rf_init_bcm2050()
801 phyr_810 = PHY_READ(mac, 0x810); in bwi_rf_init_bcm2050()
804 PHY_WRITE(mac, 0x80f, 0xc020); in bwi_rf_init_bcm2050()
806 PHY_WRITE(mac, 0x80f, 0x8020); in bwi_rf_init_bcm2050()
807 PHY_WRITE(mac, 0x810, 0); in bwi_rf_init_bcm2050()
809 phy812_val = bwi_phy812_value(mac, 0x011); in bwi_rf_init_bcm2050()
810 PHY_WRITE(mac, 0x812, phy812_val); in bwi_rf_init_bcm2050()
813 PHY_WRITE(mac, 0x811, 0x1b3); in bwi_rf_init_bcm2050()
815 PHY_WRITE(mac, 0x811, 0x9b3); in bwi_rf_init_bcm2050()
819 phyr_35 = PHY_READ(mac, 0x35); in bwi_rf_init_bcm2050()
820 PHY_CLRBITS(mac, 0x35, 0x80); in bwi_rf_init_bcm2050()
829 PHY_FILT_SETBITS(mac, 0x3, 0xffbf, 0x40); in bwi_rf_init_bcm2050()
833 calib = bwi_rf_calibval(mac); in bwi_rf_init_bcm2050()
836 RF_WRITE(mac, 0x78, 0x26); in bwi_rf_init_bcm2050()
839 phy812_val = bwi_phy812_value(mac, 0x011); in bwi_rf_init_bcm2050()
840 PHY_WRITE(mac, 0x812, phy812_val); in bwi_rf_init_bcm2050()
843 PHY_WRITE(mac, 0x15, 0xbfaf); in bwi_rf_init_bcm2050()
844 PHY_WRITE(mac, 0x2b, 0x1403); in bwi_rf_init_bcm2050()
847 phy812_val = bwi_phy812_value(mac, 0x001); in bwi_rf_init_bcm2050()
848 PHY_WRITE(mac, 0x812, phy812_val); in bwi_rf_init_bcm2050()
851 PHY_WRITE(mac, 0x15, 0xbfa0); in bwi_rf_init_bcm2050()
853 RF_SETBITS(mac, 0x51, 0x4); in bwi_rf_init_bcm2050()
855 RF_WRITE(mac, 0x43, 0x1f); in bwi_rf_init_bcm2050()
857 RF_WRITE(mac, 0x52, 0); in bwi_rf_init_bcm2050()
858 RF_FILT_SETBITS(mac, 0x43, 0xfff0, 0x9); in bwi_rf_init_bcm2050()
862 PHY_WRITE(mac, 0x58, 0); in bwi_rf_init_bcm2050()
864 PHY_WRITE(mac, 0x5a, 0x480); in bwi_rf_init_bcm2050()
865 PHY_WRITE(mac, 0x59, 0xc810); in bwi_rf_init_bcm2050()
867 PHY_WRITE(mac, 0x58, 0xd); in bwi_rf_init_bcm2050()
869 phy812_val = bwi_phy812_value(mac, 0x101); in bwi_rf_init_bcm2050()
870 PHY_WRITE(mac, 0x812, phy812_val); in bwi_rf_init_bcm2050()
872 PHY_WRITE(mac, 0x15, 0xafb0); in bwi_rf_init_bcm2050()
876 phy812_val = bwi_phy812_value(mac, 0x101); in bwi_rf_init_bcm2050()
877 PHY_WRITE(mac, 0x812, phy812_val); in bwi_rf_init_bcm2050()
879 PHY_WRITE(mac, 0x15, 0xefb0); in bwi_rf_init_bcm2050()
883 phy812_val = bwi_phy812_value(mac, 0x100); in bwi_rf_init_bcm2050()
884 PHY_WRITE(mac, 0x812, phy812_val); in bwi_rf_init_bcm2050()
886 PHY_WRITE(mac, 0x15, 0xfff0); in bwi_rf_init_bcm2050()
889 test_lim += PHY_READ(mac, 0x2d); in bwi_rf_init_bcm2050()
891 PHY_WRITE(mac, 0x58, 0); in bwi_rf_init_bcm2050()
893 phy812_val = bwi_phy812_value(mac, 0x101); in bwi_rf_init_bcm2050()
894 PHY_WRITE(mac, 0x812, phy812_val); in bwi_rf_init_bcm2050()
896 PHY_WRITE(mac, 0x15, 0xafb0); in bwi_rf_init_bcm2050()
904 PHY_WRITE(mac, 0x58, 0); in bwi_rf_init_bcm2050()
909 RF_WRITE(mac, 0x78, rfr_78); in bwi_rf_init_bcm2050()
914 PHY_WRITE(mac, 0x5a, 0xd80); in bwi_rf_init_bcm2050()
915 PHY_WRITE(mac, 0x59, 0xc810); in bwi_rf_init_bcm2050()
917 PHY_WRITE(mac, 0x58, 0xd); in bwi_rf_init_bcm2050()
920 phy812_val = bwi_phy812_value(mac, 0x101); in bwi_rf_init_bcm2050()
921 PHY_WRITE(mac, 0x812, phy812_val); in bwi_rf_init_bcm2050()
923 PHY_WRITE(mac, 0x15, 0xafb0); in bwi_rf_init_bcm2050()
928 phy812_val = bwi_phy812_value(mac, 0x101); in bwi_rf_init_bcm2050()
929 PHY_WRITE(mac, 0x812, phy812_val); in bwi_rf_init_bcm2050()
931 PHY_WRITE(mac, 0x15, 0xefb0); in bwi_rf_init_bcm2050()
936 phy812_val = bwi_phy812_value(mac, 0x100); in bwi_rf_init_bcm2050()
937 PHY_WRITE(mac, 0x812, phy812_val); in bwi_rf_init_bcm2050()
939 PHY_WRITE(mac, 0x15, 0xfff0); in bwi_rf_init_bcm2050()
942 test += PHY_READ(mac, 0x2d); in bwi_rf_init_bcm2050()
944 PHY_WRITE(mac, 0x58, 0); in bwi_rf_init_bcm2050()
947 phy812_val = bwi_phy812_value(mac, 0x101); in bwi_rf_init_bcm2050()
948 PHY_WRITE(mac, 0x812, phy812_val); in bwi_rf_init_bcm2050()
950 PHY_WRITE(mac, 0x15, 0xafb0); in bwi_rf_init_bcm2050()
972 PHY_WRITE(mac, save_phy_regs_comm[0], save_phy_comm[0]); in bwi_rf_init_bcm2050()
977 RF_WRITE(mac, save_rf_regs[pos], save_rf[pos]); in bwi_rf_init_bcm2050()
980 PHY_WRITE(mac, save_phy_regs_comm[i], save_phy_comm[i]); in bwi_rf_init_bcm2050()
986 PHY_WRITE(mac, 0x35, phyr_35); in bwi_rf_init_bcm2050()
987 bwi_rf_work_around(mac, rf->rf_curchan); in bwi_rf_init_bcm2050()
990 PHY_WRITE(mac, 0x30, phyr_30); in bwi_rf_init_bcm2050()
997 PHY_WRITE(mac, save_phy_regs_11g[i], in bwi_rf_init_bcm2050()
1001 PHY_WRITE(mac, 0x80f, phyr_80f); in bwi_rf_init_bcm2050()
1002 PHY_WRITE(mac, 0x810, phyr_810); in bwi_rf_init_bcm2050()
1011 bwi_rf_calibval(struct bwi_mac *mac) in bwi_rf_calibval() argument
1021 val = RF_READ(mac, BWI_RFR_BBP_ATTEN); in bwi_rf_calibval()
1085 bwi_rf_map_txpower(struct bwi_mac *mac) in bwi_rf_map_txpower() argument
1087 struct bwi_softc *sc = mac->mac_sc; in bwi_rf_map_txpower()
1088 struct bwi_rf *rf = &mac->mac_rf; in bwi_rf_map_txpower()
1089 struct bwi_phy *phy = &mac->mac_phy; in bwi_rf_map_txpower()
1258 bwi_rf_lo_update_11g(struct bwi_mac *mac) in bwi_rf_lo_update_11g() argument
1260 struct bwi_softc *sc = mac->mac_sc; in bwi_rf_lo_update_11g()
1261 struct bwi_rf *rf = &mac->mac_rf; in bwi_rf_lo_update_11g()
1262 struct bwi_phy *phy = &mac->mac_phy; in bwi_rf_lo_update_11g()
1263 struct bwi_tpctl *tpctl = &mac->mac_tpctl; in bwi_rf_lo_update_11g()
1276 SAVE_PHY_REG(mac, ®s, 429); in bwi_rf_lo_update_11g()
1277 SAVE_PHY_REG(mac, ®s, 802); in bwi_rf_lo_update_11g()
1279 PHY_WRITE(mac, 0x429, regs.phy_429 & 0x7fff); in bwi_rf_lo_update_11g()
1280 PHY_WRITE(mac, 0x802, regs.phy_802 & 0xfffc); in bwi_rf_lo_update_11g()
1287 SAVE_PHY_REG(mac, ®s, 15); in bwi_rf_lo_update_11g()
1288 SAVE_PHY_REG(mac, ®s, 2a); in bwi_rf_lo_update_11g()
1289 SAVE_PHY_REG(mac, ®s, 35); in bwi_rf_lo_update_11g()
1290 SAVE_PHY_REG(mac, ®s, 60); in bwi_rf_lo_update_11g()
1291 SAVE_RF_REG(mac, ®s, 43); in bwi_rf_lo_update_11g()
1292 SAVE_RF_REG(mac, ®s, 7a); in bwi_rf_lo_update_11g()
1293 SAVE_RF_REG(mac, ®s, 52); in bwi_rf_lo_update_11g()
1295 SAVE_PHY_REG(mac, ®s, 811); in bwi_rf_lo_update_11g()
1296 SAVE_PHY_REG(mac, ®s, 812); in bwi_rf_lo_update_11g()
1297 SAVE_PHY_REG(mac, ®s, 814); in bwi_rf_lo_update_11g()
1298 SAVE_PHY_REG(mac, ®s, 815); in bwi_rf_lo_update_11g()
1302 bwi_rf_set_chan(mac, 6, 0); in bwi_rf_lo_update_11g()
1305 PHY_WRITE(mac, 0x429, regs.phy_429 & 0x7fff); in bwi_rf_lo_update_11g()
1306 PHY_WRITE(mac, 0x802, regs.phy_802 & 0xfffc); in bwi_rf_lo_update_11g()
1307 bwi_mac_dummy_xmit(mac); in bwi_rf_lo_update_11g()
1309 RF_WRITE(mac, 0x43, 0x6); in bwi_rf_lo_update_11g()
1311 bwi_phy_set_bbp_atten(mac, 2); in bwi_rf_lo_update_11g()
1315 PHY_WRITE(mac, 0x2e, 0x7f); in bwi_rf_lo_update_11g()
1316 PHY_WRITE(mac, 0x80f, 0x78); in bwi_rf_lo_update_11g()
1317 PHY_WRITE(mac, 0x35, regs.phy_35 & 0xff7f); in bwi_rf_lo_update_11g()
1318 RF_WRITE(mac, 0x7a, regs.rf_7a & 0xfff0); in bwi_rf_lo_update_11g()
1319 PHY_WRITE(mac, 0x2b, 0x203); in bwi_rf_lo_update_11g()
1320 PHY_WRITE(mac, 0x2a, 0x8a3); in bwi_rf_lo_update_11g()
1323 PHY_WRITE(mac, 0x814, regs.phy_814 | 0x3); in bwi_rf_lo_update_11g()
1324 PHY_WRITE(mac, 0x815, regs.phy_815 & 0xfffc); in bwi_rf_lo_update_11g()
1325 PHY_WRITE(mac, 0x811, 0x1b3); in bwi_rf_lo_update_11g()
1326 PHY_WRITE(mac, 0x812, 0xb2); in bwi_rf_lo_update_11g()
1330 tpctl->tp_ctrl2 = bwi_rf_get_tp_ctrl2(mac); in bwi_rf_lo_update_11g()
1331 PHY_WRITE(mac, 0x80f, 0x8078); in bwi_rf_lo_update_11g()
1336 devi_ctrl = _bwi_rf_lo_update_11g(mac, regs.rf_7a); in bwi_rf_lo_update_11g()
1342 PHY_WRITE(mac, 0x15, 0xe300); in bwi_rf_lo_update_11g()
1343 PHY_WRITE(mac, 0x812, (devi_ctrl << 8) | 0xa0); in bwi_rf_lo_update_11g()
1345 PHY_WRITE(mac, 0x812, (devi_ctrl << 8) | 0xa2); in bwi_rf_lo_update_11g()
1347 PHY_WRITE(mac, 0x812, (devi_ctrl << 8) | 0xa3); in bwi_rf_lo_update_11g()
1349 PHY_WRITE(mac, 0x15, devi_ctrl | 0xefa0); in bwi_rf_lo_update_11g()
1354 bwi_rf_lo_adjust(mac, tpctl); in bwi_rf_lo_update_11g()
1356 PHY_WRITE(mac, 0x2e, 0x807f); in bwi_rf_lo_update_11g()
1358 PHY_WRITE(mac, 0x2f, 0x202); in bwi_rf_lo_update_11g()
1360 PHY_WRITE(mac, 0x2f, 0x101); in bwi_rf_lo_update_11g()
1364 RESTORE_PHY_REG(mac, ®s, 15); in bwi_rf_lo_update_11g()
1365 RESTORE_PHY_REG(mac, ®s, 2a); in bwi_rf_lo_update_11g()
1366 RESTORE_PHY_REG(mac, ®s, 35); in bwi_rf_lo_update_11g()
1367 RESTORE_PHY_REG(mac, ®s, 60); in bwi_rf_lo_update_11g()
1369 RESTORE_RF_REG(mac, ®s, 43); in bwi_rf_lo_update_11g()
1370 RESTORE_RF_REG(mac, ®s, 7a); in bwi_rf_lo_update_11g()
1373 regs.rf_52 |= (RF_READ(mac, 0x52) & 0xf); in bwi_rf_lo_update_11g()
1374 RF_WRITE(mac, 0x52, regs.rf_52); in bwi_rf_lo_update_11g()
1379 RESTORE_PHY_REG(mac, ®s, 811); in bwi_rf_lo_update_11g()
1380 RESTORE_PHY_REG(mac, ®s, 812); in bwi_rf_lo_update_11g()
1381 RESTORE_PHY_REG(mac, ®s, 814); in bwi_rf_lo_update_11g()
1382 RESTORE_PHY_REG(mac, ®s, 815); in bwi_rf_lo_update_11g()
1383 RESTORE_PHY_REG(mac, ®s, 429); in bwi_rf_lo_update_11g()
1384 RESTORE_PHY_REG(mac, ®s, 802); in bwi_rf_lo_update_11g()
1387 bwi_rf_set_chan(mac, orig_chan, 1); in bwi_rf_lo_update_11g()
1391 bwi_rf_lo_devi_measure(struct bwi_mac *mac, uint16_t ctrl) in bwi_rf_lo_devi_measure() argument
1393 struct bwi_phy *phy = &mac->mac_phy; in bwi_rf_lo_devi_measure()
1402 PHY_WRITE(mac, 0x15, 0xe300); in bwi_rf_lo_devi_measure()
1403 PHY_WRITE(mac, 0x812, ctrl | 0xb0); in bwi_rf_lo_devi_measure()
1405 PHY_WRITE(mac, 0x812, ctrl | 0xb2); in bwi_rf_lo_devi_measure()
1407 PHY_WRITE(mac, 0x812, ctrl | 0xb3); in bwi_rf_lo_devi_measure()
1409 PHY_WRITE(mac, 0x15, 0xf300); in bwi_rf_lo_devi_measure()
1411 PHY_WRITE(mac, 0x15, ctrl | 0xefa0); in bwi_rf_lo_devi_measure()
1413 PHY_WRITE(mac, 0x15, ctrl | 0xefe0); in bwi_rf_lo_devi_measure()
1415 PHY_WRITE(mac, 0x15, ctrl | 0xffe0); in bwi_rf_lo_devi_measure()
1418 devi += PHY_READ(mac, 0x2d); in bwi_rf_lo_devi_measure()
1424 bwi_rf_get_tp_ctrl2(struct bwi_mac *mac) in bwi_rf_get_tp_ctrl2() argument
1430 RF_WRITE(mac, 0x52, 0); in bwi_rf_get_tp_ctrl2()
1432 devi_min = bwi_rf_lo_devi_measure(mac, 0); in bwi_rf_get_tp_ctrl2()
1437 RF_WRITE(mac, 0x52, i); in bwi_rf_get_tp_ctrl2()
1439 devi = bwi_rf_lo_devi_measure(mac, 0); in bwi_rf_get_tp_ctrl2()
1450 _bwi_rf_lo_update_11g(struct bwi_mac *mac, uint16_t orig_rf7a) in _bwi_rf_lo_update_11g() argument
1462 struct bwi_softc *sc = mac->mac_sc; in _bwi_rf_lo_update_11g()
1480 lo = bwi_get_rf_lo(mac, in _bwi_rf_lo_update_11g()
1484 lo = bwi_get_rf_lo(mac, in _bwi_rf_lo_update_11g()
1509 lo = bwi_get_rf_lo(mac, in _bwi_rf_lo_update_11g()
1511 if (!bwi_rf_lo_isused(mac, lo)) in _bwi_rf_lo_update_11g()
1519 RF_WRITE(mac, BWI_RFR_ATTEN, rf_atten); in _bwi_rf_lo_update_11g()
1521 tp_ctrl2 = mac->mac_tpctl.tp_ctrl2; in _bwi_rf_lo_update_11g()
1524 RF_WRITE(mac, BWI_RFR_TXPWR, tp_ctrl2); in _bwi_rf_lo_update_11g()
1528 bwi_phy_set_bbp_atten(mac, bbp_atten * 2); in _bwi_rf_lo_update_11g()
1533 RF_WRITE(mac, 0x7a, rf7a); in _bwi_rf_lo_update_11g()
1535 lo = bwi_get_rf_lo(mac, in _bwi_rf_lo_update_11g()
1537 bwi_rf_lo_measure_11g(mac, &lo_save, lo, devi_ctrl); in _bwi_rf_lo_update_11g()
1547 bwi_rf_lo_measure_11g(struct bwi_mac *mac, const struct bwi_rf_lo *src_lo, in bwi_rf_lo_measure_11g() argument
1570 RF_LO_WRITE(mac, &lo_min); in bwi_rf_lo_measure_11g()
1571 devi_min = bwi_rf_lo_devi_measure(mac, devi_ctrl); in bwi_rf_lo_measure_11g()
1612 RF_LO_WRITE(mac, &lo); in bwi_rf_lo_measure_11g()
1613 devi = bwi_rf_lo_devi_measure(mac, devi_ctrl); in bwi_rf_lo_measure_11g()
1637 bwi_rf_calc_nrssi_slope_11b(struct bwi_mac *mac) in bwi_rf_calc_nrssi_slope_11b() argument
1647 struct bwi_softc *sc = mac->mac_sc; in bwi_rf_calc_nrssi_slope_11b()
1648 struct bwi_rf *rf = &mac->mac_rf; in bwi_rf_calc_nrssi_slope_11b()
1649 struct bwi_phy *phy = &mac->mac_phy; in bwi_rf_calc_nrssi_slope_11b()
1660 save_rf[i] = RF_READ(mac, save_rf_regs[i]); in bwi_rf_calc_nrssi_slope_11b()
1662 save_phy[i] = PHY_READ(mac, save_phy_regs[i]); in bwi_rf_calc_nrssi_slope_11b()
1672 RF_CLRBITS(mac, 0x7a, 0xff80); in bwi_rf_calc_nrssi_slope_11b()
1674 RF_CLRBITS(mac, 0x7a, 0xfff0); in bwi_rf_calc_nrssi_slope_11b()
1675 PHY_WRITE(mac, 0x30, 0xff); in bwi_rf_calc_nrssi_slope_11b()
1679 PHY_WRITE(mac, 0x26, 0); in bwi_rf_calc_nrssi_slope_11b()
1680 PHY_SETBITS(mac, 0x15, 0x20); in bwi_rf_calc_nrssi_slope_11b()
1681 PHY_WRITE(mac, 0x2a, 0x8a3); in bwi_rf_calc_nrssi_slope_11b()
1682 RF_SETBITS(mac, 0x7a, 0x80); in bwi_rf_calc_nrssi_slope_11b()
1684 nrssi[0] = (int16_t)PHY_READ(mac, 0x27); in bwi_rf_calc_nrssi_slope_11b()
1689 RF_CLRBITS(mac, 0x7a, 0xff80); in bwi_rf_calc_nrssi_slope_11b()
1697 PHY_WRITE(mac, 0x20, 0x3f3f); in bwi_rf_calc_nrssi_slope_11b()
1698 PHY_WRITE(mac, 0x15, 0xf330); in bwi_rf_calc_nrssi_slope_11b()
1700 RF_WRITE(mac, 0x5a, 0x60); in bwi_rf_calc_nrssi_slope_11b()
1701 RF_CLRBITS(mac, 0x43, 0xff0f); in bwi_rf_calc_nrssi_slope_11b()
1703 PHY_WRITE(mac, 0x5a, 0x480); in bwi_rf_calc_nrssi_slope_11b()
1704 PHY_WRITE(mac, 0x59, 0x810); in bwi_rf_calc_nrssi_slope_11b()
1705 PHY_WRITE(mac, 0x58, 0xd); in bwi_rf_calc_nrssi_slope_11b()
1709 nrssi[1] = (int16_t)PHY_READ(mac, 0x27); in bwi_rf_calc_nrssi_slope_11b()
1714 PHY_WRITE(mac, save_phy_regs[0], save_phy[0]); in bwi_rf_calc_nrssi_slope_11b()
1715 RF_WRITE(mac, save_rf_regs[0], save_rf[0]); in bwi_rf_calc_nrssi_slope_11b()
1720 PHY_WRITE(mac, save_phy_regs[i], save_phy[i]); in bwi_rf_calc_nrssi_slope_11b()
1722 bwi_rf_work_around(mac, rf->rf_curchan); in bwi_rf_calc_nrssi_slope_11b()
1728 PHY_WRITE(mac, save_phy_regs[i], save_phy[i]); in bwi_rf_calc_nrssi_slope_11b()
1731 RF_WRITE(mac, save_rf_regs[i], save_rf[i]); in bwi_rf_calc_nrssi_slope_11b()
1750 bwi_rf_set_nrssi_ofs_11g(struct bwi_mac *mac) in bwi_rf_set_nrssi_ofs_11g() argument
1768 struct bwi_phy *phy = &mac->mac_phy; in bwi_rf_set_nrssi_ofs_11g()
1777 save_phy_comm[i] = PHY_READ(mac, save_phy_comm_regs[i]); in bwi_rf_set_nrssi_ofs_11g()
1779 save_rf[i] = RF_READ(mac, save_rf_regs[i]); in bwi_rf_set_nrssi_ofs_11g()
1781 PHY_CLRBITS(mac, 0x429, 0x8000); in bwi_rf_set_nrssi_ofs_11g()
1782 PHY_FILT_SETBITS(mac, 0x1, 0x3fff, 0x4000); in bwi_rf_set_nrssi_ofs_11g()
1783 PHY_SETBITS(mac, 0x811, 0xc); in bwi_rf_set_nrssi_ofs_11g()
1784 PHY_FILT_SETBITS(mac, 0x812, 0xfff3, 0x4); in bwi_rf_set_nrssi_ofs_11g()
1785 PHY_CLRBITS(mac, 0x802, 0x3); in bwi_rf_set_nrssi_ofs_11g()
1789 save_phy6[i] = PHY_READ(mac, save_phy6_regs[i]); in bwi_rf_set_nrssi_ofs_11g()
1791 PHY_WRITE(mac, 0x2e, 0); in bwi_rf_set_nrssi_ofs_11g()
1792 PHY_WRITE(mac, 0x2f, 0); in bwi_rf_set_nrssi_ofs_11g()
1793 PHY_WRITE(mac, 0x80f, 0); in bwi_rf_set_nrssi_ofs_11g()
1794 PHY_WRITE(mac, 0x810, 0); in bwi_rf_set_nrssi_ofs_11g()
1795 PHY_SETBITS(mac, 0x478, 0x100); in bwi_rf_set_nrssi_ofs_11g()
1796 PHY_SETBITS(mac, 0x801, 0x40); in bwi_rf_set_nrssi_ofs_11g()
1797 PHY_SETBITS(mac, 0x60, 0x40); in bwi_rf_set_nrssi_ofs_11g()
1798 PHY_SETBITS(mac, 0x14, 0x200); in bwi_rf_set_nrssi_ofs_11g()
1801 RF_SETBITS(mac, 0x7a, 0x70); in bwi_rf_set_nrssi_ofs_11g()
1802 RF_SETBITS(mac, 0x7a, 0x80); in bwi_rf_set_nrssi_ofs_11g()
1806 nrssi = bwi_nrssi_11g(mac); in bwi_rf_set_nrssi_ofs_11g()
1809 RF_WRITE(mac, 0x7b, i); in bwi_rf_set_nrssi_ofs_11g()
1811 nrssi = bwi_nrssi_11g(mac); in bwi_rf_set_nrssi_ofs_11g()
1820 RF_CLRBITS(mac, 0x7a, 0xff80); in bwi_rf_set_nrssi_ofs_11g()
1822 PHY_SETBITS(mac, 0x814, 0x1); in bwi_rf_set_nrssi_ofs_11g()
1823 PHY_CLRBITS(mac, 0x815, 0x1); in bwi_rf_set_nrssi_ofs_11g()
1824 PHY_SETBITS(mac, 0x811, 0xc); in bwi_rf_set_nrssi_ofs_11g()
1825 PHY_SETBITS(mac, 0x812, 0xc); in bwi_rf_set_nrssi_ofs_11g()
1826 PHY_SETBITS(mac, 0x811, 0x30); in bwi_rf_set_nrssi_ofs_11g()
1827 PHY_SETBITS(mac, 0x812, 0x30); in bwi_rf_set_nrssi_ofs_11g()
1828 PHY_WRITE(mac, 0x5a, 0x480); in bwi_rf_set_nrssi_ofs_11g()
1829 PHY_WRITE(mac, 0x59, 0x810); in bwi_rf_set_nrssi_ofs_11g()
1830 PHY_WRITE(mac, 0x58, 0xd); in bwi_rf_set_nrssi_ofs_11g()
1832 PHY_WRITE(mac, 0x3, 0x122); in bwi_rf_set_nrssi_ofs_11g()
1834 PHY_SETBITS(mac, 0xa, 0x2000); in bwi_rf_set_nrssi_ofs_11g()
1835 PHY_SETBITS(mac, 0x814, 0x4); in bwi_rf_set_nrssi_ofs_11g()
1836 PHY_CLRBITS(mac, 0x815, 0x4); in bwi_rf_set_nrssi_ofs_11g()
1837 PHY_FILT_SETBITS(mac, 0x3, 0xff9f, 0x40); in bwi_rf_set_nrssi_ofs_11g()
1838 RF_SETBITS(mac, 0x7a, 0xf); in bwi_rf_set_nrssi_ofs_11g()
1844 bwi_set_gains(mac, &gains); in bwi_rf_set_nrssi_ofs_11g()
1846 RF_FILT_SETBITS(mac, 0x43, 0xf0, 0xf); in bwi_rf_set_nrssi_ofs_11g()
1849 nrssi = bwi_nrssi_11g(mac); in bwi_rf_set_nrssi_ofs_11g()
1852 RF_WRITE(mac, 0x7b, i); in bwi_rf_set_nrssi_ofs_11g()
1854 nrssi = bwi_nrssi_11g(mac); in bwi_rf_set_nrssi_ofs_11g()
1864 RF_WRITE(mac, 0x7b, rf7b); in bwi_rf_set_nrssi_ofs_11g()
1871 PHY_WRITE(mac, save_phy6_regs[phy6_idx], in bwi_rf_set_nrssi_ofs_11g()
1878 PHY_WRITE(mac, save_phy_comm_regs[i], save_phy_comm[i]); in bwi_rf_set_nrssi_ofs_11g()
1881 RF_WRITE(mac, save_rf_regs[i], save_rf[i]); in bwi_rf_set_nrssi_ofs_11g()
1883 PHY_SETBITS(mac, 0x802, 0x3); in bwi_rf_set_nrssi_ofs_11g()
1884 PHY_SETBITS(mac, 0x429, 0x8000); in bwi_rf_set_nrssi_ofs_11g()
1886 bwi_set_gains(mac, NULL); in bwi_rf_set_nrssi_ofs_11g()
1890 PHY_WRITE(mac, save_phy6_regs[phy6_idx], in bwi_rf_set_nrssi_ofs_11g()
1895 PHY_WRITE(mac, save_phy_comm_regs[0], save_phy_comm[0]); in bwi_rf_set_nrssi_ofs_11g()
1896 PHY_WRITE(mac, save_phy_comm_regs[2], save_phy_comm[2]); in bwi_rf_set_nrssi_ofs_11g()
1897 PHY_WRITE(mac, save_phy_comm_regs[1], save_phy_comm[1]); in bwi_rf_set_nrssi_ofs_11g()
1905 bwi_rf_calc_nrssi_slope_11g(struct bwi_mac *mac) in bwi_rf_calc_nrssi_slope_11g() argument
1920 struct bwi_softc *sc = mac->mac_sc; in bwi_rf_calc_nrssi_slope_11g()
1921 struct bwi_phy *phy = &mac->mac_phy; in bwi_rf_calc_nrssi_slope_11g()
1922 struct bwi_rf *rf = &mac->mac_rf; in bwi_rf_calc_nrssi_slope_11g()
1934 bwi_rf_set_nrssi_ofs_11g(mac); in bwi_rf_calc_nrssi_slope_11g()
1936 PHY_CLRBITS(mac, 0x429, 0x8000); in bwi_rf_calc_nrssi_slope_11g()
1937 PHY_CLRBITS(mac, 0x802, 0x3); in bwi_rf_calc_nrssi_slope_11g()
1946 save_rf[i] = RF_READ(mac, save_rf_regs[i]); in bwi_rf_calc_nrssi_slope_11g()
1948 save_phy_comm[i] = PHY_READ(mac, save_phy_comm_regs[i]); in bwi_rf_calc_nrssi_slope_11g()
1955 save_phy3[i] = PHY_READ(mac, save_phy3_regs[i]); in bwi_rf_calc_nrssi_slope_11g()
1957 PHY_WRITE(mac, 0x2e, 0); in bwi_rf_calc_nrssi_slope_11g()
1958 PHY_WRITE(mac, 0x810, 0); in bwi_rf_calc_nrssi_slope_11g()
1962 PHY_SETBITS(mac, 0x478, 0x100); in bwi_rf_calc_nrssi_slope_11g()
1963 PHY_SETBITS(mac, 0x810, 0x40); in bwi_rf_calc_nrssi_slope_11g()
1965 PHY_CLRBITS(mac, 0x810, 0x40); in bwi_rf_calc_nrssi_slope_11g()
1968 PHY_SETBITS(mac, 0x60, 0x40); in bwi_rf_calc_nrssi_slope_11g()
1969 PHY_SETBITS(mac, 0x14, 0x200); in bwi_rf_calc_nrssi_slope_11g()
1975 RF_SETBITS(mac, 0x7a, 0x70); in bwi_rf_calc_nrssi_slope_11g()
1981 bwi_set_gains(mac, &gains); in bwi_rf_calc_nrssi_slope_11g()
1983 RF_CLRBITS(mac, 0x7a, 0xff08); in bwi_rf_calc_nrssi_slope_11g()
1985 PHY_FILT_SETBITS(mac, 0x811, 0xffcf, 0x30); in bwi_rf_calc_nrssi_slope_11g()
1986 PHY_FILT_SETBITS(mac, 0x812, 0xffcf, 0x10); in bwi_rf_calc_nrssi_slope_11g()
1989 RF_SETBITS(mac, 0x7a, 0x80); in bwi_rf_calc_nrssi_slope_11g()
1991 nrssi[0] = bwi_nrssi_11g(mac); in bwi_rf_calc_nrssi_slope_11g()
1996 RF_CLRBITS(mac, 0x7a, 0xff80); in bwi_rf_calc_nrssi_slope_11g()
1998 PHY_FILT_SETBITS(mac, 0x3, 0xff9f, 0x40); in bwi_rf_calc_nrssi_slope_11g()
2001 RF_SETBITS(mac, 0x7a, 0xf); in bwi_rf_calc_nrssi_slope_11g()
2002 PHY_WRITE(mac, 0x15, 0xf330); in bwi_rf_calc_nrssi_slope_11g()
2004 PHY_FILT_SETBITS(mac, 0x812, 0xffcf, 0x20); in bwi_rf_calc_nrssi_slope_11g()
2005 PHY_FILT_SETBITS(mac, 0x811, 0xffcf, 0x20); in bwi_rf_calc_nrssi_slope_11g()
2012 bwi_set_gains(mac, &gains); in bwi_rf_calc_nrssi_slope_11g()
2015 RF_WRITE(mac, 0x43, 0x1f); in bwi_rf_calc_nrssi_slope_11g()
2017 RF_FILT_SETBITS(mac, 0x52, 0xff0f, 0x60); in bwi_rf_calc_nrssi_slope_11g()
2018 RF_FILT_SETBITS(mac, 0x43, 0xfff0, 0x9); in bwi_rf_calc_nrssi_slope_11g()
2020 PHY_WRITE(mac, 0x5a, 0x480); in bwi_rf_calc_nrssi_slope_11g()
2021 PHY_WRITE(mac, 0x59, 0x810); in bwi_rf_calc_nrssi_slope_11g()
2022 PHY_WRITE(mac, 0x58, 0xd); in bwi_rf_calc_nrssi_slope_11g()
2025 nrssi[1] = bwi_nrssi_11g(mac); in bwi_rf_calc_nrssi_slope_11g()
2044 PHY_WRITE(mac, save_phy3_regs[phy3_idx], in bwi_rf_calc_nrssi_slope_11g()
2049 PHY_CLRBITS(mac, 0x812, 0x30); in bwi_rf_calc_nrssi_slope_11g()
2050 PHY_CLRBITS(mac, 0x811, 0x30); in bwi_rf_calc_nrssi_slope_11g()
2054 RF_WRITE(mac, save_rf_regs[i], save_rf[i]); in bwi_rf_calc_nrssi_slope_11g()
2061 PHY_WRITE(mac, save_phy_comm_regs[i], save_phy_comm[i]); in bwi_rf_calc_nrssi_slope_11g()
2063 bwi_rf_work_around(mac, rf->rf_curchan); in bwi_rf_calc_nrssi_slope_11g()
2064 PHY_SETBITS(mac, 0x802, 0x3); in bwi_rf_calc_nrssi_slope_11g()
2065 bwi_set_gains(mac, NULL); in bwi_rf_calc_nrssi_slope_11g()
2066 PHY_SETBITS(mac, 0x429, 0x8000); in bwi_rf_calc_nrssi_slope_11g()
2070 PHY_WRITE(mac, save_phy3_regs[phy3_idx], in bwi_rf_calc_nrssi_slope_11g()
2075 bwi_rf_init_sw_nrssi_table(mac); in bwi_rf_calc_nrssi_slope_11g()
2076 bwi_rf_set_nrssi_thr_11g(mac); in bwi_rf_calc_nrssi_slope_11g()
2084 bwi_rf_init_sw_nrssi_table(struct bwi_mac *mac) in bwi_rf_init_sw_nrssi_table() argument
2086 struct bwi_rf *rf = &mac->mac_rf; in bwi_rf_init_sw_nrssi_table()
2104 bwi_rf_init_hw_nrssi_table(struct bwi_mac *mac, uint16_t adjust) in bwi_rf_init_hw_nrssi_table() argument
2111 val = bwi_nrssi_read(mac, i); in bwi_rf_init_hw_nrssi_table()
2119 bwi_nrssi_write(mac, i, val); in bwi_rf_init_hw_nrssi_table()
2124 bwi_rf_set_nrssi_thr_11b(struct bwi_mac *mac) in bwi_rf_set_nrssi_thr_11b() argument
2126 struct bwi_rf *rf = &mac->mac_rf; in bwi_rf_set_nrssi_thr_11b()
2130 (mac->mac_sc->sc_card_flags & BWI_CARD_F_SW_NRSSI) == 0) in bwi_rf_set_nrssi_thr_11b()
2148 PHY_READ(mac, BWI_PHYR_NRSSI_THR_11B); /* dummy read */ in bwi_rf_set_nrssi_thr_11b()
2149 PHY_WRITE(mac, BWI_PHYR_NRSSI_THR_11B, (((uint16_t)thr) << 8) | 0x1c); in bwi_rf_set_nrssi_thr_11b()
2152 PHY_WRITE(mac, 0x87, 0xe0d); in bwi_rf_set_nrssi_thr_11b()
2153 PHY_WRITE(mac, 0x86, 0xc0b); in bwi_rf_set_nrssi_thr_11b()
2154 PHY_WRITE(mac, 0x85, 0xa09); in bwi_rf_set_nrssi_thr_11b()
2155 PHY_WRITE(mac, 0x84, 0x808); in bwi_rf_set_nrssi_thr_11b()
2156 PHY_WRITE(mac, 0x83, 0x808); in bwi_rf_set_nrssi_thr_11b()
2157 PHY_WRITE(mac, 0x82, 0x604); in bwi_rf_set_nrssi_thr_11b()
2158 PHY_WRITE(mac, 0x81, 0x302); in bwi_rf_set_nrssi_thr_11b()
2159 PHY_WRITE(mac, 0x80, 0x100); in bwi_rf_set_nrssi_thr_11b()
2181 bwi_rf_set_nrssi_thr_11g(struct bwi_mac *mac) in bwi_rf_set_nrssi_thr_11g() argument
2189 if ((mac->mac_phy.phy_flags & BWI_PHY_F_LINKED) == 0 || in bwi_rf_set_nrssi_thr_11g()
2190 (mac->mac_sc->sc_card_flags & BWI_CARD_F_SW_NRSSI) == 0) { in bwi_rf_set_nrssi_thr_11g()
2193 nrssi = bwi_nrssi_read(mac, 0x20); in bwi_rf_set_nrssi_thr_11g()
2206 thr1 = _nrssi_threshold(&mac->mac_rf, 0x11); in bwi_rf_set_nrssi_thr_11g()
2207 thr2 = _nrssi_threshold(&mac->mac_rf, 0xe); in bwi_rf_set_nrssi_thr_11g()
2215 PHY_FILT_SETBITS(mac, BWI_PHYR_NRSSI_THR_11G, 0xf000, thr); in bwi_rf_set_nrssi_thr_11g()
2222 bwi_rf_clear_tssi(struct bwi_mac *mac) in bwi_rf_clear_tssi() argument
2225 if (mac->mac_phy.phy_mode == IEEE80211_MODE_11A) { in bwi_rf_clear_tssi()
2235 MOBJ_WRITE_2(mac, BWI_COMM_MOBJ, in bwi_rf_clear_tssi()
2240 MOBJ_WRITE_2(mac, BWI_COMM_MOBJ, in bwi_rf_clear_tssi()
2271 bwi_rf_on_11a(struct bwi_mac *mac) in bwi_rf_on_11a() argument
2277 bwi_rf_on_11bg(struct bwi_mac *mac) in bwi_rf_on_11bg() argument
2279 struct bwi_phy *phy = &mac->mac_phy; in bwi_rf_on_11bg()
2281 PHY_WRITE(mac, 0x15, 0x8000); in bwi_rf_on_11bg()
2282 PHY_WRITE(mac, 0x15, 0xcc00); in bwi_rf_on_11bg()
2284 PHY_WRITE(mac, 0x15, 0xc0); in bwi_rf_on_11bg()
2286 PHY_WRITE(mac, 0x15, 0); in bwi_rf_on_11bg()
2288 bwi_rf_set_chan(mac, 6 /* XXX */, 1); in bwi_rf_on_11bg()
2292 bwi_rf_set_ant_mode(struct bwi_mac *mac, int ant_mode) in bwi_rf_set_ant_mode() argument
2294 struct bwi_softc *sc = mac->mac_sc; in bwi_rf_set_ant_mode()
2295 struct bwi_phy *phy = &mac->mac_phy; in bwi_rf_set_ant_mode()
2302 HFLAGS_CLRBITS(mac, BWI_HFLAG_AUTO_ANTDIV); in bwi_rf_set_ant_mode()
2306 if (mac->mac_rev == 2) in bwi_rf_set_ant_mode()
2311 PHY_FILT_SETBITS(mac, 0x3e2, 0xfe7f, val); in bwi_rf_set_ant_mode()
2315 PHY_FILT_SETBITS(mac, 0x401, 0x7e7f, val); in bwi_rf_set_ant_mode()
2318 PHY_CLRBITS(mac, 0x42b, 0x100); in bwi_rf_set_ant_mode()
2324 PHY_SETBITS(mac, 0x48c, 0x2000); in bwi_rf_set_ant_mode()
2326 PHY_CLRBITS(mac, 0x48c, 0x2000); in bwi_rf_set_ant_mode()
2329 PHY_SETBITS(mac, 0x461, 0x10); in bwi_rf_set_ant_mode()
2330 PHY_FILT_SETBITS(mac, 0x4ad, 0xff00, 0x15); in bwi_rf_set_ant_mode()
2332 PHY_WRITE(mac, 0x427, 0x8); in bwi_rf_set_ant_mode()
2334 PHY_FILT_SETBITS(mac, 0x427, in bwi_rf_set_ant_mode()
2339 PHY_WRITE(mac, 0x49b, 0xdc); in bwi_rf_set_ant_mode()
2346 HFLAGS_SETBITS(mac, BWI_HFLAG_AUTO_ANTDIV); in bwi_rf_set_ant_mode()
2349 MOBJ_FILT_SETBITS_2(mac, BWI_COMM_MOBJ, BWI_COMM_MOBJ_TX_BEACON, in bwi_rf_set_ant_mode()
2351 MOBJ_FILT_SETBITS_2(mac, BWI_COMM_MOBJ, BWI_COMM_MOBJ_TX_ACK, in bwi_rf_set_ant_mode()
2353 MOBJ_FILT_SETBITS_2(mac, BWI_COMM_MOBJ, BWI_COMM_MOBJ_TX_PROBE_RESP, in bwi_rf_set_ant_mode()
2361 if (mac->mac_rev < 5) in bwi_rf_set_ant_mode()
2364 mac->mac_rf.rf_ant_mode = ant_mode; in bwi_rf_set_ant_mode()
2368 bwi_rf_get_latest_tssi(struct bwi_mac *mac, int8_t tssi[], uint16_t ofs) in bwi_rf_get_latest_tssi() argument
2375 val = MOBJ_READ_2(mac, BWI_COMM_MOBJ, ofs + i); in bwi_rf_get_latest_tssi()
2388 bwi_rf_tssi2dbm(struct bwi_mac *mac, int8_t tssi, int8_t *txpwr) in bwi_rf_tssi2dbm() argument
2390 struct bwi_rf *rf = &mac->mac_rf; in bwi_rf_tssi2dbm()
2409 bwi_rf_calc_rssi_bcm2050(struct bwi_mac *mac, const struct bwi_rxbuf_hdr *hdr) in bwi_rf_calc_rssi_bcm2050() argument
2428 if (mac->mac_sc->sc_card_flags & BWI_CARD_F_SW_NRSSI) { in bwi_rf_calc_rssi_bcm2050()
2429 struct bwi_rf *rf = &mac->mac_rf; in bwi_rf_calc_rssi_bcm2050()
2441 if (mac->mac_phy.phy_mode != IEEE80211_MODE_11G) in bwi_rf_calc_rssi_bcm2050()
2449 DPRINTF(mac->mac_sc, BWI_DBG_RF | BWI_DBG_RX, in bwi_rf_calc_rssi_bcm2050()
2479 bwi_rf_calc_rssi_bcm2053(struct bwi_mac *mac, const struct bwi_rxbuf_hdr *hdr) in bwi_rf_calc_rssi_bcm2053() argument
2495 bwi_rf_calc_rssi_bcm2060(struct bwi_mac *mac, const struct bwi_rxbuf_hdr *hdr) in bwi_rf_calc_rssi_bcm2060() argument
2506 bwi_rf_calc_noise_bcm2050(struct bwi_mac *mac) in bwi_rf_calc_noise_bcm2050() argument
2511 val = MOBJ_READ_2(mac, BWI_COMM_MOBJ, BWI_COMM_MOBJ_RF_NOISE); in bwi_rf_calc_noise_bcm2050()
2514 if (mac->mac_sc->sc_card_flags & BWI_CARD_F_SW_NRSSI) { in bwi_rf_calc_noise_bcm2050()
2515 struct bwi_rf *rf = &mac->mac_rf; in bwi_rf_calc_noise_bcm2050()
2530 bwi_rf_calc_noise_bcm2053(struct bwi_mac *mac) in bwi_rf_calc_noise_bcm2053() argument
2535 val = MOBJ_READ_2(mac, BWI_COMM_MOBJ, BWI_COMM_MOBJ_RF_NOISE); in bwi_rf_calc_noise_bcm2053()
2544 bwi_rf_calc_noise_bcm2060(struct bwi_mac *mac) in bwi_rf_calc_noise_bcm2060() argument
2551 bwi_rf_lo_measure_11b(struct bwi_mac *mac) in bwi_rf_lo_measure_11b() argument
2558 PHY_WRITE(mac, 0x15, 0xafa0); in bwi_rf_lo_measure_11b()
2560 PHY_WRITE(mac, 0x15, 0xefa0); in bwi_rf_lo_measure_11b()
2562 PHY_WRITE(mac, 0x15, 0xffa0); in bwi_rf_lo_measure_11b()
2565 val += PHY_READ(mac, 0x2c); in bwi_rf_lo_measure_11b()
2571 bwi_rf_lo_update_11b(struct bwi_mac *mac) in bwi_rf_lo_update_11b() argument
2573 struct bwi_softc *sc = mac->mac_sc; in bwi_rf_lo_update_11b()
2574 struct bwi_rf *rf = &mac->mac_rf; in bwi_rf_lo_update_11b()
2588 SAVE_PHY_REG(mac, ®s, 15); in bwi_rf_lo_update_11b()
2589 rf52 = RF_READ(mac, 0x52) & 0xfff0; in bwi_rf_lo_update_11b()
2591 SAVE_PHY_REG(mac, ®s, 0a); in bwi_rf_lo_update_11b()
2592 SAVE_PHY_REG(mac, ®s, 2a); in bwi_rf_lo_update_11b()
2593 SAVE_PHY_REG(mac, ®s, 35); in bwi_rf_lo_update_11b()
2594 SAVE_PHY_REG(mac, ®s, 03); in bwi_rf_lo_update_11b()
2595 SAVE_PHY_REG(mac, ®s, 01); in bwi_rf_lo_update_11b()
2596 SAVE_PHY_REG(mac, ®s, 30); in bwi_rf_lo_update_11b()
2598 SAVE_RF_REG(mac, ®s, 43); in bwi_rf_lo_update_11b()
2599 SAVE_RF_REG(mac, ®s, 7a); in bwi_rf_lo_update_11b()
2603 SAVE_RF_REG(mac, ®s, 52); in bwi_rf_lo_update_11b()
2606 PHY_WRITE(mac, 0x30, 0xff); in bwi_rf_lo_update_11b()
2608 PHY_WRITE(mac, 0x35, regs.phy_35 & 0xff7f); in bwi_rf_lo_update_11b()
2609 RF_WRITE(mac, 0x7a, regs.rf_7a & 0xfff0); in bwi_rf_lo_update_11b()
2612 PHY_WRITE(mac, 0x15, 0xb000); in bwi_rf_lo_update_11b()
2615 PHY_WRITE(mac, 0x2b, 0x203); in bwi_rf_lo_update_11b()
2616 PHY_WRITE(mac, 0x2a, 0x8a3); in bwi_rf_lo_update_11b()
2618 PHY_WRITE(mac, 0x2b, 0x1402); in bwi_rf_lo_update_11b()
2628 RF_WRITE(mac, 0x52, rf52 | i); in bwi_rf_lo_update_11b()
2629 bwi_rf_lo_measure_11b(mac); /* Ignore return value */ in bwi_rf_lo_update_11b()
2632 RF_WRITE(mac, 0x52, rf52 | i); in bwi_rf_lo_update_11b()
2634 val = bwi_rf_lo_measure_11b(mac) / 10; in bwi_rf_lo_update_11b()
2640 RF_WRITE(mac, 0x52, rf52 | rf_val); in bwi_rf_lo_update_11b()
2657 PHY_WRITE(mac, 0x2f, phy2f); in bwi_rf_lo_update_11b()
2659 val = bwi_rf_lo_measure_11b(mac) / 10; in bwi_rf_lo_update_11b()
2666 PHY_WRITE(mac, 0x2f, phy_val + 0x101); in bwi_rf_lo_update_11b()
2672 RESTORE_PHY_REG(mac, ®s, 0a); in bwi_rf_lo_update_11b()
2673 RESTORE_PHY_REG(mac, ®s, 2a); in bwi_rf_lo_update_11b()
2674 RESTORE_PHY_REG(mac, ®s, 35); in bwi_rf_lo_update_11b()
2675 RESTORE_PHY_REG(mac, ®s, 03); in bwi_rf_lo_update_11b()
2676 RESTORE_PHY_REG(mac, ®s, 01); in bwi_rf_lo_update_11b()
2677 RESTORE_PHY_REG(mac, ®s, 30); in bwi_rf_lo_update_11b()
2679 RESTORE_RF_REG(mac, ®s, 43); in bwi_rf_lo_update_11b()
2680 RESTORE_RF_REG(mac, ®s, 7a); in bwi_rf_lo_update_11b()
2682 RF_FILT_SETBITS(mac, 0x52, 0xf, regs.rf_52); in bwi_rf_lo_update_11b()
2686 RESTORE_PHY_REG(mac, ®s, 15); in bwi_rf_lo_update_11b()
2688 bwi_rf_work_around(mac, rf->rf_curchan); in bwi_rf_lo_update_11b()