Lines Matching refs:mac
191 void bwi_tbl_write_2(struct bwi_mac *mac, uint16_t, uint16_t);
192 void bwi_tbl_write_4(struct bwi_mac *mac, uint16_t, uint32_t);
416 #define RF_LO_WRITE(mac, lo) bwi_rf_lo_write((mac), (lo)) argument
444 #define SAVE_RF_REG(mac, regs, n) (regs)->rf_##n = RF_READ((mac), 0x##n) argument
445 #define RESTORE_RF_REG(mac, regs, n) RF_WRITE((mac), 0x##n, (regs)->rf_##n) argument
447 #define SAVE_PHY_REG(mac, regs, n) (regs)->phy_##n = PHY_READ((mac), 0x##n) argument
448 #define RESTORE_PHY_REG(mac, regs, n) PHY_WRITE((mac), 0x##n, (regs)->phy_##n) argument
574 struct bwi_mac *mac; in bwi_intr() local
598 mac = (struct bwi_mac *)sc->sc_cur_regwin; in bwi_intr()
632 if (mac->mac_flags & BWI_MAC_F_PHYE_RESET) { in bwi_intr()
645 bwi_mac_config_ps(mac); in bwi_intr()
705 struct bwi_mac *mac; in bwi_attach() local
758 mac = &sc->sc_mac[i]; in bwi_attach()
759 error = bwi_regwin_switch(sc, &mac->mac_regwin, &old); in bwi_attach()
763 error = bwi_mac_lateattach(mac); in bwi_attach()
776 mac = &sc->sc_mac[0]; in bwi_attach()
777 phy = &mac->mac_phy; in bwi_attach()
918 bwi_tmplt_write_4(struct bwi_mac *mac, uint32_t ofs, uint32_t val) in bwi_tmplt_write_4() argument
920 struct bwi_softc *sc = mac->mac_sc; in bwi_tmplt_write_4()
922 if (mac->mac_flags & BWI_MAC_F_BSWAP) in bwi_tmplt_write_4()
930 bwi_hostflags_write(struct bwi_mac *mac, uint64_t flags) in bwi_hostflags_write() argument
935 MOBJ_WRITE_2(mac, BWI_COMM_MOBJ, BWI_COMM_MOBJ_HFLAGS_LO, val); in bwi_hostflags_write()
938 MOBJ_WRITE_2(mac, BWI_COMM_MOBJ, BWI_COMM_MOBJ_HFLAGS_MI, val); in bwi_hostflags_write()
944 bwi_hostflags_read(struct bwi_mac *mac) in bwi_hostflags_read() argument
951 val = MOBJ_READ_2(mac, BWI_COMM_MOBJ, BWI_COMM_MOBJ_HFLAGS_MI); in bwi_hostflags_read()
954 val = MOBJ_READ_2(mac, BWI_COMM_MOBJ, BWI_COMM_MOBJ_HFLAGS_LO); in bwi_hostflags_read()
961 bwi_memobj_read_2(struct bwi_mac *mac, uint16_t obj_id, uint16_t ofs0) in bwi_memobj_read_2() argument
963 struct bwi_softc *sc = mac->mac_sc; in bwi_memobj_read_2()
978 bwi_memobj_read_4(struct bwi_mac *mac, uint16_t obj_id, uint16_t ofs0) in bwi_memobj_read_4() argument
980 struct bwi_softc *sc = mac->mac_sc; in bwi_memobj_read_4()
1003 bwi_memobj_write_2(struct bwi_mac *mac, uint16_t obj_id, uint16_t ofs0, in bwi_memobj_write_2() argument
1006 struct bwi_softc *sc = mac->mac_sc; in bwi_memobj_write_2()
1021 bwi_memobj_write_4(struct bwi_mac *mac, uint16_t obj_id, uint16_t ofs0, in bwi_memobj_write_4() argument
1024 struct bwi_softc *sc = mac->mac_sc; in bwi_memobj_write_4()
1041 bwi_mac_lateattach(struct bwi_mac *mac) in bwi_mac_lateattach() argument
1045 if (mac->mac_rev >= 5) in bwi_mac_lateattach()
1046 CSR_READ_4(mac->mac_sc, BWI_STATE_HI); /* dummy read */ in bwi_mac_lateattach()
1048 bwi_mac_reset(mac, 1); in bwi_mac_lateattach()
1050 error = bwi_phy_attach(mac); in bwi_mac_lateattach()
1054 error = bwi_rf_attach(mac); in bwi_mac_lateattach()
1059 if (mac->mac_phy.phy_mode == IEEE80211_MODE_11A) in bwi_mac_lateattach()
1060 bwi_mac_reset(mac, 0); in bwi_mac_lateattach()
1062 bwi_mac_reset(mac, 1); in bwi_mac_lateattach()
1064 error = bwi_mac_test(mac); in bwi_mac_lateattach()
1068 error = bwi_mac_get_property(mac); in bwi_mac_lateattach()
1072 error = bwi_rf_map_txpower(mac); in bwi_mac_lateattach()
1076 bwi_rf_off(mac); in bwi_mac_lateattach()
1077 CSR_WRITE_2(mac->mac_sc, BWI_BBP_ATTEN, BWI_BBP_ATTEN_MAGIC); in bwi_mac_lateattach()
1078 bwi_regwin_disable(mac->mac_sc, &mac->mac_regwin, 0); in bwi_mac_lateattach()
1084 bwi_mac_init(struct bwi_mac *mac) in bwi_mac_init() argument
1086 struct bwi_softc *sc = mac->mac_sc; in bwi_mac_init()
1090 bwi_mac_setup_tpctl(mac); in bwi_mac_init()
1091 bwi_rf_clear_state(&mac->mac_rf); in bwi_mac_init()
1092 bwi_phy_clear_state(&mac->mac_phy); in bwi_mac_init()
1095 if (!bwi_regwin_is_enabled(sc, &mac->mac_regwin)) in bwi_mac_init()
1096 bwi_mac_reset(mac, 1); in bwi_mac_init()
1099 error = bwi_bus_init(sc, mac); in bwi_mac_init()
1112 error = bwi_phy_calibrate(mac); in bwi_mac_init()
1126 error = bwi_mac_fw_alloc(mac); in bwi_mac_init()
1130 error = bwi_mac_fw_load(mac); in bwi_mac_init()
1134 error = bwi_mac_gpio_init(mac); in bwi_mac_init()
1138 error = bwi_mac_fw_init(mac); in bwi_mac_init()
1145 bwi_rf_on(mac); in bwi_mac_init()
1153 bwi_phy_init(mac); in bwi_mac_init()
1160 bwi_rf_set_ant_mode(mac, mac->mac_rf.rf_ant_mode); in bwi_mac_init()
1165 bwi_mac_opmode_init(mac); in bwi_mac_init()
1168 if (mac->mac_rev < 3) { in bwi_mac_init()
1199 MOBJ_WRITE_2(mac, BWI_COMM_MOBJ, BWI_COMM_MOBJ_MACREV, mac->mac_rev); in bwi_mac_init()
1204 bwi_mac_hostflags_init(mac); in bwi_mac_init()
1209 bwi_mac_bss_param_init(mac); in bwi_mac_init()
1235 if (mac->mac_flags & BWI_MAC_F_HAS_TXSTATS) { in bwi_mac_init()
1246 MOBJ_WRITE_2(mac, BWI_COMM_MOBJ, 0x416, 0x50); in bwi_mac_init()
1247 MOBJ_WRITE_2(mac, BWI_COMM_MOBJ, 0x414, 0x1f4); in bwi_mac_init()
1249 mac->mac_flags |= BWI_MAC_F_INITED; in bwi_mac_init()
1255 bwi_mac_reset(struct bwi_mac *mac, int link_phy) in bwi_mac_reset() argument
1257 struct bwi_softc *sc = mac->mac_sc; in bwi_mac_reset()
1263 bwi_regwin_enable(sc, &mac->mac_regwin, flags); in bwi_mac_reset()
1293 mac->mac_phy.phy_flags |= BWI_PHY_F_LINKED; in bwi_mac_reset()
1296 mac->mac_phy.phy_flags &= ~BWI_PHY_F_LINKED; in bwi_mac_reset()
1301 bwi_mac_set_tpctl_11bg(struct bwi_mac *mac, const struct bwi_tpctl *new_tpctl) in bwi_mac_set_tpctl_11bg() argument
1303 struct bwi_rf *rf = &mac->mac_rf; in bwi_mac_set_tpctl_11bg()
1304 struct bwi_tpctl *tpctl = &mac->mac_tpctl; in bwi_mac_set_tpctl_11bg()
1319 bwi_phy_set_bbp_atten(mac, tpctl->bbp_atten); in bwi_mac_set_tpctl_11bg()
1322 RF_WRITE(mac, BWI_RFR_ATTEN, tpctl->rf_atten); in bwi_mac_set_tpctl_11bg()
1323 MOBJ_WRITE_2(mac, BWI_COMM_MOBJ, BWI_COMM_MOBJ_RF_ATTEN, in bwi_mac_set_tpctl_11bg()
1328 RF_FILT_SETBITS(mac, BWI_RFR_TXPWR, ~BWI_RFR_TXPWR1_MASK, in bwi_mac_set_tpctl_11bg()
1333 if (mac->mac_phy.phy_mode == IEEE80211_MODE_11G) in bwi_mac_set_tpctl_11bg()
1334 bwi_rf_lo_adjust(mac, tpctl); in bwi_mac_set_tpctl_11bg()
1338 bwi_mac_test(struct bwi_mac *mac) in bwi_mac_test() argument
1340 struct bwi_softc *sc = mac->mac_sc; in bwi_mac_test()
1346 orig_val = MOBJ_READ_4(mac, BWI_COMM_MOBJ, 0); in bwi_mac_test()
1349 MOBJ_WRITE_4(mac, BWI_COMM_MOBJ, 0, TEST_VAL1); in bwi_mac_test()
1350 val = MOBJ_READ_4(mac, BWI_COMM_MOBJ, 0); in bwi_mac_test()
1357 MOBJ_WRITE_4(mac, BWI_COMM_MOBJ, 0, TEST_VAL2); in bwi_mac_test()
1358 val = MOBJ_READ_4(mac, BWI_COMM_MOBJ, 0); in bwi_mac_test()
1365 MOBJ_WRITE_4(mac, BWI_COMM_MOBJ, 0, orig_val); in bwi_mac_test()
1387 bwi_mac_setup_tpctl(struct bwi_mac *mac) in bwi_mac_setup_tpctl() argument
1389 struct bwi_softc *sc = mac->mac_sc; in bwi_mac_setup_tpctl()
1390 struct bwi_rf *rf = &mac->mac_rf; in bwi_mac_setup_tpctl()
1391 struct bwi_phy *phy = &mac->mac_phy; in bwi_mac_setup_tpctl()
1392 struct bwi_tpctl *tpctl = &mac->mac_tpctl; in bwi_mac_setup_tpctl()
1487 bwi_mac_dummy_xmit(struct bwi_mac *mac) in bwi_mac_dummy_xmit() argument
1490 struct bwi_softc *sc = mac->mac_sc; in bwi_mac_dummy_xmit()
1491 struct bwi_rf *rf = &mac->mac_rf; in bwi_mac_dummy_xmit()
1501 if (mac->mac_phy.phy_mode == IEEE80211_MODE_11A) { in bwi_mac_dummy_xmit()
1512 TMPLT_WRITE_4(mac, i * 4, packet[i]); in bwi_mac_dummy_xmit()
1528 RF_WRITE(mac, 0x51, 0x17); in bwi_mac_dummy_xmit()
1547 RF_WRITE(mac, 0x51, 0x37); in bwi_mac_dummy_xmit()
1552 bwi_mac_init_tpctl_11bg(struct bwi_mac *mac) in bwi_mac_init_tpctl_11bg() argument
1554 struct bwi_softc *sc = mac->mac_sc; in bwi_mac_init_tpctl_11bg()
1555 struct bwi_phy *phy = &mac->mac_phy; in bwi_mac_init_tpctl_11bg()
1556 struct bwi_rf *rf = &mac->mac_rf; in bwi_mac_init_tpctl_11bg()
1565 PHY_WRITE(mac, 0x28, 0x8018); in bwi_mac_init_tpctl_11bg()
1571 PHY_WRITE(mac, 0x47a, 0xc111); in bwi_mac_init_tpctl_11bg()
1573 if (mac->mac_flags & BWI_MAC_F_TPCTL_INITED) in bwi_mac_init_tpctl_11bg()
1578 RF_SETBITS(mac, 0x76, 0x84); in bwi_mac_init_tpctl_11bg()
1583 bcopy(&mac->mac_tpctl, &tpctl_orig, sizeof(tpctl_orig)); in bwi_mac_init_tpctl_11bg()
1586 bcopy(&mac->mac_tpctl, &tpctl, sizeof(tpctl)); in bwi_mac_init_tpctl_11bg()
1596 bwi_mac_set_tpctl_11bg(mac, &tpctl); in bwi_mac_init_tpctl_11bg()
1599 bwi_mac_dummy_xmit(mac); in bwi_mac_init_tpctl_11bg()
1601 mac->mac_flags |= BWI_MAC_F_TPCTL_INITED; in bwi_mac_init_tpctl_11bg()
1602 rf->rf_base_tssi = PHY_READ(mac, 0x29); in bwi_mac_init_tpctl_11bg()
1607 mac->mac_flags |= BWI_MAC_F_TPCTL_ERROR; in bwi_mac_init_tpctl_11bg()
1611 bwi_mac_set_tpctl_11bg(mac, &tpctl_orig); in bwi_mac_init_tpctl_11bg()
1613 RF_CLRBITS(mac, 0x76, 0x84); in bwi_mac_init_tpctl_11bg()
1615 bwi_rf_clear_tssi(mac); in bwi_mac_init_tpctl_11bg()
1619 bwi_mac_detach(struct bwi_mac *mac) in bwi_mac_detach() argument
1621 bwi_mac_fw_free(mac); in bwi_mac_detach()
1705 bwi_mac_fw_alloc(struct bwi_mac *mac) in bwi_mac_fw_alloc() argument
1707 struct bwi_softc *sc = mac->mac_sc; in bwi_mac_fw_alloc()
1713 if (mac->mac_fw == NULL) { in bwi_mac_fw_alloc()
1714 error = loadfirmware(name, &mac->mac_fw, &mac->mac_fw_size); in bwi_mac_fw_alloc()
1718 mac->mac_fw = NULL; in bwi_mac_fw_alloc()
1723 if (mac->mac_ucode == NULL) { in bwi_mac_fw_alloc()
1725 mac->mac_rev >= 5 ? 5 : mac->mac_rev); in bwi_mac_fw_alloc()
1727 error = bwi_get_firmware(fwname, mac->mac_fw, mac->mac_fw_size, in bwi_mac_fw_alloc()
1728 &mac->mac_ucode_size, &offset); in bwi_mac_fw_alloc()
1734 mac->mac_ucode = (mac->mac_fw + offset); in bwi_mac_fw_alloc()
1738 if (bwi_fwimage_is_valid(sc, mac->mac_ucode, in bwi_mac_fw_alloc()
1739 mac->mac_ucode_size, fwname, BWI_FW_T_UCODE)) in bwi_mac_fw_alloc()
1743 if (mac->mac_pcm == NULL) { in bwi_mac_fw_alloc()
1745 mac->mac_rev < 5 ? 4 : 5); in bwi_mac_fw_alloc()
1747 error = bwi_get_firmware(fwname, mac->mac_fw, mac->mac_fw_size, in bwi_mac_fw_alloc()
1748 &mac->mac_pcm_size, &offset); in bwi_mac_fw_alloc()
1754 mac->mac_pcm = (mac->mac_fw + offset); in bwi_mac_fw_alloc()
1758 if (bwi_fwimage_is_valid(sc, mac->mac_pcm, in bwi_mac_fw_alloc()
1759 mac->mac_pcm_size, fwname, BWI_FW_T_PCM)) in bwi_mac_fw_alloc()
1763 if (mac->mac_iv == NULL) { in bwi_mac_fw_alloc()
1765 if (mac->mac_rev == 2 || mac->mac_rev == 4) { in bwi_mac_fw_alloc()
1767 } else if (mac->mac_rev >= 5 && mac->mac_rev <= 10) { in bwi_mac_fw_alloc()
1771 sc->sc_dev.dv_xname, mac->mac_rev); in bwi_mac_fw_alloc()
1777 error = bwi_get_firmware(fwname, mac->mac_fw, mac->mac_fw_size, in bwi_mac_fw_alloc()
1778 &mac->mac_iv_size, &offset); in bwi_mac_fw_alloc()
1784 mac->mac_iv = (mac->mac_fw + offset); in bwi_mac_fw_alloc()
1788 if (bwi_fwimage_is_valid(sc, mac->mac_iv, in bwi_mac_fw_alloc()
1789 mac->mac_iv_size, fwname, BWI_FW_T_IV)) in bwi_mac_fw_alloc()
1793 if (mac->mac_iv_ext == NULL) { in bwi_mac_fw_alloc()
1795 if (mac->mac_rev == 2 || mac->mac_rev == 4 || in bwi_mac_fw_alloc()
1796 mac->mac_rev >= 11) { in bwi_mac_fw_alloc()
1799 } else if (mac->mac_rev >= 5 && mac->mac_rev <= 10) { in bwi_mac_fw_alloc()
1803 sc->sc_dev.dv_xname, mac->mac_rev); in bwi_mac_fw_alloc()
1809 error = bwi_get_firmware(fwname, mac->mac_fw, mac->mac_fw_size, in bwi_mac_fw_alloc()
1810 &mac->mac_iv_ext_size, &offset); in bwi_mac_fw_alloc()
1816 mac->mac_iv_ext = (mac->mac_fw + offset); in bwi_mac_fw_alloc()
1820 if (bwi_fwimage_is_valid(sc, mac->mac_iv_ext, in bwi_mac_fw_alloc()
1821 mac->mac_iv_ext_size, fwname, BWI_FW_T_IV)) in bwi_mac_fw_alloc()
1830 bwi_mac_fw_free(struct bwi_mac *mac) in bwi_mac_fw_free() argument
1832 if (mac->mac_fw != NULL) { in bwi_mac_fw_free()
1833 free(mac->mac_fw, M_DEVBUF, mac->mac_fw_size); in bwi_mac_fw_free()
1834 mac->mac_fw = NULL; in bwi_mac_fw_free()
1839 bwi_mac_fw_load(struct bwi_mac *mac) in bwi_mac_fw_load() argument
1841 struct bwi_softc *sc = mac->mac_sc; in bwi_mac_fw_load()
1849 fw = (const uint32_t *)(mac->mac_ucode + BWI_FWHDR_SZ); in bwi_mac_fw_load()
1850 fw_len = (mac->mac_ucode_size - BWI_FWHDR_SZ) / sizeof(uint32_t); in bwi_mac_fw_load()
1862 fw = (const uint32_t *)(mac->mac_pcm + BWI_FWHDR_SZ); in bwi_mac_fw_load()
1863 fw_len = (mac->mac_pcm_size - BWI_FWHDR_SZ) / sizeof(uint32_t); in bwi_mac_fw_load()
1901 fw_rev = MOBJ_READ_2(mac, BWI_COMM_MOBJ, BWI_COMM_MOBJ_FWREV); in bwi_mac_fw_load()
1911 MOBJ_READ_2(mac, BWI_COMM_MOBJ, BWI_COMM_MOBJ_FWPATCHLV)); in bwi_mac_fw_load()
1918 bwi_mac_gpio_init(struct bwi_mac *mac) in bwi_mac_gpio_init() argument
1920 struct bwi_softc *sc = mac->mac_sc; in bwi_mac_gpio_init()
1953 bwi_mac_gpio_fini(struct bwi_mac *mac) in bwi_mac_gpio_fini() argument
1955 struct bwi_softc *sc = mac->mac_sc; in bwi_mac_gpio_fini()
1970 bwi_mac_fw_load_iv(struct bwi_mac *mac, uint8_t *fw, size_t fw_len) in bwi_mac_fw_load_iv() argument
1972 struct bwi_softc *sc = mac->mac_sc; in bwi_mac_fw_load_iv()
2050 bwi_mac_fw_init(struct bwi_mac *mac) in bwi_mac_fw_init() argument
2052 struct bwi_softc *sc = mac->mac_sc; in bwi_mac_fw_init()
2055 error = bwi_mac_fw_load_iv(mac, mac->mac_iv, mac->mac_iv_size); in bwi_mac_fw_init()
2061 if (mac->mac_iv_ext != NULL) { in bwi_mac_fw_init()
2062 error = bwi_mac_fw_load_iv(mac, mac->mac_iv_ext, in bwi_mac_fw_init()
2063 mac->mac_iv_ext_size); in bwi_mac_fw_init()
2072 bwi_mac_opmode_init(struct bwi_mac *mac) in bwi_mac_opmode_init() argument
2074 struct bwi_softc *sc = mac->mac_sc; in bwi_mac_opmode_init()
2084 MOBJ_WRITE_2(mac, BWI_COMM_MOBJ, BWI_COMM_MOBJ_PROBE_RESP_TO, 0); in bwi_mac_opmode_init()
2099 if (mac->mac_rev < 5) in bwi_mac_opmode_init()
2147 bwi_mac_hostflags_init(struct bwi_mac *mac) in bwi_mac_hostflags_init() argument
2149 struct bwi_softc *sc = mac->mac_sc; in bwi_mac_hostflags_init()
2150 struct bwi_phy *phy = &mac->mac_phy; in bwi_mac_hostflags_init()
2151 struct bwi_rf *rf = &mac->mac_rf; in bwi_mac_hostflags_init()
2157 host_flags = HFLAGS_READ(mac); in bwi_mac_hostflags_init()
2172 HFLAGS_WRITE(mac, host_flags); in bwi_mac_hostflags_init()
2176 bwi_mac_bss_param_init(struct bwi_mac *mac) in bwi_mac_bss_param_init() argument
2178 struct bwi_softc *sc = mac->mac_sc; in bwi_mac_bss_param_init()
2179 struct bwi_phy *phy = &mac->mac_phy; in bwi_mac_bss_param_init()
2191 bwi_mac_set_retry_lim(mac, &lim); in bwi_mac_bss_param_init()
2197 MOBJ_WRITE_2(mac, BWI_COMM_MOBJ, BWI_COMM_MOBJ_PROBE_RESP_TO, 1); in bwi_mac_bss_param_init()
2207 bwi_mac_set_ackrates(mac, &sc->sc_ic.ic_sup_rates[phy->phy_mode]); in bwi_mac_bss_param_init()
2216 MOBJ_WRITE_2(mac, BWI_80211_MOBJ, BWI_80211_MOBJ_CWMIN, cw_min); in bwi_mac_bss_param_init()
2221 MOBJ_WRITE_2(mac, BWI_80211_MOBJ, BWI_80211_MOBJ_CWMAX, in bwi_mac_bss_param_init()
2226 bwi_mac_set_retry_lim(struct bwi_mac *mac, const struct bwi_retry_lim *lim) in bwi_mac_set_retry_lim() argument
2229 MOBJ_WRITE_2(mac, BWI_80211_MOBJ, BWI_80211_MOBJ_SHRETRY, in bwi_mac_set_retry_lim()
2231 MOBJ_WRITE_2(mac, BWI_80211_MOBJ, BWI_80211_MOBJ_LGRETRY, in bwi_mac_set_retry_lim()
2235 MOBJ_WRITE_2(mac, BWI_COMM_MOBJ, BWI_COMM_MOBJ_SHRETRY_FB, in bwi_mac_set_retry_lim()
2237 MOBJ_WRITE_2(mac, BWI_COMM_MOBJ, BWI_COMM_MOBJ_LGRETEY_FB, in bwi_mac_set_retry_lim()
2242 bwi_mac_set_ackrates(struct bwi_mac *mac, const struct ieee80211_rateset *rs) in bwi_mac_set_ackrates() argument
2247 sc = mac->mac_sc; in bwi_mac_set_ackrates()
2272 MOBJ_WRITE_2(mac, BWI_COMM_MOBJ, ofs + 0x20, in bwi_mac_set_ackrates()
2273 MOBJ_READ_2(mac, BWI_COMM_MOBJ, ofs)); in bwi_mac_set_ackrates()
2278 bwi_mac_start(struct bwi_mac *mac) in bwi_mac_start() argument
2280 struct bwi_softc *sc = mac->mac_sc; in bwi_mac_start()
2289 return (bwi_mac_config_ps(mac)); in bwi_mac_start()
2293 bwi_mac_stop(struct bwi_mac *mac) in bwi_mac_stop() argument
2295 struct bwi_softc *sc = mac->mac_sc; in bwi_mac_stop()
2298 error = bwi_mac_config_ps(mac); in bwi_mac_stop()
2323 bwi_mac_config_ps(struct bwi_mac *mac) in bwi_mac_config_ps() argument
2325 struct bwi_softc *sc = mac->mac_sc; in bwi_mac_config_ps()
2337 if (mac->mac_rev >= 5) { in bwi_mac_config_ps()
2342 if (MOBJ_READ_2(mac, BWI_COMM_MOBJ, in bwi_mac_config_ps()
2357 bwi_mac_reset_hwkeys(struct bwi_mac *mac) in bwi_mac_reset_hwkeys() argument
2360 MOBJ_READ_2(mac, BWI_COMM_MOBJ, BWI_COMM_MOBJ_KEYTABLE_OFS); in bwi_mac_reset_hwkeys()
2364 bwi_mac_shutdown(struct bwi_mac *mac) in bwi_mac_shutdown() argument
2366 struct bwi_softc *sc = mac->mac_sc; in bwi_mac_shutdown()
2369 if (mac->mac_flags & BWI_MAC_F_HAS_TXSTATS) in bwi_mac_shutdown()
2377 bwi_rf_off(mac); in bwi_mac_shutdown()
2381 bwi_mac_gpio_fini(mac); in bwi_mac_shutdown()
2383 bwi_rf_off(mac); /* XXX again */ in bwi_mac_shutdown()
2385 bwi_regwin_disable(sc, &mac->mac_regwin, 0); in bwi_mac_shutdown()
2387 mac->mac_flags &= ~BWI_MAC_F_INITED; in bwi_mac_shutdown()
2391 bwi_mac_get_property(struct bwi_mac *mac) in bwi_mac_get_property() argument
2393 struct bwi_softc *sc = mac->mac_sc; in bwi_mac_get_property()
2403 mac->mac_flags |= BWI_MAC_F_BSWAP; in bwi_mac_get_property()
2444 bwi_mac_updateslot(struct bwi_mac *mac, int shslot) in bwi_mac_updateslot() argument
2449 sc = mac->mac_sc; in bwi_mac_updateslot()
2453 if (mac->mac_phy.phy_mode == IEEE80211_MODE_11B) in bwi_mac_updateslot()
2461 CSR_WRITE_2(mac->mac_sc, BWI_MAC_SLOTTIME, in bwi_mac_updateslot()
2463 MOBJ_WRITE_2(mac, BWI_COMM_MOBJ, BWI_COMM_MOBJ_SLOTTIME, slot_time); in bwi_mac_updateslot()
2469 struct bwi_mac *mac; in bwi_mac_attach() local
2488 mac = &sc->sc_mac[sc->sc_nmac]; in bwi_mac_attach()
2491 if (BWI_REGWIN_EXIST(&mac->mac_regwin)) { in bwi_mac_attach()
2510 BWI_CREATE_MAC(mac, sc, id, rev); in bwi_mac_attach()
2513 if (mac->mac_rev < 5) { in bwi_mac_attach()
2514 mac->mac_flags |= BWI_MAC_F_HAS_TXSTATS; in bwi_mac_attach()
2517 mac->mac_flags |= BWI_MAC_F_PHYE_RESET; in bwi_mac_attach()
2582 bwi_mac_adjust_tpctl(struct bwi_mac *mac, int rf_atten_adj, int bbp_atten_adj) in bwi_mac_adjust_tpctl() argument
2584 struct bwi_softc *sc = mac->mac_sc; in bwi_mac_adjust_tpctl()
2585 struct bwi_rf *rf = &mac->mac_rf; in bwi_mac_adjust_tpctl()
2589 bcopy(&mac->mac_tpctl, &tpctl, sizeof(tpctl)); in bwi_mac_adjust_tpctl()
2629 bwi_mac_lock(mac); in bwi_mac_adjust_tpctl()
2630 bwi_mac_set_tpctl_11bg(mac, &tpctl); in bwi_mac_adjust_tpctl()
2631 bwi_mac_unlock(mac); in bwi_mac_adjust_tpctl()
2638 bwi_mac_calibrate_txpower(struct bwi_mac *mac, enum bwi_txpwrcb_type type) in bwi_mac_calibrate_txpower() argument
2640 struct bwi_softc *sc = mac->mac_sc; in bwi_mac_calibrate_txpower()
2641 struct bwi_rf *rf = &mac->mac_rf; in bwi_mac_calibrate_txpower()
2646 if (mac->mac_flags & BWI_MAC_F_TPCTL_ERROR) { in bwi_mac_calibrate_txpower()
2662 error = bwi_rf_get_latest_tssi(mac, tssi, BWI_COMM_MOBJ_TSSI_DS); in bwi_mac_calibrate_txpower()
2666 if (mac->mac_phy.phy_mode == IEEE80211_MODE_11B) { in bwi_mac_calibrate_txpower()
2676 error = bwi_rf_get_latest_tssi(mac, tssi, in bwi_mac_calibrate_txpower()
2695 bwi_rf_clear_tssi(mac); in bwi_mac_calibrate_txpower()
2707 if (ofdm_tssi && (HFLAGS_READ(mac) & BWI_HFLAG_PWR_BOOST_DS)) in bwi_mac_calibrate_txpower()
2712 error = bwi_rf_tssi2dbm(mac, tssi_avg, &cur_txpwr); in bwi_mac_calibrate_txpower()
2741 bwi_mac_adjust_tpctl(mac, rf_atten_adj, bbp_atten_adj); in bwi_mac_calibrate_txpower()
2746 bwi_mac_lock(struct bwi_mac *mac) in bwi_mac_lock() argument
2748 struct bwi_softc *sc = mac->mac_sc; in bwi_mac_lock()
2750 KASSERT((mac->mac_flags & BWI_MAC_F_LOCKED) == 0); in bwi_mac_lock()
2752 if (mac->mac_rev < 3) in bwi_mac_lock()
2753 bwi_mac_stop(mac); in bwi_mac_lock()
2758 bwi_mac_config_ps(mac); in bwi_mac_lock()
2766 mac->mac_flags |= BWI_MAC_F_LOCKED; in bwi_mac_lock()
2770 bwi_mac_unlock(struct bwi_mac *mac) in bwi_mac_unlock() argument
2772 struct bwi_softc *sc = mac->mac_sc; in bwi_mac_unlock()
2774 KASSERT(mac->mac_flags & BWI_MAC_F_LOCKED); in bwi_mac_unlock()
2780 if (mac->mac_rev < 3) in bwi_mac_unlock()
2781 bwi_mac_start(mac); in bwi_mac_unlock()
2786 bwi_mac_config_ps(mac); in bwi_mac_unlock()
2788 mac->mac_flags &= ~BWI_MAC_F_LOCKED; in bwi_mac_unlock()
2792 bwi_mac_set_promisc(struct bwi_mac *mac, int promisc) in bwi_mac_set_promisc() argument
2794 struct bwi_softc *sc = mac->mac_sc; in bwi_mac_set_promisc()
2796 if (mac->mac_rev < 5) /* Promisc is always on */ in bwi_mac_set_promisc()
2808 bwi_phy_write(struct bwi_mac *mac, uint16_t ctrl, uint16_t data) in bwi_phy_write() argument
2810 struct bwi_softc *sc = mac->mac_sc; in bwi_phy_write()
2818 bwi_phy_read(struct bwi_mac *mac, uint16_t ctrl) in bwi_phy_read() argument
2820 struct bwi_softc *sc = mac->mac_sc; in bwi_phy_read()
2828 bwi_phy_attach(struct bwi_mac *mac) in bwi_phy_attach() argument
2830 struct bwi_softc *sc = mac->mac_sc; in bwi_phy_attach()
2831 struct bwi_phy *phy = &mac->mac_phy; in bwi_phy_attach()
2899 bwi_phy_set_bbp_atten(struct bwi_mac *mac, uint16_t bbp_atten) in bwi_phy_set_bbp_atten() argument
2901 struct bwi_phy *phy = &mac->mac_phy; in bwi_phy_set_bbp_atten()
2905 CSR_FILT_SETBITS_2(mac->mac_sc, BWI_BBP_ATTEN, ~mask, in bwi_phy_set_bbp_atten()
2912 PHY_FILT_SETBITS(mac, BWI_PHYR_BBP_ATTEN, ~mask, in bwi_phy_set_bbp_atten()
2918 bwi_phy_calibrate(struct bwi_mac *mac) in bwi_phy_calibrate() argument
2920 struct bwi_phy *phy = &mac->mac_phy; in bwi_phy_calibrate()
2923 CSR_READ_4(mac->mac_sc, BWI_MAC_STATUS); in bwi_phy_calibrate()
2930 bwi_mac_reset(mac, 0); in bwi_phy_calibrate()
2931 bwi_phy_init_11g(mac); in bwi_phy_calibrate()
2932 bwi_mac_reset(mac, 1); in bwi_phy_calibrate()
2941 bwi_tbl_write_2(struct bwi_mac *mac, uint16_t ofs, uint16_t data) in bwi_tbl_write_2() argument
2943 struct bwi_phy *phy = &mac->mac_phy; in bwi_tbl_write_2()
2946 PHY_WRITE(mac, phy->phy_tbl_ctrl, ofs); in bwi_tbl_write_2()
2947 PHY_WRITE(mac, phy->phy_tbl_data_lo, data); in bwi_tbl_write_2()
2951 bwi_tbl_write_4(struct bwi_mac *mac, uint16_t ofs, uint32_t data) in bwi_tbl_write_4() argument
2953 struct bwi_phy *phy = &mac->mac_phy; in bwi_tbl_write_4()
2958 PHY_WRITE(mac, phy->phy_tbl_ctrl, ofs); in bwi_tbl_write_4()
2959 PHY_WRITE(mac, phy->phy_tbl_data_hi, data >> 16); in bwi_tbl_write_4()
2960 PHY_WRITE(mac, phy->phy_tbl_data_lo, data & 0xffff); in bwi_tbl_write_4()
2964 bwi_nrssi_write(struct bwi_mac *mac, uint16_t ofs, int16_t data) in bwi_nrssi_write() argument
2966 PHY_WRITE(mac, BWI_PHYR_NRSSI_CTRL, ofs); in bwi_nrssi_write()
2967 PHY_WRITE(mac, BWI_PHYR_NRSSI_DATA, (uint16_t)data); in bwi_nrssi_write()
2971 bwi_nrssi_read(struct bwi_mac *mac, uint16_t ofs) in bwi_nrssi_read() argument
2973 PHY_WRITE(mac, BWI_PHYR_NRSSI_CTRL, ofs); in bwi_nrssi_read()
2974 return ((int16_t)PHY_READ(mac, BWI_PHYR_NRSSI_DATA)); in bwi_nrssi_read()
2978 bwi_phy_init_11a(struct bwi_mac *mac) in bwi_phy_init_11a() argument
2984 bwi_phy_init_11g(struct bwi_mac *mac) in bwi_phy_init_11g() argument
2986 struct bwi_softc *sc = mac->mac_sc; in bwi_phy_init_11g()
2987 struct bwi_phy *phy = &mac->mac_phy; in bwi_phy_init_11g()
2988 struct bwi_rf *rf = &mac->mac_rf; in bwi_phy_init_11g()
2989 const struct bwi_tpctl *tpctl = &mac->mac_tpctl; in bwi_phy_init_11g()
2992 bwi_phy_init_11b_rev5(mac); in bwi_phy_init_11g()
2994 bwi_phy_init_11b_rev6(mac); in bwi_phy_init_11g()
2997 bwi_phy_config_11g(mac); in bwi_phy_init_11g()
3000 PHY_WRITE(mac, 0x814, 0); in bwi_phy_init_11g()
3001 PHY_WRITE(mac, 0x815, 0); in bwi_phy_init_11g()
3004 PHY_WRITE(mac, 0x811, 0); in bwi_phy_init_11g()
3005 PHY_WRITE(mac, 0x15, 0xc0); in bwi_phy_init_11g()
3007 PHY_WRITE(mac, 0x811, 0x400); in bwi_phy_init_11g()
3008 PHY_WRITE(mac, 0x15, 0xc0); in bwi_phy_init_11g()
3015 val = PHY_READ(mac, 0x400) & 0xff; in bwi_phy_init_11g()
3017 PHY_WRITE(mac, 0x4c2, 0x1816); in bwi_phy_init_11g()
3018 PHY_WRITE(mac, 0x4c3, 0x8006); in bwi_phy_init_11g()
3020 PHY_FILT_SETBITS(mac, 0x4cc, in bwi_phy_init_11g()
3028 PHY_WRITE(mac, 0x47e, 0x78); in bwi_phy_init_11g()
3031 PHY_SETBITS(mac, 0x801, 0x80); in bwi_phy_init_11g()
3032 PHY_SETBITS(mac, 0x43e, 0x4); in bwi_phy_init_11g()
3036 bwi_rf_get_gains(mac); in bwi_phy_init_11g()
3039 bwi_rf_init(mac); in bwi_phy_init_11g()
3042 bwi_rf_lo_update(mac); in bwi_phy_init_11g()
3045 RF_WRITE(mac, 0x52, in bwi_phy_init_11g()
3048 RF_FILT_SETBITS(mac, 0x52, 0xfff0, tpctl->tp_ctrl2); in bwi_phy_init_11g()
3052 PHY_FILT_SETBITS(mac, 0x36, 0xfff, in bwi_phy_init_11g()
3057 PHY_WRITE(mac, 0x2e, 0x8075); in bwi_phy_init_11g()
3059 PHY_WRITE(mac, 0x2e, 0x807f); in bwi_phy_init_11g()
3062 PHY_WRITE(mac, 0x2f, 0x101); in bwi_phy_init_11g()
3064 PHY_WRITE(mac, 0x2f, 0x202); in bwi_phy_init_11g()
3068 bwi_rf_lo_adjust(mac, tpctl); in bwi_phy_init_11g()
3069 PHY_WRITE(mac, 0x80f, 0x8078); in bwi_phy_init_11g()
3073 bwi_rf_init_hw_nrssi_table(mac, 0xffff /* XXX */); in bwi_phy_init_11g()
3074 bwi_rf_set_nrssi_thr(mac); in bwi_phy_init_11g()
3078 bwi_rf_calc_nrssi_slope(mac); in bwi_phy_init_11g()
3081 bwi_rf_set_nrssi_thr(mac); in bwi_phy_init_11g()
3086 PHY_WRITE(mac, 0x805, 0x3230); in bwi_phy_init_11g()
3088 bwi_mac_init_tpctl_11bg(mac); in bwi_phy_init_11g()
3091 PHY_CLRBITS(mac, 0x429, 0x4000); in bwi_phy_init_11g()
3092 PHY_CLRBITS(mac, 0x4c3, 0x8000); in bwi_phy_init_11g()
3097 bwi_phy_init_11b_rev2(struct bwi_mac *mac) in bwi_phy_init_11b_rev2() argument
3101 sc = mac->mac_sc; in bwi_phy_init_11b_rev2()
3109 bwi_phy_init_11b_rev4(struct bwi_mac *mac) in bwi_phy_init_11b_rev4() argument
3111 struct bwi_softc *sc = mac->mac_sc; in bwi_phy_init_11b_rev4()
3112 struct bwi_rf *rf = &mac->mac_rf; in bwi_phy_init_11b_rev4()
3118 PHY_WRITE(mac, 0x20, 0x301c); in bwi_phy_init_11b_rev4()
3119 PHY_WRITE(mac, 0x26, 0); in bwi_phy_init_11b_rev4()
3120 PHY_WRITE(mac, 0x30, 0xc6); in bwi_phy_init_11b_rev4()
3121 PHY_WRITE(mac, 0x88, 0x3e00); in bwi_phy_init_11b_rev4()
3124 PHY_WRITE(mac, 0x89 + ofs, val); in bwi_phy_init_11b_rev4()
3131 bwi_rf_set_chan(mac, chan, 0); in bwi_phy_init_11b_rev4()
3134 RF_WRITE(mac, 0x75, 0x80); in bwi_phy_init_11b_rev4()
3135 RF_WRITE(mac, 0x79, 0x81); in bwi_phy_init_11b_rev4()
3138 RF_WRITE(mac, 0x50, 0x20); in bwi_phy_init_11b_rev4()
3139 RF_WRITE(mac, 0x50, 0x23); in bwi_phy_init_11b_rev4()
3142 RF_WRITE(mac, 0x50, 0x20); in bwi_phy_init_11b_rev4()
3143 RF_WRITE(mac, 0x5a, 0x70); in bwi_phy_init_11b_rev4()
3144 RF_WRITE(mac, 0x5b, 0x7b); in bwi_phy_init_11b_rev4()
3145 RF_WRITE(mac, 0x5c, 0xb0); in bwi_phy_init_11b_rev4()
3146 RF_WRITE(mac, 0x7a, 0xf); in bwi_phy_init_11b_rev4()
3147 PHY_WRITE(mac, 0x38, 0x677); in bwi_phy_init_11b_rev4()
3148 bwi_rf_init_bcm2050(mac); in bwi_phy_init_11b_rev4()
3151 PHY_WRITE(mac, 0x14, 0x80); in bwi_phy_init_11b_rev4()
3152 PHY_WRITE(mac, 0x32, 0xca); in bwi_phy_init_11b_rev4()
3154 PHY_WRITE(mac, 0x32, 0xe0); in bwi_phy_init_11b_rev4()
3155 PHY_WRITE(mac, 0x35, 0x7c2); in bwi_phy_init_11b_rev4()
3157 bwi_rf_lo_update(mac); in bwi_phy_init_11b_rev4()
3159 PHY_WRITE(mac, 0x26, 0xcc00); in bwi_phy_init_11b_rev4()
3161 PHY_WRITE(mac, 0x26, 0xce00); in bwi_phy_init_11b_rev4()
3165 PHY_WRITE(mac, 0x2a, 0x88a3); in bwi_phy_init_11b_rev4()
3167 PHY_WRITE(mac, 0x2a, 0x88c2); in bwi_phy_init_11b_rev4()
3169 bwi_mac_set_tpctl_11bg(mac, NULL); in bwi_phy_init_11b_rev4()
3171 bwi_rf_calc_nrssi_slope(mac); in bwi_phy_init_11b_rev4()
3172 bwi_rf_set_nrssi_thr(mac); in bwi_phy_init_11b_rev4()
3174 bwi_mac_init_tpctl_11bg(mac); in bwi_phy_init_11b_rev4()
3178 bwi_phy_init_11b_rev5(struct bwi_mac *mac) in bwi_phy_init_11b_rev5() argument
3180 struct bwi_softc *sc = mac->mac_sc; in bwi_phy_init_11b_rev5()
3181 struct bwi_rf *rf = &mac->mac_rf; in bwi_phy_init_11b_rev5()
3182 struct bwi_phy *phy = &mac->mac_phy; in bwi_phy_init_11b_rev5()
3186 RF_SETBITS(mac, 0x7a, 0x50); in bwi_phy_init_11b_rev5()
3194 PHY_WRITE(mac, ofs, val); in bwi_phy_init_11b_rev5()
3199 PHY_FILT_SETBITS(mac, 0x35, 0xf0ff, 0x700); in bwi_phy_init_11b_rev5()
3202 PHY_WRITE(mac, 0x38, 0x667); in bwi_phy_init_11b_rev5()
3206 RF_SETBITS(mac, 0x7a, 0x20); in bwi_phy_init_11b_rev5()
3207 RF_SETBITS(mac, 0x51, 0x4); in bwi_phy_init_11b_rev5()
3212 PHY_SETBITS(mac, 0x802, 0x100); in bwi_phy_init_11b_rev5()
3213 PHY_SETBITS(mac, 0x42b, 0x2000); in bwi_phy_init_11b_rev5()
3214 PHY_WRITE(mac, 0x1c, 0x186a); in bwi_phy_init_11b_rev5()
3216 PHY_FILT_SETBITS(mac, 0x13, 0xff, 0x1900); in bwi_phy_init_11b_rev5()
3217 PHY_FILT_SETBITS(mac, 0x35, 0xffc0, 0x64); in bwi_phy_init_11b_rev5()
3218 PHY_FILT_SETBITS(mac, 0x5d, 0xff80, 0xa); in bwi_phy_init_11b_rev5()
3224 PHY_WRITE(mac, 0x26, 0xce00); in bwi_phy_init_11b_rev5()
3225 PHY_WRITE(mac, 0x21, 0x3763); in bwi_phy_init_11b_rev5()
3226 PHY_WRITE(mac, 0x22, 0x1bc3); in bwi_phy_init_11b_rev5()
3227 PHY_WRITE(mac, 0x23, 0x6f9); in bwi_phy_init_11b_rev5()
3228 PHY_WRITE(mac, 0x24, 0x37e); in bwi_phy_init_11b_rev5()
3230 PHY_WRITE(mac, 0x26, 0xcc00); in bwi_phy_init_11b_rev5()
3231 PHY_WRITE(mac, 0x30, 0xc6); in bwi_phy_init_11b_rev5()
3236 PHY_WRITE(mac, 0x20, 0x3e1c); in bwi_phy_init_11b_rev5()
3238 PHY_WRITE(mac, 0x20, 0x301c); in bwi_phy_init_11b_rev5()
3245 bwi_rf_set_chan(mac, 7, 0); in bwi_phy_init_11b_rev5()
3248 RF_WRITE(mac, 0x75, 0x80); in bwi_phy_init_11b_rev5()
3249 RF_WRITE(mac, 0x79, 0x81); in bwi_phy_init_11b_rev5()
3252 RF_WRITE(mac, 0x50, 0x20); in bwi_phy_init_11b_rev5()
3253 RF_WRITE(mac, 0x50, 0x23); in bwi_phy_init_11b_rev5()
3256 RF_WRITE(mac, 0x50, 0x20); in bwi_phy_init_11b_rev5()
3257 RF_WRITE(mac, 0x5a, 0x70); in bwi_phy_init_11b_rev5()
3260 RF_WRITE(mac, 0x5b, 0x7b); in bwi_phy_init_11b_rev5()
3261 RF_WRITE(mac, 0x5c, 0xb0); in bwi_phy_init_11b_rev5()
3262 RF_SETBITS(mac, 0x7a, 0x7); in bwi_phy_init_11b_rev5()
3264 bwi_rf_set_chan(mac, orig_chan, 0); in bwi_phy_init_11b_rev5()
3266 PHY_WRITE(mac, 0x14, 0x80); in bwi_phy_init_11b_rev5()
3267 PHY_WRITE(mac, 0x32, 0xca); in bwi_phy_init_11b_rev5()
3268 PHY_WRITE(mac, 0x2a, 0x88a3); in bwi_phy_init_11b_rev5()
3270 bwi_mac_set_tpctl_11bg(mac, NULL); in bwi_phy_init_11b_rev5()
3273 RF_WRITE(mac, 0x5d, 0xd); in bwi_phy_init_11b_rev5()
3279 bwi_phy_init_11b_rev6(struct bwi_mac *mac) in bwi_phy_init_11b_rev6() argument
3281 struct bwi_softc *sc = mac->mac_sc; in bwi_phy_init_11b_rev6()
3282 struct bwi_rf *rf = &mac->mac_rf; in bwi_phy_init_11b_rev6()
3283 struct bwi_phy *phy = &mac->mac_phy; in bwi_phy_init_11b_rev6()
3287 PHY_WRITE(mac, 0x3e, 0x817a); in bwi_phy_init_11b_rev6()
3288 RF_SETBITS(mac, 0x7a, 0x58); in bwi_phy_init_11b_rev6()
3291 RF_WRITE(mac, 0x51, 0x37); in bwi_phy_init_11b_rev6()
3292 RF_WRITE(mac, 0x52, 0x70); in bwi_phy_init_11b_rev6()
3293 RF_WRITE(mac, 0x53, 0xb3); in bwi_phy_init_11b_rev6()
3294 RF_WRITE(mac, 0x54, 0x9b); in bwi_phy_init_11b_rev6()
3295 RF_WRITE(mac, 0x5a, 0x88); in bwi_phy_init_11b_rev6()
3296 RF_WRITE(mac, 0x5b, 0x88); in bwi_phy_init_11b_rev6()
3297 RF_WRITE(mac, 0x5d, 0x88); in bwi_phy_init_11b_rev6()
3298 RF_WRITE(mac, 0x5e, 0x88); in bwi_phy_init_11b_rev6()
3299 RF_WRITE(mac, 0x7d, 0x88); in bwi_phy_init_11b_rev6()
3300 HFLAGS_SETBITS(mac, BWI_HFLAG_MAGIC1); in bwi_phy_init_11b_rev6()
3302 RF_WRITE(mac, 0x51, 0); in bwi_phy_init_11b_rev6()
3303 RF_WRITE(mac, 0x52, 0x40); in bwi_phy_init_11b_rev6()
3304 RF_WRITE(mac, 0x53, 0xb7); in bwi_phy_init_11b_rev6()
3305 RF_WRITE(mac, 0x54, 0x98); in bwi_phy_init_11b_rev6()
3306 RF_WRITE(mac, 0x5a, 0x88); in bwi_phy_init_11b_rev6()
3307 RF_WRITE(mac, 0x5b, 0x6b); in bwi_phy_init_11b_rev6()
3308 RF_WRITE(mac, 0x5c, 0xf); in bwi_phy_init_11b_rev6()
3310 RF_WRITE(mac, 0x5d, 0xfa); in bwi_phy_init_11b_rev6()
3311 RF_WRITE(mac, 0x5e, 0xd8); in bwi_phy_init_11b_rev6()
3313 RF_WRITE(mac, 0x5d, 0xf5); in bwi_phy_init_11b_rev6()
3314 RF_WRITE(mac, 0x5e, 0xb8); in bwi_phy_init_11b_rev6()
3316 RF_WRITE(mac, 0x73, 0x3); in bwi_phy_init_11b_rev6()
3317 RF_WRITE(mac, 0x7d, 0xa8); in bwi_phy_init_11b_rev6()
3318 RF_WRITE(mac, 0x7c, 0x1); in bwi_phy_init_11b_rev6()
3319 RF_WRITE(mac, 0x7e, 0x8); in bwi_phy_init_11b_rev6()
3324 PHY_WRITE(mac, ofs, val); in bwi_phy_init_11b_rev6()
3330 PHY_WRITE(mac, ofs, val); in bwi_phy_init_11b_rev6()
3336 PHY_WRITE(mac, ofs, (val & 0x3f3f)); in bwi_phy_init_11b_rev6()
3344 RF_SETBITS(mac, 0x7a, 0x20); in bwi_phy_init_11b_rev6()
3345 RF_SETBITS(mac, 0x51, 0x4); in bwi_phy_init_11b_rev6()
3346 PHY_SETBITS(mac, 0x802, 0x100); in bwi_phy_init_11b_rev6()
3347 PHY_SETBITS(mac, 0x42b, 0x2000); in bwi_phy_init_11b_rev6()
3348 PHY_WRITE(mac, 0x5b, 0); in bwi_phy_init_11b_rev6()
3349 PHY_WRITE(mac, 0x5c, 0); in bwi_phy_init_11b_rev6()
3355 bwi_rf_set_chan(mac, 1, 0); in bwi_phy_init_11b_rev6()
3357 bwi_rf_set_chan(mac, 13, 0); in bwi_phy_init_11b_rev6()
3359 RF_WRITE(mac, 0x50, 0x20); in bwi_phy_init_11b_rev6()
3360 RF_WRITE(mac, 0x50, 0x23); in bwi_phy_init_11b_rev6()
3365 RF_SETBITS(mac, 0x7c, 0x2); in bwi_phy_init_11b_rev6()
3366 RF_WRITE(mac, 0x50, 0x20); in bwi_phy_init_11b_rev6()
3369 RF_WRITE(mac, 0x7c, 0x20); in bwi_phy_init_11b_rev6()
3370 RF_WRITE(mac, 0x5a, 0x70); in bwi_phy_init_11b_rev6()
3371 RF_WRITE(mac, 0x5b, 0x7b); in bwi_phy_init_11b_rev6()
3372 RF_WRITE(mac, 0x5c, 0xb0); in bwi_phy_init_11b_rev6()
3375 RF_FILT_SETBITS(mac, 0x7a, 0xf8, 0x7); in bwi_phy_init_11b_rev6()
3377 bwi_rf_set_chan(mac, orig_chan, 0); in bwi_phy_init_11b_rev6()
3379 PHY_WRITE(mac, 0x14, 0x200); in bwi_phy_init_11b_rev6()
3381 PHY_WRITE(mac, 0x2a, 0x88c2); in bwi_phy_init_11b_rev6()
3383 PHY_WRITE(mac, 0x2a, 0x8ac0); in bwi_phy_init_11b_rev6()
3384 PHY_WRITE(mac, 0x38, 0x668); in bwi_phy_init_11b_rev6()
3386 bwi_mac_set_tpctl_11bg(mac, NULL); in bwi_phy_init_11b_rev6()
3389 PHY_FILT_SETBITS(mac, 0x5d, 0xff80, 0x3); in bwi_phy_init_11b_rev6()
3391 RF_WRITE(mac, 0x5d, 0xd); in bwi_phy_init_11b_rev6()
3396 PHY_CLRBITS(mac, 0x61, 0xf000); in bwi_phy_init_11b_rev6()
3398 PHY_FILT_SETBITS(mac, 0x2, 0xffc0, 0x4); in bwi_phy_init_11b_rev6()
3403 PHY_WRITE(mac, 0x16, 0x410); in bwi_phy_init_11b_rev6()
3404 PHY_WRITE(mac, 0x17, 0x820); in bwi_phy_init_11b_rev6()
3405 PHY_WRITE(mac, 0x62, 0x7); in bwi_phy_init_11b_rev6()
3407 bwi_rf_init_bcm2050(mac); in bwi_phy_init_11b_rev6()
3408 bwi_rf_lo_update(mac); in bwi_phy_init_11b_rev6()
3410 bwi_rf_calc_nrssi_slope(mac); in bwi_phy_init_11b_rev6()
3411 bwi_rf_set_nrssi_thr(mac); in bwi_phy_init_11b_rev6()
3413 bwi_mac_init_tpctl_11bg(mac); in bwi_phy_init_11b_rev6()
3419 bwi_phy_config_11g(struct bwi_mac *mac) in bwi_phy_config_11g() argument
3421 struct bwi_softc *sc = mac->mac_sc; in bwi_phy_config_11g()
3422 struct bwi_phy *phy = &mac->mac_phy; in bwi_phy_config_11g()
3428 PHY_WRITE(mac, 0x406, 0x4f19); in bwi_phy_config_11g()
3429 PHY_FILT_SETBITS(mac, 0x429, 0xfc3f, 0x340); in bwi_phy_config_11g()
3430 PHY_WRITE(mac, 0x42c, 0x5a); in bwi_phy_config_11g()
3431 PHY_WRITE(mac, 0x427, 0x1a); in bwi_phy_config_11g()
3435 bwi_tbl_write_2(mac, BWI_PHYTBL_FREQ + i, in bwi_phy_config_11g()
3441 bwi_tbl_write_2(mac, BWI_PHYTBL_NOISE + i, in bwi_phy_config_11g()
3448 bwi_tbl_write_4(mac, BWI_PHYTBL_ROTOR + i, in bwi_phy_config_11g()
3452 bwi_nrssi_write(mac, 0xba98, (int16_t)0x7654); /* XXX */ in bwi_phy_config_11g()
3455 PHY_WRITE(mac, 0x4c0, 0x1861); in bwi_phy_config_11g()
3456 PHY_WRITE(mac, 0x4c1, 0x271); in bwi_phy_config_11g()
3458 PHY_WRITE(mac, 0x4c0, 0x98); in bwi_phy_config_11g()
3459 PHY_WRITE(mac, 0x4c1, 0x70); in bwi_phy_config_11g()
3460 PHY_WRITE(mac, 0x4c9, 0x80); in bwi_phy_config_11g()
3462 PHY_SETBITS(mac, 0x42b, 0x800); in bwi_phy_config_11g()
3466 bwi_tbl_write_2(mac, BWI_PHYTBL_RSSI + i, i); in bwi_phy_config_11g()
3470 bwi_tbl_write_2(mac, BWI_PHYTBL_NOISE + i, in bwi_phy_config_11g()
3481 } else if (phy->phy_rev >= 7 && (PHY_READ(mac, 0x449) & 0x200)) { in bwi_phy_config_11g()
3489 bwi_tbl_write_2(mac, BWI_PHYTBL_NOISE_SCALE + i, tbl[i]); in bwi_phy_config_11g()
3505 bwi_tbl_write_2(mac, BWI_PHYTBL_SIGMA_SQ + i, tbl[i]); in bwi_phy_config_11g()
3510 bwi_tbl_write_4(mac, BWI_PHYTBL_DELAY + i, in bwi_phy_config_11g()
3516 bwi_tbl_write_2(mac, BWI_PHYTBL_WRSSI_REV1 + i, 0x20); in bwi_phy_config_11g()
3518 bwi_phy_config_agc(mac); in bwi_phy_config_11g()
3525 bwi_tbl_write_2(mac, BWI_PHYTBL_WRSSI + i, 0x820); in bwi_phy_config_11g()
3527 bwi_phy_config_agc(mac); in bwi_phy_config_11g()
3529 PHY_READ(mac, 0x400); /* Dummy read */ in bwi_phy_config_11g()
3530 PHY_WRITE(mac, 0x403, 0x1000); in bwi_phy_config_11g()
3531 bwi_tbl_write_2(mac, 0x3c02, 0xf); in bwi_phy_config_11g()
3532 bwi_tbl_write_2(mac, 0x3c03, 0x14); in bwi_phy_config_11g()
3539 bwi_tbl_write_2(mac, wrd_ofs1, 0x2); in bwi_phy_config_11g()
3540 bwi_tbl_write_2(mac, wrd_ofs2, 0x1); in bwi_phy_config_11g()
3545 PHY_WRITE(mac, 0x46e, 0x3cf); in bwi_phy_config_11g()
3553 bwi_phy_config_agc(struct bwi_mac *mac) in bwi_phy_config_agc() argument
3555 struct bwi_phy *phy = &mac->mac_phy; in bwi_phy_config_agc()
3560 bwi_tbl_write_2(mac, ofs, 0xfe); in bwi_phy_config_agc()
3561 bwi_tbl_write_2(mac, ofs + 1, 0xd); in bwi_phy_config_agc()
3562 bwi_tbl_write_2(mac, ofs + 2, 0x13); in bwi_phy_config_agc()
3563 bwi_tbl_write_2(mac, ofs + 3, 0x19); in bwi_phy_config_agc()
3566 bwi_tbl_write_2(mac, 0x1800, 0x2710); in bwi_phy_config_agc()
3567 bwi_tbl_write_2(mac, 0x1801, 0x9b83); in bwi_phy_config_agc()
3568 bwi_tbl_write_2(mac, 0x1802, 0x9b83); in bwi_phy_config_agc()
3569 bwi_tbl_write_2(mac, 0x1803, 0xf8d); in bwi_phy_config_agc()
3570 PHY_WRITE(mac, 0x455, 0x4); in bwi_phy_config_agc()
3573 PHY_FILT_SETBITS(mac, 0x4a5, 0xff, 0x5700); in bwi_phy_config_agc()
3574 PHY_FILT_SETBITS(mac, 0x41a, 0xff80, 0xf); in bwi_phy_config_agc()
3575 PHY_FILT_SETBITS(mac, 0x41a, 0xc07f, 0x2b80); in bwi_phy_config_agc()
3576 PHY_FILT_SETBITS(mac, 0x48c, 0xf0ff, 0x300); in bwi_phy_config_agc()
3578 RF_SETBITS(mac, 0x7a, 0x8); in bwi_phy_config_agc()
3580 PHY_FILT_SETBITS(mac, 0x4a0, 0xfff0, 0x8); in bwi_phy_config_agc()
3581 PHY_FILT_SETBITS(mac, 0x4a1, 0xf0ff, 0x600); in bwi_phy_config_agc()
3582 PHY_FILT_SETBITS(mac, 0x4a2, 0xf0ff, 0x700); in bwi_phy_config_agc()
3583 PHY_FILT_SETBITS(mac, 0x4a0, 0xf0ff, 0x100); in bwi_phy_config_agc()
3586 PHY_FILT_SETBITS(mac, 0x4a2, 0xfff0, 0x7); in bwi_phy_config_agc()
3588 PHY_FILT_SETBITS(mac, 0x488, 0xff00, 0x1c); in bwi_phy_config_agc()
3589 PHY_FILT_SETBITS(mac, 0x488, 0xc0ff, 0x200); in bwi_phy_config_agc()
3590 PHY_FILT_SETBITS(mac, 0x496, 0xff00, 0x1c); in bwi_phy_config_agc()
3591 PHY_FILT_SETBITS(mac, 0x489, 0xff00, 0x20); in bwi_phy_config_agc()
3592 PHY_FILT_SETBITS(mac, 0x489, 0xc0ff, 0x200); in bwi_phy_config_agc()
3593 PHY_FILT_SETBITS(mac, 0x482, 0xff00, 0x2e); in bwi_phy_config_agc()
3594 PHY_FILT_SETBITS(mac, 0x496, 0xff, 0x1a00); in bwi_phy_config_agc()
3595 PHY_FILT_SETBITS(mac, 0x481, 0xff00, 0x28); in bwi_phy_config_agc()
3596 PHY_FILT_SETBITS(mac, 0x481, 0xff, 0x2c00); in bwi_phy_config_agc()
3599 PHY_WRITE(mac, 0x430, 0x92b); in bwi_phy_config_agc()
3600 PHY_FILT_SETBITS(mac, 0x41b, 0xffe1, 0x2); in bwi_phy_config_agc()
3602 PHY_CLRBITS(mac, 0x41b, 0x1e); in bwi_phy_config_agc()
3603 PHY_WRITE(mac, 0x41f, 0x287a); in bwi_phy_config_agc()
3604 PHY_FILT_SETBITS(mac, 0x420, 0xfff0, 0x4); in bwi_phy_config_agc()
3607 PHY_WRITE(mac, 0x422, 0x287a); in bwi_phy_config_agc()
3608 PHY_FILT_SETBITS(mac, 0x420, 0xfff, 0x3000); in bwi_phy_config_agc()
3612 PHY_FILT_SETBITS(mac, 0x4a8, 0x8080, 0x7874); in bwi_phy_config_agc()
3613 PHY_WRITE(mac, 0x48e, 0x1c00); in bwi_phy_config_agc()
3616 PHY_FILT_SETBITS(mac, 0x4ab, 0xf0ff, 0x600); in bwi_phy_config_agc()
3617 PHY_WRITE(mac, 0x48b, 0x5e); in bwi_phy_config_agc()
3618 PHY_FILT_SETBITS(mac, 0x48c, 0xff00, 0x1e); in bwi_phy_config_agc()
3619 PHY_WRITE(mac, 0x48d, 0x2); in bwi_phy_config_agc()
3622 bwi_tbl_write_2(mac, ofs + 0x800, 0); in bwi_phy_config_agc()
3623 bwi_tbl_write_2(mac, ofs + 0x801, 7); in bwi_phy_config_agc()
3624 bwi_tbl_write_2(mac, ofs + 0x802, 16); in bwi_phy_config_agc()
3625 bwi_tbl_write_2(mac, ofs + 0x803, 28); in bwi_phy_config_agc()
3628 PHY_CLRBITS(mac, 0x426, 0x3); in bwi_phy_config_agc()
3629 PHY_CLRBITS(mac, 0x426, 0x1000); in bwi_phy_config_agc()
3634 bwi_set_gains(struct bwi_mac *mac, const struct bwi_gains *gains) in bwi_set_gains() argument
3636 struct bwi_phy *phy = &mac->mac_phy; in bwi_set_gains()
3656 bwi_tbl_write_2(mac, tbl_gain_ofs1 + i, tbl_gain); in bwi_set_gains()
3664 bwi_tbl_write_2(mac, tbl_gain_ofs2 + i, tbl_gain); in bwi_set_gains()
3679 PHY_FILT_SETBITS(mac, 0x4a0, 0xbfbf, phy_gain1); in bwi_set_gains()
3680 PHY_FILT_SETBITS(mac, 0x4a1, 0xbfbf, phy_gain1); in bwi_set_gains()
3681 PHY_FILT_SETBITS(mac, 0x4a2, 0xbfbf, phy_gain2); in bwi_set_gains()
3683 bwi_mac_dummy_xmit(mac); in bwi_set_gains()
3695 bwi_nrssi_11g(struct bwi_mac *mac) in bwi_nrssi_11g() argument
3700 val = (int16_t)__SHIFTOUT(PHY_READ(mac, 0x47f), NRSSI_11G_MASK); in bwi_nrssi_11g()
3709 bwi_get_rf_lo(struct bwi_mac *mac, uint16_t rf_atten, uint16_t bbp_atten) in bwi_get_rf_lo() argument
3716 return (&mac->mac_rf.rf_lo[n]); in bwi_get_rf_lo()
3720 bwi_rf_lo_isused(struct bwi_mac *mac, const struct bwi_rf_lo *lo) in bwi_rf_lo_isused() argument
3722 struct bwi_rf *rf = &mac->mac_rf; in bwi_rf_lo_isused()
3732 bwi_rf_write(struct bwi_mac *mac, uint16_t ctrl, uint16_t data) in bwi_rf_write() argument
3734 struct bwi_softc *sc = mac->mac_sc; in bwi_rf_write()
3741 bwi_rf_read(struct bwi_mac *mac, uint16_t ctrl) in bwi_rf_read() argument
3743 struct bwi_rf *rf = &mac->mac_rf; in bwi_rf_read()
3744 struct bwi_softc *sc = mac->mac_sc; in bwi_rf_read()
3760 bwi_rf_attach(struct bwi_mac *mac) in bwi_rf_attach() argument
3762 struct bwi_softc *sc = mac->mac_sc; in bwi_rf_attach()
3763 struct bwi_phy *phy = &mac->mac_phy; in bwi_rf_attach()
3764 struct bwi_rf *rf = &mac->mac_rf; in bwi_rf_attach()
3848 if (mac->mac_rev >= 5) in bwi_rf_attach()
3872 bwi_rf_set_chan(struct bwi_mac *mac, uint chan, int work_around) in bwi_rf_set_chan() argument
3874 struct bwi_softc *sc = mac->mac_sc; in bwi_rf_set_chan()
3879 MOBJ_WRITE_2(mac, BWI_COMM_MOBJ, BWI_COMM_MOBJ_CHAN, chan); in bwi_rf_set_chan()
3884 bwi_rf_workaround(mac, chan); in bwi_rf_set_chan()
3890 HFLAGS_CLRBITS(mac, BWI_HFLAG_NOT_JAPAN); in bwi_rf_set_chan()
3892 HFLAGS_SETBITS(mac, BWI_HFLAG_NOT_JAPAN); in bwi_rf_set_chan()
3899 mac->mac_rf.rf_curchan = chan; in bwi_rf_set_chan()
3903 bwi_rf_get_gains(struct bwi_mac *mac) in bwi_rf_get_gains() argument
3908 struct bwi_phy *phy = &mac->mac_phy; in bwi_rf_get_gains()
3909 struct bwi_rf *rf = &mac->mac_rf; in bwi_rf_get_gains()
3924 sc = mac->mac_sc; in bwi_rf_get_gains()
3930 save_phy[i] = PHY_READ(mac, save_phy_regs[i]); in bwi_rf_get_gains()
3931 PHY_READ(mac, 0x2d); /* dummy read */ in bwi_rf_get_gains()
3934 save_rf[i] = RF_READ(mac, save_rf_regs[i]); in bwi_rf_get_gains()
3936 PHY_CLRBITS(mac, 0x429, 0xc000); in bwi_rf_get_gains()
3937 PHY_SETBITS(mac, 0x1, 0x8000); in bwi_rf_get_gains()
3939 PHY_SETBITS(mac, 0x811, 0x2); in bwi_rf_get_gains()
3940 PHY_CLRBITS(mac, 0x812, 0x2); in bwi_rf_get_gains()
3941 PHY_SETBITS(mac, 0x811, 0x1); in bwi_rf_get_gains()
3942 PHY_CLRBITS(mac, 0x812, 0x1); in bwi_rf_get_gains()
3944 PHY_SETBITS(mac, 0x814, 0x1); in bwi_rf_get_gains()
3945 PHY_CLRBITS(mac, 0x815, 0x1); in bwi_rf_get_gains()
3946 PHY_SETBITS(mac, 0x814, 0x2); in bwi_rf_get_gains()
3947 PHY_CLRBITS(mac, 0x815, 0x2); in bwi_rf_get_gains()
3949 PHY_SETBITS(mac, 0x811, 0xc); in bwi_rf_get_gains()
3950 PHY_SETBITS(mac, 0x812, 0xc); in bwi_rf_get_gains()
3951 PHY_SETBITS(mac, 0x811, 0x30); in bwi_rf_get_gains()
3952 PHY_FILT_SETBITS(mac, 0x812, 0xffcf, 0x10); in bwi_rf_get_gains()
3954 PHY_WRITE(mac, 0x5a, 0x780); in bwi_rf_get_gains()
3955 PHY_WRITE(mac, 0x59, 0xc810); in bwi_rf_get_gains()
3956 PHY_WRITE(mac, 0x58, 0xd); in bwi_rf_get_gains()
3957 PHY_SETBITS(mac, 0xa, 0x2000); in bwi_rf_get_gains()
3959 PHY_SETBITS(mac, 0x814, 0x4); in bwi_rf_get_gains()
3960 PHY_CLRBITS(mac, 0x815, 0x4); in bwi_rf_get_gains()
3962 PHY_FILT_SETBITS(mac, 0x3, 0xff9f, 0x40); in bwi_rf_get_gains()
3966 RF_WRITE(mac, 0x43, loop1_max); in bwi_rf_get_gains()
3969 RF_WRITE(mac, 0x52, 0x0); in bwi_rf_get_gains()
3970 RF_FILT_SETBITS(mac, 0x43, 0xfff0, loop1_max); in bwi_rf_get_gains()
3973 bwi_phy_set_bbp_atten(mac, 11); in bwi_rf_get_gains()
3976 PHY_WRITE(mac, 0x80f, 0xc020); in bwi_rf_get_gains()
3978 PHY_WRITE(mac, 0x80f, 0x8020); in bwi_rf_get_gains()
3979 PHY_WRITE(mac, 0x810, 0); in bwi_rf_get_gains()
3981 PHY_FILT_SETBITS(mac, 0x2b, 0xffc0, 0x1); in bwi_rf_get_gains()
3982 PHY_FILT_SETBITS(mac, 0x2b, 0xc0ff, 0x800); in bwi_rf_get_gains()
3983 PHY_SETBITS(mac, 0x811, 0x100); in bwi_rf_get_gains()
3984 PHY_CLRBITS(mac, 0x812, 0x3000); in bwi_rf_get_gains()
3986 if ((mac->mac_sc->sc_card_flags & BWI_CARD_F_EXT_LNA) && in bwi_rf_get_gains()
3988 PHY_SETBITS(mac, 0x811, 0x800); in bwi_rf_get_gains()
3989 PHY_SETBITS(mac, 0x812, 0x8000); in bwi_rf_get_gains()
3991 RF_CLRBITS(mac, 0x7a, 0xff08); in bwi_rf_get_gains()
4000 RF_WRITE(mac, 0x43, i); in bwi_rf_get_gains()
4002 if (bwi_rf_gain_max_reached(mac, j)) in bwi_rf_get_gains()
4015 PHY_SETBITS(mac, 0x812, 0x30); in bwi_rf_get_gains()
4019 if (bwi_rf_gain_max_reached(mac, i)) in bwi_rf_get_gains()
4031 PHY_WRITE(mac, save_phy_regs[i], save_phy[i]); in bwi_rf_get_gains()
4033 bwi_phy_set_bbp_atten(mac, mac->mac_tpctl.bbp_atten); in bwi_rf_get_gains()
4036 RF_WRITE(mac, save_rf_regs[i], save_rf[i]); in bwi_rf_get_gains()
4038 PHY_WRITE(mac, save_phy_regs[2], save_phy[2] | 0x3); in bwi_rf_get_gains()
4040 PHY_WRITE(mac, save_phy_regs[2], save_phy[2]); in bwi_rf_get_gains()
4041 PHY_WRITE(mac, save_phy_regs[3], save_phy[3]); in bwi_rf_get_gains()
4042 PHY_WRITE(mac, save_phy_regs[0], save_phy[0]); in bwi_rf_get_gains()
4043 PHY_WRITE(mac, save_phy_regs[1], save_phy[1]); in bwi_rf_get_gains()
4058 bwi_rf_init(struct bwi_mac *mac) in bwi_rf_init() argument
4060 struct bwi_rf *rf = &mac->mac_rf; in bwi_rf_init()
4066 RF_WRITE(mac, 0x78, rf->rf_calib); in bwi_rf_init()
4068 bwi_rf_init_bcm2050(mac); in bwi_rf_init()
4073 bwi_rf_off_11a(struct bwi_mac *mac) in bwi_rf_off_11a() argument
4075 RF_WRITE(mac, 0x4, 0xff); in bwi_rf_off_11a()
4076 RF_WRITE(mac, 0x5, 0xfb); in bwi_rf_off_11a()
4078 PHY_SETBITS(mac, 0x10, 0x8); in bwi_rf_off_11a()
4079 PHY_SETBITS(mac, 0x11, 0x8); in bwi_rf_off_11a()
4081 PHY_WRITE(mac, 0x15, 0xaa00); in bwi_rf_off_11a()
4085 bwi_rf_off_11bg(struct bwi_mac *mac) in bwi_rf_off_11bg() argument
4087 PHY_WRITE(mac, 0x15, 0xaa00); in bwi_rf_off_11bg()
4091 bwi_rf_off_11g_rev5(struct bwi_mac *mac) in bwi_rf_off_11g_rev5() argument
4093 PHY_SETBITS(mac, 0x811, 0x8c); in bwi_rf_off_11g_rev5()
4094 PHY_CLRBITS(mac, 0x812, 0x8c); in bwi_rf_off_11g_rev5()
4098 bwi_rf_workaround(struct bwi_mac *mac, uint chan) in bwi_rf_workaround() argument
4100 struct bwi_softc *sc = mac->mac_sc; in bwi_rf_workaround()
4101 struct bwi_rf *rf = &mac->mac_rf; in bwi_rf_workaround()
4121 bwi_rf_lo_find(struct bwi_mac *mac, const struct bwi_tpctl *tpctl) in bwi_rf_lo_find() argument
4158 return (bwi_get_rf_lo(mac, rf_atten, bbp_atten)); in bwi_rf_lo_find()
4162 bwi_rf_lo_adjust(struct bwi_mac *mac, const struct bwi_tpctl *tpctl) in bwi_rf_lo_adjust() argument
4166 lo = bwi_rf_lo_find(mac, tpctl); in bwi_rf_lo_adjust()
4167 RF_LO_WRITE(mac, lo); in bwi_rf_lo_adjust()
4171 bwi_rf_lo_write(struct bwi_mac *mac, const struct bwi_rf_lo *lo) in bwi_rf_lo_write() argument
4178 PHY_WRITE(mac, BWI_PHYR_RF_LO, val); in bwi_rf_lo_write()
4182 bwi_rf_gain_max_reached(struct bwi_mac *mac, int idx) in bwi_rf_gain_max_reached() argument
4184 PHY_FILT_SETBITS(mac, 0x812, 0xf0ff, idx << 8); in bwi_rf_gain_max_reached()
4185 PHY_FILT_SETBITS(mac, 0x15, 0xfff, 0xa000); in bwi_rf_gain_max_reached()
4186 PHY_SETBITS(mac, 0x15, 0xf000); in bwi_rf_gain_max_reached()
4190 return ((PHY_READ(mac, 0x2d) >= 0xdfc)); in bwi_rf_gain_max_reached()
4208 bwi_phy812_value(struct bwi_mac *mac, uint16_t lpd) in bwi_phy812_value() argument
4210 struct bwi_softc *sc = mac->mac_sc; in bwi_phy812_value()
4211 struct bwi_phy *phy = &mac->mac_phy; in bwi_phy812_value()
4212 struct bwi_rf *rf = &mac->mac_rf; in bwi_phy812_value()
4281 bwi_rf_init_bcm2050(struct bwi_mac *mac) in bwi_rf_init_bcm2050() argument
4294 struct bwi_softc *sc = mac->mac_sc; in bwi_rf_init_bcm2050()
4295 struct bwi_phy *phy = &mac->mac_phy; in bwi_rf_init_bcm2050()
4296 struct bwi_rf *rf = &mac->mac_rf; in bwi_rf_init_bcm2050()
4310 save_rf[i] = RF_READ(mac, save_rf_regs[i]); in bwi_rf_init_bcm2050()
4312 save_phy_comm[i] = PHY_READ(mac, save_phy_regs_comm[i]); in bwi_rf_init_bcm2050()
4315 phyr_30 = PHY_READ(mac, 0x30); in bwi_rf_init_bcm2050()
4318 PHY_WRITE(mac, 0x30, 0xff); in bwi_rf_init_bcm2050()
4323 PHY_READ(mac, save_phy_regs_11g[i]); in bwi_rf_init_bcm2050()
4326 PHY_SETBITS(mac, 0x814, 0x3); in bwi_rf_init_bcm2050()
4327 PHY_CLRBITS(mac, 0x815, 0x3); in bwi_rf_init_bcm2050()
4328 PHY_CLRBITS(mac, 0x429, 0x8000); in bwi_rf_init_bcm2050()
4329 PHY_CLRBITS(mac, 0x802, 0x3); in bwi_rf_init_bcm2050()
4331 phyr_80f = PHY_READ(mac, 0x80f); in bwi_rf_init_bcm2050()
4332 phyr_810 = PHY_READ(mac, 0x810); in bwi_rf_init_bcm2050()
4335 PHY_WRITE(mac, 0x80f, 0xc020); in bwi_rf_init_bcm2050()
4337 PHY_WRITE(mac, 0x80f, 0x8020); in bwi_rf_init_bcm2050()
4338 PHY_WRITE(mac, 0x810, 0); in bwi_rf_init_bcm2050()
4340 phy812_val = bwi_phy812_value(mac, 0x011); in bwi_rf_init_bcm2050()
4341 PHY_WRITE(mac, 0x812, phy812_val); in bwi_rf_init_bcm2050()
4344 PHY_WRITE(mac, 0x811, 0x1b3); in bwi_rf_init_bcm2050()
4346 PHY_WRITE(mac, 0x811, 0x9b3); in bwi_rf_init_bcm2050()
4350 phyr_35 = PHY_READ(mac, 0x35); in bwi_rf_init_bcm2050()
4351 PHY_CLRBITS(mac, 0x35, 0x80); in bwi_rf_init_bcm2050()
4360 PHY_FILT_SETBITS(mac, 0x3, 0xffbf, 0x40); in bwi_rf_init_bcm2050()
4364 calib = bwi_rf_calibval(mac); in bwi_rf_init_bcm2050()
4367 RF_WRITE(mac, 0x78, 0x26); in bwi_rf_init_bcm2050()
4370 phy812_val = bwi_phy812_value(mac, 0x011); in bwi_rf_init_bcm2050()
4371 PHY_WRITE(mac, 0x812, phy812_val); in bwi_rf_init_bcm2050()
4374 PHY_WRITE(mac, 0x15, 0xbfaf); in bwi_rf_init_bcm2050()
4375 PHY_WRITE(mac, 0x2b, 0x1403); in bwi_rf_init_bcm2050()
4378 phy812_val = bwi_phy812_value(mac, 0x001); in bwi_rf_init_bcm2050()
4379 PHY_WRITE(mac, 0x812, phy812_val); in bwi_rf_init_bcm2050()
4382 PHY_WRITE(mac, 0x15, 0xbfa0); in bwi_rf_init_bcm2050()
4384 RF_SETBITS(mac, 0x51, 0x4); in bwi_rf_init_bcm2050()
4386 RF_WRITE(mac, 0x43, 0x1f); in bwi_rf_init_bcm2050()
4388 RF_WRITE(mac, 0x52, 0); in bwi_rf_init_bcm2050()
4389 RF_FILT_SETBITS(mac, 0x43, 0xfff0, 0x9); in bwi_rf_init_bcm2050()
4393 PHY_WRITE(mac, 0x58, 0); in bwi_rf_init_bcm2050()
4395 PHY_WRITE(mac, 0x5a, 0x480); in bwi_rf_init_bcm2050()
4396 PHY_WRITE(mac, 0x59, 0xc810); in bwi_rf_init_bcm2050()
4398 PHY_WRITE(mac, 0x58, 0xd); in bwi_rf_init_bcm2050()
4400 phy812_val = bwi_phy812_value(mac, 0x101); in bwi_rf_init_bcm2050()
4401 PHY_WRITE(mac, 0x812, phy812_val); in bwi_rf_init_bcm2050()
4403 PHY_WRITE(mac, 0x15, 0xafb0); in bwi_rf_init_bcm2050()
4407 phy812_val = bwi_phy812_value(mac, 0x101); in bwi_rf_init_bcm2050()
4408 PHY_WRITE(mac, 0x812, phy812_val); in bwi_rf_init_bcm2050()
4410 PHY_WRITE(mac, 0x15, 0xefb0); in bwi_rf_init_bcm2050()
4414 phy812_val = bwi_phy812_value(mac, 0x100); in bwi_rf_init_bcm2050()
4415 PHY_WRITE(mac, 0x812, phy812_val); in bwi_rf_init_bcm2050()
4417 PHY_WRITE(mac, 0x15, 0xfff0); in bwi_rf_init_bcm2050()
4420 test_lim += PHY_READ(mac, 0x2d); in bwi_rf_init_bcm2050()
4422 PHY_WRITE(mac, 0x58, 0); in bwi_rf_init_bcm2050()
4424 phy812_val = bwi_phy812_value(mac, 0x101); in bwi_rf_init_bcm2050()
4425 PHY_WRITE(mac, 0x812, phy812_val); in bwi_rf_init_bcm2050()
4427 PHY_WRITE(mac, 0x15, 0xafb0); in bwi_rf_init_bcm2050()
4435 PHY_WRITE(mac, 0x58, 0); in bwi_rf_init_bcm2050()
4440 RF_WRITE(mac, 0x78, rfr_78); in bwi_rf_init_bcm2050()
4445 PHY_WRITE(mac, 0x5a, 0xd80); in bwi_rf_init_bcm2050()
4446 PHY_WRITE(mac, 0x59, 0xc810); in bwi_rf_init_bcm2050()
4448 PHY_WRITE(mac, 0x58, 0xd); in bwi_rf_init_bcm2050()
4451 phy812_val = bwi_phy812_value(mac, 0x101); in bwi_rf_init_bcm2050()
4452 PHY_WRITE(mac, 0x812, phy812_val); in bwi_rf_init_bcm2050()
4454 PHY_WRITE(mac, 0x15, 0xafb0); in bwi_rf_init_bcm2050()
4459 phy812_val = bwi_phy812_value(mac, 0x101); in bwi_rf_init_bcm2050()
4460 PHY_WRITE(mac, 0x812, phy812_val); in bwi_rf_init_bcm2050()
4462 PHY_WRITE(mac, 0x15, 0xefb0); in bwi_rf_init_bcm2050()
4467 phy812_val = bwi_phy812_value(mac, 0x100); in bwi_rf_init_bcm2050()
4468 PHY_WRITE(mac, 0x812, phy812_val); in bwi_rf_init_bcm2050()
4470 PHY_WRITE(mac, 0x15, 0xfff0); in bwi_rf_init_bcm2050()
4473 test += PHY_READ(mac, 0x2d); in bwi_rf_init_bcm2050()
4475 PHY_WRITE(mac, 0x58, 0); in bwi_rf_init_bcm2050()
4478 phy812_val = bwi_phy812_value(mac, 0x101); in bwi_rf_init_bcm2050()
4479 PHY_WRITE(mac, 0x812, phy812_val); in bwi_rf_init_bcm2050()
4481 PHY_WRITE(mac, 0x15, 0xafb0); in bwi_rf_init_bcm2050()
4503 PHY_WRITE(mac, save_phy_regs_comm[0], save_phy_comm[0]); in bwi_rf_init_bcm2050()
4508 RF_WRITE(mac, save_rf_regs[pos], save_rf[pos]); in bwi_rf_init_bcm2050()
4511 PHY_WRITE(mac, save_phy_regs_comm[i], save_phy_comm[i]); in bwi_rf_init_bcm2050()
4517 PHY_WRITE(mac, 0x35, phyr_35); in bwi_rf_init_bcm2050()
4518 bwi_rf_workaround(mac, rf->rf_curchan); in bwi_rf_init_bcm2050()
4521 PHY_WRITE(mac, 0x30, phyr_30); in bwi_rf_init_bcm2050()
4528 PHY_WRITE(mac, save_phy_regs_11g[i], in bwi_rf_init_bcm2050()
4532 PHY_WRITE(mac, 0x80f, phyr_80f); in bwi_rf_init_bcm2050()
4533 PHY_WRITE(mac, 0x810, phyr_810); in bwi_rf_init_bcm2050()
4542 bwi_rf_calibval(struct bwi_mac *mac) in bwi_rf_calibval() argument
4553 val = RF_READ(mac, BWI_RFR_BBP_ATTEN); in bwi_rf_calibval()
4616 bwi_rf_map_txpower(struct bwi_mac *mac) in bwi_rf_map_txpower() argument
4618 struct bwi_softc *sc = mac->mac_sc; in bwi_rf_map_txpower()
4619 struct bwi_rf *rf = &mac->mac_rf; in bwi_rf_map_txpower()
4620 struct bwi_phy *phy = &mac->mac_phy; in bwi_rf_map_txpower()
4777 bwi_rf_lo_update_11g(struct bwi_mac *mac) in bwi_rf_lo_update_11g() argument
4779 struct bwi_softc *sc = mac->mac_sc; in bwi_rf_lo_update_11g()
4781 struct bwi_rf *rf = &mac->mac_rf; in bwi_rf_lo_update_11g()
4782 struct bwi_phy *phy = &mac->mac_phy; in bwi_rf_lo_update_11g()
4783 struct bwi_tpctl *tpctl = &mac->mac_tpctl; in bwi_rf_lo_update_11g()
4798 SAVE_PHY_REG(mac, ®s, 429); in bwi_rf_lo_update_11g()
4799 SAVE_PHY_REG(mac, ®s, 802); in bwi_rf_lo_update_11g()
4801 PHY_WRITE(mac, 0x429, regs.phy_429 & 0x7fff); in bwi_rf_lo_update_11g()
4802 PHY_WRITE(mac, 0x802, regs.phy_802 & 0xfffc); in bwi_rf_lo_update_11g()
4809 SAVE_PHY_REG(mac, ®s, 15); in bwi_rf_lo_update_11g()
4810 SAVE_PHY_REG(mac, ®s, 2a); in bwi_rf_lo_update_11g()
4811 SAVE_PHY_REG(mac, ®s, 35); in bwi_rf_lo_update_11g()
4812 SAVE_PHY_REG(mac, ®s, 60); in bwi_rf_lo_update_11g()
4813 SAVE_RF_REG(mac, ®s, 43); in bwi_rf_lo_update_11g()
4814 SAVE_RF_REG(mac, ®s, 7a); in bwi_rf_lo_update_11g()
4815 SAVE_RF_REG(mac, ®s, 52); in bwi_rf_lo_update_11g()
4817 SAVE_PHY_REG(mac, ®s, 811); in bwi_rf_lo_update_11g()
4818 SAVE_PHY_REG(mac, ®s, 812); in bwi_rf_lo_update_11g()
4819 SAVE_PHY_REG(mac, ®s, 814); in bwi_rf_lo_update_11g()
4820 SAVE_PHY_REG(mac, ®s, 815); in bwi_rf_lo_update_11g()
4824 bwi_rf_set_chan(mac, 6, 0); in bwi_rf_lo_update_11g()
4827 PHY_WRITE(mac, 0x429, regs.phy_429 & 0x7fff); in bwi_rf_lo_update_11g()
4828 PHY_WRITE(mac, 0x802, regs.phy_802 & 0xfffc); in bwi_rf_lo_update_11g()
4829 bwi_mac_dummy_xmit(mac); in bwi_rf_lo_update_11g()
4831 RF_WRITE(mac, 0x43, 0x6); in bwi_rf_lo_update_11g()
4833 bwi_phy_set_bbp_atten(mac, 2); in bwi_rf_lo_update_11g()
4837 PHY_WRITE(mac, 0x2e, 0x7f); in bwi_rf_lo_update_11g()
4838 PHY_WRITE(mac, 0x80f, 0x78); in bwi_rf_lo_update_11g()
4839 PHY_WRITE(mac, 0x35, regs.phy_35 & 0xff7f); in bwi_rf_lo_update_11g()
4840 RF_WRITE(mac, 0x7a, regs.rf_7a & 0xfff0); in bwi_rf_lo_update_11g()
4841 PHY_WRITE(mac, 0x2b, 0x203); in bwi_rf_lo_update_11g()
4842 PHY_WRITE(mac, 0x2a, 0x8a3); in bwi_rf_lo_update_11g()
4845 PHY_WRITE(mac, 0x814, regs.phy_814 | 0x3); in bwi_rf_lo_update_11g()
4846 PHY_WRITE(mac, 0x815, regs.phy_815 & 0xfffc); in bwi_rf_lo_update_11g()
4847 PHY_WRITE(mac, 0x811, 0x1b3); in bwi_rf_lo_update_11g()
4848 PHY_WRITE(mac, 0x812, 0xb2); in bwi_rf_lo_update_11g()
4852 tpctl->tp_ctrl2 = bwi_rf_get_tp_ctrl2(mac); in bwi_rf_lo_update_11g()
4853 PHY_WRITE(mac, 0x80f, 0x8078); in bwi_rf_lo_update_11g()
4858 devi_ctrl = _bwi_rf_lo_update_11g(mac, regs.rf_7a); in bwi_rf_lo_update_11g()
4864 PHY_WRITE(mac, 0x15, 0xe300); in bwi_rf_lo_update_11g()
4865 PHY_WRITE(mac, 0x812, (devi_ctrl << 8) | 0xa0); in bwi_rf_lo_update_11g()
4867 PHY_WRITE(mac, 0x812, (devi_ctrl << 8) | 0xa2); in bwi_rf_lo_update_11g()
4869 PHY_WRITE(mac, 0x812, (devi_ctrl << 8) | 0xa3); in bwi_rf_lo_update_11g()
4871 PHY_WRITE(mac, 0x15, devi_ctrl | 0xefa0); in bwi_rf_lo_update_11g()
4875 bwi_rf_lo_adjust(mac, tpctl); in bwi_rf_lo_update_11g()
4877 PHY_WRITE(mac, 0x2e, 0x807f); in bwi_rf_lo_update_11g()
4879 PHY_WRITE(mac, 0x2f, 0x202); in bwi_rf_lo_update_11g()
4881 PHY_WRITE(mac, 0x2f, 0x101); in bwi_rf_lo_update_11g()
4885 RESTORE_PHY_REG(mac, ®s, 15); in bwi_rf_lo_update_11g()
4886 RESTORE_PHY_REG(mac, ®s, 2a); in bwi_rf_lo_update_11g()
4887 RESTORE_PHY_REG(mac, ®s, 35); in bwi_rf_lo_update_11g()
4888 RESTORE_PHY_REG(mac, ®s, 60); in bwi_rf_lo_update_11g()
4890 RESTORE_RF_REG(mac, ®s, 43); in bwi_rf_lo_update_11g()
4891 RESTORE_RF_REG(mac, ®s, 7a); in bwi_rf_lo_update_11g()
4894 regs.rf_52 |= (RF_READ(mac, 0x52) & 0xf); in bwi_rf_lo_update_11g()
4895 RF_WRITE(mac, 0x52, regs.rf_52); in bwi_rf_lo_update_11g()
4900 RESTORE_PHY_REG(mac, ®s, 811); in bwi_rf_lo_update_11g()
4901 RESTORE_PHY_REG(mac, ®s, 812); in bwi_rf_lo_update_11g()
4902 RESTORE_PHY_REG(mac, ®s, 814); in bwi_rf_lo_update_11g()
4903 RESTORE_PHY_REG(mac, ®s, 815); in bwi_rf_lo_update_11g()
4904 RESTORE_PHY_REG(mac, ®s, 429); in bwi_rf_lo_update_11g()
4905 RESTORE_PHY_REG(mac, ®s, 802); in bwi_rf_lo_update_11g()
4908 bwi_rf_set_chan(mac, orig_chan, 1); in bwi_rf_lo_update_11g()
4912 bwi_rf_lo_devi_measure(struct bwi_mac *mac, uint16_t ctrl) in bwi_rf_lo_devi_measure() argument
4914 struct bwi_phy *phy = &mac->mac_phy; in bwi_rf_lo_devi_measure()
4923 PHY_WRITE(mac, 0x15, 0xe300); in bwi_rf_lo_devi_measure()
4924 PHY_WRITE(mac, 0x812, ctrl | 0xb0); in bwi_rf_lo_devi_measure()
4926 PHY_WRITE(mac, 0x812, ctrl | 0xb2); in bwi_rf_lo_devi_measure()
4928 PHY_WRITE(mac, 0x812, ctrl | 0xb3); in bwi_rf_lo_devi_measure()
4930 PHY_WRITE(mac, 0x15, 0xf300); in bwi_rf_lo_devi_measure()
4932 PHY_WRITE(mac, 0x15, ctrl | 0xefa0); in bwi_rf_lo_devi_measure()
4934 PHY_WRITE(mac, 0x15, ctrl | 0xefe0); in bwi_rf_lo_devi_measure()
4936 PHY_WRITE(mac, 0x15, ctrl | 0xffe0); in bwi_rf_lo_devi_measure()
4939 devi += PHY_READ(mac, 0x2d); in bwi_rf_lo_devi_measure()
4946 bwi_rf_get_tp_ctrl2(struct bwi_mac *mac) in bwi_rf_get_tp_ctrl2() argument
4952 RF_WRITE(mac, 0x52, 0); in bwi_rf_get_tp_ctrl2()
4954 devi_min = bwi_rf_lo_devi_measure(mac, 0); in bwi_rf_get_tp_ctrl2()
4959 RF_WRITE(mac, 0x52, i); in bwi_rf_get_tp_ctrl2()
4961 devi = bwi_rf_lo_devi_measure(mac, 0); in bwi_rf_get_tp_ctrl2()
4973 _bwi_rf_lo_update_11g(struct bwi_mac *mac, uint16_t orig_rf7a) in _bwi_rf_lo_update_11g() argument
4977 struct ifnet *ifp = &mac->mac_sc->sc_ic.ic_if; in _bwi_rf_lo_update_11g()
5002 lo = bwi_get_rf_lo(mac, in _bwi_rf_lo_update_11g()
5006 lo = bwi_get_rf_lo(mac, in _bwi_rf_lo_update_11g()
5031 lo = bwi_get_rf_lo(mac, in _bwi_rf_lo_update_11g()
5033 if (!bwi_rf_lo_isused(mac, lo)) in _bwi_rf_lo_update_11g()
5041 RF_WRITE(mac, BWI_RFR_ATTEN, rf_atten); in _bwi_rf_lo_update_11g()
5043 tp_ctrl2 = mac->mac_tpctl.tp_ctrl2; in _bwi_rf_lo_update_11g()
5046 RF_WRITE(mac, BWI_RFR_TXPWR, tp_ctrl2); in _bwi_rf_lo_update_11g()
5050 bwi_phy_set_bbp_atten(mac, bbp_atten * 2); in _bwi_rf_lo_update_11g()
5055 RF_WRITE(mac, 0x7a, rf7a); in _bwi_rf_lo_update_11g()
5057 lo = bwi_get_rf_lo(mac, in _bwi_rf_lo_update_11g()
5059 bwi_rf_lo_measure_11g(mac, &lo_save, lo, devi_ctrl); in _bwi_rf_lo_update_11g()
5070 bwi_rf_lo_measure_11g(struct bwi_mac *mac, const struct bwi_rf_lo *src_lo, in bwi_rf_lo_measure_11g() argument
5093 RF_LO_WRITE(mac, &lo_min); in bwi_rf_lo_measure_11g()
5094 devi_min = bwi_rf_lo_devi_measure(mac, devi_ctrl); in bwi_rf_lo_measure_11g()
5134 RF_LO_WRITE(mac, &lo); in bwi_rf_lo_measure_11g()
5135 devi = bwi_rf_lo_devi_measure(mac, devi_ctrl); in bwi_rf_lo_measure_11g()
5159 bwi_rf_calc_nrssi_slope_11b(struct bwi_mac *mac) in bwi_rf_calc_nrssi_slope_11b() argument
5163 struct bwi_softc *sc = mac->mac_sc; in bwi_rf_calc_nrssi_slope_11b()
5164 struct bwi_rf *rf = &mac->mac_rf; in bwi_rf_calc_nrssi_slope_11b()
5165 struct bwi_phy *phy = &mac->mac_phy; in bwi_rf_calc_nrssi_slope_11b()
5181 save_rf[i] = RF_READ(mac, save_rf_regs[i]); in bwi_rf_calc_nrssi_slope_11b()
5183 save_phy[i] = PHY_READ(mac, save_phy_regs[i]); in bwi_rf_calc_nrssi_slope_11b()
5193 RF_CLRBITS(mac, 0x7a, 0xff80); in bwi_rf_calc_nrssi_slope_11b()
5195 RF_CLRBITS(mac, 0x7a, 0xfff0); in bwi_rf_calc_nrssi_slope_11b()
5196 PHY_WRITE(mac, 0x30, 0xff); in bwi_rf_calc_nrssi_slope_11b()
5200 PHY_WRITE(mac, 0x26, 0); in bwi_rf_calc_nrssi_slope_11b()
5201 PHY_SETBITS(mac, 0x15, 0x20); in bwi_rf_calc_nrssi_slope_11b()
5202 PHY_WRITE(mac, 0x2a, 0x8a3); in bwi_rf_calc_nrssi_slope_11b()
5203 RF_SETBITS(mac, 0x7a, 0x80); in bwi_rf_calc_nrssi_slope_11b()
5205 nrssi[0] = (int16_t)PHY_READ(mac, 0x27); in bwi_rf_calc_nrssi_slope_11b()
5210 RF_CLRBITS(mac, 0x7a, 0xff80); in bwi_rf_calc_nrssi_slope_11b()
5218 PHY_WRITE(mac, 0x20, 0x3f3f); in bwi_rf_calc_nrssi_slope_11b()
5219 PHY_WRITE(mac, 0x15, 0xf330); in bwi_rf_calc_nrssi_slope_11b()
5221 RF_WRITE(mac, 0x5a, 0x60); in bwi_rf_calc_nrssi_slope_11b()
5222 RF_CLRBITS(mac, 0x43, 0xff0f); in bwi_rf_calc_nrssi_slope_11b()
5224 PHY_WRITE(mac, 0x5a, 0x480); in bwi_rf_calc_nrssi_slope_11b()
5225 PHY_WRITE(mac, 0x59, 0x810); in bwi_rf_calc_nrssi_slope_11b()
5226 PHY_WRITE(mac, 0x58, 0xd); in bwi_rf_calc_nrssi_slope_11b()
5230 nrssi[1] = (int16_t)PHY_READ(mac, 0x27); in bwi_rf_calc_nrssi_slope_11b()
5235 PHY_WRITE(mac, save_phy_regs[0], save_phy[0]); in bwi_rf_calc_nrssi_slope_11b()
5236 RF_WRITE(mac, save_rf_regs[0], save_rf[0]); in bwi_rf_calc_nrssi_slope_11b()
5241 PHY_WRITE(mac, save_phy_regs[i], save_phy[i]); in bwi_rf_calc_nrssi_slope_11b()
5243 bwi_rf_workaround(mac, rf->rf_curchan); in bwi_rf_calc_nrssi_slope_11b()
5249 PHY_WRITE(mac, save_phy_regs[i], save_phy[i]); in bwi_rf_calc_nrssi_slope_11b()
5252 RF_WRITE(mac, save_rf_regs[i], save_rf[i]); in bwi_rf_calc_nrssi_slope_11b()
5271 bwi_rf_set_nrssi_ofs_11g(struct bwi_mac *mac) in bwi_rf_set_nrssi_ofs_11g() argument
5276 struct bwi_phy *phy = &mac->mac_phy; in bwi_rf_set_nrssi_ofs_11g()
5296 save_phy_comm[i] = PHY_READ(mac, save_phy_comm_regs[i]); in bwi_rf_set_nrssi_ofs_11g()
5298 save_rf[i] = RF_READ(mac, save_rf_regs[i]); in bwi_rf_set_nrssi_ofs_11g()
5300 PHY_CLRBITS(mac, 0x429, 0x8000); in bwi_rf_set_nrssi_ofs_11g()
5301 PHY_FILT_SETBITS(mac, 0x1, 0x3fff, 0x4000); in bwi_rf_set_nrssi_ofs_11g()
5302 PHY_SETBITS(mac, 0x811, 0xc); in bwi_rf_set_nrssi_ofs_11g()
5303 PHY_FILT_SETBITS(mac, 0x812, 0xfff3, 0x4); in bwi_rf_set_nrssi_ofs_11g()
5304 PHY_CLRBITS(mac, 0x802, 0x3); in bwi_rf_set_nrssi_ofs_11g()
5308 save_phy6[i] = PHY_READ(mac, save_phy6_regs[i]); in bwi_rf_set_nrssi_ofs_11g()
5310 PHY_WRITE(mac, 0x2e, 0); in bwi_rf_set_nrssi_ofs_11g()
5311 PHY_WRITE(mac, 0x2f, 0); in bwi_rf_set_nrssi_ofs_11g()
5312 PHY_WRITE(mac, 0x80f, 0); in bwi_rf_set_nrssi_ofs_11g()
5313 PHY_WRITE(mac, 0x810, 0); in bwi_rf_set_nrssi_ofs_11g()
5314 PHY_SETBITS(mac, 0x478, 0x100); in bwi_rf_set_nrssi_ofs_11g()
5315 PHY_SETBITS(mac, 0x801, 0x40); in bwi_rf_set_nrssi_ofs_11g()
5316 PHY_SETBITS(mac, 0x60, 0x40); in bwi_rf_set_nrssi_ofs_11g()
5317 PHY_SETBITS(mac, 0x14, 0x200); in bwi_rf_set_nrssi_ofs_11g()
5320 RF_SETBITS(mac, 0x7a, 0x70); in bwi_rf_set_nrssi_ofs_11g()
5321 RF_SETBITS(mac, 0x7a, 0x80); in bwi_rf_set_nrssi_ofs_11g()
5325 nrssi = bwi_nrssi_11g(mac); in bwi_rf_set_nrssi_ofs_11g()
5328 RF_WRITE(mac, 0x7b, i); in bwi_rf_set_nrssi_ofs_11g()
5330 nrssi = bwi_nrssi_11g(mac); in bwi_rf_set_nrssi_ofs_11g()
5339 RF_CLRBITS(mac, 0x7a, 0xff80); in bwi_rf_set_nrssi_ofs_11g()
5341 PHY_SETBITS(mac, 0x814, 0x1); in bwi_rf_set_nrssi_ofs_11g()
5342 PHY_CLRBITS(mac, 0x815, 0x1); in bwi_rf_set_nrssi_ofs_11g()
5343 PHY_SETBITS(mac, 0x811, 0xc); in bwi_rf_set_nrssi_ofs_11g()
5344 PHY_SETBITS(mac, 0x812, 0xc); in bwi_rf_set_nrssi_ofs_11g()
5345 PHY_SETBITS(mac, 0x811, 0x30); in bwi_rf_set_nrssi_ofs_11g()
5346 PHY_SETBITS(mac, 0x812, 0x30); in bwi_rf_set_nrssi_ofs_11g()
5347 PHY_WRITE(mac, 0x5a, 0x480); in bwi_rf_set_nrssi_ofs_11g()
5348 PHY_WRITE(mac, 0x59, 0x810); in bwi_rf_set_nrssi_ofs_11g()
5349 PHY_WRITE(mac, 0x58, 0xd); in bwi_rf_set_nrssi_ofs_11g()
5351 PHY_WRITE(mac, 0x3, 0x122); in bwi_rf_set_nrssi_ofs_11g()
5353 PHY_SETBITS(mac, 0xa, 0x2000); in bwi_rf_set_nrssi_ofs_11g()
5354 PHY_SETBITS(mac, 0x814, 0x4); in bwi_rf_set_nrssi_ofs_11g()
5355 PHY_CLRBITS(mac, 0x815, 0x4); in bwi_rf_set_nrssi_ofs_11g()
5356 PHY_FILT_SETBITS(mac, 0x3, 0xff9f, 0x40); in bwi_rf_set_nrssi_ofs_11g()
5357 RF_SETBITS(mac, 0x7a, 0xf); in bwi_rf_set_nrssi_ofs_11g()
5363 bwi_set_gains(mac, &gains); in bwi_rf_set_nrssi_ofs_11g()
5365 RF_FILT_SETBITS(mac, 0x43, 0xf0, 0xf); in bwi_rf_set_nrssi_ofs_11g()
5368 nrssi = bwi_nrssi_11g(mac); in bwi_rf_set_nrssi_ofs_11g()
5371 RF_WRITE(mac, 0x7b, i); in bwi_rf_set_nrssi_ofs_11g()
5373 nrssi = bwi_nrssi_11g(mac); in bwi_rf_set_nrssi_ofs_11g()
5383 RF_WRITE(mac, 0x7b, rf7b); in bwi_rf_set_nrssi_ofs_11g()
5390 PHY_WRITE(mac, save_phy6_regs[phy6_idx], in bwi_rf_set_nrssi_ofs_11g()
5397 PHY_WRITE(mac, save_phy_comm_regs[i], save_phy_comm[i]); in bwi_rf_set_nrssi_ofs_11g()
5400 RF_WRITE(mac, save_rf_regs[i], save_rf[i]); in bwi_rf_set_nrssi_ofs_11g()
5402 PHY_SETBITS(mac, 0x802, 0x3); in bwi_rf_set_nrssi_ofs_11g()
5403 PHY_SETBITS(mac, 0x429, 0x8000); in bwi_rf_set_nrssi_ofs_11g()
5405 bwi_set_gains(mac, NULL); in bwi_rf_set_nrssi_ofs_11g()
5409 PHY_WRITE(mac, save_phy6_regs[phy6_idx], in bwi_rf_set_nrssi_ofs_11g()
5414 PHY_WRITE(mac, save_phy_comm_regs[0], save_phy_comm[0]); in bwi_rf_set_nrssi_ofs_11g()
5415 PHY_WRITE(mac, save_phy_comm_regs[2], save_phy_comm[2]); in bwi_rf_set_nrssi_ofs_11g()
5416 PHY_WRITE(mac, save_phy_comm_regs[1], save_phy_comm[1]); in bwi_rf_set_nrssi_ofs_11g()
5424 bwi_rf_calc_nrssi_slope_11g(struct bwi_mac *mac) in bwi_rf_calc_nrssi_slope_11g() argument
5429 struct bwi_softc *sc = mac->mac_sc; in bwi_rf_calc_nrssi_slope_11g()
5430 struct bwi_phy *phy = &mac->mac_phy; in bwi_rf_calc_nrssi_slope_11g()
5431 struct bwi_rf *rf = &mac->mac_rf; in bwi_rf_calc_nrssi_slope_11g()
5452 bwi_rf_set_nrssi_ofs_11g(mac); in bwi_rf_calc_nrssi_slope_11g()
5454 PHY_CLRBITS(mac, 0x429, 0x8000); in bwi_rf_calc_nrssi_slope_11g()
5455 PHY_CLRBITS(mac, 0x802, 0x3); in bwi_rf_calc_nrssi_slope_11g()
5464 save_rf[i] = RF_READ(mac, save_rf_regs[i]); in bwi_rf_calc_nrssi_slope_11g()
5466 save_phy_comm[i] = PHY_READ(mac, save_phy_comm_regs[i]); in bwi_rf_calc_nrssi_slope_11g()
5473 save_phy3[i] = PHY_READ(mac, save_phy3_regs[i]); in bwi_rf_calc_nrssi_slope_11g()
5475 PHY_WRITE(mac, 0x2e, 0); in bwi_rf_calc_nrssi_slope_11g()
5476 PHY_WRITE(mac, 0x810, 0); in bwi_rf_calc_nrssi_slope_11g()
5480 PHY_SETBITS(mac, 0x478, 0x100); in bwi_rf_calc_nrssi_slope_11g()
5481 PHY_SETBITS(mac, 0x810, 0x40); in bwi_rf_calc_nrssi_slope_11g()
5483 PHY_CLRBITS(mac, 0x810, 0x40); in bwi_rf_calc_nrssi_slope_11g()
5485 PHY_SETBITS(mac, 0x60, 0x40); in bwi_rf_calc_nrssi_slope_11g()
5486 PHY_SETBITS(mac, 0x14, 0x200); in bwi_rf_calc_nrssi_slope_11g()
5492 RF_SETBITS(mac, 0x7a, 0x70); in bwi_rf_calc_nrssi_slope_11g()
5498 bwi_set_gains(mac, &gains); in bwi_rf_calc_nrssi_slope_11g()
5500 RF_CLRBITS(mac, 0x7a, 0xff08); in bwi_rf_calc_nrssi_slope_11g()
5502 PHY_FILT_SETBITS(mac, 0x811, 0xffcf, 0x30); in bwi_rf_calc_nrssi_slope_11g()
5503 PHY_FILT_SETBITS(mac, 0x812, 0xffcf, 0x10); in bwi_rf_calc_nrssi_slope_11g()
5506 RF_SETBITS(mac, 0x7a, 0x80); in bwi_rf_calc_nrssi_slope_11g()
5508 nrssi[0] = bwi_nrssi_11g(mac); in bwi_rf_calc_nrssi_slope_11g()
5513 RF_CLRBITS(mac, 0x7a, 0xff80); in bwi_rf_calc_nrssi_slope_11g()
5515 PHY_FILT_SETBITS(mac, 0x3, 0xff9f, 0x40); in bwi_rf_calc_nrssi_slope_11g()
5518 RF_SETBITS(mac, 0x7a, 0xf); in bwi_rf_calc_nrssi_slope_11g()
5519 PHY_WRITE(mac, 0x15, 0xf330); in bwi_rf_calc_nrssi_slope_11g()
5521 PHY_FILT_SETBITS(mac, 0x812, 0xffcf, 0x20); in bwi_rf_calc_nrssi_slope_11g()
5522 PHY_FILT_SETBITS(mac, 0x811, 0xffcf, 0x20); in bwi_rf_calc_nrssi_slope_11g()
5529 bwi_set_gains(mac, &gains); in bwi_rf_calc_nrssi_slope_11g()
5532 RF_WRITE(mac, 0x43, 0x1f); in bwi_rf_calc_nrssi_slope_11g()
5534 RF_FILT_SETBITS(mac, 0x52, 0xff0f, 0x60); in bwi_rf_calc_nrssi_slope_11g()
5535 RF_FILT_SETBITS(mac, 0x43, 0xfff0, 0x9); in bwi_rf_calc_nrssi_slope_11g()
5537 PHY_WRITE(mac, 0x5a, 0x480); in bwi_rf_calc_nrssi_slope_11g()
5538 PHY_WRITE(mac, 0x59, 0x810); in bwi_rf_calc_nrssi_slope_11g()
5539 PHY_WRITE(mac, 0x58, 0xd); in bwi_rf_calc_nrssi_slope_11g()
5542 nrssi[1] = bwi_nrssi_11g(mac); in bwi_rf_calc_nrssi_slope_11g()
5561 PHY_WRITE(mac, save_phy3_regs[phy3_idx], in bwi_rf_calc_nrssi_slope_11g()
5566 PHY_CLRBITS(mac, 0x812, 0x30); in bwi_rf_calc_nrssi_slope_11g()
5567 PHY_CLRBITS(mac, 0x811, 0x30); in bwi_rf_calc_nrssi_slope_11g()
5571 RF_WRITE(mac, save_rf_regs[i], save_rf[i]); in bwi_rf_calc_nrssi_slope_11g()
5578 PHY_WRITE(mac, save_phy_comm_regs[i], save_phy_comm[i]); in bwi_rf_calc_nrssi_slope_11g()
5580 bwi_rf_workaround(mac, rf->rf_curchan); in bwi_rf_calc_nrssi_slope_11g()
5581 PHY_SETBITS(mac, 0x802, 0x3); in bwi_rf_calc_nrssi_slope_11g()
5582 bwi_set_gains(mac, NULL); in bwi_rf_calc_nrssi_slope_11g()
5583 PHY_SETBITS(mac, 0x429, 0x8000); in bwi_rf_calc_nrssi_slope_11g()
5587 PHY_WRITE(mac, save_phy3_regs[phy3_idx], in bwi_rf_calc_nrssi_slope_11g()
5592 bwi_rf_init_sw_nrssi_table(mac); in bwi_rf_calc_nrssi_slope_11g()
5593 bwi_rf_set_nrssi_thr_11g(mac); in bwi_rf_calc_nrssi_slope_11g()
5601 bwi_rf_init_sw_nrssi_table(struct bwi_mac *mac) in bwi_rf_init_sw_nrssi_table() argument
5603 struct bwi_rf *rf = &mac->mac_rf; in bwi_rf_init_sw_nrssi_table()
5621 bwi_rf_init_hw_nrssi_table(struct bwi_mac *mac, uint16_t adjust) in bwi_rf_init_hw_nrssi_table() argument
5628 val = bwi_nrssi_read(mac, i); in bwi_rf_init_hw_nrssi_table()
5636 bwi_nrssi_write(mac, i, val); in bwi_rf_init_hw_nrssi_table()
5641 bwi_rf_set_nrssi_thr_11b(struct bwi_mac *mac) in bwi_rf_set_nrssi_thr_11b() argument
5643 struct bwi_rf *rf = &mac->mac_rf; in bwi_rf_set_nrssi_thr_11b()
5647 (mac->mac_sc->sc_card_flags & BWI_CARD_F_SW_NRSSI) == 0) in bwi_rf_set_nrssi_thr_11b()
5665 PHY_READ(mac, BWI_PHYR_NRSSI_THR_11B); /* dummy read */ in bwi_rf_set_nrssi_thr_11b()
5666 PHY_WRITE(mac, BWI_PHYR_NRSSI_THR_11B, (((uint16_t)thr) << 8) | 0x1c); in bwi_rf_set_nrssi_thr_11b()
5669 PHY_WRITE(mac, 0x87, 0xe0d); in bwi_rf_set_nrssi_thr_11b()
5670 PHY_WRITE(mac, 0x86, 0xc0b); in bwi_rf_set_nrssi_thr_11b()
5671 PHY_WRITE(mac, 0x85, 0xa09); in bwi_rf_set_nrssi_thr_11b()
5672 PHY_WRITE(mac, 0x84, 0x808); in bwi_rf_set_nrssi_thr_11b()
5673 PHY_WRITE(mac, 0x83, 0x808); in bwi_rf_set_nrssi_thr_11b()
5674 PHY_WRITE(mac, 0x82, 0x604); in bwi_rf_set_nrssi_thr_11b()
5675 PHY_WRITE(mac, 0x81, 0x302); in bwi_rf_set_nrssi_thr_11b()
5676 PHY_WRITE(mac, 0x80, 0x100); in bwi_rf_set_nrssi_thr_11b()
5699 bwi_rf_set_nrssi_thr_11g(struct bwi_mac *mac) in bwi_rf_set_nrssi_thr_11g() argument
5707 if ((mac->mac_phy.phy_flags & BWI_PHY_F_LINKED) == 0 || in bwi_rf_set_nrssi_thr_11g()
5708 (mac->mac_sc->sc_card_flags & BWI_CARD_F_SW_NRSSI) == 0) { in bwi_rf_set_nrssi_thr_11g()
5711 nrssi = bwi_nrssi_read(mac, 0x20); in bwi_rf_set_nrssi_thr_11g()
5724 thr1 = _nrssi_threshold(&mac->mac_rf, 0x11); in bwi_rf_set_nrssi_thr_11g()
5725 thr2 = _nrssi_threshold(&mac->mac_rf, 0xe); in bwi_rf_set_nrssi_thr_11g()
5732 PHY_FILT_SETBITS(mac, BWI_PHYR_NRSSI_THR_11G, 0xf000, thr); in bwi_rf_set_nrssi_thr_11g()
5738 bwi_rf_clear_tssi(struct bwi_mac *mac) in bwi_rf_clear_tssi() argument
5741 if (mac->mac_phy.phy_mode == IEEE80211_MODE_11A) { in bwi_rf_clear_tssi()
5751 MOBJ_WRITE_2(mac, BWI_COMM_MOBJ, in bwi_rf_clear_tssi()
5756 MOBJ_WRITE_2(mac, BWI_COMM_MOBJ, in bwi_rf_clear_tssi()
5787 bwi_rf_on_11a(struct bwi_mac *mac) in bwi_rf_on_11a() argument
5793 bwi_rf_on_11bg(struct bwi_mac *mac) in bwi_rf_on_11bg() argument
5795 struct bwi_phy *phy = &mac->mac_phy; in bwi_rf_on_11bg()
5797 PHY_WRITE(mac, 0x15, 0x8000); in bwi_rf_on_11bg()
5798 PHY_WRITE(mac, 0x15, 0xcc00); in bwi_rf_on_11bg()
5800 PHY_WRITE(mac, 0x15, 0xc0); in bwi_rf_on_11bg()
5802 PHY_WRITE(mac, 0x15, 0); in bwi_rf_on_11bg()
5804 bwi_rf_set_chan(mac, 6 /* XXX */, 1); in bwi_rf_on_11bg()
5808 bwi_rf_set_ant_mode(struct bwi_mac *mac, int ant_mode) in bwi_rf_set_ant_mode() argument
5810 struct bwi_softc *sc = mac->mac_sc; in bwi_rf_set_ant_mode()
5811 struct bwi_phy *phy = &mac->mac_phy; in bwi_rf_set_ant_mode()
5818 HFLAGS_CLRBITS(mac, BWI_HFLAG_AUTO_ANTDIV); in bwi_rf_set_ant_mode()
5822 if (mac->mac_rev == 2) in bwi_rf_set_ant_mode()
5827 PHY_FILT_SETBITS(mac, 0x3e2, 0xfe7f, val); in bwi_rf_set_ant_mode()
5831 PHY_FILT_SETBITS(mac, 0x401, 0x7e7f, val); in bwi_rf_set_ant_mode()
5834 PHY_CLRBITS(mac, 0x42b, 0x100); in bwi_rf_set_ant_mode()
5840 PHY_SETBITS(mac, 0x48c, 0x2000); in bwi_rf_set_ant_mode()
5842 PHY_CLRBITS(mac, 0x48c, 0x2000); in bwi_rf_set_ant_mode()
5845 PHY_SETBITS(mac, 0x461, 0x10); in bwi_rf_set_ant_mode()
5846 PHY_FILT_SETBITS(mac, 0x4ad, 0xff00, 0x15); in bwi_rf_set_ant_mode()
5848 PHY_WRITE(mac, 0x427, 0x8); in bwi_rf_set_ant_mode()
5850 PHY_FILT_SETBITS(mac, 0x427, in bwi_rf_set_ant_mode()
5855 PHY_WRITE(mac, 0x49b, 0xdc); in bwi_rf_set_ant_mode()
5862 HFLAGS_SETBITS(mac, BWI_HFLAG_AUTO_ANTDIV); in bwi_rf_set_ant_mode()
5865 MOBJ_FILT_SETBITS_2(mac, BWI_COMM_MOBJ, BWI_COMM_MOBJ_TX_BEACON, in bwi_rf_set_ant_mode()
5867 MOBJ_FILT_SETBITS_2(mac, BWI_COMM_MOBJ, BWI_COMM_MOBJ_TX_ACK, in bwi_rf_set_ant_mode()
5869 MOBJ_FILT_SETBITS_2(mac, BWI_COMM_MOBJ, BWI_COMM_MOBJ_TX_PROBE_RESP, in bwi_rf_set_ant_mode()
5877 if (mac->mac_rev < 5) in bwi_rf_set_ant_mode()
5880 mac->mac_rf.rf_ant_mode = ant_mode; in bwi_rf_set_ant_mode()
5884 bwi_rf_get_latest_tssi(struct bwi_mac *mac, int8_t tssi[], uint16_t ofs) in bwi_rf_get_latest_tssi() argument
5891 val = MOBJ_READ_2(mac, BWI_COMM_MOBJ, ofs + i); in bwi_rf_get_latest_tssi()
5905 bwi_rf_tssi2dbm(struct bwi_mac *mac, int8_t tssi, int8_t *txpwr) in bwi_rf_tssi2dbm() argument
5907 struct bwi_rf *rf = &mac->mac_rf; in bwi_rf_tssi2dbm()
5926 bwi_rf_calc_rssi_bcm2050(struct bwi_mac *mac, const struct bwi_rxbuf_hdr *hdr) in bwi_rf_calc_rssi_bcm2050() argument
5947 if (mac->mac_sc->sc_card_flags & BWI_CARD_F_SW_NRSSI) { in bwi_rf_calc_rssi_bcm2050()
5948 struct bwi_rf *rf = &mac->mac_rf; in bwi_rf_calc_rssi_bcm2050()
5960 if (mac->mac_phy.phy_mode != IEEE80211_MODE_11G) in bwi_rf_calc_rssi_bcm2050()
6008 if (mac->mac_sc->sc_card_flags & BWI_CARD_F_SW_NRSSI) { in bwi_rf_calc_rssi_bcm2050()
6009 struct bwi_rf *rf = &mac->mac_rf; in bwi_rf_calc_rssi_bcm2050()
6021 if (mac->mac_phy.phy_mode != IEEE80211_MODE_11G) in bwi_rf_calc_rssi_bcm2050()
6031 bwi_rf_calc_rssi_bcm2053(struct bwi_mac *mac, const struct bwi_rxbuf_hdr *hdr) in bwi_rf_calc_rssi_bcm2053() argument
6048 bwi_rf_calc_rssi_bcm2060(struct bwi_mac *mac, const struct bwi_rxbuf_hdr *hdr) in bwi_rf_calc_rssi_bcm2060() argument
6060 bwi_rf_lo_measure_11b(struct bwi_mac *mac) in bwi_rf_lo_measure_11b() argument
6067 PHY_WRITE(mac, 0x15, 0xafa0); in bwi_rf_lo_measure_11b()
6069 PHY_WRITE(mac, 0x15, 0xefa0); in bwi_rf_lo_measure_11b()
6071 PHY_WRITE(mac, 0x15, 0xffa0); in bwi_rf_lo_measure_11b()
6074 val += PHY_READ(mac, 0x2c); in bwi_rf_lo_measure_11b()
6081 bwi_rf_lo_update_11b(struct bwi_mac *mac) in bwi_rf_lo_update_11b() argument
6083 struct bwi_softc *sc = mac->mac_sc; in bwi_rf_lo_update_11b()
6084 struct bwi_rf *rf = &mac->mac_rf; in bwi_rf_lo_update_11b()
6098 SAVE_PHY_REG(mac, ®s, 15); in bwi_rf_lo_update_11b()
6099 rf52 = RF_READ(mac, 0x52) & 0xfff0; in bwi_rf_lo_update_11b()
6101 SAVE_PHY_REG(mac, ®s, 0a); in bwi_rf_lo_update_11b()
6102 SAVE_PHY_REG(mac, ®s, 2a); in bwi_rf_lo_update_11b()
6103 SAVE_PHY_REG(mac, ®s, 35); in bwi_rf_lo_update_11b()
6104 SAVE_PHY_REG(mac, ®s, 03); in bwi_rf_lo_update_11b()
6105 SAVE_PHY_REG(mac, ®s, 01); in bwi_rf_lo_update_11b()
6106 SAVE_PHY_REG(mac, ®s, 30); in bwi_rf_lo_update_11b()
6108 SAVE_RF_REG(mac, ®s, 43); in bwi_rf_lo_update_11b()
6109 SAVE_RF_REG(mac, ®s, 7a); in bwi_rf_lo_update_11b()
6113 SAVE_RF_REG(mac, ®s, 52); in bwi_rf_lo_update_11b()
6116 PHY_WRITE(mac, 0x30, 0xff); in bwi_rf_lo_update_11b()
6118 PHY_WRITE(mac, 0x35, regs.phy_35 & 0xff7f); in bwi_rf_lo_update_11b()
6119 RF_WRITE(mac, 0x7a, regs.rf_7a & 0xfff0); in bwi_rf_lo_update_11b()
6122 PHY_WRITE(mac, 0x15, 0xb000); in bwi_rf_lo_update_11b()
6125 PHY_WRITE(mac, 0x2b, 0x203); in bwi_rf_lo_update_11b()
6126 PHY_WRITE(mac, 0x2a, 0x8a3); in bwi_rf_lo_update_11b()
6128 PHY_WRITE(mac, 0x2b, 0x1402); in bwi_rf_lo_update_11b()
6138 RF_WRITE(mac, 0x52, rf52 | i); in bwi_rf_lo_update_11b()
6139 bwi_rf_lo_measure_11b(mac); /* Ignore return value */ in bwi_rf_lo_update_11b()
6142 RF_WRITE(mac, 0x52, rf52 | i); in bwi_rf_lo_update_11b()
6144 val = bwi_rf_lo_measure_11b(mac) / 10; in bwi_rf_lo_update_11b()
6150 RF_WRITE(mac, 0x52, rf52 | rf_val); in bwi_rf_lo_update_11b()
6167 PHY_WRITE(mac, 0x2f, phy2f); in bwi_rf_lo_update_11b()
6169 val = bwi_rf_lo_measure_11b(mac) / 10; in bwi_rf_lo_update_11b()
6176 PHY_WRITE(mac, 0x2f, phy_val + 0x101); in bwi_rf_lo_update_11b()
6182 RESTORE_PHY_REG(mac, ®s, 0a); in bwi_rf_lo_update_11b()
6183 RESTORE_PHY_REG(mac, ®s, 2a); in bwi_rf_lo_update_11b()
6184 RESTORE_PHY_REG(mac, ®s, 35); in bwi_rf_lo_update_11b()
6185 RESTORE_PHY_REG(mac, ®s, 03); in bwi_rf_lo_update_11b()
6186 RESTORE_PHY_REG(mac, ®s, 01); in bwi_rf_lo_update_11b()
6187 RESTORE_PHY_REG(mac, ®s, 30); in bwi_rf_lo_update_11b()
6189 RESTORE_RF_REG(mac, ®s, 43); in bwi_rf_lo_update_11b()
6190 RESTORE_RF_REG(mac, ®s, 7a); in bwi_rf_lo_update_11b()
6192 RF_FILT_SETBITS(mac, 0x52, 0xf, regs.rf_52); in bwi_rf_lo_update_11b()
6196 RESTORE_PHY_REG(mac, ®s, 15); in bwi_rf_lo_update_11b()
6198 bwi_rf_workaround(mac, rf->rf_curchan); in bwi_rf_lo_update_11b()
6718 bwi_bus_init(struct bwi_softc *sc, struct bwi_mac *mac) in bwi_bus_init() argument
6725 KASSERT(sc->sc_cur_regwin == &mac->mac_regwin); in bwi_bus_init()
6744 mac_mask = 1 << mac->mac_id; in bwi_bus_init()
7018 struct bwi_mac *mac; in bwi_init_statechg() local
7037 mac = &sc->sc_mac[0]; in bwi_init_statechg()
7038 error = bwi_regwin_switch(sc, &mac->mac_regwin, NULL); in bwi_init_statechg()
7042 error = bwi_mac_init(mac); in bwi_init_statechg()
7053 bwi_mac_reset_hwkeys(mac); in bwi_init_statechg()
7055 if ((mac->mac_flags & BWI_MAC_F_HAS_TXSTATS) == 0) { in bwi_init_statechg()
7074 if (mac->mac_phy.phy_mode == IEEE80211_MODE_11G) in bwi_init_statechg()
7075 bwi_mac_updateslot(mac, 1); in bwi_init_statechg()
7078 error = bwi_mac_start(mac); in bwi_init_statechg()
7302 struct bwi_mac *mac; in bwi_stop() local
7314 mac = (struct bwi_mac *)sc->sc_cur_regwin; in bwi_stop()
7318 bwi_mac_stop(mac); in bwi_stop()
7324 mac = &sc->sc_mac[i]; in bwi_stop()
7325 if ((mac->mac_flags & BWI_MAC_F_INITED) == 0) in bwi_stop()
7328 error = bwi_regwin_switch(sc, &mac->mac_regwin, &old_rw); in bwi_stop()
7332 bwi_mac_shutdown(mac); in bwi_stop()
7380 struct bwi_mac *mac; in bwi_newstate() local
7387 mac = (struct bwi_mac *)sc->sc_cur_regwin; in bwi_newstate()
7390 bwi_mac_calibrate_txpower(mac, BWI_TXPWR_INIT); in bwi_newstate()
8329 struct bwi_mac *mac; in bwi_set_chan() local
8332 mac = (struct bwi_mac *)sc->sc_cur_regwin; in bwi_set_chan()
8334 bwi_rf_set_chan(mac, chan, 0); in bwi_set_chan()
8840 struct bwi_mac *mac; in bwi_encap() local
8854 mac = (struct bwi_mac *)sc->sc_cur_regwin; in bwi_encap()
8946 phy_ctrl = __SHIFTIN(mac->mac_rf.rf_ant_mode, in bwi_encap()
9397 struct bwi_mac *mac; in bwi_set_bssid() local
9404 mac = (struct bwi_mac *)sc->sc_cur_regwin; in bwi_set_bssid()
9420 TMPLT_WRITE_4(mac, 0x20 + (i * sizeof(val)), val); in bwi_set_bssid()
9428 struct bwi_mac *mac; in bwi_updateslot() local
9437 mac = (struct bwi_mac *)sc->sc_cur_regwin; in bwi_updateslot()
9439 bwi_mac_updateslot(mac, (ic->ic_flags & IEEE80211_F_SHSLOT)); in bwi_updateslot()
9452 struct bwi_mac *mac; in bwi_calibrate() local
9455 mac = (struct bwi_mac *)sc->sc_cur_regwin; in bwi_calibrate()
9458 bwi_mac_calibrate_txpower(mac, sc->sc_txpwrcb_type); in bwi_calibrate()
9472 struct bwi_mac *mac; in bwi_calc_rssi() local
9475 mac = (struct bwi_mac *)sc->sc_cur_regwin; in bwi_calc_rssi()
9477 return (bwi_rf_calc_rssi(mac, hdr)); in bwi_calc_rssi()