Lines Matching refs:sc
596 urtw_led_init(struct urtw_softc *sc) in urtw_led_init() argument
601 if (error = urtw_read8_c(sc, URTW_PSR, &sc->sc_psr, 0)) in urtw_led_init()
603 error = urtw_eprom_read32(sc, URTW_EPROM_SWREV, &rev); in urtw_led_init()
609 sc->sc_strategy = URTW_SW_LED_MODE1; in urtw_led_init()
612 sc->sc_strategy = URTW_SW_LED_MODE3; in urtw_led_init()
615 sc->sc_strategy = URTW_HW_LED; in urtw_led_init()
620 sc->sc_strategy = URTW_SW_LED_MODE0; in urtw_led_init()
624 sc->sc_gpio_ledpin = URTW_LED_PIN_GPIO0; in urtw_led_init()
631 urtw_8225_write_s16(struct urtw_softc *sc, uint8_t addr, int index, in urtw_8225_write_s16() argument
658 error = usb_pipe_ctrl_xfer_wait(sc->sc_udev->dev_default_ph, &req, &mp, in urtw_8225_write_s16()
661 URTW8187_DBG(URTW_DEBUG_DEVREQ, (sc->sc_dev, CE_CONT, in urtw_8225_write_s16()
672 urtw_8225_read(struct urtw_softc *sc, uint8_t addr, uint32_t *data) in urtw_8225_read() argument
682 if (error = urtw_read16_c(sc, URTW_RF_PINS_OUTPUT, &o1, 0)) in urtw_8225_read()
684 if (error = urtw_read16_c(sc, URTW_RF_PINS_ENABLE, &o2, 0)) in urtw_8225_read()
686 if (error = urtw_read16_c(sc, URTW_RF_PINS_SELECT, &o3, 0)) in urtw_8225_read()
688 if (error = urtw_write16_c(sc, URTW_RF_PINS_ENABLE, o2 | 0xf, 0)) in urtw_8225_read()
690 if (error = urtw_write16_c(sc, URTW_RF_PINS_SELECT, o3 | 0xf, 0)) in urtw_8225_read()
693 if (error = urtw_write16_c(sc, URTW_RF_PINS_OUTPUT, in urtw_8225_read()
697 if (error = urtw_write16_c(sc, URTW_RF_PINS_OUTPUT, o1, 0)) in urtw_8225_read()
704 if (error = urtw_write16_c(sc, URTW_RF_PINS_OUTPUT, in urtw_8225_read()
708 if (error = urtw_write16_c(sc, URTW_RF_PINS_OUTPUT, in urtw_8225_read()
712 if (error = urtw_write16_c(sc, URTW_RF_PINS_OUTPUT, in urtw_8225_read()
720 if (error = urtw_write16_c(sc, URTW_RF_PINS_OUTPUT, in urtw_8225_read()
724 if (error = urtw_write16_c(sc, URTW_RF_PINS_OUTPUT, in urtw_8225_read()
728 if (error = urtw_write16_c(sc, URTW_RF_PINS_OUTPUT, in urtw_8225_read()
733 if (error = urtw_write16_c(sc, URTW_RF_PINS_OUTPUT, in urtw_8225_read()
737 if (error = urtw_write16_c(sc, URTW_RF_PINS_OUTPUT, in urtw_8225_read()
741 if (error = urtw_write16_c(sc, URTW_RF_PINS_OUTPUT, in urtw_8225_read()
748 if (error = urtw_write16_c(sc, URTW_RF_PINS_OUTPUT, in urtw_8225_read()
752 if (error = urtw_write16_c(sc, URTW_RF_PINS_OUTPUT, in urtw_8225_read()
756 if (error = urtw_write16_c(sc, URTW_RF_PINS_OUTPUT, in urtw_8225_read()
760 if (error = urtw_write16_c(sc, URTW_RF_PINS_OUTPUT, in urtw_8225_read()
765 if (error = urtw_read16_c(sc, URTW_RF_PINS_INPUT, &tmp, 0)) in urtw_8225_read()
768 if (error = urtw_write16_c(sc, URTW_RF_PINS_OUTPUT, in urtw_8225_read()
774 if (error = urtw_write16_c(sc, URTW_RF_PINS_OUTPUT, in urtw_8225_read()
780 if (error = urtw_write16_c(sc, URTW_RF_PINS_ENABLE, o2, 0)) in urtw_8225_read()
782 if (error = urtw_write16_c(sc, URTW_RF_PINS_SELECT, o3, 0)) in urtw_8225_read()
784 error = urtw_write16_c(sc, URTW_RF_PINS_OUTPUT, 0x3a0, 0); in urtw_8225_read()
799 urtw_8225_write_c(struct urtw_softc *sc, uint8_t addr, uint16_t data) in urtw_8225_write_c() argument
804 if (error = urtw_read16_c(sc, URTW_RF_PINS_OUTPUT, &d80, 0)) in urtw_8225_write_c()
807 if (error = urtw_read16_c(sc, URTW_RF_PINS_ENABLE, &d82, 0)) in urtw_8225_write_c()
809 if (error = urtw_read16_c(sc, URTW_RF_PINS_SELECT, &d84, 0)) in urtw_8225_write_c()
812 if (error = urtw_write16_c(sc, URTW_RF_PINS_ENABLE, in urtw_8225_write_c()
815 if (error = urtw_write16_c(sc, URTW_RF_PINS_SELECT, in urtw_8225_write_c()
819 if (error = urtw_write16_c(sc, URTW_RF_PINS_OUTPUT, in urtw_8225_write_c()
823 if (error = urtw_write16_c(sc, URTW_RF_PINS_OUTPUT, d80, 0)) in urtw_8225_write_c()
826 error = urtw_8225_write_s16(sc, addr, 0x8225, &data); in urtw_8225_write_c()
830 if (error = urtw_write16_c(sc, URTW_RF_PINS_OUTPUT, in urtw_8225_write_c()
833 if (error = urtw_write16_c(sc, URTW_RF_PINS_OUTPUT, in urtw_8225_write_c()
836 error = urtw_write16_c(sc, URTW_RF_PINS_SELECT, d84, 0); in urtw_8225_write_c()
843 urtw_8225_isv2(struct urtw_softc *sc, int *ret) in urtw_8225_isv2() argument
850 if (error = urtw_write16_c(sc, URTW_RF_PINS_OUTPUT, 0x0080, 0)) in urtw_8225_isv2()
852 if (error = urtw_write16_c(sc, URTW_RF_PINS_SELECT, 0x0080, 0)) in urtw_8225_isv2()
854 if (error = urtw_write16_c(sc, URTW_RF_PINS_ENABLE, 0x0080, 0)) in urtw_8225_isv2()
858 if (error = urtw_8225_write_c(sc, 0x0, 0x1b7)) in urtw_8225_isv2()
861 error = urtw_8225_read(sc, 0x8, &data); in urtw_8225_isv2()
867 error = urtw_8225_read(sc, 0x9, &data); in urtw_8225_isv2()
874 error = urtw_8225_write_c(sc, 0x0, 0xb7); in urtw_8225_isv2()
880 urtw_get_rfchip(struct urtw_softc *sc) in urtw_get_rfchip() argument
882 struct urtw_rf *rf = &sc->sc_rf; in urtw_get_rfchip()
887 rf->rf_sc = sc; in urtw_get_rfchip()
889 if (sc->sc_hwrev & URTW_HWREV_8187) { in urtw_get_rfchip()
890 error = urtw_eprom_read32(sc, URTW_EPROM_RFCHIPID, &data); in urtw_get_rfchip()
897 error = urtw_8225_isv2(sc, &ret); in urtw_get_rfchip()
900 (sc->sc_dev, CE_CONT, in urtw_get_rfchip()
906 (sc->sc_dev, CE_CONT, in urtw_get_rfchip()
913 (sc->sc_dev, CE_CONT, in urtw_get_rfchip()
925 (sc->sc_dev, CE_CONT, in urtw_get_rfchip()
943 urtw_get_txpwr(struct urtw_softc *sc) in urtw_get_txpwr() argument
949 error = urtw_eprom_read32(sc, URTW_EPROM_TXPW_BASE, &data); in urtw_get_txpwr()
952 sc->sc_txpwr_cck_base = data & 0xf; in urtw_get_txpwr()
953 sc->sc_txpwr_ofdm_base = (data >> 4) & 0xf; in urtw_get_txpwr()
956 error = urtw_eprom_read32(sc, URTW_EPROM_TXPW0 + j, &data); in urtw_get_txpwr()
959 sc->sc_txpwr_cck[i] = data & 0xf; in urtw_get_txpwr()
960 sc->sc_txpwr_cck[i + 1] = (data & 0xf00) >> 8; in urtw_get_txpwr()
961 sc->sc_txpwr_ofdm[i] = (data & 0xf0) >> 4; in urtw_get_txpwr()
962 sc->sc_txpwr_ofdm[i + 1] = (data & 0xf000) >> 12; in urtw_get_txpwr()
965 error = urtw_eprom_read32(sc, URTW_EPROM_TXPW1 + j, &data); in urtw_get_txpwr()
968 sc->sc_txpwr_cck[i + 6] = data & 0xf; in urtw_get_txpwr()
969 sc->sc_txpwr_cck[i + 6 + 1] = (data & 0xf00) >> 8; in urtw_get_txpwr()
970 sc->sc_txpwr_ofdm[i + 6] = (data & 0xf0) >> 4; in urtw_get_txpwr()
971 sc->sc_txpwr_ofdm[i + 6 + 1] = (data & 0xf000) >> 12; in urtw_get_txpwr()
973 if (sc->sc_hwrev & URTW_HWREV_8187) { in urtw_get_txpwr()
975 error = urtw_eprom_read32(sc, URTW_EPROM_TXPW2 + j, in urtw_get_txpwr()
979 sc->sc_txpwr_cck[i + 6 + 4] = data & 0xf; in urtw_get_txpwr()
980 sc->sc_txpwr_cck[i + 6 + 4 + 1] = (data & 0xf00) >> 8; in urtw_get_txpwr()
981 sc->sc_txpwr_ofdm[i + 6 + 4] = (data & 0xf0) >> 4; in urtw_get_txpwr()
982 sc->sc_txpwr_ofdm[i + 6 + 4 + 1] = in urtw_get_txpwr()
987 error = urtw_eprom_read32(sc, 0x1b, &data); in urtw_get_txpwr()
990 sc->sc_txpwr_cck[11] = data & 0xf; in urtw_get_txpwr()
991 sc->sc_txpwr_ofdm[11] = (data & 0xf0) >> 4; in urtw_get_txpwr()
994 error = urtw_eprom_read32(sc, 0xa, &data); in urtw_get_txpwr()
997 sc->sc_txpwr_cck[12] = data & 0xf; in urtw_get_txpwr()
998 sc->sc_txpwr_ofdm[12] = (data & 0xf0) >> 4; in urtw_get_txpwr()
1001 error = urtw_eprom_read32(sc, 0x1c, &data); in urtw_get_txpwr()
1004 sc->sc_txpwr_cck[13] = data & 0xf; in urtw_get_txpwr()
1005 sc->sc_txpwr_ofdm[13] = (data & 0xf0) >> 4; in urtw_get_txpwr()
1006 sc->sc_txpwr_cck[14] = (data & 0xf00) >> 8; in urtw_get_txpwr()
1007 sc->sc_txpwr_ofdm[14] = (data & 0xf000) >> 12; in urtw_get_txpwr()
1015 urtw_get_macaddr(struct urtw_softc *sc) in urtw_get_macaddr() argument
1021 error = urtw_eprom_read32(sc, URTW_EPROM_MACADDR, &data); in urtw_get_macaddr()
1024 sc->sc_bssid[0] = data & 0xff; in urtw_get_macaddr()
1025 sc->sc_bssid[1] = (data & 0xff00) >> 8; in urtw_get_macaddr()
1026 error = urtw_eprom_read32(sc, URTW_EPROM_MACADDR + 1, &data); in urtw_get_macaddr()
1029 sc->sc_bssid[2] = data & 0xff; in urtw_get_macaddr()
1030 sc->sc_bssid[3] = (data & 0xff00) >> 8; in urtw_get_macaddr()
1031 error = urtw_eprom_read32(sc, URTW_EPROM_MACADDR + 2, &data); in urtw_get_macaddr()
1034 sc->sc_bssid[4] = data & 0xff; in urtw_get_macaddr()
1035 sc->sc_bssid[5] = (data & 0xff00) >> 8; in urtw_get_macaddr()
1036 bcopy(sc->sc_bssid, sc->sc_ic.ic_macaddr, IEEE80211_ADDR_LEN); in urtw_get_macaddr()
1037 m = sc->sc_bssid; in urtw_get_macaddr()
1038 URTW8187_DBG(URTW_DEBUG_HWTYPE, (sc->sc_dev, CE_CONT, in urtw_get_macaddr()
1046 urtw_eprom_read32(struct urtw_softc *sc, uint32_t addr, uint32_t *data) in urtw_eprom_read32() argument
1057 if (error = urtw_write8_c(sc, URTW_EPROM_CMD, in urtw_eprom_read32()
1062 error = urtw_eprom_cs(sc, URTW_EPROM_ENABLE); in urtw_eprom_read32()
1065 error = urtw_eprom_ck(sc); in urtw_eprom_read32()
1068 error = urtw_eprom_sendbits(sc, readcmd, URTW_READCMD_LEN); in urtw_eprom_read32()
1071 if (sc->sc_epromtype == URTW_EEPROM_93C56) { in urtw_eprom_read32()
1090 error = urtw_eprom_sendbits(sc, addrstr, addrlen); in urtw_eprom_read32()
1094 error = urtw_eprom_writebit(sc, 0); in urtw_eprom_read32()
1099 error = urtw_eprom_ck(sc); in urtw_eprom_read32()
1102 error = urtw_eprom_readbit(sc, &data16); in urtw_eprom_read32()
1109 error = urtw_eprom_cs(sc, URTW_EPROM_DISABLE); in urtw_eprom_read32()
1112 error = urtw_eprom_ck(sc); in urtw_eprom_read32()
1117 error = urtw_write8_c(sc, URTW_EPROM_CMD, in urtw_eprom_read32()
1125 urtw_eprom_readbit(struct urtw_softc *sc, int16_t *data) in urtw_eprom_readbit() argument
1130 error = urtw_read8_c(sc, URTW_EPROM_CMD, &data8, 0); in urtw_eprom_readbit()
1137 urtw_eprom_sendbits(struct urtw_softc *sc, int16_t *buf, int buflen) in urtw_eprom_sendbits() argument
1143 error = urtw_eprom_writebit(sc, buf[i]); in urtw_eprom_sendbits()
1146 error = urtw_eprom_ck(sc); in urtw_eprom_sendbits()
1155 urtw_eprom_writebit(struct urtw_softc *sc, int16_t bit) in urtw_eprom_writebit() argument
1160 if (error = urtw_read8_c(sc, URTW_EPROM_CMD, &data, 0)) in urtw_eprom_writebit()
1163 error = urtw_write8_c(sc, URTW_EPROM_CMD, in urtw_eprom_writebit()
1166 error = urtw_write8_c(sc, URTW_EPROM_CMD, in urtw_eprom_writebit()
1174 urtw_eprom_ck(struct urtw_softc *sc) in urtw_eprom_ck() argument
1180 if (error = urtw_read8_c(sc, URTW_EPROM_CMD, &data, 0)) in urtw_eprom_ck()
1182 if (error = urtw_write8_c(sc, URTW_EPROM_CMD, data | URTW_EPROM_CK, 0)) in urtw_eprom_ck()
1186 if (error = urtw_read8_c(sc, URTW_EPROM_CMD, &data, 0)) in urtw_eprom_ck()
1188 error = urtw_write8_c(sc, URTW_EPROM_CMD, data & ~URTW_EPROM_CK, 0); in urtw_eprom_ck()
1195 urtw_eprom_cs(struct urtw_softc *sc, int able) in urtw_eprom_cs() argument
1200 if (error = urtw_read8_c(sc, URTW_EPROM_CMD, &data, 0)) in urtw_eprom_cs()
1203 error = urtw_write8_c(sc, URTW_EPROM_CMD, in urtw_eprom_cs()
1206 error = urtw_write8_c(sc, URTW_EPROM_CMD, in urtw_eprom_cs()
1214 urtw_read8_c(struct urtw_softc *sc, int val, uint8_t *data, uint8_t idx) in urtw_read8_c() argument
1229 error = usb_pipe_ctrl_xfer_wait(sc->sc_udev->dev_default_ph, &req, &mp, in urtw_read8_c()
1233 URTW8187_DBG(URTW_DEBUG_DEVREQ, (sc->sc_dev, CE_CONT, in urtw_read8_c()
1245 urtw_read8e(struct urtw_softc *sc, int val, uint8_t *data) in urtw_read8e() argument
1260 error = usb_pipe_ctrl_xfer_wait(sc->sc_udev->dev_default_ph, &req, &mp, in urtw_read8e()
1264 URTW8187_DBG(URTW_DEBUG_DEVREQ, (sc->sc_dev, CE_CONT, in urtw_read8e()
1278 urtw_read16_c(struct urtw_softc *sc, int val, uint16_t *data, uint8_t idx) in urtw_read16_c() argument
1293 error = usb_pipe_ctrl_xfer_wait(sc->sc_udev->dev_default_ph, &req, &mp, in urtw_read16_c()
1297 URTW8187_DBG(URTW_DEBUG_DEVREQ, (sc->sc_dev, CE_CONT, in urtw_read16_c()
1311 urtw_read32_c(struct urtw_softc *sc, int val, uint32_t *data, uint8_t idx) in urtw_read32_c() argument
1327 error = usb_pipe_ctrl_xfer_wait(sc->sc_udev->dev_default_ph, &req, &mp, in urtw_read32_c()
1331 URTW8187_DBG(URTW_DEBUG_DEVREQ, (sc->sc_dev, CE_CONT, in urtw_read32_c()
1345 urtw_write8_c(struct urtw_softc *sc, int val, uint8_t data, uint8_t idx) in urtw_write8_c() argument
1368 error = usb_pipe_ctrl_xfer_wait(sc->sc_udev->dev_default_ph, &req, &mp, in urtw_write8_c()
1371 URTW8187_DBG(URTW_DEBUG_DEVREQ, (sc->sc_dev, CE_CONT, in urtw_write8_c()
1381 urtw_write8e(struct urtw_softc *sc, int val, uint8_t data) in urtw_write8e() argument
1405 error = usb_pipe_ctrl_xfer_wait(sc->sc_udev->dev_default_ph, &req, &mp, in urtw_write8e()
1408 URTW8187_DBG(URTW_DEBUG_DEVREQ, (sc->sc_dev, CE_CONT, in urtw_write8e()
1419 urtw_write16_c(struct urtw_softc *sc, int val, uint16_t data, uint8_t idx) in urtw_write16_c() argument
1442 error = usb_pipe_ctrl_xfer_wait(sc->sc_udev->dev_default_ph, &req, &mp, in urtw_write16_c()
1445 URTW8187_DBG(URTW_DEBUG_DEVREQ, (sc->sc_dev, CE_CONT, in urtw_write16_c()
1456 urtw_write32_c(struct urtw_softc *sc, int val, uint32_t data, uint8_t idx) in urtw_write32_c() argument
1479 error = usb_pipe_ctrl_xfer_wait(sc->sc_udev->dev_default_ph, &req, &mp, in urtw_write32_c()
1482 URTW8187_DBG(URTW_DEBUG_DEVREQ, (sc->sc_dev, CE_CONT, in urtw_write32_c()
1494 urtw_set_mode(struct urtw_softc *sc, uint32_t mode) in urtw_set_mode() argument
1499 if (error = urtw_read8_c(sc, URTW_EPROM_CMD, &data, 0)) in urtw_set_mode()
1503 error = urtw_write8_c(sc, URTW_EPROM_CMD, data, 0); in urtw_set_mode()
1509 urtw_8180_set_anaparam(struct urtw_softc *sc, uint32_t val) in urtw_8180_set_anaparam() argument
1514 error = urtw_set_mode(sc, URTW_EPROM_CMD_CONFIG); in urtw_8180_set_anaparam()
1518 if (error = urtw_read8_c(sc, URTW_CONFIG3, &data, 0)) in urtw_8180_set_anaparam()
1520 if (error = urtw_write8_c(sc, URTW_CONFIG3, in urtw_8180_set_anaparam()
1523 if (error = urtw_write32_c(sc, URTW_ANAPARAM, val, 0)) in urtw_8180_set_anaparam()
1525 if (error = urtw_read8_c(sc, URTW_CONFIG3, &data, 0)) in urtw_8180_set_anaparam()
1527 if (error = urtw_write8_c(sc, URTW_CONFIG3, in urtw_8180_set_anaparam()
1531 error = urtw_set_mode(sc, URTW_EPROM_CMD_NORMAL); in urtw_8180_set_anaparam()
1539 urtw_8185_set_anaparam2(struct urtw_softc *sc, uint32_t val) in urtw_8185_set_anaparam2() argument
1544 error = urtw_set_mode(sc, URTW_EPROM_CMD_CONFIG); in urtw_8185_set_anaparam2()
1548 if (error = urtw_read8_c(sc, URTW_CONFIG3, &data, 0)) in urtw_8185_set_anaparam2()
1550 if (error = urtw_write8_c(sc, URTW_CONFIG3, in urtw_8185_set_anaparam2()
1553 if (error = urtw_write32_c(sc, URTW_ANAPARAM2, val, 0)) in urtw_8185_set_anaparam2()
1555 if (error = urtw_read8_c(sc, URTW_CONFIG3, &data, 0)) in urtw_8185_set_anaparam2()
1557 if (error = urtw_write8_c(sc, URTW_CONFIG3, in urtw_8185_set_anaparam2()
1561 error = urtw_set_mode(sc, URTW_EPROM_CMD_NORMAL); in urtw_8185_set_anaparam2()
1569 urtw_intr_disable(struct urtw_softc *sc) in urtw_intr_disable() argument
1573 error = urtw_write16_c(sc, URTW_INTR_MASK, 0, 0); in urtw_intr_disable()
1578 urtw_8187_reset(struct urtw_softc *sc) in urtw_8187_reset() argument
1583 error = urtw_8180_set_anaparam(sc, URTW_8187_8225_ANAPARAM_ON); in urtw_8187_reset()
1586 error = urtw_8185_set_anaparam2(sc, URTW_8187_8225_ANAPARAM2_ON); in urtw_8187_reset()
1590 error = urtw_intr_disable(sc); in urtw_8187_reset()
1595 error = urtw_write8e(sc, 0x18, 0x10); in urtw_8187_reset()
1598 error = urtw_write8e(sc, 0x18, 0x11); in urtw_8187_reset()
1601 error = urtw_write8e(sc, 0x18, 0x00); in urtw_8187_reset()
1606 if (error = urtw_read8_c(sc, URTW_CMD, &data, 0)) in urtw_8187_reset()
1609 if (error = urtw_write8_c(sc, URTW_CMD, data, 0)) in urtw_8187_reset()
1613 if (error = urtw_read8_c(sc, URTW_CMD, &data, 0)) in urtw_8187_reset()
1619 error = urtw_set_mode(sc, URTW_EPROM_CMD_LOAD); in urtw_8187_reset()
1624 error = urtw_8180_set_anaparam(sc, URTW_8187_8225_ANAPARAM_ON); in urtw_8187_reset()
1627 error = urtw_8185_set_anaparam2(sc, URTW_8187_8225_ANAPARAM2_ON); in urtw_8187_reset()
1635 urtw_led_on(struct urtw_softc *sc, int type) in urtw_led_on() argument
1638 switch (sc->sc_gpio_ledpin) { in urtw_led_on()
1640 (void) urtw_write8_c(sc, URTW_GPIO, 0x01, 0); in urtw_led_on()
1641 (void) urtw_write8_c(sc, URTW_GP_ENABLE, 0x00, 0); in urtw_led_on()
1645 sc->sc_gpio_ledpin); in urtw_led_on()
1653 sc->sc_gpio_ledon = 1; in urtw_led_on()
1658 urtw_led_off(struct urtw_softc *sc, int type) in urtw_led_off() argument
1661 switch (sc->sc_gpio_ledpin) { in urtw_led_off()
1663 (void) urtw_write8_c(sc, URTW_GPIO, 0x01, 0); in urtw_led_off()
1664 (void) urtw_write8_c(sc, URTW_GP_ENABLE, 0x01, 0); in urtw_led_off()
1668 sc->sc_gpio_ledpin); in urtw_led_off()
1676 sc->sc_gpio_ledon = 0; in urtw_led_off()
1681 urtw_led_mode0(struct urtw_softc *sc, int mode) in urtw_led_mode0() argument
1683 URTW8187_DBG(URTW_DEBUG_LED, (sc->sc_dev, CE_CONT, in urtw_led_mode0()
1687 sc->sc_gpio_ledstate = URTW_LED_POWER_ON_BLINK; in urtw_led_mode0()
1690 if (sc->sc_gpio_ledinprogress == 1) in urtw_led_mode0()
1692 sc->sc_gpio_ledstate = URTW_LED_BLINK_NORMAL; in urtw_led_mode0()
1693 sc->sc_gpio_blinktime = in urtw_led_mode0()
1694 (sc->sc_ic.ic_state == IEEE80211_S_RUN ? 4:2); in urtw_led_mode0()
1697 sc->sc_gpio_ledstate = URTW_LED_ON; in urtw_led_mode0()
1704 switch (sc->sc_gpio_ledstate) { in urtw_led_mode0()
1706 if (sc->sc_gpio_ledinprogress != 0) in urtw_led_mode0()
1708 (void) urtw_led_on(sc, URTW_LED_GPIO); in urtw_led_mode0()
1711 if (sc->sc_gpio_ledinprogress != 0) in urtw_led_mode0()
1713 sc->sc_gpio_ledinprogress = 1; in urtw_led_mode0()
1714 sc->sc_gpio_blinkstate = (sc->sc_gpio_ledon != 0) ? in urtw_led_mode0()
1716 URTW_LEDLOCK(sc); in urtw_led_mode0()
1717 if (sc->sc_led_ch == 0) { in urtw_led_mode0()
1718 URTW8187_DBG(URTW_DEBUG_LED, (sc->sc_dev, CE_CONT, in urtw_led_mode0()
1720 sc->sc_led_ch = timeout(urtw_led_launch, in urtw_led_mode0()
1721 (void *)sc, in urtw_led_mode0()
1722 drv_usectohz((sc->sc_ic.ic_state == in urtw_led_mode0()
1726 sc->sc_gpio_ledinprogress = 0; in urtw_led_mode0()
1728 URTW_LEDUNLOCK(sc); in urtw_led_mode0()
1731 (void) urtw_led_on(sc, URTW_LED_GPIO); in urtw_led_mode0()
1733 (void) urtw_led_off(sc, URTW_LED_GPIO); in urtw_led_mode0()
1736 URTW8187_DBG(URTW_DEBUG_LED, (sc->sc_dev, CE_CONT, in urtw_led_mode0()
1738 sc->sc_gpio_ledstate)); in urtw_led_mode0()
1744 urtw_led_mode1(struct urtw_softc *sc, int mode) in urtw_led_mode1() argument
1746 cmn_err(CE_WARN, "urtw sc %p, mode %d not supported", (void *)sc, mode); in urtw_led_mode1()
1751 urtw_led_mode2(struct urtw_softc *sc, int mode) in urtw_led_mode2() argument
1753 cmn_err(CE_WARN, "urtw sc %p, mode %d not supported", (void *)sc, mode); in urtw_led_mode2()
1758 urtw_led_mode3(struct urtw_softc *sc, int mode) in urtw_led_mode3() argument
1760 cmn_err(CE_WARN, "urtw sc %p, mode %d not supported", (void *)sc, mode); in urtw_led_mode3()
1765 urtw_led_blink(struct urtw_softc *sc) in urtw_led_blink() argument
1769 URTW8187_DBG(URTW_DEBUG_LED, (sc->sc_dev, CE_CONT, in urtw_led_blink()
1771 sc->sc_gpio_blinkstate)); in urtw_led_blink()
1772 if (sc->sc_gpio_blinkstate == URTW_LED_ON) in urtw_led_blink()
1773 (void) urtw_led_on(sc, URTW_LED_GPIO); in urtw_led_blink()
1775 (void) urtw_led_off(sc, URTW_LED_GPIO); in urtw_led_blink()
1776 sc->sc_gpio_blinktime--; in urtw_led_blink()
1777 if (sc->sc_gpio_blinktime == 0) in urtw_led_blink()
1780 if (sc->sc_gpio_ledstate != URTW_LED_BLINK_NORMAL && in urtw_led_blink()
1781 sc->sc_gpio_ledstate != URTW_LED_BLINK_SLOWLY && in urtw_led_blink()
1782 sc->sc_gpio_ledstate != URTW_LED_BLINK_CM3) in urtw_led_blink()
1786 if (sc->sc_gpio_ledstate == URTW_LED_ON && in urtw_led_blink()
1787 sc->sc_gpio_ledon == 0) in urtw_led_blink()
1788 (void) urtw_led_on(sc, URTW_LED_GPIO); in urtw_led_blink()
1789 else if (sc->sc_gpio_ledstate == URTW_LED_OFF && in urtw_led_blink()
1790 sc->sc_gpio_ledon == 1) in urtw_led_blink()
1791 (void) urtw_led_off(sc, URTW_LED_GPIO); in urtw_led_blink()
1793 sc->sc_gpio_blinktime = 0; in urtw_led_blink()
1794 sc->sc_gpio_ledinprogress = 0; in urtw_led_blink()
1798 sc->sc_gpio_blinkstate = (sc->sc_gpio_blinkstate != URTW_LED_ON) ? in urtw_led_blink()
1801 switch (sc->sc_gpio_ledstate) { in urtw_led_blink()
1803 URTW8187_DBG(URTW_DEBUG_LED, (sc->sc_dev, CE_CONT, in urtw_led_blink()
1807 URTW8187_DBG(URTW_DEBUG_LED, (sc->sc_dev, CE_CONT, in urtw_led_blink()
1808 "unknown LED status 0x%x", sc->sc_gpio_ledstate)); in urtw_led_blink()
1814 urtw_led_ctl(struct urtw_softc *sc, int mode) in urtw_led_ctl() argument
1818 switch (sc->sc_strategy) { in urtw_led_ctl()
1820 error = urtw_led_mode0(sc, mode); in urtw_led_ctl()
1823 error = urtw_led_mode1(sc, mode); in urtw_led_ctl()
1826 error = urtw_led_mode2(sc, mode); in urtw_led_ctl()
1829 error = urtw_led_mode3(sc, mode); in urtw_led_ctl()
1832 cmn_err(CE_CONT, "unsupported LED mode %d\n", sc->sc_strategy); in urtw_led_ctl()
1841 urtw_update_msr(struct urtw_softc *sc, int nstate) in urtw_update_msr() argument
1843 struct ieee80211com *ic = &sc->sc_ic; in urtw_update_msr()
1847 if (error = urtw_read8_c(sc, URTW_MSR, &data, 0)) in urtw_update_msr()
1852 if (sc->sc_hwrev & URTW_HWREV_8187B) in urtw_update_msr()
1875 error = urtw_write8_c(sc, URTW_MSR, data, 0); in urtw_update_msr()
1910 urtw_set_rate(struct urtw_softc *sc) in urtw_set_rate() argument
1919 if (error = urtw_write8_c(sc, URTW_RESP_RATE, in urtw_set_rate()
1924 if (error = urtw_read16_c(sc, URTW_BRSR, &data, 0)) in urtw_set_rate()
1931 error = urtw_write16_c(sc, URTW_BRSR, data, 0); in urtw_set_rate()
1937 urtw_intr_enable(struct urtw_softc *sc) in urtw_intr_enable() argument
1941 error = urtw_write16_c(sc, URTW_INTR_MASK, 0xffff, 0); in urtw_intr_enable()
1946 urtw_rx_setconf(struct urtw_softc *sc) in urtw_rx_setconf() argument
1948 struct ieee80211com *ic = &sc->sc_ic; in urtw_rx_setconf()
1952 if (urtw_read32_c(sc, URTW_RX, &data, 0)) in urtw_rx_setconf()
1962 if (sc->sc_crcmon == 1 && ic->ic_opmode == IEEE80211_M_MONITOR) in urtw_rx_setconf()
1973 error = urtw_write32_c(sc, URTW_RX, data, 0); in urtw_rx_setconf()
1979 urtw_rx_enable(struct urtw_softc *sc) in urtw_rx_enable() argument
1985 sc->rx_queued = 0; in urtw_rx_enable()
1987 if (urtw_rx_start(sc) != 0) { in urtw_rx_enable()
1992 error = urtw_rx_setconf(sc); in urtw_rx_enable()
1996 if (error = urtw_read8_c(sc, URTW_CMD, &data, 0)) in urtw_rx_enable()
1998 error = urtw_write8_c(sc, URTW_CMD, data | URTW_CMD_RX_ENABLE, 0); in urtw_rx_enable()
2004 urtw_tx_enable(struct urtw_softc *sc) in urtw_tx_enable() argument
2009 if (sc->sc_hwrev & URTW_HWREV_8187) { in urtw_tx_enable()
2010 (void) urtw_read8_c(sc, URTW_CW_CONF, &data8, 0); in urtw_tx_enable()
2013 (void) urtw_write8_c(sc, URTW_CW_CONF, data8, 0); in urtw_tx_enable()
2014 (void) urtw_read8_c(sc, URTW_TX_AGC_CTL, &data8, 0); in urtw_tx_enable()
2018 (void) urtw_write8_c(sc, URTW_TX_AGC_CTL, data8, 0); in urtw_tx_enable()
2020 (void) urtw_read32_c(sc, URTW_TX_CONF, &data, 0); in urtw_tx_enable()
2024 data |= sc->sc_tx_retry << URTW_TX_DPRETRY_SHIFT; in urtw_tx_enable()
2025 data |= sc->sc_rts_retry << URTW_TX_RTSRETRY_SHIFT; in urtw_tx_enable()
2030 (void) urtw_write32_c(sc, URTW_TX_CONF, data, 0); in urtw_tx_enable()
2035 (void) urtw_write32_c(sc, URTW_TX_CONF, data, 0); in urtw_tx_enable()
2038 (void) urtw_read8_c(sc, URTW_CMD, &data8, 0); in urtw_tx_enable()
2039 (void) urtw_write8_c(sc, URTW_CMD, data8 | URTW_CMD_TX_ENABLE, 0); in urtw_tx_enable()
2045 struct urtw_softc *sc = arg; in urtw_8187_init() local
2047 struct urtw_rf *rf = &sc->sc_rf; in urtw_8187_init()
2050 urtw_stop(sc); in urtw_8187_init()
2051 URTW_LOCK(sc); in urtw_8187_init()
2052 error = urtw_8187_reset(sc); in urtw_8187_init()
2056 (void) urtw_write8_c(sc, 0x85, 0, 0); in urtw_8187_init()
2057 (void) urtw_write8_c(sc, URTW_GPIO, 0, 0); in urtw_8187_init()
2060 (void) urtw_write8_c(sc, 0x85, 4, 0); in urtw_8187_init()
2061 error = urtw_led_ctl(sc, URTW_LED_CTL_POWER_ON); in urtw_8187_init()
2065 error = urtw_set_mode(sc, URTW_EPROM_CMD_CONFIG); in urtw_8187_init()
2071 (void) urtw_write8_c(sc, URTW_MAC0 + i, in urtw_8187_init()
2072 sc->sc_ic.ic_macaddr[i], 0); in urtw_8187_init()
2073 error = urtw_set_mode(sc, URTW_EPROM_CMD_NORMAL); in urtw_8187_init()
2077 error = urtw_update_msr(sc, IEEE80211_S_INIT); in urtw_8187_init()
2081 (void) urtw_write32_c(sc, URTW_INT_TIMEOUT, 0, 0); in urtw_8187_init()
2082 (void) urtw_write8_c(sc, URTW_WPA_CONFIG, 0, 0); in urtw_8187_init()
2083 (void) urtw_write8_c(sc, URTW_RATE_FALLBACK, 0x81, 0); in urtw_8187_init()
2084 error = urtw_set_rate(sc); in urtw_8187_init()
2094 (void) urtw_write16_c(sc, 0x5e, 1, 0); in urtw_8187_init()
2095 (void) urtw_write16_c(sc, 0xfe, 0x10, 0); in urtw_8187_init()
2096 (void) urtw_write8_c(sc, URTW_TALLY_SEL, 0x80, 0); in urtw_8187_init()
2097 (void) urtw_write8_c(sc, 0xff, 0x60, 0); in urtw_8187_init()
2098 (void) urtw_write16_c(sc, 0x5e, 0, 0); in urtw_8187_init()
2099 (void) urtw_write8_c(sc, 0x85, 4, 0); in urtw_8187_init()
2101 error = urtw_intr_enable(sc); in urtw_8187_init()
2105 error = urtw_open_pipes(sc); in urtw_8187_init()
2108 sc->sc_tx_low_queued = 0; in urtw_8187_init()
2109 sc->sc_tx_normal_queued = 0; in urtw_8187_init()
2110 error = urtw_rx_enable(sc); in urtw_8187_init()
2113 urtw_tx_enable(sc); in urtw_8187_init()
2116 URTW8187_DBG(URTW_DEBUG_ACTIVE, (sc->sc_dev, in urtw_8187_init()
2118 sc->sc_flags |= URTW_FLAG_RUNNING; in urtw_8187_init()
2119 URTW_UNLOCK(sc); in urtw_8187_init()
2124 URTW_UNLOCK(sc); in urtw_8187_init()
2125 urtw_stop(sc); in urtw_8187_init()
2131 urtw_8225_usb_init(struct urtw_softc *sc) in urtw_8225_usb_init() argument
2136 if (error = urtw_write8_c(sc, URTW_RF_PINS_SELECT + 1, 0, 0)) in urtw_8225_usb_init()
2138 if (error = urtw_write8_c(sc, URTW_GPIO, 0, 0)) in urtw_8225_usb_init()
2140 if (error = urtw_read8e(sc, 0x53, &data)) in urtw_8225_usb_init()
2142 if (error = urtw_write8e(sc, 0x53, data | (1 << 7))) in urtw_8225_usb_init()
2144 if (error = urtw_write8_c(sc, URTW_RF_PINS_SELECT + 1, 4, 0)) in urtw_8225_usb_init()
2146 if (error = urtw_write8_c(sc, URTW_GPIO, 0x20, 0)) in urtw_8225_usb_init()
2148 if (error = urtw_write8_c(sc, URTW_GP_ENABLE, 0, 0)) in urtw_8225_usb_init()
2150 if (error = urtw_write16_c(sc, URTW_RF_PINS_OUTPUT, 0x80, 0)) in urtw_8225_usb_init()
2152 if (error = urtw_write16_c(sc, URTW_RF_PINS_SELECT, 0x80, 0)) in urtw_8225_usb_init()
2154 error = urtw_write16_c(sc, URTW_RF_PINS_ENABLE, 0x80, 0); in urtw_8225_usb_init()
2162 urtw_8185_rf_pins_enable(struct urtw_softc *sc) in urtw_8185_rf_pins_enable() argument
2166 error = urtw_write16_c(sc, URTW_RF_PINS_ENABLE, 0x1ff7, 0); in urtw_8185_rf_pins_enable()
2171 urtw_8187_write_phy(struct urtw_softc *sc, uint8_t addr, uint32_t data) in urtw_8187_write_phy() argument
2177 if (error = urtw_write8_c(sc, 0x7f, ((phyw & 0xff000000) >> 24), 0)) in urtw_8187_write_phy()
2179 if (error = urtw_write8_c(sc, 0x7e, ((phyw & 0x00ff0000) >> 16), 0)) in urtw_8187_write_phy()
2181 if (error = urtw_write8_c(sc, 0x7d, ((phyw & 0x0000ff00) >> 8), 0)) in urtw_8187_write_phy()
2183 error = urtw_write8_c(sc, 0x7c, (phyw & 0x000000ff), 0); in urtw_8187_write_phy()
2193 urtw_8187_write_phy_ofdm_c(struct urtw_softc *sc, uint8_t addr, uint32_t data) in urtw_8187_write_phy_ofdm_c() argument
2196 return (urtw_8187_write_phy(sc, addr, data)); in urtw_8187_write_phy_ofdm_c()
2200 urtw_8187_write_phy_cck_c(struct urtw_softc *sc, uint8_t addr, uint32_t data) in urtw_8187_write_phy_cck_c() argument
2203 return (urtw_8187_write_phy(sc, addr, (data | 0x10000))); in urtw_8187_write_phy_cck_c()
2207 urtw_8225_setgain(struct urtw_softc *sc, int16_t gain) in urtw_8225_setgain() argument
2211 if (error = urtw_8187_write_phy_ofdm_c(sc, 0x0d, in urtw_8225_setgain()
2214 if (error = urtw_8187_write_phy_ofdm_c(sc, 0x1b, in urtw_8225_setgain()
2217 if (error = urtw_8187_write_phy_ofdm_c(sc, 0x1d, in urtw_8225_setgain()
2220 error = urtw_8187_write_phy_ofdm_c(sc, 0x23, in urtw_8225_setgain()
2227 urtw_8225_set_txpwrlvl(struct urtw_softc *sc, int chan) in urtw_8225_set_txpwrlvl() argument
2232 uint8_t cck_pwrlvl = sc->sc_txpwr_cck[chan] & 0xff; in urtw_8225_set_txpwrlvl()
2233 uint8_t ofdm_pwrlvl = sc->sc_txpwr_ofdm[chan] & 0xff; in urtw_8225_set_txpwrlvl()
2248 if (error = urtw_write8_c(sc, URTW_TX_GAIN_CCK, in urtw_8225_set_txpwrlvl()
2252 if (error = urtw_8187_write_phy_cck_c(sc, 0x44 + i, in urtw_8225_set_txpwrlvl()
2264 error = urtw_8185_set_anaparam2(sc, URTW_8187_8225_ANAPARAM2_ON); in urtw_8225_set_txpwrlvl()
2267 if (error = urtw_8187_write_phy_ofdm_c(sc, 2, 0x42)) in urtw_8225_set_txpwrlvl()
2269 if (error = urtw_8187_write_phy_ofdm_c(sc, 6, 0)) in urtw_8225_set_txpwrlvl()
2271 if (error = urtw_8187_write_phy_ofdm_c(sc, 8, 0)) in urtw_8225_set_txpwrlvl()
2274 if (error = urtw_write8_c(sc, URTW_TX_GAIN_OFDM, in urtw_8225_set_txpwrlvl()
2277 if (error = urtw_8187_write_phy_ofdm_c(sc, 0x5, in urtw_8225_set_txpwrlvl()
2280 error = urtw_8187_write_phy_ofdm_c(sc, 0x7, in urtw_8225_set_txpwrlvl()
2288 urtw_8185_tx_antenna(struct urtw_softc *sc, uint8_t ant) in urtw_8185_tx_antenna() argument
2292 error = urtw_write8_c(sc, URTW_TX_ANTENNA, ant, 0); in urtw_8185_tx_antenna()
2304 struct urtw_softc *sc = rf->rf_sc; in urtw_8225_rf_init() local
2306 error = urtw_8180_set_anaparam(sc, URTW_8187_8225_ANAPARAM_ON); in urtw_8225_rf_init()
2310 if (error = urtw_8225_usb_init(sc)) in urtw_8225_rf_init()
2312 if (error = urtw_write32_c(sc, URTW_RF_TIMING, 0x000a8008, 0)) in urtw_8225_rf_init()
2314 if (error = urtw_read16_c(sc, URTW_BRSR, &data, 0)) in urtw_8225_rf_init()
2316 if (error = urtw_write16_c(sc, URTW_BRSR, 0xffff, 0)) in urtw_8225_rf_init()
2318 if (error = urtw_write32_c(sc, URTW_RF_PARA, 0x100044, 0)) in urtw_8225_rf_init()
2321 if (error = urtw_set_mode(sc, URTW_EPROM_CMD_CONFIG)) in urtw_8225_rf_init()
2323 if (error = urtw_write8_c(sc, URTW_CONFIG3, 0x44, 0)) in urtw_8225_rf_init()
2325 if (error = urtw_set_mode(sc, URTW_EPROM_CMD_NORMAL)) in urtw_8225_rf_init()
2327 if (error = urtw_8185_rf_pins_enable(sc)) in urtw_8225_rf_init()
2332 if (error = urtw_8225_write_c(sc, urtw_8225_rf_part1[i].reg, in urtw_8225_rf_init()
2338 if (error = urtw_8225_write_c(sc, 0x2, 0xc4d)) in urtw_8225_rf_init()
2341 if (error = urtw_8225_write_c(sc, 0x2, 0x44d)) in urtw_8225_rf_init()
2344 if (error = urtw_8225_write_c(sc, 0x0, 0x127)) in urtw_8225_rf_init()
2348 if (error = urtw_8225_write_c(sc, 0x1, (uint8_t)(i + 1))) in urtw_8225_rf_init()
2350 if (error = urtw_8225_write_c(sc, 0x2, urtw_8225_rxgain[i])) in urtw_8225_rf_init()
2354 if (error = urtw_8225_write_c(sc, 0x0, 0x27)) in urtw_8225_rf_init()
2356 if (error = urtw_8225_write_c(sc, 0x0, 0x22f)) in urtw_8225_rf_init()
2360 if (error = urtw_8187_write_phy_ofdm_c(sc, 0xb, in urtw_8225_rf_init()
2364 if (error = urtw_8187_write_phy_ofdm_c(sc, 0xa, in urtw_8225_rf_init()
2371 if (error = urtw_8187_write_phy_ofdm_c(sc, in urtw_8225_rf_init()
2377 error = urtw_8225_setgain(sc, 4); in urtw_8225_rf_init()
2382 if (error = urtw_8187_write_phy_cck_c(sc, in urtw_8225_rf_init()
2389 if (error = urtw_write8_c(sc, 0x5b, 0x0d, 0)) in urtw_8225_rf_init()
2391 if (error = urtw_8225_set_txpwrlvl(sc, 1)) in urtw_8225_rf_init()
2393 if (error = urtw_8187_write_phy_cck_c(sc, 0x10, 0x9b)) in urtw_8225_rf_init()
2396 if (error = urtw_8187_write_phy_ofdm_c(sc, 0x26, 0x90)) in urtw_8225_rf_init()
2401 if (error = urtw_8185_tx_antenna(sc, 0x3)) in urtw_8225_rf_init()
2403 if (error = urtw_write32_c(sc, 0x94, 0x3dc00002, 0)) in urtw_8225_rf_init()
2407 ieee80211_chan2ieee(&sc->sc_ic, sc->sc_ic.ic_curchan)); in urtw_8225_rf_init()
2421 struct urtw_softc *sc = rf->rf_sc; in urtw_8225_rf_set_chan() local
2422 struct ieee80211com *ic = &sc->sc_ic; in urtw_8225_rf_set_chan()
2427 if (error = urtw_8225_set_txpwrlvl(sc, chan)) in urtw_8225_rf_set_chan()
2429 if (urtw_8225_write_c(sc, 0x7, urtw_8225_channel[chan])) in urtw_8225_rf_set_chan()
2433 if (error = urtw_write8_c(sc, URTW_SIFS, 0x22, 0)) in urtw_8225_rf_set_chan()
2438 if (error = urtw_write8_c(sc, URTW_SLOT, 0x9, 0)) in urtw_8225_rf_set_chan()
2441 if (error = urtw_write8_c(sc, URTW_SLOT, 0x14, 0)) in urtw_8225_rf_set_chan()
2445 if (error = urtw_write8_c(sc, URTW_DIFS, 0x14, 0)) in urtw_8225_rf_set_chan()
2447 if (error = urtw_write8_c(sc, URTW_EIFS, 0x5b - 0x14, 0)) in urtw_8225_rf_set_chan()
2449 error = urtw_write8_c(sc, URTW_CW_VAL, 0x73, 0); in urtw_8225_rf_set_chan()
2452 if (error = urtw_write8_c(sc, URTW_DIFS, 0x24, 0)) in urtw_8225_rf_set_chan()
2454 if (error = urtw_write8_c(sc, URTW_EIFS, 0x5b - 0x24, 0)) in urtw_8225_rf_set_chan()
2456 error = urtw_write8_c(sc, URTW_CW_VAL, 0xa5, 0); in urtw_8225_rf_set_chan()
2467 struct urtw_softc *sc = rf->rf_sc; in urtw_8225_rf_set_sens() local
2473 if (error = urtw_8225_write_c(sc, 0x0c, 0x850)) in urtw_8225_rf_set_sens()
2476 if (error = urtw_8225_write_c(sc, 0x0c, 0x50)) in urtw_8225_rf_set_sens()
2480 if (error = urtw_8225_setgain(sc, rf->sens)) in urtw_8225_rf_set_sens()
2482 error = urtw_8187_write_phy_cck_c(sc, 0x41, in urtw_8225_rf_set_sens()
2489 urtw_stop(struct urtw_softc *sc) in urtw_stop() argument
2491 URTW_LOCK(sc); in urtw_stop()
2492 sc->sc_flags &= ~URTW_FLAG_RUNNING; in urtw_stop()
2493 URTW_UNLOCK(sc); in urtw_stop()
2494 urtw_close_pipes(sc); in urtw_stop()
2510 struct urtw_softc *sc = (struct urtw_softc *)req->bulk_client_private; in urtw_rxeof() local
2511 struct ieee80211com *ic = &sc->sc_ic; in urtw_rxeof()
2523 sc->sc_rx_err++; in urtw_rxeof()
2524 URTW8187_DBG(URTW_DEBUG_RX_PROC, (sc->sc_dev, CE_CONT, in urtw_rxeof()
2534 if (sc->sc_hwrev & URTW_HWREV_8187) in urtw_rxeof()
2546 sc->sc_rx_err++; in urtw_rxeof()
2552 if (sc->sc_hwrev & URTW_HWREV_8187) { in urtw_rxeof()
2567 URTW8187_DBG(URTW_DEBUG_RX_PROC, (sc->sc_dev, CE_CONT, in urtw_rxeof()
2575 sc->sc_currate = (rate > 0) ? rate : sc->sc_currate; in urtw_rxeof()
2576 URTW8187_DBG(URTW_DEBUG_RX_PROC, (sc->sc_dev, CE_CONT, in urtw_rxeof()
2578 sc->sc_currate)); in urtw_rxeof()
2588 mutex_enter(&sc->rx_lock); in urtw_rxeof()
2589 sc->rx_queued--; in urtw_rxeof()
2590 mutex_exit(&sc->rx_lock); in urtw_rxeof()
2592 if (URTW_IS_RUNNING(sc) && !URTW_IS_SUSPENDING(sc)) in urtw_rxeof()
2593 (void) urtw_rx_start(sc); in urtw_rxeof()
2597 urtw_8225v2_setgain(struct urtw_softc *sc, int16_t gain) in urtw_8225v2_setgain() argument
2604 if (error = urtw_8187_write_phy_ofdm_c(sc, 0x0d, gainp[gain * 3])) in urtw_8225v2_setgain()
2607 if (error = urtw_8187_write_phy_ofdm_c(sc, 0x1b, gainp[gain * 3 + 1])) in urtw_8225v2_setgain()
2609 if (error = urtw_8187_write_phy_ofdm_c(sc, 0x1d, gainp[gain * 3 + 2])) in urtw_8225v2_setgain()
2612 if (error = urtw_8187_write_phy_ofdm_c(sc, 0x21, 0x17)) in urtw_8225v2_setgain()
2620 urtw_8225v2_set_txpwrlvl(struct urtw_softc *sc, int chan) in urtw_8225v2_set_txpwrlvl() argument
2625 uint8_t cck_pwrlvl = sc->sc_txpwr_cck[chan] & 0xff; in urtw_8225v2_set_txpwrlvl()
2626 uint8_t ofdm_pwrlvl = sc->sc_txpwr_ofdm[chan] & 0xff; in urtw_8225v2_set_txpwrlvl()
2632 cck_pwrlvl += sc->sc_txpwr_cck_base; in urtw_8225v2_set_txpwrlvl()
2638 if (error = urtw_8187_write_phy_cck_c(sc, 0x44 + i, in urtw_8225v2_set_txpwrlvl()
2642 if (error = urtw_write8_c(sc, URTW_TX_GAIN_CCK, in urtw_8225v2_set_txpwrlvl()
2650 ofdm_pwrlvl += sc->sc_txpwr_ofdm_base; in urtw_8225v2_set_txpwrlvl()
2653 error = urtw_8185_set_anaparam2(sc, URTW_8187_8225_ANAPARAM2_ON); in urtw_8225v2_set_txpwrlvl()
2657 if (error = urtw_8187_write_phy_ofdm_c(sc, 2, 0x42)) in urtw_8225v2_set_txpwrlvl()
2659 if (error = urtw_8187_write_phy_ofdm_c(sc, 5, 0x0)) in urtw_8225v2_set_txpwrlvl()
2661 if (error = urtw_8187_write_phy_ofdm_c(sc, 6, 0x40)) in urtw_8225v2_set_txpwrlvl()
2663 if (error = urtw_8187_write_phy_ofdm_c(sc, 7, 0x0)) in urtw_8225v2_set_txpwrlvl()
2665 if (error = urtw_8187_write_phy_ofdm_c(sc, 8, 0x40)) in urtw_8225v2_set_txpwrlvl()
2668 error = urtw_write8_c(sc, URTW_TX_GAIN_OFDM, in urtw_8225v2_set_txpwrlvl()
2683 struct urtw_softc *sc = rf->rf_sc; in urtw_8225v2_rf_init() local
2685 if (error = urtw_8180_set_anaparam(sc, URTW_8187_8225_ANAPARAM_ON)) in urtw_8225v2_rf_init()
2687 if (error = urtw_8225_usb_init(sc)) in urtw_8225v2_rf_init()
2689 if (error = urtw_write32_c(sc, URTW_RF_TIMING, 0x000a8008, 0)) in urtw_8225v2_rf_init()
2691 if (error = urtw_read16_c(sc, URTW_BRSR, &data, 0)) in urtw_8225v2_rf_init()
2693 if (error = urtw_write16_c(sc, URTW_BRSR, 0xffff, 0)) in urtw_8225v2_rf_init()
2695 if (error = urtw_write32_c(sc, URTW_RF_PARA, 0x100044, 0)) in urtw_8225v2_rf_init()
2697 if (error = urtw_set_mode(sc, URTW_EPROM_CMD_CONFIG)) in urtw_8225v2_rf_init()
2699 if (error = urtw_write8_c(sc, URTW_CONFIG3, 0x44, 0)) in urtw_8225v2_rf_init()
2701 if (error = urtw_set_mode(sc, URTW_EPROM_CMD_NORMAL)) in urtw_8225v2_rf_init()
2703 if (error = urtw_8185_rf_pins_enable(sc)) in urtw_8225v2_rf_init()
2709 if (error = urtw_8225_write_c(sc, urtw_8225v2_rf_part1[i].reg, in urtw_8225v2_rf_init()
2716 if (error = urtw_8225_write_c(sc, 0x0, 0x1b7)) in urtw_8225v2_rf_init()
2720 if (error = urtw_8225_write_c(sc, 0x1, (uint8_t)(i + 1))) in urtw_8225v2_rf_init()
2723 if (error = urtw_8225_write_c(sc, 0x2, urtw_8225v2_rxgain[i])) in urtw_8225v2_rf_init()
2728 if (error = urtw_8225_write_c(sc, 0x3, 0x2)) in urtw_8225v2_rf_init()
2731 if (error = urtw_8225_write_c(sc, 0x5, 0x4)) in urtw_8225v2_rf_init()
2734 if (error = urtw_8225_write_c(sc, 0x0, 0xb7)) in urtw_8225v2_rf_init()
2737 if (error = urtw_8225_write_c(sc, 0x2, 0xc4d)) in urtw_8225v2_rf_init()
2740 if (error = urtw_8225_write_c(sc, 0x2, 0x44d)) in urtw_8225v2_rf_init()
2744 if (error = urtw_8225_read(sc, 0x6, &data32)) in urtw_8225v2_rf_init()
2752 if (error = urtw_8225_write_c(sc, 0x02, 0x0c4d)) in urtw_8225v2_rf_init()
2755 if (error = urtw_8225_write_c(sc, 0x02, 0x044d)) in urtw_8225v2_rf_init()
2758 if (error = urtw_8225_read(sc, 0x6, &data32)) in urtw_8225v2_rf_init()
2765 if (error = urtw_8225_write_c(sc, 0x0, 0x2bf)) in urtw_8225v2_rf_init()
2768 if (error = urtw_8187_write_phy_ofdm_c(sc, 0xb, in urtw_8225v2_rf_init()
2772 if (error = urtw_8187_write_phy_ofdm_c(sc, 0xa, in urtw_8225v2_rf_init()
2780 if (error = urtw_8187_write_phy_ofdm_c(sc, in urtw_8225v2_rf_init()
2786 error = urtw_8225v2_setgain(sc, 4); in urtw_8225v2_rf_init()
2791 if (error = urtw_8187_write_phy_cck_c(sc, in urtw_8225v2_rf_init()
2798 if (error = urtw_write8_c(sc, 0x5b, 0x0d, 0)) in urtw_8225v2_rf_init()
2800 if (error = urtw_8225v2_set_txpwrlvl(sc, 1)) in urtw_8225v2_rf_init()
2802 if (error = urtw_8187_write_phy_cck_c(sc, 0x10, 0x9b)) in urtw_8225v2_rf_init()
2805 if (error = urtw_8187_write_phy_ofdm_c(sc, 0x26, 0x90)) in urtw_8225v2_rf_init()
2810 if (error = urtw_8185_tx_antenna(sc, 0x3)) in urtw_8225v2_rf_init()
2812 if (error = urtw_write32_c(sc, 0x94, 0x3dc00002, 0)) in urtw_8225v2_rf_init()
2816 ieee80211_chan2ieee(&sc->sc_ic, sc->sc_ic.ic_curchan)); in urtw_8225v2_rf_init()
2825 struct urtw_softc *sc = rf->rf_sc; in urtw_8225v2_rf_set_chan() local
2826 struct ieee80211com *ic = &sc->sc_ic; in urtw_8225v2_rf_set_chan()
2831 if (error = urtw_8225v2_set_txpwrlvl(sc, chan)) in urtw_8225v2_rf_set_chan()
2834 if (error = urtw_8225_write_c(sc, 0x7, urtw_8225_channel[chan])) in urtw_8225v2_rf_set_chan()
2839 if (error = urtw_write8_c(sc, URTW_SIFS, 0x22, 0)) in urtw_8225v2_rf_set_chan()
2844 if (error = urtw_write8_c(sc, URTW_SLOT, 0x9, 0)) in urtw_8225v2_rf_set_chan()
2847 if (error = urtw_write8_c(sc, URTW_SLOT, 0x14, 0)) in urtw_8225v2_rf_set_chan()
2851 if (error = urtw_write8_c(sc, URTW_DIFS, 0x14, 0)) in urtw_8225v2_rf_set_chan()
2853 if (error = urtw_write8_c(sc, URTW_EIFS, 0x5b - 0x14, 0)) in urtw_8225v2_rf_set_chan()
2855 if (error = urtw_write8_c(sc, URTW_CW_VAL, 0x73, 0)) in urtw_8225v2_rf_set_chan()
2859 if (error = urtw_write8_c(sc, URTW_DIFS, 0x24, 0)) in urtw_8225v2_rf_set_chan()
2861 if (error = urtw_write8_c(sc, URTW_EIFS, 0x5b - 0x24, 0)) in urtw_8225v2_rf_set_chan()
2863 if (error = urtw_write8_c(sc, URTW_CW_VAL, 0xa5, 0)) in urtw_8225v2_rf_set_chan()
2872 urtw_set_channel(struct urtw_softc *sc) in urtw_set_channel() argument
2874 struct ieee80211com *ic = &sc->sc_ic; in urtw_set_channel()
2875 struct urtw_rf *rf = &sc->sc_rf; in urtw_set_channel()
2879 if (error = urtw_read32_c(sc, URTW_TX_CONF, &data, 0)) in urtw_set_channel()
2882 if (error = urtw_write32_c(sc, URTW_TX_CONF, in urtw_set_channel()
2889 error = urtw_write32_c(sc, URTW_TX_CONF, in urtw_set_channel()
2899 struct urtw_softc *sc = (struct urtw_softc *)req->bulk_client_private; in urtw_txeof_low() local
2900 struct ieee80211com *ic = &sc->sc_ic; in urtw_txeof_low()
2902 URTW8187_DBG(URTW_DEBUG_TX_PROC, (sc->sc_dev, CE_CONT, in urtw_txeof_low()
2907 sc->sc_tx_low_queued)); in urtw_txeof_low()
2908 mutex_enter(&sc->tx_lock); in urtw_txeof_low()
2914 if (sc->sc_need_sched) { in urtw_txeof_low()
2915 sc->sc_need_sched = 0; in urtw_txeof_low()
2919 sc->sc_tx_low_queued--; in urtw_txeof_low()
2920 mutex_exit(&sc->tx_lock); in urtw_txeof_low()
2928 struct urtw_softc *sc = (struct urtw_softc *)req->bulk_client_private; in urtw_txeof_normal() local
2929 struct ieee80211com *ic = &sc->sc_ic; in urtw_txeof_normal()
2931 URTW8187_DBG(URTW_DEBUG_ACTIVE, (sc->sc_dev, CE_CONT, in urtw_txeof_normal()
2936 sc->sc_tx_normal_queued)); in urtw_txeof_normal()
2938 mutex_enter(&sc->tx_lock); in urtw_txeof_normal()
2944 if (sc->sc_need_sched) { in urtw_txeof_normal()
2945 sc->sc_need_sched = 0; in urtw_txeof_normal()
2949 sc->sc_tx_normal_queued--; in urtw_txeof_normal()
2950 mutex_exit(&sc->tx_lock); in urtw_txeof_normal()
2973 urtw_8187b_update_wmm(struct urtw_softc *sc) in urtw_8187b_update_wmm() argument
2975 struct ieee80211com *ic = &sc->sc_ic; in urtw_8187b_update_wmm()
2994 (void) urtw_write32_c(sc, URTW_AC_VO, data, 0); in urtw_8187b_update_wmm()
2995 (void) urtw_write32_c(sc, URTW_AC_VI, data, 0); in urtw_8187b_update_wmm()
2996 (void) urtw_write32_c(sc, URTW_AC_BE, data, 0); in urtw_8187b_update_wmm()
2997 (void) urtw_write32_c(sc, URTW_AC_BK, data, 0); in urtw_8187b_update_wmm()
3001 urtw_8187b_reset(struct urtw_softc *sc) in urtw_8187b_reset() argument
3006 error = urtw_set_mode(sc, URTW_EPROM_CMD_CONFIG); in urtw_8187b_reset()
3010 (void) urtw_read8_c(sc, URTW_CONFIG3, &data, 0); in urtw_8187b_reset()
3011 (void) urtw_write8_c(sc, URTW_CONFIG3, in urtw_8187b_reset()
3015 (void) urtw_write32_c(sc, URTW_ANAPARAM2, in urtw_8187b_reset()
3017 (void) urtw_write32_c(sc, URTW_ANAPARAM, in urtw_8187b_reset()
3019 (void) urtw_write8_c(sc, URTW_ANAPARAM3, in urtw_8187b_reset()
3022 (void) urtw_write8_c(sc, 0x61, 0x10, 0); in urtw_8187b_reset()
3023 (void) urtw_read8_c(sc, 0x62, &data, 0); in urtw_8187b_reset()
3024 (void) urtw_write8_c(sc, 0x62, data & ~(1 << 5), 0); in urtw_8187b_reset()
3025 (void) urtw_write8_c(sc, 0x62, data | (1 << 5), 0); in urtw_8187b_reset()
3027 (void) urtw_read8_c(sc, URTW_CONFIG3, &data, 0); in urtw_8187b_reset()
3028 (void) urtw_write8_c(sc, URTW_CONFIG3, in urtw_8187b_reset()
3031 error = urtw_set_mode(sc, URTW_EPROM_CMD_NORMAL); in urtw_8187b_reset()
3035 (void) urtw_read8_c(sc, URTW_CMD, &data, 0); in urtw_8187b_reset()
3037 (void) urtw_write8_c(sc, URTW_CMD, data, 0); in urtw_8187b_reset()
3040 (void) urtw_read8_c(sc, URTW_CMD, &data, 0); in urtw_8187b_reset()
3053 struct urtw_softc *sc = arg; in urtw_8187b_init() local
3054 struct urtw_rf *rf = &sc->sc_rf; in urtw_8187b_init()
3055 struct ieee80211com *ic = &sc->sc_ic; in urtw_8187b_init()
3060 urtw_stop(sc); in urtw_8187b_init()
3061 URTW_LOCK(sc); in urtw_8187b_init()
3062 urtw_8187b_update_wmm(sc); in urtw_8187b_init()
3063 error = urtw_8187b_reset(sc); in urtw_8187b_init()
3067 error = urtw_open_pipes(sc); in urtw_8187b_init()
3071 error = urtw_set_mode(sc, URTW_EPROM_CMD_CONFIG); in urtw_8187b_init()
3075 (void) urtw_write8_c(sc, URTW_MAC0 + i, in urtw_8187b_init()
3077 error = urtw_set_mode(sc, URTW_EPROM_CMD_NORMAL); in urtw_8187b_init()
3081 error = urtw_update_msr(sc, IEEE80211_S_INIT); in urtw_8187b_init()
3088 error = urtw_intr_enable(sc); in urtw_8187b_init()
3092 error = urtw_write8e(sc, 0x41, 0xf4); in urtw_8187b_init()
3095 error = urtw_write8e(sc, 0x40, 0x00); in urtw_8187b_init()
3098 error = urtw_write8e(sc, 0x42, 0x00); in urtw_8187b_init()
3101 error = urtw_write8e(sc, 0x42, 0x01); in urtw_8187b_init()
3104 error = urtw_write8e(sc, 0x40, 0x0f); in urtw_8187b_init()
3107 error = urtw_write8e(sc, 0x42, 0x00); in urtw_8187b_init()
3110 error = urtw_write8e(sc, 0x42, 0x01); in urtw_8187b_init()
3114 (void) urtw_read8_c(sc, 0xdb, &data, 0); in urtw_8187b_init()
3115 (void) urtw_write8_c(sc, 0xdb, data | (1 << 2), 0); in urtw_8187b_init()
3116 (void) urtw_write16_c(sc, 0x72, 0x59fa, 3); in urtw_8187b_init()
3117 (void) urtw_write16_c(sc, 0x74, 0x59d2, 3); in urtw_8187b_init()
3118 (void) urtw_write16_c(sc, 0x76, 0x59d2, 3); in urtw_8187b_init()
3119 (void) urtw_write16_c(sc, 0x78, 0x19fa, 3); in urtw_8187b_init()
3120 (void) urtw_write16_c(sc, 0x7a, 0x19fa, 3); in urtw_8187b_init()
3121 (void) urtw_write16_c(sc, 0x7c, 0x00d0, 3); in urtw_8187b_init()
3122 (void) urtw_write8_c(sc, 0x61, 0, 0); in urtw_8187b_init()
3123 (void) urtw_write8_c(sc, 0x80, 0x0f, 1); in urtw_8187b_init()
3124 (void) urtw_write8_c(sc, 0x83, 0x03, 1); in urtw_8187b_init()
3125 (void) urtw_write8_c(sc, 0xda, 0x10, 0); in urtw_8187b_init()
3126 (void) urtw_write8_c(sc, 0x4d, 0x08, 2); in urtw_8187b_init()
3128 (void) urtw_write32_c(sc, URTW_HSSI_PARA, 0x0600321b, 0); in urtw_8187b_init()
3129 (void) urtw_write16_c(sc, 0xec, 0x0800, 1); in urtw_8187b_init()
3130 (void) urtw_write8_c(sc, URTW_ACM_CONTROL, 0, 0); in urtw_8187b_init()
3132 sc->sc_tx_low_queued = 0; in urtw_8187b_init()
3133 sc->sc_tx_normal_queued = 0; in urtw_8187b_init()
3134 error = urtw_rx_enable(sc); in urtw_8187b_init()
3137 urtw_tx_enable(sc); in urtw_8187b_init()
3140 URTW8187_DBG(URTW_DEBUG_ACTIVE, (sc->sc_dev, in urtw_8187b_init()
3142 sc->sc_flags |= URTW_FLAG_RUNNING; in urtw_8187b_init()
3143 URTW_UNLOCK(sc); in urtw_8187b_init()
3149 URTW_UNLOCK(sc); in urtw_8187b_init()
3150 urtw_stop(sc); in urtw_8187b_init()
3155 urtw_8225v2_b_config_mac(struct urtw_softc *sc) in urtw_8225v2_b_config_mac() argument
3162 (void) urtw_write8_c(sc, urtw_8187b_regtbl[i].reg, in urtw_8225v2_b_config_mac()
3166 (void) urtw_write16_c(sc, URTW_TID_AC_MAP, 0xfa50, 0); in urtw_8225v2_b_config_mac()
3167 (void) urtw_write16_c(sc, URTW_INT_MIG, 0, 0); in urtw_8225v2_b_config_mac()
3169 (void) urtw_write32_c(sc, 0xf0, 0, 1); in urtw_8225v2_b_config_mac()
3170 (void) urtw_write32_c(sc, 0xf4, 0, 1); in urtw_8225v2_b_config_mac()
3171 (void) urtw_write8_c(sc, 0xf8, 0, 1); in urtw_8225v2_b_config_mac()
3173 (void) urtw_write32_c(sc, URTW_RF_TIMING, 0x00004001, 0); in urtw_8225v2_b_config_mac()
3177 urtw_8225v2_b_init_rfe(struct urtw_softc *sc) in urtw_8225v2_b_init_rfe() argument
3179 (void) urtw_write16_c(sc, URTW_RF_PINS_OUTPUT, 0x0480, 0); in urtw_8225v2_b_init_rfe()
3180 (void) urtw_write16_c(sc, URTW_RF_PINS_SELECT, 0x2488, 0); in urtw_8225v2_b_init_rfe()
3181 (void) urtw_write16_c(sc, URTW_RF_PINS_ENABLE, 0x1fff, 0); in urtw_8225v2_b_init_rfe()
3186 urtw_8225v2_b_update_chan(struct urtw_softc *sc) in urtw_8225v2_b_update_chan() argument
3188 struct ieee80211com *ic = &sc->sc_ic; in urtw_8225v2_b_update_chan()
3192 (void) urtw_write8_c(sc, URTW_SIFS, 0x22, 0); in urtw_8225v2_b_update_chan()
3206 (void) urtw_write8_c(sc, URTW_SLOT, slot, 0); in urtw_8225v2_b_update_chan()
3208 (void) urtw_write8_c(sc, URTW_AC_VO, aifs, 0); in urtw_8225v2_b_update_chan()
3209 (void) urtw_write8_c(sc, URTW_AC_VI, aifs, 0); in urtw_8225v2_b_update_chan()
3210 (void) urtw_write8_c(sc, URTW_AC_BE, aifs, 0); in urtw_8225v2_b_update_chan()
3211 (void) urtw_write8_c(sc, URTW_AC_BK, aifs, 0); in urtw_8225v2_b_update_chan()
3213 (void) urtw_write8_c(sc, URTW_DIFS, difs, 0); in urtw_8225v2_b_update_chan()
3214 (void) urtw_write8_c(sc, URTW_8187B_EIFS, eifs, 0); in urtw_8225v2_b_update_chan()
3221 struct urtw_softc *sc = rf->rf_sc; in urtw_8225v2_b_rf_init() local
3227 (void) urtw_write16_c(sc, URTW_8187B_BRSR, 0x0fff, 0); in urtw_8225v2_b_rf_init()
3228 (void) urtw_read8_c(sc, URTW_CW_CONF, &data, 0); in urtw_8225v2_b_rf_init()
3229 (void) urtw_write8_c(sc, URTW_CW_CONF, data | in urtw_8225v2_b_rf_init()
3231 (void) urtw_read8_c(sc, URTW_TX_AGC_CTL, &data, 0); in urtw_8225v2_b_rf_init()
3232 (void) urtw_write8_c(sc, URTW_TX_AGC_CTL, data | in urtw_8225v2_b_rf_init()
3237 (void) urtw_write16_c(sc, URTW_ARFR, 0x0fff, 1); /* 1M ~ 54M */ in urtw_8225v2_b_rf_init()
3238 (void) urtw_read8_c(sc, URTW_RATE_FALLBACK, &data, 0); in urtw_8225v2_b_rf_init()
3239 (void) urtw_write8_c(sc, URTW_RATE_FALLBACK, data | in urtw_8225v2_b_rf_init()
3242 (void) urtw_write16_c(sc, URTW_BEACON_INTERVAL, 0x3ff, 0); in urtw_8225v2_b_rf_init()
3243 (void) urtw_write16_c(sc, URTW_ATIM_WND, 2, 0); in urtw_8225v2_b_rf_init()
3244 (void) urtw_write16_c(sc, URTW_FEMR, 0xffff, 1); in urtw_8225v2_b_rf_init()
3246 error = urtw_set_mode(sc, URTW_EPROM_CMD_CONFIG); in urtw_8225v2_b_rf_init()
3249 (void) urtw_read8_c(sc, URTW_CONFIG1, &data, 0); in urtw_8225v2_b_rf_init()
3250 (void) urtw_write8_c(sc, URTW_CONFIG1, (data & 0x3f) | 0x80, 0); in urtw_8225v2_b_rf_init()
3251 error = urtw_set_mode(sc, URTW_EPROM_CMD_NORMAL); in urtw_8225v2_b_rf_init()
3255 (void) urtw_write8_c(sc, URTW_WPA_CONFIG, 0, 0); in urtw_8225v2_b_rf_init()
3256 urtw_8225v2_b_config_mac(sc); in urtw_8225v2_b_rf_init()
3257 (void) urtw_write16_c(sc, URTW_RFSW_CTRL, 0x569a, 2); in urtw_8225v2_b_rf_init()
3259 error = urtw_set_mode(sc, URTW_EPROM_CMD_CONFIG); in urtw_8225v2_b_rf_init()
3262 (void) urtw_read8_c(sc, URTW_CONFIG3, &data, 0); in urtw_8225v2_b_rf_init()
3263 (void) urtw_write8_c(sc, URTW_CONFIG3, in urtw_8225v2_b_rf_init()
3265 error = urtw_set_mode(sc, URTW_EPROM_CMD_NORMAL); in urtw_8225v2_b_rf_init()
3269 urtw_8225v2_b_init_rfe(sc); in urtw_8225v2_b_rf_init()
3273 (void) urtw_8225_write_c(sc, urtw_8225v2_b_rf[i].reg, in urtw_8225v2_b_rf_init()
3279 (void) urtw_8225_write_c(sc, 0x1, (uint8_t)(i + 1)); in urtw_8225v2_b_rf_init()
3280 (void) urtw_8225_write_c(sc, 0x2, urtw_8225v2_rxgain[i]); in urtw_8225v2_b_rf_init()
3283 (void) urtw_8225_write_c(sc, 0x03, 0x080); in urtw_8225v2_b_rf_init()
3284 (void) urtw_8225_write_c(sc, 0x05, 0x004); in urtw_8225v2_b_rf_init()
3285 (void) urtw_8225_write_c(sc, 0x00, 0x0b7); in urtw_8225v2_b_rf_init()
3286 (void) urtw_8225_write_c(sc, 0x02, 0xc4d); in urtw_8225v2_b_rf_init()
3288 (void) urtw_8225_write_c(sc, 0x02, 0x44d); in urtw_8225v2_b_rf_init()
3290 (void) urtw_8225_write_c(sc, 0x00, 0x2bf); in urtw_8225v2_b_rf_init()
3293 (void) urtw_write8_c(sc, URTW_TX_GAIN_CCK, 0x03, 0); in urtw_8225v2_b_rf_init()
3294 (void) urtw_write8_c(sc, URTW_TX_GAIN_OFDM, 0x07, 0); in urtw_8225v2_b_rf_init()
3295 (void) urtw_write8_c(sc, URTW_TX_ANTENNA, 0x03, 0); in urtw_8225v2_b_rf_init()
3297 (void) urtw_8187_write_phy_ofdm_c(sc, 0x80, 0x12); in urtw_8225v2_b_rf_init()
3300 (void) urtw_8187_write_phy_ofdm_c(sc, 0x0f, urtw_8225v2_agc[i]); in urtw_8225v2_b_rf_init()
3301 (void) urtw_8187_write_phy_ofdm_c(sc, 0x0e, (uint8_t)i + 0x80); in urtw_8225v2_b_rf_init()
3302 (void) urtw_8187_write_phy_ofdm_c(sc, 0x0e, 0); in urtw_8225v2_b_rf_init()
3304 (void) urtw_8187_write_phy_ofdm_c(sc, 0x80, 0x10); in urtw_8225v2_b_rf_init()
3308 (void) urtw_8187_write_phy_ofdm_c(sc, i, urtw_8225v2_ofdm[i]); in urtw_8225v2_b_rf_init()
3310 (void) urtw_8225v2_b_update_chan(sc); in urtw_8225v2_b_rf_init()
3312 (void) urtw_8187_write_phy_ofdm_c(sc, 0x97, 0x46); in urtw_8225v2_b_rf_init()
3313 (void) urtw_8187_write_phy_ofdm_c(sc, 0xa4, 0xb6); in urtw_8225v2_b_rf_init()
3314 (void) urtw_8187_write_phy_ofdm_c(sc, 0x85, 0xfc); in urtw_8225v2_b_rf_init()
3315 (void) urtw_8187_write_phy_cck_c(sc, 0xc1, 0x88); in urtw_8225v2_b_rf_init()
3318 ieee80211_chan2ieee(&sc->sc_ic, sc->sc_ic.ic_curchan)); in urtw_8225v2_b_rf_init()
3326 struct urtw_softc *sc = rf->rf_sc; in urtw_8225v2_b_rf_set_chan() local
3329 urtw_8225v2_b_set_txpwrlvl(sc, chan); in urtw_8225v2_b_rf_set_chan()
3330 error = urtw_8225_write_c(sc, 0x7, urtw_8225_channel[chan]); in urtw_8225v2_b_rf_set_chan()
3338 error = urtw_write16_c(sc, URTW_AC_VO, 0x5114, 0); in urtw_8225v2_b_rf_set_chan()
3341 error = urtw_write16_c(sc, URTW_AC_VI, 0x5114, 0); in urtw_8225v2_b_rf_set_chan()
3344 error = urtw_write16_c(sc, URTW_AC_BE, 0x5114, 0); in urtw_8225v2_b_rf_set_chan()
3347 error = urtw_write16_c(sc, URTW_AC_BK, 0x5114, 0); in urtw_8225v2_b_rf_set_chan()
3353 urtw_8225v2_b_set_txpwrlvl(struct urtw_softc *sc, int chan) in urtw_8225v2_b_set_txpwrlvl() argument
3359 int8_t cck_pwrlvl = sc->sc_txpwr_cck[chan] & 0xff; in urtw_8225v2_b_set_txpwrlvl()
3360 int8_t ofdm_pwrlvl = sc->sc_txpwr_ofdm[chan] & 0xff; in urtw_8225v2_b_set_txpwrlvl()
3362 if (sc->sc_hwrev & URTW_HWREV_8187B_B) { in urtw_8225v2_b_set_txpwrlvl()
3378 cck_pwrlvl += sc->sc_txpwr_cck_base; in urtw_8225v2_b_set_txpwrlvl()
3385 if (sc->sc_hwrev & URTW_HWREV_8187B_B) { in urtw_8225v2_b_set_txpwrlvl()
3400 (void) urtw_8187_write_phy_cck_c(sc, 0x44 + i, cck_pwrtable[i]); in urtw_8225v2_b_set_txpwrlvl()
3403 (void) urtw_write8_c(sc, URTW_TX_GAIN_CCK, in urtw_8225v2_b_set_txpwrlvl()
3414 ofdm_pwrlvl += sc->sc_txpwr_ofdm_base; in urtw_8225v2_b_set_txpwrlvl()
3418 (void) urtw_write8_c(sc, URTW_TX_GAIN_OFDM, in urtw_8225v2_b_set_txpwrlvl()
3421 if (sc->sc_hwrev & URTW_HWREV_8187B_B) { in urtw_8225v2_b_set_txpwrlvl()
3423 (void) urtw_8187_write_phy_ofdm_c(sc, 0x87, 0x60); in urtw_8225v2_b_set_txpwrlvl()
3424 (void) urtw_8187_write_phy_ofdm_c(sc, 0x89, 0x60); in urtw_8225v2_b_set_txpwrlvl()
3426 (void) urtw_8187_write_phy_ofdm_c(sc, 0x87, 0x5c); in urtw_8225v2_b_set_txpwrlvl()
3427 (void) urtw_8187_write_phy_ofdm_c(sc, 0x89, 0x5c); in urtw_8225v2_b_set_txpwrlvl()
3431 (void) urtw_8187_write_phy_ofdm_c(sc, 0x87, 0x5c); in urtw_8225v2_b_set_txpwrlvl()
3432 (void) urtw_8187_write_phy_ofdm_c(sc, 0x89, 0x5c); in urtw_8225v2_b_set_txpwrlvl()
3434 (void) urtw_8187_write_phy_ofdm_c(sc, 0x87, 0x54); in urtw_8225v2_b_set_txpwrlvl()
3435 (void) urtw_8187_write_phy_ofdm_c(sc, 0x89, 0x54); in urtw_8225v2_b_set_txpwrlvl()
3437 (void) urtw_8187_write_phy_ofdm_c(sc, 0x87, 0x50); in urtw_8225v2_b_set_txpwrlvl()
3438 (void) urtw_8187_write_phy_ofdm_c(sc, 0x89, 0x50); in urtw_8225v2_b_set_txpwrlvl()
3452 struct urtw_softc *sc = (struct urtw_softc *)ic; in urtw_send() local
3460 mutex_enter(&sc->tx_lock); in urtw_send()
3464 if (URTW_IS_SUSPENDING(sc)) { in urtw_send()
3469 if (((priority)? sc->sc_tx_normal_queued : sc->sc_tx_low_queued) >= in urtw_send()
3471 URTW8187_DBG(URTW_DEBUG_XMIT, (sc->sc_dev, CE_CONT, in urtw_send()
3473 sc->sc_tx_nobuf++; in urtw_send()
3517 if (sc->sc_hwrev & URTW_HWREV_8187) in urtw_send()
3548 if (sc->sc_hwrev & URTW_HWREV_8187) { in urtw_send()
3558 (void) urtw_led_ctl(sc, URTW_LED_CTL_TX); in urtw_send()
3561 URTW8187_DBG(URTW_DEBUG_XMIT, (sc->sc_dev, CE_CONT, in urtw_send()
3565 err = urtw_tx_start(sc, mtx, priority); in urtw_send()
3586 sc->sc_need_sched = 1; in urtw_send()
3588 mutex_exit(&sc->tx_lock); in urtw_send()
3596 struct urtw_softc *sc = (struct urtw_softc *)arg; in urtw_next_scan() local
3598 if (URTW_IS_NOT_RUNNING(sc)) { in urtw_next_scan()
3599 sc->sc_scan_id = 0; in urtw_next_scan()
3606 sc->sc_scan_id = 0; in urtw_next_scan()
3612 struct urtw_softc *sc = arg; in urtw_led_launch() local
3613 ieee80211com_t *ic = &sc->sc_ic; in urtw_led_launch()
3616 URTW_LEDLOCK(sc); in urtw_led_launch()
3617 if ((sc->sc_strategy != URTW_SW_LED_MODE0) || in urtw_led_launch()
3618 URTW_IS_NOT_RUNNING(sc) || in urtw_led_launch()
3619 URTW_IS_SUSPENDING(sc)) { in urtw_led_launch()
3620 URTW8187_DBG(URTW_DEBUG_LED, (sc->sc_dev, CE_CONT, in urtw_led_launch()
3622 sc->sc_strategy, in urtw_led_launch()
3623 sc->sc_flags)); in urtw_led_launch()
3624 sc->sc_led_ch = 0; in urtw_led_launch()
3625 sc->sc_gpio_ledinprogress = 0; in urtw_led_launch()
3626 URTW_LEDUNLOCK(sc); in urtw_led_launch()
3629 error = urtw_led_blink(sc); in urtw_led_launch()
3631 sc->sc_led_ch = timeout(urtw_led_launch, (void *)sc, in urtw_led_launch()
3634 URTW8187_DBG(URTW_DEBUG_LED, (sc->sc_dev, CE_CONT, in urtw_led_launch()
3637 sc->sc_led_ch = 0; in urtw_led_launch()
3638 URTW8187_DBG(URTW_DEBUG_LED, (sc->sc_dev, CE_CONT, in urtw_led_launch()
3641 URTW_LEDUNLOCK(sc); in urtw_led_launch()
3647 struct urtw_softc *sc = (struct urtw_softc *)ic; in urtw_newstate() local
3651 if (sc->sc_scan_id != 0) { in urtw_newstate()
3652 (void) untimeout(sc->sc_scan_id); in urtw_newstate()
3653 sc->sc_scan_id = 0; in urtw_newstate()
3655 URTW_LOCK(sc); in urtw_newstate()
3659 (sc->sc_dev, CE_CONT, "-> IEEE80211_S_INIT...arg(%d)\n", in urtw_newstate()
3661 if (sc->sc_flags & URTW_FLAG_HP) in urtw_newstate()
3663 (void) urtw_update_msr(sc, nstate); in urtw_newstate()
3664 (void) urtw_led_off(sc, URTW_LED_GPIO); in urtw_newstate()
3669 (sc->sc_dev, CE_CONT, in urtw_newstate()
3672 error = urtw_set_channel(sc); in urtw_newstate()
3675 (sc->sc_dev, CE_CONT, "scan setchan failed")); in urtw_newstate()
3678 sc->sc_scan_id = timeout(urtw_next_scan, (void *)sc, in urtw_newstate()
3679 drv_usectohz(sc->dwelltime * 1000)); in urtw_newstate()
3683 URTW8187_DBG(URTW_DEBUG_STATE, (sc->sc_dev, CE_CONT, in urtw_newstate()
3686 error = urtw_set_channel(sc); in urtw_newstate()
3689 (sc->sc_dev, CE_CONT, "auth setchan failed")); in urtw_newstate()
3694 URTW8187_DBG(URTW_DEBUG_STATE, (sc->sc_dev, CE_CONT, in urtw_newstate()
3697 error = urtw_set_channel(sc); in urtw_newstate()
3700 (sc->sc_dev, CE_CONT, "assoc setchan failed")); in urtw_newstate()
3706 (sc->sc_dev, CE_CONT, in urtw_newstate()
3709 error = urtw_set_channel(sc); in urtw_newstate()
3712 (sc->sc_dev, CE_CONT, "run setchan failed")); in urtw_newstate()
3717 (void) urtw_write32_c(sc, URTW_BSSID, in urtw_newstate()
3719 (void) urtw_write16_c(sc, URTW_BSSID + 4, in urtw_newstate()
3721 (void) urtw_update_msr(sc, nstate); in urtw_newstate()
3727 URTW_UNLOCK(sc); in urtw_newstate()
3730 URTW8187_DBG(URTW_DEBUG_STATE, (sc->sc_dev, CE_CONT, in urtw_newstate()
3734 error = sc->sc_newstate(ic, nstate, arg); in urtw_newstate()
3739 urtw_close_pipes(struct urtw_softc *sc) in urtw_close_pipes() argument
3743 if (sc->sc_rxpipe != NULL) { in urtw_close_pipes()
3744 usb_pipe_reset(sc->sc_dev, in urtw_close_pipes()
3745 sc->sc_rxpipe, flags, NULL, 0); in urtw_close_pipes()
3746 usb_pipe_close(sc->sc_dev, in urtw_close_pipes()
3747 sc->sc_rxpipe, flags, NULL, 0); in urtw_close_pipes()
3748 sc->sc_rxpipe = NULL; in urtw_close_pipes()
3751 if (sc->sc_txpipe_low != NULL) { in urtw_close_pipes()
3752 usb_pipe_reset(sc->sc_dev, in urtw_close_pipes()
3753 sc->sc_txpipe_low, flags, NULL, 0); in urtw_close_pipes()
3754 usb_pipe_close(sc->sc_dev, in urtw_close_pipes()
3755 sc->sc_txpipe_low, flags, NULL, 0); in urtw_close_pipes()
3756 sc->sc_txpipe_low = NULL; in urtw_close_pipes()
3759 if (sc->sc_txpipe_normal != NULL) { in urtw_close_pipes()
3760 usb_pipe_reset(sc->sc_dev, in urtw_close_pipes()
3761 sc->sc_txpipe_normal, flags, NULL, 0); in urtw_close_pipes()
3762 usb_pipe_close(sc->sc_dev, in urtw_close_pipes()
3763 sc->sc_txpipe_normal, flags, NULL, 0); in urtw_close_pipes()
3764 sc->sc_txpipe_normal = NULL; in urtw_close_pipes()
3769 urtw_open_pipes(struct urtw_softc *sc) in urtw_open_pipes() argument
3776 if (sc->sc_rxpipe || sc->sc_txpipe_low || sc->sc_txpipe_normal) in urtw_open_pipes()
3779 if ((sc->sc_hwrev & URTW_HWREV_8187) == 0) { in urtw_open_pipes()
3782 ep_node = usb_lookup_ep_data(sc->sc_dev, sc->sc_udev, 0, 0, in urtw_open_pipes()
3788 if ((err = usb_pipe_open(sc->sc_dev, in urtw_open_pipes()
3790 &sc->sc_txpipe_low)) != USB_SUCCESS) { in urtw_open_pipes()
3791 URTW8187_DBG(URTW_DEBUG_ACTIVE, (sc->sc_dev, CE_CONT, in urtw_open_pipes()
3797 ep_node = usb_lookup_ep_data(sc->sc_dev, sc->sc_udev, 0, 0, in urtw_open_pipes()
3803 if ((err = usb_pipe_open(sc->sc_dev, in urtw_open_pipes()
3805 &sc->sc_txpipe_normal)) != USB_SUCCESS) { in urtw_open_pipes()
3806 URTW8187_DBG(URTW_DEBUG_ACTIVE, (sc->sc_dev, CE_CONT, in urtw_open_pipes()
3812 ep_node = usb_lookup_ep_data(sc->sc_dev, sc->sc_udev, 0, 0, 0, in urtw_open_pipes()
3818 if ((err = usb_pipe_open(sc->sc_dev, in urtw_open_pipes()
3820 &sc->sc_rxpipe)) != USB_SUCCESS) { in urtw_open_pipes()
3821 URTW8187_DBG(URTW_DEBUG_ACTIVE, (sc->sc_dev, CE_CONT, in urtw_open_pipes()
3829 urtw_close_pipes(sc); in urtw_open_pipes()
3834 urtw_tx_start(struct urtw_softc *sc, mblk_t *mp, int priority) in urtw_tx_start() argument
3839 req = usb_alloc_bulk_req(sc->sc_dev, 0, USB_FLAGS_SLEEP); in urtw_tx_start()
3841 URTW8187_DBG(URTW_DEBUG_TX_PROC, (sc->sc_dev, CE_CONT, in urtw_tx_start()
3849 req->bulk_client_private = (usb_opaque_t)sc; in urtw_tx_start()
3858 (priority)?sc->sc_txpipe_normal:sc->sc_txpipe_low, req, 0)) in urtw_tx_start()
3860 sc->sc_ic.ic_stats.is_tx_failed++; in urtw_tx_start()
3861 URTW8187_DBG(URTW_DEBUG_TX_PROC, (sc->sc_dev, CE_CONT, in urtw_tx_start()
3868 sc->sc_tx_normal_queued++; in urtw_tx_start()
3870 sc->sc_tx_low_queued++; in urtw_tx_start()
3877 urtw_rx_start(struct urtw_softc *sc) in urtw_rx_start() argument
3882 req = usb_alloc_bulk_req(sc->sc_dev, URTW_RXBUF_SIZE, USB_FLAGS_SLEEP); in urtw_rx_start()
3884 URTW8187_DBG(URTW_DEBUG_RECV, (sc->sc_dev, CE_CONT, in urtw_rx_start()
3890 req->bulk_client_private = (usb_opaque_t)sc; in urtw_rx_start()
3899 err = usb_pipe_bulk_xfer(sc->sc_rxpipe, req, 0); in urtw_rx_start()
3902 URTW8187_DBG(URTW_DEBUG_RECV, (sc->sc_dev, CE_CONT, in urtw_rx_start()
3908 mutex_enter(&sc->rx_lock); in urtw_rx_start()
3909 sc->rx_queued++; in urtw_rx_start()
3910 mutex_exit(&sc->rx_lock); in urtw_rx_start()
3918 struct urtw_softc *sc; in urtw_disconnect() local
3920 sc = ddi_get_soft_state(urtw_soft_state_p, ddi_get_instance(devinfo)); in urtw_disconnect()
3922 (sc->sc_dev, CE_CONT, "urtw_offline()\n")); in urtw_disconnect()
3924 if (URTW_IS_RUNNING(sc)) { in urtw_disconnect()
3925 urtw_stop(sc); in urtw_disconnect()
3926 URTW_LOCK(sc); in urtw_disconnect()
3927 sc->sc_flags |= URTW_FLAG_PLUGIN_ONLINE; in urtw_disconnect()
3928 URTW_UNLOCK(sc); in urtw_disconnect()
3930 sc->sc_flags |= URTW_FLAG_HP; in urtw_disconnect()
3931 ieee80211_new_state(&sc->sc_ic, IEEE80211_S_INIT, -1); in urtw_disconnect()
3932 ieee80211_stop_watchdog(&sc->sc_ic); in urtw_disconnect()
3939 struct urtw_softc *sc; in urtw_reconnect() local
3941 sc = ddi_get_soft_state(urtw_soft_state_p, ddi_get_instance(devinfo)); in urtw_reconnect()
3942 if (usb_check_same_device(sc->sc_dev, NULL, USB_LOG_L2, -1, in urtw_reconnect()
3945 URTW8187_DBG(URTW_DEBUG_HOTPLUG, (sc->sc_dev, CE_CONT, in urtw_reconnect()
3947 sc->sc_flags &= ~URTW_FLAG_HP; in urtw_reconnect()
3948 if (URTW_IS_PLUGIN_ONLINE(sc)) { in urtw_reconnect()
3949 error = sc->urtw_init(sc); in urtw_reconnect()
3951 URTW_LOCK(sc); in urtw_reconnect()
3952 sc->sc_flags &= ~URTW_FLAG_PLUGIN_ONLINE; in urtw_reconnect()
3953 URTW_UNLOCK(sc); in urtw_reconnect()
3962 struct urtw_softc *sc = (struct urtw_softc *)arg; in urtw_m_tx() local
3963 struct ieee80211com *ic = &sc->sc_ic; in urtw_m_tx()
3967 URTW_IS_SUSPENDING(sc)) { in urtw_m_tx()
3987 struct urtw_softc *sc = (struct urtw_softc *)arg; in urtw_m_start() local
3991 (sc->sc_dev, CE_CONT, "urtw_m_start\n")); in urtw_m_start()
3992 error = sc->urtw_init(sc); in urtw_m_start()
3999 struct urtw_softc *sc = (struct urtw_softc *)arg; in urtw_m_stop() local
4001 URTW8187_DBG(URTW_DEBUG_ACTIVE, (sc->sc_dev, CE_CONT, in urtw_m_stop()
4003 ieee80211_new_state(&sc->sc_ic, IEEE80211_S_INIT, -1); in urtw_m_stop()
4004 ieee80211_stop_watchdog(&sc->sc_ic); in urtw_m_stop()
4005 (void) urtw_stop(sc); in urtw_m_stop()
4033 struct urtw_softc *sc = (struct urtw_softc *)arg; in urtw_m_getprop() local
4036 err = ieee80211_getprop(&sc->sc_ic, pr_name, wldp_pr_num, in urtw_m_getprop()
4045 struct urtw_softc *sc = (struct urtw_softc *)arg; in urtw_m_propinfo() local
4047 ieee80211_propinfo(&sc->sc_ic, pr_name, wldp_pr_num, mph); in urtw_m_propinfo()
4054 struct urtw_softc *sc = (struct urtw_softc *)arg; in urtw_m_setprop() local
4055 struct ieee80211com *ic = &sc->sc_ic; in urtw_m_setprop()
4060 URTW_LOCK(sc); in urtw_m_setprop()
4062 if (URTW_IS_RUNNING(sc) && ic->ic_des_esslen) { in urtw_m_setprop()
4063 URTW_UNLOCK(sc); in urtw_m_setprop()
4064 err = sc->urtw_init(sc); in urtw_m_setprop()
4067 (sc->sc_dev, CE_CONT, in urtw_m_setprop()
4072 URTW_LOCK(sc); in urtw_m_setprop()
4076 URTW_UNLOCK(sc); in urtw_m_setprop()
4083 struct urtw_softc *sc = (struct urtw_softc *)arg; in urtw_m_ioctl() local
4084 struct ieee80211com *ic = &sc->sc_ic; in urtw_m_ioctl()
4088 URTW_LOCK(sc); in urtw_m_ioctl()
4090 if (URTW_IS_RUNNING(sc) && ic->ic_des_esslen) { in urtw_m_ioctl()
4091 URTW_UNLOCK(sc); in urtw_m_ioctl()
4092 err = sc->urtw_init(sc); in urtw_m_ioctl()
4095 (sc->sc_dev, in urtw_m_ioctl()
4100 URTW_LOCK(sc); in urtw_m_ioctl()
4103 URTW_UNLOCK(sc); in urtw_m_ioctl()
4109 struct urtw_softc *sc = (struct urtw_softc *)arg; in urtw_m_stat() local
4110 ieee80211com_t *ic = &sc->sc_ic; in urtw_m_stat()
4114 URTW_LOCK(sc); in urtw_m_stat()
4124 *val = sc->sc_tx_nobuf; in urtw_m_stat()
4127 *val = sc->sc_rx_nobuf; in urtw_m_stat()
4130 *val = sc->sc_rx_err; in urtw_m_stat()
4159 URTW_UNLOCK(sc); in urtw_m_stat()
4162 URTW_UNLOCK(sc); in urtw_m_stat()
4165 URTW_UNLOCK(sc); in urtw_m_stat()
4173 struct urtw_softc *sc = arg; in urtw_watchdog() local
4174 struct ieee80211com *ic = &sc->sc_ic; in urtw_watchdog()
4178 URTW_LOCK(sc); in urtw_watchdog()
4179 if (URTW_IS_NOT_RUNNING(sc)) { in urtw_watchdog()
4180 URTW_UNLOCK(sc); in urtw_watchdog()
4184 URTW_UNLOCK(sc); in urtw_watchdog()
4191 (sc->sc_dev, CE_CONT, in urtw_watchdog()
4203 struct urtw_softc *sc; in urtw_attach() local
4218 sc = ddi_get_soft_state(urtw_soft_state_p, in urtw_attach()
4220 ASSERT(sc != NULL); in urtw_attach()
4222 (sc->sc_dev, CE_CONT, "urtw: resume\n")); in urtw_attach()
4223 URTW_LOCK(sc); in urtw_attach()
4224 sc->sc_flags &= ~URTW_FLAG_SUSPEND; in urtw_attach()
4225 URTW_UNLOCK(sc); in urtw_attach()
4226 if (URTW_IS_PLUGIN_ONLINE(sc)) { in urtw_attach()
4227 error = sc->urtw_init(sc); in urtw_attach()
4229 URTW_LOCK(sc); in urtw_attach()
4230 sc->sc_flags &= ~URTW_FLAG_PLUGIN_ONLINE; in urtw_attach()
4231 URTW_UNLOCK(sc); in urtw_attach()
4246 sc = ddi_get_soft_state(urtw_soft_state_p, instance); in urtw_attach()
4247 ic = (ieee80211com_t *)&sc->sc_ic; in urtw_attach()
4248 sc->sc_dev = devinfo; in urtw_attach()
4255 if (usb_get_dev_data(devinfo, &sc->sc_udev, in urtw_attach()
4257 sc->sc_udev = NULL; in urtw_attach()
4261 mutex_init(&sc->sc_genlock, NULL, MUTEX_DRIVER, NULL); in urtw_attach()
4262 mutex_init(&sc->tx_lock, NULL, MUTEX_DRIVER, NULL); in urtw_attach()
4263 mutex_init(&sc->rx_lock, NULL, MUTEX_DRIVER, NULL); in urtw_attach()
4264 mutex_init(&sc->sc_ledlock, NULL, MUTEX_DRIVER, NULL); in urtw_attach()
4266 e = urtw_lookup(sc->sc_udev->dev_descr->idVendor, in urtw_attach()
4267 sc->sc_udev->dev_descr->idProduct); in urtw_attach()
4272 sc->sc_hwrev = e->rev; in urtw_attach()
4274 if (sc->sc_hwrev & URTW_HWREV_8187) { in urtw_attach()
4275 (void) urtw_read32_c(sc, URTW_TX_CONF, &data, 0); in urtw_attach()
4279 sc->sc_hwrev |= URTW_HWREV_8187_D; in urtw_attach()
4287 sc->sc_hwrev = URTW_HWREV_8187B | URTW_HWREV_8187B_B; in urtw_attach()
4291 sc->sc_hwrev |= URTW_HWREV_8187_B; in urtw_attach()
4297 (void) urtw_read8_c(sc, URTW_8187B_HWREV, &data8, 0); in urtw_attach()
4300 sc->sc_hwrev |= URTW_HWREV_8187B_B; in urtw_attach()
4304 sc->sc_hwrev |= URTW_HWREV_8187B_D; in urtw_attach()
4308 sc->sc_hwrev |= URTW_HWREV_8187B_E; in urtw_attach()
4312 sc->sc_hwrev |= URTW_HWREV_8187B_B; in urtw_attach()
4318 URTW8187_DBG(URTW_DEBUG_HWTYPE, (sc->sc_dev, CE_CONT, in urtw_attach()
4320 if (sc->sc_hwrev & URTW_HWREV_8187) { in urtw_attach()
4321 sc->urtw_init = urtw_8187_init; in urtw_attach()
4323 sc->urtw_init = urtw_8187b_init; in urtw_attach()
4326 if (urtw_read32_c(sc, URTW_RX, &data, 0)) in urtw_attach()
4328 sc->sc_epromtype = (data & URTW_RX_9356SEL) ? URTW_EEPROM_93C56 : in urtw_attach()
4330 if (sc->sc_epromtype == URTW_EEPROM_93C56) in urtw_attach()
4331 URTW8187_DBG(URTW_DEBUG_HWTYPE, (sc->sc_dev, CE_CONT, in urtw_attach()
4334 URTW8187_DBG(URTW_DEBUG_HWTYPE, (sc->sc_dev, CE_CONT, in urtw_attach()
4336 error = urtw_get_rfchip(sc); in urtw_attach()
4339 error = urtw_get_macaddr(sc); in urtw_attach()
4342 error = urtw_get_txpwr(sc); in urtw_attach()
4345 error = urtw_led_init(sc); /* XXX incompleted */ in urtw_attach()
4349 sc->sc_rts_retry = URTW_DEFAULT_RTS_RETRY; in urtw_attach()
4350 sc->sc_tx_retry = URTW_DEFAULT_TX_RETRY; in urtw_attach()
4351 sc->sc_currate = 3; in urtw_attach()
4353 sc->sc_preamble_mode = 2; in urtw_attach()
4388 sc->sc_newstate = ic->ic_newstate; in urtw_attach()
4394 sc->dwelltime = 250; in urtw_attach()
4395 sc->sc_flags = 0; in urtw_attach()
4406 URTW8187_DBG(URTW_DEBUG_ATTACH, (sc->sc_dev, CE_CONT, in urtw_attach()
4412 macp->m_driver = sc; in urtw_attach()
4449 URTW8187_DBG(URTW_DEBUG_ATTACH, (sc->sc_dev, CE_CONT, in urtw_attach()
4458 mutex_destroy(&sc->sc_genlock); in urtw_attach()
4459 mutex_destroy(&sc->tx_lock); in urtw_attach()
4460 mutex_destroy(&sc->rx_lock); in urtw_attach()
4461 mutex_destroy(&sc->sc_ledlock); in urtw_attach()
4463 usb_client_detach(sc->sc_dev, sc->sc_udev); in urtw_attach()
4473 struct urtw_softc *sc; in urtw_detach() local
4475 sc = ddi_get_soft_state(urtw_soft_state_p, ddi_get_instance(devinfo)); in urtw_detach()
4476 URTW8187_DBG(URTW_DEBUG_ATTACH, (sc->sc_dev, in urtw_detach()
4484 (sc->sc_dev, CE_CONT, "urtw: suspend\n")); in urtw_detach()
4486 ieee80211_new_state(&sc->sc_ic, IEEE80211_S_INIT, -1); in urtw_detach()
4487 ieee80211_stop_watchdog(&sc->sc_ic); in urtw_detach()
4489 URTW_LOCK(sc); in urtw_detach()
4490 sc->sc_flags |= URTW_FLAG_SUSPEND; in urtw_detach()
4491 URTW_UNLOCK(sc); in urtw_detach()
4492 if (URTW_IS_RUNNING(sc)) { in urtw_detach()
4493 urtw_stop(sc); in urtw_detach()
4494 URTW_LOCK(sc); in urtw_detach()
4495 sc->sc_flags |= URTW_FLAG_PLUGIN_ONLINE; in urtw_detach()
4496 URTW_UNLOCK(sc); in urtw_detach()
4503 if (mac_disable(sc->sc_ic.ic_mach) != 0) in urtw_detach()
4505 urtw_stop(sc); in urtw_detach()
4509 (void) mac_unregister(sc->sc_ic.ic_mach); in urtw_detach()
4511 ieee80211_detach(&sc->sc_ic); in urtw_detach()
4513 usb_client_detach(devinfo, sc->sc_udev); in urtw_detach()
4514 mutex_destroy(&sc->sc_genlock); in urtw_detach()
4515 mutex_destroy(&sc->tx_lock); in urtw_detach()
4516 mutex_destroy(&sc->rx_lock); in urtw_detach()
4517 mutex_destroy(&sc->sc_ledlock); in urtw_detach()
4518 sc->sc_udev = NULL; in urtw_detach()