Lines Matching refs:sc

600 urtw_led_init(struct urtw_softc *sc)  in urtw_led_init()  argument
605 if (error = urtw_read8_c(sc, URTW_PSR, &sc->sc_psr, 0)) in urtw_led_init()
607 error = urtw_eprom_read32(sc, URTW_EPROM_SWREV, &rev); in urtw_led_init()
613 sc->sc_strategy = URTW_SW_LED_MODE1; in urtw_led_init()
616 sc->sc_strategy = URTW_SW_LED_MODE3; in urtw_led_init()
619 sc->sc_strategy = URTW_HW_LED; in urtw_led_init()
624 sc->sc_strategy = URTW_SW_LED_MODE0; in urtw_led_init()
628 sc->sc_gpio_ledpin = URTW_LED_PIN_GPIO0; in urtw_led_init()
635 urtw_8225_write_s16(struct urtw_softc *sc, uint8_t addr, int index, in urtw_8225_write_s16() argument
662 error = usb_pipe_ctrl_xfer_wait(sc->sc_udev->dev_default_ph, &req, &mp, in urtw_8225_write_s16()
665 URTW8187_DBG(URTW_DEBUG_DEVREQ, (sc->sc_dev, CE_CONT, in urtw_8225_write_s16()
676 urtw_8225_read(struct urtw_softc *sc, uint8_t addr, uint32_t *data) in urtw_8225_read() argument
686 if (error = urtw_read16_c(sc, URTW_RF_PINS_OUTPUT, &o1, 0)) in urtw_8225_read()
688 if (error = urtw_read16_c(sc, URTW_RF_PINS_ENABLE, &o2, 0)) in urtw_8225_read()
690 if (error = urtw_read16_c(sc, URTW_RF_PINS_SELECT, &o3, 0)) in urtw_8225_read()
692 if (error = urtw_write16_c(sc, URTW_RF_PINS_ENABLE, o2 | 0xf, 0)) in urtw_8225_read()
694 if (error = urtw_write16_c(sc, URTW_RF_PINS_SELECT, o3 | 0xf, 0)) in urtw_8225_read()
697 if (error = urtw_write16_c(sc, URTW_RF_PINS_OUTPUT, in urtw_8225_read()
701 if (error = urtw_write16_c(sc, URTW_RF_PINS_OUTPUT, o1, 0)) 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()
716 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()
732 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()
745 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()
764 if (error = urtw_write16_c(sc, URTW_RF_PINS_OUTPUT, in urtw_8225_read()
769 if (error = urtw_read16_c(sc, URTW_RF_PINS_INPUT, &tmp, 0)) in urtw_8225_read()
772 if (error = urtw_write16_c(sc, URTW_RF_PINS_OUTPUT, in urtw_8225_read()
778 if (error = urtw_write16_c(sc, URTW_RF_PINS_OUTPUT, in urtw_8225_read()
784 if (error = urtw_write16_c(sc, URTW_RF_PINS_ENABLE, o2, 0)) in urtw_8225_read()
786 if (error = urtw_write16_c(sc, URTW_RF_PINS_SELECT, o3, 0)) in urtw_8225_read()
788 error = urtw_write16_c(sc, URTW_RF_PINS_OUTPUT, 0x3a0, 0); in urtw_8225_read()
803 urtw_8225_write_c(struct urtw_softc *sc, uint8_t addr, uint16_t data) in urtw_8225_write_c() argument
808 if (error = urtw_read16_c(sc, URTW_RF_PINS_OUTPUT, &d80, 0)) in urtw_8225_write_c()
811 if (error = urtw_read16_c(sc, URTW_RF_PINS_ENABLE, &d82, 0)) in urtw_8225_write_c()
813 if (error = urtw_read16_c(sc, URTW_RF_PINS_SELECT, &d84, 0)) in urtw_8225_write_c()
816 if (error = urtw_write16_c(sc, URTW_RF_PINS_ENABLE, in urtw_8225_write_c()
819 if (error = urtw_write16_c(sc, URTW_RF_PINS_SELECT, in urtw_8225_write_c()
823 if (error = urtw_write16_c(sc, URTW_RF_PINS_OUTPUT, in urtw_8225_write_c()
827 if (error = urtw_write16_c(sc, URTW_RF_PINS_OUTPUT, d80, 0)) in urtw_8225_write_c()
830 error = urtw_8225_write_s16(sc, addr, 0x8225, &data); in urtw_8225_write_c()
834 if (error = urtw_write16_c(sc, URTW_RF_PINS_OUTPUT, in urtw_8225_write_c()
837 if (error = urtw_write16_c(sc, URTW_RF_PINS_OUTPUT, in urtw_8225_write_c()
840 error = urtw_write16_c(sc, URTW_RF_PINS_SELECT, d84, 0); in urtw_8225_write_c()
847 urtw_8225_isv2(struct urtw_softc *sc, int *ret) in urtw_8225_isv2() argument
854 if (error = urtw_write16_c(sc, URTW_RF_PINS_OUTPUT, 0x0080, 0)) in urtw_8225_isv2()
856 if (error = urtw_write16_c(sc, URTW_RF_PINS_SELECT, 0x0080, 0)) in urtw_8225_isv2()
858 if (error = urtw_write16_c(sc, URTW_RF_PINS_ENABLE, 0x0080, 0)) in urtw_8225_isv2()
862 if (error = urtw_8225_write_c(sc, 0x0, 0x1b7)) in urtw_8225_isv2()
865 error = urtw_8225_read(sc, 0x8, &data); in urtw_8225_isv2()
871 error = urtw_8225_read(sc, 0x9, &data); in urtw_8225_isv2()
878 error = urtw_8225_write_c(sc, 0x0, 0xb7); in urtw_8225_isv2()
884 urtw_get_rfchip(struct urtw_softc *sc) in urtw_get_rfchip() argument
886 struct urtw_rf *rf = &sc->sc_rf; in urtw_get_rfchip()
891 rf->rf_sc = sc; in urtw_get_rfchip()
893 if (sc->sc_hwrev & URTW_HWREV_8187) { in urtw_get_rfchip()
894 error = urtw_eprom_read32(sc, URTW_EPROM_RFCHIPID, &data); in urtw_get_rfchip()
901 error = urtw_8225_isv2(sc, &ret); in urtw_get_rfchip()
904 (sc->sc_dev, CE_CONT, in urtw_get_rfchip()
910 (sc->sc_dev, CE_CONT, in urtw_get_rfchip()
917 (sc->sc_dev, CE_CONT, in urtw_get_rfchip()
929 (sc->sc_dev, CE_CONT, in urtw_get_rfchip()
947 urtw_get_txpwr(struct urtw_softc *sc) in urtw_get_txpwr() argument
953 error = urtw_eprom_read32(sc, URTW_EPROM_TXPW_BASE, &data); in urtw_get_txpwr()
956 sc->sc_txpwr_cck_base = data & 0xf; in urtw_get_txpwr()
957 sc->sc_txpwr_ofdm_base = (data >> 4) & 0xf; in urtw_get_txpwr()
960 error = urtw_eprom_read32(sc, URTW_EPROM_TXPW0 + j, &data); in urtw_get_txpwr()
963 sc->sc_txpwr_cck[i] = data & 0xf; in urtw_get_txpwr()
964 sc->sc_txpwr_cck[i + 1] = (data & 0xf00) >> 8; in urtw_get_txpwr()
965 sc->sc_txpwr_ofdm[i] = (data & 0xf0) >> 4; in urtw_get_txpwr()
966 sc->sc_txpwr_ofdm[i + 1] = (data & 0xf000) >> 12; in urtw_get_txpwr()
969 error = urtw_eprom_read32(sc, URTW_EPROM_TXPW1 + j, &data); in urtw_get_txpwr()
972 sc->sc_txpwr_cck[i + 6] = data & 0xf; in urtw_get_txpwr()
973 sc->sc_txpwr_cck[i + 6 + 1] = (data & 0xf00) >> 8; in urtw_get_txpwr()
974 sc->sc_txpwr_ofdm[i + 6] = (data & 0xf0) >> 4; in urtw_get_txpwr()
975 sc->sc_txpwr_ofdm[i + 6 + 1] = (data & 0xf000) >> 12; in urtw_get_txpwr()
977 if (sc->sc_hwrev & URTW_HWREV_8187) { in urtw_get_txpwr()
979 error = urtw_eprom_read32(sc, URTW_EPROM_TXPW2 + j, in urtw_get_txpwr()
983 sc->sc_txpwr_cck[i + 6 + 4] = data & 0xf; in urtw_get_txpwr()
984 sc->sc_txpwr_cck[i + 6 + 4 + 1] = (data & 0xf00) >> 8; in urtw_get_txpwr()
985 sc->sc_txpwr_ofdm[i + 6 + 4] = (data & 0xf0) >> 4; in urtw_get_txpwr()
986 sc->sc_txpwr_ofdm[i + 6 + 4 + 1] = in urtw_get_txpwr()
991 error = urtw_eprom_read32(sc, 0x1b, &data); in urtw_get_txpwr()
994 sc->sc_txpwr_cck[11] = data & 0xf; in urtw_get_txpwr()
995 sc->sc_txpwr_ofdm[11] = (data & 0xf0) >> 4; in urtw_get_txpwr()
998 error = urtw_eprom_read32(sc, 0xa, &data); in urtw_get_txpwr()
1001 sc->sc_txpwr_cck[12] = data & 0xf; in urtw_get_txpwr()
1002 sc->sc_txpwr_ofdm[12] = (data & 0xf0) >> 4; in urtw_get_txpwr()
1005 error = urtw_eprom_read32(sc, 0x1c, &data); in urtw_get_txpwr()
1008 sc->sc_txpwr_cck[13] = data & 0xf; in urtw_get_txpwr()
1009 sc->sc_txpwr_ofdm[13] = (data & 0xf0) >> 4; in urtw_get_txpwr()
1010 sc->sc_txpwr_cck[14] = (data & 0xf00) >> 8; in urtw_get_txpwr()
1011 sc->sc_txpwr_ofdm[14] = (data & 0xf000) >> 12; in urtw_get_txpwr()
1019 urtw_get_macaddr(struct urtw_softc *sc) in urtw_get_macaddr() argument
1025 error = urtw_eprom_read32(sc, URTW_EPROM_MACADDR, &data); in urtw_get_macaddr()
1028 sc->sc_bssid[0] = data & 0xff; in urtw_get_macaddr()
1029 sc->sc_bssid[1] = (data & 0xff00) >> 8; in urtw_get_macaddr()
1030 error = urtw_eprom_read32(sc, URTW_EPROM_MACADDR + 1, &data); in urtw_get_macaddr()
1033 sc->sc_bssid[2] = data & 0xff; in urtw_get_macaddr()
1034 sc->sc_bssid[3] = (data & 0xff00) >> 8; in urtw_get_macaddr()
1035 error = urtw_eprom_read32(sc, URTW_EPROM_MACADDR + 2, &data); in urtw_get_macaddr()
1038 sc->sc_bssid[4] = data & 0xff; in urtw_get_macaddr()
1039 sc->sc_bssid[5] = (data & 0xff00) >> 8; in urtw_get_macaddr()
1040 bcopy(sc->sc_bssid, sc->sc_ic.ic_macaddr, IEEE80211_ADDR_LEN); in urtw_get_macaddr()
1041 m = sc->sc_bssid; in urtw_get_macaddr()
1042 URTW8187_DBG(URTW_DEBUG_HWTYPE, (sc->sc_dev, CE_CONT, in urtw_get_macaddr()
1050 urtw_eprom_read32(struct urtw_softc *sc, uint32_t addr, uint32_t *data) in urtw_eprom_read32() argument
1061 if (error = urtw_write8_c(sc, URTW_EPROM_CMD, in urtw_eprom_read32()
1066 error = urtw_eprom_cs(sc, URTW_EPROM_ENABLE); in urtw_eprom_read32()
1069 error = urtw_eprom_ck(sc); in urtw_eprom_read32()
1072 error = urtw_eprom_sendbits(sc, readcmd, URTW_READCMD_LEN); in urtw_eprom_read32()
1075 if (sc->sc_epromtype == URTW_EEPROM_93C56) { in urtw_eprom_read32()
1094 error = urtw_eprom_sendbits(sc, addrstr, addrlen); in urtw_eprom_read32()
1098 error = urtw_eprom_writebit(sc, 0); in urtw_eprom_read32()
1103 error = urtw_eprom_ck(sc); in urtw_eprom_read32()
1106 error = urtw_eprom_readbit(sc, &data16); in urtw_eprom_read32()
1113 error = urtw_eprom_cs(sc, URTW_EPROM_DISABLE); in urtw_eprom_read32()
1116 error = urtw_eprom_ck(sc); in urtw_eprom_read32()
1121 error = urtw_write8_c(sc, URTW_EPROM_CMD, in urtw_eprom_read32()
1129 urtw_eprom_readbit(struct urtw_softc *sc, int16_t *data) in urtw_eprom_readbit() argument
1134 error = urtw_read8_c(sc, URTW_EPROM_CMD, &data8, 0); in urtw_eprom_readbit()
1141 urtw_eprom_sendbits(struct urtw_softc *sc, int16_t *buf, int buflen) in urtw_eprom_sendbits() argument
1147 error = urtw_eprom_writebit(sc, buf[i]); in urtw_eprom_sendbits()
1150 error = urtw_eprom_ck(sc); in urtw_eprom_sendbits()
1159 urtw_eprom_writebit(struct urtw_softc *sc, int16_t bit) in urtw_eprom_writebit() argument
1164 if (error = urtw_read8_c(sc, URTW_EPROM_CMD, &data, 0)) in urtw_eprom_writebit()
1167 error = urtw_write8_c(sc, URTW_EPROM_CMD, in urtw_eprom_writebit()
1170 error = urtw_write8_c(sc, URTW_EPROM_CMD, in urtw_eprom_writebit()
1178 urtw_eprom_ck(struct urtw_softc *sc) in urtw_eprom_ck() argument
1184 if (error = urtw_read8_c(sc, URTW_EPROM_CMD, &data, 0)) in urtw_eprom_ck()
1186 if (error = urtw_write8_c(sc, URTW_EPROM_CMD, data | URTW_EPROM_CK, 0)) in urtw_eprom_ck()
1190 if (error = urtw_read8_c(sc, URTW_EPROM_CMD, &data, 0)) in urtw_eprom_ck()
1192 error = urtw_write8_c(sc, URTW_EPROM_CMD, data & ~URTW_EPROM_CK, 0); in urtw_eprom_ck()
1199 urtw_eprom_cs(struct urtw_softc *sc, int able) in urtw_eprom_cs() argument
1204 if (error = urtw_read8_c(sc, URTW_EPROM_CMD, &data, 0)) in urtw_eprom_cs()
1207 error = urtw_write8_c(sc, URTW_EPROM_CMD, in urtw_eprom_cs()
1210 error = urtw_write8_c(sc, URTW_EPROM_CMD, in urtw_eprom_cs()
1218 urtw_read8_c(struct urtw_softc *sc, int val, uint8_t *data, uint8_t idx) in urtw_read8_c() argument
1233 error = usb_pipe_ctrl_xfer_wait(sc->sc_udev->dev_default_ph, &req, &mp, in urtw_read8_c()
1237 URTW8187_DBG(URTW_DEBUG_DEVREQ, (sc->sc_dev, CE_CONT, in urtw_read8_c()
1249 urtw_read8e(struct urtw_softc *sc, int val, uint8_t *data) in urtw_read8e() argument
1264 error = usb_pipe_ctrl_xfer_wait(sc->sc_udev->dev_default_ph, &req, &mp, in urtw_read8e()
1268 URTW8187_DBG(URTW_DEBUG_DEVREQ, (sc->sc_dev, CE_CONT, in urtw_read8e()
1282 urtw_read16_c(struct urtw_softc *sc, int val, uint16_t *data, uint8_t idx) in urtw_read16_c() argument
1297 error = usb_pipe_ctrl_xfer_wait(sc->sc_udev->dev_default_ph, &req, &mp, in urtw_read16_c()
1301 URTW8187_DBG(URTW_DEBUG_DEVREQ, (sc->sc_dev, CE_CONT, in urtw_read16_c()
1315 urtw_read32_c(struct urtw_softc *sc, int val, uint32_t *data, uint8_t idx) in urtw_read32_c() argument
1331 error = usb_pipe_ctrl_xfer_wait(sc->sc_udev->dev_default_ph, &req, &mp, in urtw_read32_c()
1335 URTW8187_DBG(URTW_DEBUG_DEVREQ, (sc->sc_dev, CE_CONT, in urtw_read32_c()
1349 urtw_write8_c(struct urtw_softc *sc, int val, uint8_t data, uint8_t idx) in urtw_write8_c() argument
1372 error = usb_pipe_ctrl_xfer_wait(sc->sc_udev->dev_default_ph, &req, &mp, in urtw_write8_c()
1375 URTW8187_DBG(URTW_DEBUG_DEVREQ, (sc->sc_dev, CE_CONT, in urtw_write8_c()
1385 urtw_write8e(struct urtw_softc *sc, int val, uint8_t data) in urtw_write8e() argument
1409 error = usb_pipe_ctrl_xfer_wait(sc->sc_udev->dev_default_ph, &req, &mp, in urtw_write8e()
1412 URTW8187_DBG(URTW_DEBUG_DEVREQ, (sc->sc_dev, CE_CONT, in urtw_write8e()
1423 urtw_write16_c(struct urtw_softc *sc, int val, uint16_t data, uint8_t idx) in urtw_write16_c() argument
1446 error = usb_pipe_ctrl_xfer_wait(sc->sc_udev->dev_default_ph, &req, &mp, in urtw_write16_c()
1449 URTW8187_DBG(URTW_DEBUG_DEVREQ, (sc->sc_dev, CE_CONT, in urtw_write16_c()
1460 urtw_write32_c(struct urtw_softc *sc, int val, uint32_t data, uint8_t idx) in urtw_write32_c() argument
1483 error = usb_pipe_ctrl_xfer_wait(sc->sc_udev->dev_default_ph, &req, &mp, in urtw_write32_c()
1486 URTW8187_DBG(URTW_DEBUG_DEVREQ, (sc->sc_dev, CE_CONT, in urtw_write32_c()
1498 urtw_set_mode(struct urtw_softc *sc, uint32_t mode) in urtw_set_mode() argument
1503 if (error = urtw_read8_c(sc, URTW_EPROM_CMD, &data, 0)) in urtw_set_mode()
1507 error = urtw_write8_c(sc, URTW_EPROM_CMD, data, 0); in urtw_set_mode()
1513 urtw_8180_set_anaparam(struct urtw_softc *sc, uint32_t val) in urtw_8180_set_anaparam() argument
1518 error = urtw_set_mode(sc, URTW_EPROM_CMD_CONFIG); in urtw_8180_set_anaparam()
1522 if (error = urtw_read8_c(sc, URTW_CONFIG3, &data, 0)) in urtw_8180_set_anaparam()
1524 if (error = urtw_write8_c(sc, URTW_CONFIG3, in urtw_8180_set_anaparam()
1527 if (error = urtw_write32_c(sc, URTW_ANAPARAM, val, 0)) in urtw_8180_set_anaparam()
1529 if (error = urtw_read8_c(sc, URTW_CONFIG3, &data, 0)) in urtw_8180_set_anaparam()
1531 if (error = urtw_write8_c(sc, URTW_CONFIG3, in urtw_8180_set_anaparam()
1535 error = urtw_set_mode(sc, URTW_EPROM_CMD_NORMAL); in urtw_8180_set_anaparam()
1543 urtw_8185_set_anaparam2(struct urtw_softc *sc, uint32_t val) in urtw_8185_set_anaparam2() argument
1548 error = urtw_set_mode(sc, URTW_EPROM_CMD_CONFIG); in urtw_8185_set_anaparam2()
1552 if (error = urtw_read8_c(sc, URTW_CONFIG3, &data, 0)) in urtw_8185_set_anaparam2()
1554 if (error = urtw_write8_c(sc, URTW_CONFIG3, in urtw_8185_set_anaparam2()
1557 if (error = urtw_write32_c(sc, URTW_ANAPARAM2, val, 0)) in urtw_8185_set_anaparam2()
1559 if (error = urtw_read8_c(sc, URTW_CONFIG3, &data, 0)) in urtw_8185_set_anaparam2()
1561 if (error = urtw_write8_c(sc, URTW_CONFIG3, in urtw_8185_set_anaparam2()
1565 error = urtw_set_mode(sc, URTW_EPROM_CMD_NORMAL); in urtw_8185_set_anaparam2()
1573 urtw_intr_disable(struct urtw_softc *sc) in urtw_intr_disable() argument
1577 error = urtw_write16_c(sc, URTW_INTR_MASK, 0, 0); in urtw_intr_disable()
1582 urtw_8187_reset(struct urtw_softc *sc) in urtw_8187_reset() argument
1587 error = urtw_8180_set_anaparam(sc, URTW_8187_8225_ANAPARAM_ON); in urtw_8187_reset()
1590 error = urtw_8185_set_anaparam2(sc, URTW_8187_8225_ANAPARAM2_ON); in urtw_8187_reset()
1594 error = urtw_intr_disable(sc); in urtw_8187_reset()
1599 error = urtw_write8e(sc, 0x18, 0x10); in urtw_8187_reset()
1602 error = urtw_write8e(sc, 0x18, 0x11); in urtw_8187_reset()
1605 error = urtw_write8e(sc, 0x18, 0x00); in urtw_8187_reset()
1610 if (error = urtw_read8_c(sc, URTW_CMD, &data, 0)) in urtw_8187_reset()
1613 if (error = urtw_write8_c(sc, URTW_CMD, data, 0)) in urtw_8187_reset()
1617 if (error = urtw_read8_c(sc, URTW_CMD, &data, 0)) in urtw_8187_reset()
1623 error = urtw_set_mode(sc, URTW_EPROM_CMD_LOAD); in urtw_8187_reset()
1628 error = urtw_8180_set_anaparam(sc, URTW_8187_8225_ANAPARAM_ON); in urtw_8187_reset()
1631 error = urtw_8185_set_anaparam2(sc, URTW_8187_8225_ANAPARAM2_ON); in urtw_8187_reset()
1639 urtw_led_on(struct urtw_softc *sc, int type) in urtw_led_on() argument
1642 switch (sc->sc_gpio_ledpin) { in urtw_led_on()
1644 (void) urtw_write8_c(sc, URTW_GPIO, 0x01, 0); in urtw_led_on()
1645 (void) urtw_write8_c(sc, URTW_GP_ENABLE, 0x00, 0); in urtw_led_on()
1649 sc->sc_gpio_ledpin); in urtw_led_on()
1657 sc->sc_gpio_ledon = 1; in urtw_led_on()
1662 urtw_led_off(struct urtw_softc *sc, int type) in urtw_led_off() argument
1665 switch (sc->sc_gpio_ledpin) { in urtw_led_off()
1667 (void) urtw_write8_c(sc, URTW_GPIO, 0x01, 0); in urtw_led_off()
1668 (void) urtw_write8_c(sc, URTW_GP_ENABLE, 0x01, 0); in urtw_led_off()
1672 sc->sc_gpio_ledpin); in urtw_led_off()
1680 sc->sc_gpio_ledon = 0; in urtw_led_off()
1685 urtw_led_mode0(struct urtw_softc *sc, int mode) in urtw_led_mode0() argument
1687 URTW8187_DBG(URTW_DEBUG_LED, (sc->sc_dev, CE_CONT, in urtw_led_mode0()
1691 sc->sc_gpio_ledstate = URTW_LED_POWER_ON_BLINK; in urtw_led_mode0()
1694 if (sc->sc_gpio_ledinprogress == 1) in urtw_led_mode0()
1696 sc->sc_gpio_ledstate = URTW_LED_BLINK_NORMAL; in urtw_led_mode0()
1697 sc->sc_gpio_blinktime = in urtw_led_mode0()
1698 (sc->sc_ic.ic_state == IEEE80211_S_RUN ? 4:2); in urtw_led_mode0()
1701 sc->sc_gpio_ledstate = URTW_LED_ON; in urtw_led_mode0()
1708 switch (sc->sc_gpio_ledstate) { in urtw_led_mode0()
1710 if (sc->sc_gpio_ledinprogress != 0) in urtw_led_mode0()
1712 (void) urtw_led_on(sc, URTW_LED_GPIO); in urtw_led_mode0()
1715 if (sc->sc_gpio_ledinprogress != 0) in urtw_led_mode0()
1717 sc->sc_gpio_ledinprogress = 1; in urtw_led_mode0()
1718 sc->sc_gpio_blinkstate = (sc->sc_gpio_ledon != 0) ? in urtw_led_mode0()
1720 URTW_LEDLOCK(sc); in urtw_led_mode0()
1721 if (sc->sc_led_ch == 0) { in urtw_led_mode0()
1722 URTW8187_DBG(URTW_DEBUG_LED, (sc->sc_dev, CE_CONT, in urtw_led_mode0()
1724 sc->sc_led_ch = timeout(urtw_led_launch, in urtw_led_mode0()
1725 (void *)sc, in urtw_led_mode0()
1726 drv_usectohz((sc->sc_ic.ic_state == in urtw_led_mode0()
1730 sc->sc_gpio_ledinprogress = 0; in urtw_led_mode0()
1732 URTW_LEDUNLOCK(sc); in urtw_led_mode0()
1735 (void) urtw_led_on(sc, URTW_LED_GPIO); in urtw_led_mode0()
1737 (void) urtw_led_off(sc, URTW_LED_GPIO); in urtw_led_mode0()
1740 URTW8187_DBG(URTW_DEBUG_LED, (sc->sc_dev, CE_CONT, in urtw_led_mode0()
1742 sc->sc_gpio_ledstate)); in urtw_led_mode0()
1748 urtw_led_mode1(struct urtw_softc *sc, int mode) in urtw_led_mode1() argument
1750 cmn_err(CE_WARN, "urtw sc %p, mode %d not supported", (void *)sc, mode); in urtw_led_mode1()
1755 urtw_led_mode2(struct urtw_softc *sc, int mode) in urtw_led_mode2() argument
1757 cmn_err(CE_WARN, "urtw sc %p, mode %d not supported", (void *)sc, mode); in urtw_led_mode2()
1762 urtw_led_mode3(struct urtw_softc *sc, int mode) in urtw_led_mode3() argument
1764 cmn_err(CE_WARN, "urtw sc %p, mode %d not supported", (void *)sc, mode); in urtw_led_mode3()
1769 urtw_led_blink(struct urtw_softc *sc) in urtw_led_blink() argument
1773 URTW8187_DBG(URTW_DEBUG_LED, (sc->sc_dev, CE_CONT, in urtw_led_blink()
1775 sc->sc_gpio_blinkstate)); in urtw_led_blink()
1776 if (sc->sc_gpio_blinkstate == URTW_LED_ON) in urtw_led_blink()
1777 (void) urtw_led_on(sc, URTW_LED_GPIO); in urtw_led_blink()
1779 (void) urtw_led_off(sc, URTW_LED_GPIO); in urtw_led_blink()
1780 sc->sc_gpio_blinktime--; in urtw_led_blink()
1781 if (sc->sc_gpio_blinktime == 0) in urtw_led_blink()
1784 if (sc->sc_gpio_ledstate != URTW_LED_BLINK_NORMAL && in urtw_led_blink()
1785 sc->sc_gpio_ledstate != URTW_LED_BLINK_SLOWLY && in urtw_led_blink()
1786 sc->sc_gpio_ledstate != URTW_LED_BLINK_CM3) in urtw_led_blink()
1790 if (sc->sc_gpio_ledstate == URTW_LED_ON && in urtw_led_blink()
1791 sc->sc_gpio_ledon == 0) in urtw_led_blink()
1792 (void) urtw_led_on(sc, URTW_LED_GPIO); in urtw_led_blink()
1793 else if (sc->sc_gpio_ledstate == URTW_LED_OFF && in urtw_led_blink()
1794 sc->sc_gpio_ledon == 1) in urtw_led_blink()
1795 (void) urtw_led_off(sc, URTW_LED_GPIO); in urtw_led_blink()
1797 sc->sc_gpio_blinktime = 0; in urtw_led_blink()
1798 sc->sc_gpio_ledinprogress = 0; in urtw_led_blink()
1802 sc->sc_gpio_blinkstate = (sc->sc_gpio_blinkstate != URTW_LED_ON) ? in urtw_led_blink()
1805 switch (sc->sc_gpio_ledstate) { in urtw_led_blink()
1807 URTW8187_DBG(URTW_DEBUG_LED, (sc->sc_dev, CE_CONT, in urtw_led_blink()
1811 URTW8187_DBG(URTW_DEBUG_LED, (sc->sc_dev, CE_CONT, in urtw_led_blink()
1812 "unknown LED status 0x%x", sc->sc_gpio_ledstate)); in urtw_led_blink()
1818 urtw_led_ctl(struct urtw_softc *sc, int mode) in urtw_led_ctl() argument
1822 switch (sc->sc_strategy) { in urtw_led_ctl()
1824 error = urtw_led_mode0(sc, mode); in urtw_led_ctl()
1827 error = urtw_led_mode1(sc, mode); in urtw_led_ctl()
1830 error = urtw_led_mode2(sc, mode); in urtw_led_ctl()
1833 error = urtw_led_mode3(sc, mode); in urtw_led_ctl()
1836 cmn_err(CE_CONT, "unsupported LED mode %d\n", sc->sc_strategy); in urtw_led_ctl()
1845 urtw_update_msr(struct urtw_softc *sc, int nstate) in urtw_update_msr() argument
1847 struct ieee80211com *ic = &sc->sc_ic; in urtw_update_msr()
1851 if (error = urtw_read8_c(sc, URTW_MSR, &data, 0)) in urtw_update_msr()
1856 if (sc->sc_hwrev & URTW_HWREV_8187B) in urtw_update_msr()
1879 error = urtw_write8_c(sc, URTW_MSR, data, 0); in urtw_update_msr()
1914 urtw_set_rate(struct urtw_softc *sc) in urtw_set_rate() argument
1923 if (error = urtw_write8_c(sc, URTW_RESP_RATE, in urtw_set_rate()
1928 if (error = urtw_read16_c(sc, URTW_BRSR, &data, 0)) in urtw_set_rate()
1935 error = urtw_write16_c(sc, URTW_BRSR, data, 0); in urtw_set_rate()
1941 urtw_intr_enable(struct urtw_softc *sc) in urtw_intr_enable() argument
1945 error = urtw_write16_c(sc, URTW_INTR_MASK, 0xffff, 0); in urtw_intr_enable()
1950 urtw_rx_setconf(struct urtw_softc *sc) in urtw_rx_setconf() argument
1952 struct ieee80211com *ic = &sc->sc_ic; in urtw_rx_setconf()
1956 if (urtw_read32_c(sc, URTW_RX, &data, 0)) in urtw_rx_setconf()
1966 if (sc->sc_crcmon == 1 && ic->ic_opmode == IEEE80211_M_MONITOR) in urtw_rx_setconf()
1977 error = urtw_write32_c(sc, URTW_RX, data, 0); in urtw_rx_setconf()
1983 urtw_rx_enable(struct urtw_softc *sc) in urtw_rx_enable() argument
1989 sc->rx_queued = 0; in urtw_rx_enable()
1991 if (urtw_rx_start(sc) != 0) { in urtw_rx_enable()
1996 error = urtw_rx_setconf(sc); in urtw_rx_enable()
2000 if (error = urtw_read8_c(sc, URTW_CMD, &data, 0)) in urtw_rx_enable()
2002 error = urtw_write8_c(sc, URTW_CMD, data | URTW_CMD_RX_ENABLE, 0); in urtw_rx_enable()
2008 urtw_tx_enable(struct urtw_softc *sc) in urtw_tx_enable() argument
2013 if (sc->sc_hwrev & URTW_HWREV_8187) { in urtw_tx_enable()
2014 (void) urtw_read8_c(sc, URTW_CW_CONF, &data8, 0); in urtw_tx_enable()
2017 (void) urtw_write8_c(sc, URTW_CW_CONF, data8, 0); in urtw_tx_enable()
2018 (void) urtw_read8_c(sc, URTW_TX_AGC_CTL, &data8, 0); in urtw_tx_enable()
2022 (void) urtw_write8_c(sc, URTW_TX_AGC_CTL, data8, 0); in urtw_tx_enable()
2024 (void) urtw_read32_c(sc, URTW_TX_CONF, &data, 0); in urtw_tx_enable()
2028 data |= sc->sc_tx_retry << URTW_TX_DPRETRY_SHIFT; in urtw_tx_enable()
2029 data |= sc->sc_rts_retry << URTW_TX_RTSRETRY_SHIFT; in urtw_tx_enable()
2034 (void) urtw_write32_c(sc, URTW_TX_CONF, data, 0); in urtw_tx_enable()
2039 (void) urtw_write32_c(sc, URTW_TX_CONF, data, 0); in urtw_tx_enable()
2042 (void) urtw_read8_c(sc, URTW_CMD, &data8, 0); in urtw_tx_enable()
2043 (void) urtw_write8_c(sc, URTW_CMD, data8 | URTW_CMD_TX_ENABLE, 0); in urtw_tx_enable()
2049 struct urtw_softc *sc = arg; in urtw_8187_init() local
2051 struct urtw_rf *rf = &sc->sc_rf; in urtw_8187_init()
2054 urtw_stop(sc); in urtw_8187_init()
2055 URTW_LOCK(sc); in urtw_8187_init()
2056 error = urtw_8187_reset(sc); in urtw_8187_init()
2060 (void) urtw_write8_c(sc, 0x85, 0, 0); in urtw_8187_init()
2061 (void) urtw_write8_c(sc, URTW_GPIO, 0, 0); in urtw_8187_init()
2064 (void) urtw_write8_c(sc, 0x85, 4, 0); in urtw_8187_init()
2065 error = urtw_led_ctl(sc, URTW_LED_CTL_POWER_ON); in urtw_8187_init()
2069 error = urtw_set_mode(sc, URTW_EPROM_CMD_CONFIG); in urtw_8187_init()
2075 (void) urtw_write8_c(sc, URTW_MAC0 + i, in urtw_8187_init()
2076 sc->sc_ic.ic_macaddr[i], 0); in urtw_8187_init()
2077 error = urtw_set_mode(sc, URTW_EPROM_CMD_NORMAL); in urtw_8187_init()
2081 error = urtw_update_msr(sc, IEEE80211_S_INIT); in urtw_8187_init()
2085 (void) urtw_write32_c(sc, URTW_INT_TIMEOUT, 0, 0); in urtw_8187_init()
2086 (void) urtw_write8_c(sc, URTW_WPA_CONFIG, 0, 0); in urtw_8187_init()
2087 (void) urtw_write8_c(sc, URTW_RATE_FALLBACK, 0x81, 0); in urtw_8187_init()
2088 error = urtw_set_rate(sc); in urtw_8187_init()
2098 (void) urtw_write16_c(sc, 0x5e, 1, 0); in urtw_8187_init()
2099 (void) urtw_write16_c(sc, 0xfe, 0x10, 0); in urtw_8187_init()
2100 (void) urtw_write8_c(sc, URTW_TALLY_SEL, 0x80, 0); in urtw_8187_init()
2101 (void) urtw_write8_c(sc, 0xff, 0x60, 0); in urtw_8187_init()
2102 (void) urtw_write16_c(sc, 0x5e, 0, 0); in urtw_8187_init()
2103 (void) urtw_write8_c(sc, 0x85, 4, 0); in urtw_8187_init()
2105 error = urtw_intr_enable(sc); in urtw_8187_init()
2109 error = urtw_open_pipes(sc); in urtw_8187_init()
2112 sc->sc_tx_low_queued = 0; in urtw_8187_init()
2113 sc->sc_tx_normal_queued = 0; in urtw_8187_init()
2114 error = urtw_rx_enable(sc); in urtw_8187_init()
2117 urtw_tx_enable(sc); in urtw_8187_init()
2120 URTW8187_DBG(URTW_DEBUG_ACTIVE, (sc->sc_dev, in urtw_8187_init()
2122 sc->sc_flags |= URTW_FLAG_RUNNING; in urtw_8187_init()
2123 URTW_UNLOCK(sc); in urtw_8187_init()
2128 URTW_UNLOCK(sc); in urtw_8187_init()
2129 urtw_stop(sc); in urtw_8187_init()
2135 urtw_8225_usb_init(struct urtw_softc *sc) in urtw_8225_usb_init() argument
2140 if (error = urtw_write8_c(sc, URTW_RF_PINS_SELECT + 1, 0, 0)) in urtw_8225_usb_init()
2142 if (error = urtw_write8_c(sc, URTW_GPIO, 0, 0)) in urtw_8225_usb_init()
2144 if (error = urtw_read8e(sc, 0x53, &data)) in urtw_8225_usb_init()
2146 if (error = urtw_write8e(sc, 0x53, data | (1 << 7))) in urtw_8225_usb_init()
2148 if (error = urtw_write8_c(sc, URTW_RF_PINS_SELECT + 1, 4, 0)) in urtw_8225_usb_init()
2150 if (error = urtw_write8_c(sc, URTW_GPIO, 0x20, 0)) in urtw_8225_usb_init()
2152 if (error = urtw_write8_c(sc, URTW_GP_ENABLE, 0, 0)) in urtw_8225_usb_init()
2154 if (error = urtw_write16_c(sc, URTW_RF_PINS_OUTPUT, 0x80, 0)) in urtw_8225_usb_init()
2156 if (error = urtw_write16_c(sc, URTW_RF_PINS_SELECT, 0x80, 0)) in urtw_8225_usb_init()
2158 error = urtw_write16_c(sc, URTW_RF_PINS_ENABLE, 0x80, 0); in urtw_8225_usb_init()
2166 urtw_8185_rf_pins_enable(struct urtw_softc *sc) in urtw_8185_rf_pins_enable() argument
2170 error = urtw_write16_c(sc, URTW_RF_PINS_ENABLE, 0x1ff7, 0); in urtw_8185_rf_pins_enable()
2175 urtw_8187_write_phy(struct urtw_softc *sc, uint8_t addr, uint32_t data) in urtw_8187_write_phy() argument
2181 if (error = urtw_write8_c(sc, 0x7f, ((phyw & 0xff000000) >> 24), 0)) in urtw_8187_write_phy()
2183 if (error = urtw_write8_c(sc, 0x7e, ((phyw & 0x00ff0000) >> 16), 0)) in urtw_8187_write_phy()
2185 if (error = urtw_write8_c(sc, 0x7d, ((phyw & 0x0000ff00) >> 8), 0)) in urtw_8187_write_phy()
2187 error = urtw_write8_c(sc, 0x7c, (phyw & 0x000000ff), 0); in urtw_8187_write_phy()
2197 urtw_8187_write_phy_ofdm_c(struct urtw_softc *sc, uint8_t addr, uint32_t data) in urtw_8187_write_phy_ofdm_c() argument
2200 return (urtw_8187_write_phy(sc, addr, data)); in urtw_8187_write_phy_ofdm_c()
2204 urtw_8187_write_phy_cck_c(struct urtw_softc *sc, uint8_t addr, uint32_t data) in urtw_8187_write_phy_cck_c() argument
2207 return (urtw_8187_write_phy(sc, addr, (data | 0x10000))); in urtw_8187_write_phy_cck_c()
2211 urtw_8225_setgain(struct urtw_softc *sc, int16_t gain) in urtw_8225_setgain() argument
2215 if (error = urtw_8187_write_phy_ofdm_c(sc, 0x0d, in urtw_8225_setgain()
2218 if (error = urtw_8187_write_phy_ofdm_c(sc, 0x1b, in urtw_8225_setgain()
2221 if (error = urtw_8187_write_phy_ofdm_c(sc, 0x1d, in urtw_8225_setgain()
2224 error = urtw_8187_write_phy_ofdm_c(sc, 0x23, in urtw_8225_setgain()
2231 urtw_8225_set_txpwrlvl(struct urtw_softc *sc, int chan) in urtw_8225_set_txpwrlvl() argument
2236 uint8_t cck_pwrlvl = sc->sc_txpwr_cck[chan] & 0xff; in urtw_8225_set_txpwrlvl()
2237 uint8_t ofdm_pwrlvl = sc->sc_txpwr_ofdm[chan] & 0xff; in urtw_8225_set_txpwrlvl()
2252 if (error = urtw_write8_c(sc, URTW_TX_GAIN_CCK, in urtw_8225_set_txpwrlvl()
2256 if (error = urtw_8187_write_phy_cck_c(sc, 0x44 + i, in urtw_8225_set_txpwrlvl()
2268 error = urtw_8185_set_anaparam2(sc, URTW_8187_8225_ANAPARAM2_ON); in urtw_8225_set_txpwrlvl()
2271 if (error = urtw_8187_write_phy_ofdm_c(sc, 2, 0x42)) in urtw_8225_set_txpwrlvl()
2273 if (error = urtw_8187_write_phy_ofdm_c(sc, 6, 0)) in urtw_8225_set_txpwrlvl()
2275 if (error = urtw_8187_write_phy_ofdm_c(sc, 8, 0)) in urtw_8225_set_txpwrlvl()
2278 if (error = urtw_write8_c(sc, URTW_TX_GAIN_OFDM, in urtw_8225_set_txpwrlvl()
2281 if (error = urtw_8187_write_phy_ofdm_c(sc, 0x5, in urtw_8225_set_txpwrlvl()
2284 error = urtw_8187_write_phy_ofdm_c(sc, 0x7, in urtw_8225_set_txpwrlvl()
2292 urtw_8185_tx_antenna(struct urtw_softc *sc, uint8_t ant) in urtw_8185_tx_antenna() argument
2296 error = urtw_write8_c(sc, URTW_TX_ANTENNA, ant, 0); in urtw_8185_tx_antenna()
2308 struct urtw_softc *sc = rf->rf_sc; in urtw_8225_rf_init() local
2310 error = urtw_8180_set_anaparam(sc, URTW_8187_8225_ANAPARAM_ON); in urtw_8225_rf_init()
2314 if (error = urtw_8225_usb_init(sc)) in urtw_8225_rf_init()
2316 if (error = urtw_write32_c(sc, URTW_RF_TIMING, 0x000a8008, 0)) in urtw_8225_rf_init()
2318 if (error = urtw_read16_c(sc, URTW_BRSR, &data, 0)) in urtw_8225_rf_init()
2320 if (error = urtw_write16_c(sc, URTW_BRSR, 0xffff, 0)) in urtw_8225_rf_init()
2322 if (error = urtw_write32_c(sc, URTW_RF_PARA, 0x100044, 0)) in urtw_8225_rf_init()
2325 if (error = urtw_set_mode(sc, URTW_EPROM_CMD_CONFIG)) in urtw_8225_rf_init()
2327 if (error = urtw_write8_c(sc, URTW_CONFIG3, 0x44, 0)) in urtw_8225_rf_init()
2329 if (error = urtw_set_mode(sc, URTW_EPROM_CMD_NORMAL)) in urtw_8225_rf_init()
2331 if (error = urtw_8185_rf_pins_enable(sc)) in urtw_8225_rf_init()
2336 if (error = urtw_8225_write_c(sc, urtw_8225_rf_part1[i].reg, in urtw_8225_rf_init()
2342 if (error = urtw_8225_write_c(sc, 0x2, 0xc4d)) in urtw_8225_rf_init()
2345 if (error = urtw_8225_write_c(sc, 0x2, 0x44d)) in urtw_8225_rf_init()
2348 if (error = urtw_8225_write_c(sc, 0x0, 0x127)) in urtw_8225_rf_init()
2352 if (error = urtw_8225_write_c(sc, 0x1, (uint8_t)(i + 1))) in urtw_8225_rf_init()
2354 if (error = urtw_8225_write_c(sc, 0x2, urtw_8225_rxgain[i])) in urtw_8225_rf_init()
2358 if (error = urtw_8225_write_c(sc, 0x0, 0x27)) in urtw_8225_rf_init()
2360 if (error = urtw_8225_write_c(sc, 0x0, 0x22f)) in urtw_8225_rf_init()
2364 if (error = urtw_8187_write_phy_ofdm_c(sc, 0xb, in urtw_8225_rf_init()
2368 if (error = urtw_8187_write_phy_ofdm_c(sc, 0xa, in urtw_8225_rf_init()
2375 if (error = urtw_8187_write_phy_ofdm_c(sc, in urtw_8225_rf_init()
2381 error = urtw_8225_setgain(sc, 4); in urtw_8225_rf_init()
2386 if (error = urtw_8187_write_phy_cck_c(sc, in urtw_8225_rf_init()
2393 if (error = urtw_write8_c(sc, 0x5b, 0x0d, 0)) in urtw_8225_rf_init()
2395 if (error = urtw_8225_set_txpwrlvl(sc, 1)) in urtw_8225_rf_init()
2397 if (error = urtw_8187_write_phy_cck_c(sc, 0x10, 0x9b)) in urtw_8225_rf_init()
2400 if (error = urtw_8187_write_phy_ofdm_c(sc, 0x26, 0x90)) in urtw_8225_rf_init()
2405 if (error = urtw_8185_tx_antenna(sc, 0x3)) in urtw_8225_rf_init()
2407 if (error = urtw_write32_c(sc, 0x94, 0x3dc00002, 0)) in urtw_8225_rf_init()
2411 ieee80211_chan2ieee(&sc->sc_ic, sc->sc_ic.ic_curchan)); in urtw_8225_rf_init()
2425 struct urtw_softc *sc = rf->rf_sc; in urtw_8225_rf_set_chan() local
2426 struct ieee80211com *ic = &sc->sc_ic; in urtw_8225_rf_set_chan()
2431 if (error = urtw_8225_set_txpwrlvl(sc, chan)) in urtw_8225_rf_set_chan()
2433 if (urtw_8225_write_c(sc, 0x7, urtw_8225_channel[chan])) in urtw_8225_rf_set_chan()
2437 if (error = urtw_write8_c(sc, URTW_SIFS, 0x22, 0)) in urtw_8225_rf_set_chan()
2442 if (error = urtw_write8_c(sc, URTW_SLOT, 0x9, 0)) in urtw_8225_rf_set_chan()
2445 if (error = urtw_write8_c(sc, URTW_SLOT, 0x14, 0)) in urtw_8225_rf_set_chan()
2449 if (error = urtw_write8_c(sc, URTW_DIFS, 0x14, 0)) in urtw_8225_rf_set_chan()
2451 if (error = urtw_write8_c(sc, URTW_EIFS, 0x5b - 0x14, 0)) in urtw_8225_rf_set_chan()
2453 error = urtw_write8_c(sc, URTW_CW_VAL, 0x73, 0); in urtw_8225_rf_set_chan()
2456 if (error = urtw_write8_c(sc, URTW_DIFS, 0x24, 0)) in urtw_8225_rf_set_chan()
2458 if (error = urtw_write8_c(sc, URTW_EIFS, 0x5b - 0x24, 0)) in urtw_8225_rf_set_chan()
2460 error = urtw_write8_c(sc, URTW_CW_VAL, 0xa5, 0); in urtw_8225_rf_set_chan()
2471 struct urtw_softc *sc = rf->rf_sc; in urtw_8225_rf_set_sens() local
2477 if (error = urtw_8225_write_c(sc, 0x0c, 0x850)) in urtw_8225_rf_set_sens()
2480 if (error = urtw_8225_write_c(sc, 0x0c, 0x50)) in urtw_8225_rf_set_sens()
2484 if (error = urtw_8225_setgain(sc, rf->sens)) in urtw_8225_rf_set_sens()
2486 error = urtw_8187_write_phy_cck_c(sc, 0x41, in urtw_8225_rf_set_sens()
2493 urtw_stop(struct urtw_softc *sc) in urtw_stop() argument
2495 URTW_LOCK(sc); in urtw_stop()
2496 sc->sc_flags &= ~URTW_FLAG_RUNNING; in urtw_stop()
2497 URTW_UNLOCK(sc); in urtw_stop()
2498 urtw_close_pipes(sc); in urtw_stop()
2514 struct urtw_softc *sc = (struct urtw_softc *)req->bulk_client_private; in urtw_rxeof() local
2515 struct ieee80211com *ic = &sc->sc_ic; in urtw_rxeof()
2527 sc->sc_rx_err++; in urtw_rxeof()
2528 URTW8187_DBG(URTW_DEBUG_RX_PROC, (sc->sc_dev, CE_CONT, in urtw_rxeof()
2538 if (sc->sc_hwrev & URTW_HWREV_8187) in urtw_rxeof()
2550 sc->sc_rx_err++; in urtw_rxeof()
2556 if (sc->sc_hwrev & URTW_HWREV_8187) { in urtw_rxeof()
2571 URTW8187_DBG(URTW_DEBUG_RX_PROC, (sc->sc_dev, CE_CONT, in urtw_rxeof()
2579 sc->sc_currate = (rate > 0) ? rate : sc->sc_currate; in urtw_rxeof()
2580 URTW8187_DBG(URTW_DEBUG_RX_PROC, (sc->sc_dev, CE_CONT, in urtw_rxeof()
2582 sc->sc_currate)); in urtw_rxeof()
2592 mutex_enter(&sc->rx_lock); in urtw_rxeof()
2593 sc->rx_queued--; in urtw_rxeof()
2594 mutex_exit(&sc->rx_lock); in urtw_rxeof()
2596 if (URTW_IS_RUNNING(sc) && !URTW_IS_SUSPENDING(sc)) in urtw_rxeof()
2597 (void) urtw_rx_start(sc); in urtw_rxeof()
2601 urtw_8225v2_setgain(struct urtw_softc *sc, int16_t gain) in urtw_8225v2_setgain() argument
2608 if (error = urtw_8187_write_phy_ofdm_c(sc, 0x0d, gainp[gain * 3])) in urtw_8225v2_setgain()
2611 if (error = urtw_8187_write_phy_ofdm_c(sc, 0x1b, gainp[gain * 3 + 1])) in urtw_8225v2_setgain()
2613 if (error = urtw_8187_write_phy_ofdm_c(sc, 0x1d, gainp[gain * 3 + 2])) in urtw_8225v2_setgain()
2616 if (error = urtw_8187_write_phy_ofdm_c(sc, 0x21, 0x17)) in urtw_8225v2_setgain()
2624 urtw_8225v2_set_txpwrlvl(struct urtw_softc *sc, int chan) in urtw_8225v2_set_txpwrlvl() argument
2629 uint8_t cck_pwrlvl = sc->sc_txpwr_cck[chan] & 0xff; in urtw_8225v2_set_txpwrlvl()
2630 uint8_t ofdm_pwrlvl = sc->sc_txpwr_ofdm[chan] & 0xff; in urtw_8225v2_set_txpwrlvl()
2636 cck_pwrlvl += sc->sc_txpwr_cck_base; in urtw_8225v2_set_txpwrlvl()
2642 if (error = urtw_8187_write_phy_cck_c(sc, 0x44 + i, in urtw_8225v2_set_txpwrlvl()
2646 if (error = urtw_write8_c(sc, URTW_TX_GAIN_CCK, in urtw_8225v2_set_txpwrlvl()
2654 ofdm_pwrlvl += sc->sc_txpwr_ofdm_base; in urtw_8225v2_set_txpwrlvl()
2657 error = urtw_8185_set_anaparam2(sc, URTW_8187_8225_ANAPARAM2_ON); in urtw_8225v2_set_txpwrlvl()
2661 if (error = urtw_8187_write_phy_ofdm_c(sc, 2, 0x42)) in urtw_8225v2_set_txpwrlvl()
2663 if (error = urtw_8187_write_phy_ofdm_c(sc, 5, 0x0)) in urtw_8225v2_set_txpwrlvl()
2665 if (error = urtw_8187_write_phy_ofdm_c(sc, 6, 0x40)) in urtw_8225v2_set_txpwrlvl()
2667 if (error = urtw_8187_write_phy_ofdm_c(sc, 7, 0x0)) in urtw_8225v2_set_txpwrlvl()
2669 if (error = urtw_8187_write_phy_ofdm_c(sc, 8, 0x40)) in urtw_8225v2_set_txpwrlvl()
2672 error = urtw_write8_c(sc, URTW_TX_GAIN_OFDM, in urtw_8225v2_set_txpwrlvl()
2687 struct urtw_softc *sc = rf->rf_sc; in urtw_8225v2_rf_init() local
2689 if (error = urtw_8180_set_anaparam(sc, URTW_8187_8225_ANAPARAM_ON)) in urtw_8225v2_rf_init()
2691 if (error = urtw_8225_usb_init(sc)) in urtw_8225v2_rf_init()
2693 if (error = urtw_write32_c(sc, URTW_RF_TIMING, 0x000a8008, 0)) in urtw_8225v2_rf_init()
2695 if (error = urtw_read16_c(sc, URTW_BRSR, &data, 0)) in urtw_8225v2_rf_init()
2697 if (error = urtw_write16_c(sc, URTW_BRSR, 0xffff, 0)) in urtw_8225v2_rf_init()
2699 if (error = urtw_write32_c(sc, URTW_RF_PARA, 0x100044, 0)) in urtw_8225v2_rf_init()
2701 if (error = urtw_set_mode(sc, URTW_EPROM_CMD_CONFIG)) in urtw_8225v2_rf_init()
2703 if (error = urtw_write8_c(sc, URTW_CONFIG3, 0x44, 0)) in urtw_8225v2_rf_init()
2705 if (error = urtw_set_mode(sc, URTW_EPROM_CMD_NORMAL)) in urtw_8225v2_rf_init()
2707 if (error = urtw_8185_rf_pins_enable(sc)) in urtw_8225v2_rf_init()
2713 if (error = urtw_8225_write_c(sc, urtw_8225v2_rf_part1[i].reg, in urtw_8225v2_rf_init()
2720 if (error = urtw_8225_write_c(sc, 0x0, 0x1b7)) in urtw_8225v2_rf_init()
2724 if (error = urtw_8225_write_c(sc, 0x1, (uint8_t)(i + 1))) in urtw_8225v2_rf_init()
2727 if (error = urtw_8225_write_c(sc, 0x2, urtw_8225v2_rxgain[i])) in urtw_8225v2_rf_init()
2732 if (error = urtw_8225_write_c(sc, 0x3, 0x2)) in urtw_8225v2_rf_init()
2735 if (error = urtw_8225_write_c(sc, 0x5, 0x4)) in urtw_8225v2_rf_init()
2738 if (error = urtw_8225_write_c(sc, 0x0, 0xb7)) in urtw_8225v2_rf_init()
2741 if (error = urtw_8225_write_c(sc, 0x2, 0xc4d)) in urtw_8225v2_rf_init()
2744 if (error = urtw_8225_write_c(sc, 0x2, 0x44d)) in urtw_8225v2_rf_init()
2748 if (error = urtw_8225_read(sc, 0x6, &data32)) in urtw_8225v2_rf_init()
2756 if (error = urtw_8225_write_c(sc, 0x02, 0x0c4d)) in urtw_8225v2_rf_init()
2759 if (error = urtw_8225_write_c(sc, 0x02, 0x044d)) in urtw_8225v2_rf_init()
2762 if (error = urtw_8225_read(sc, 0x6, &data32)) in urtw_8225v2_rf_init()
2769 if (error = urtw_8225_write_c(sc, 0x0, 0x2bf)) in urtw_8225v2_rf_init()
2772 if (error = urtw_8187_write_phy_ofdm_c(sc, 0xb, in urtw_8225v2_rf_init()
2776 if (error = urtw_8187_write_phy_ofdm_c(sc, 0xa, in urtw_8225v2_rf_init()
2784 if (error = urtw_8187_write_phy_ofdm_c(sc, in urtw_8225v2_rf_init()
2790 error = urtw_8225v2_setgain(sc, 4); in urtw_8225v2_rf_init()
2795 if (error = urtw_8187_write_phy_cck_c(sc, in urtw_8225v2_rf_init()
2802 if (error = urtw_write8_c(sc, 0x5b, 0x0d, 0)) in urtw_8225v2_rf_init()
2804 if (error = urtw_8225v2_set_txpwrlvl(sc, 1)) in urtw_8225v2_rf_init()
2806 if (error = urtw_8187_write_phy_cck_c(sc, 0x10, 0x9b)) in urtw_8225v2_rf_init()
2809 if (error = urtw_8187_write_phy_ofdm_c(sc, 0x26, 0x90)) in urtw_8225v2_rf_init()
2814 if (error = urtw_8185_tx_antenna(sc, 0x3)) in urtw_8225v2_rf_init()
2816 if (error = urtw_write32_c(sc, 0x94, 0x3dc00002, 0)) in urtw_8225v2_rf_init()
2820 ieee80211_chan2ieee(&sc->sc_ic, sc->sc_ic.ic_curchan)); in urtw_8225v2_rf_init()
2829 struct urtw_softc *sc = rf->rf_sc; in urtw_8225v2_rf_set_chan() local
2830 struct ieee80211com *ic = &sc->sc_ic; in urtw_8225v2_rf_set_chan()
2835 if (error = urtw_8225v2_set_txpwrlvl(sc, chan)) in urtw_8225v2_rf_set_chan()
2838 if (error = urtw_8225_write_c(sc, 0x7, urtw_8225_channel[chan])) in urtw_8225v2_rf_set_chan()
2843 if (error = urtw_write8_c(sc, URTW_SIFS, 0x22, 0)) in urtw_8225v2_rf_set_chan()
2848 if (error = urtw_write8_c(sc, URTW_SLOT, 0x9, 0)) in urtw_8225v2_rf_set_chan()
2851 if (error = urtw_write8_c(sc, URTW_SLOT, 0x14, 0)) in urtw_8225v2_rf_set_chan()
2855 if (error = urtw_write8_c(sc, URTW_DIFS, 0x14, 0)) in urtw_8225v2_rf_set_chan()
2857 if (error = urtw_write8_c(sc, URTW_EIFS, 0x5b - 0x14, 0)) in urtw_8225v2_rf_set_chan()
2859 if (error = urtw_write8_c(sc, URTW_CW_VAL, 0x73, 0)) in urtw_8225v2_rf_set_chan()
2863 if (error = urtw_write8_c(sc, URTW_DIFS, 0x24, 0)) in urtw_8225v2_rf_set_chan()
2865 if (error = urtw_write8_c(sc, URTW_EIFS, 0x5b - 0x24, 0)) in urtw_8225v2_rf_set_chan()
2867 if (error = urtw_write8_c(sc, URTW_CW_VAL, 0xa5, 0)) in urtw_8225v2_rf_set_chan()
2876 urtw_set_channel(struct urtw_softc *sc) in urtw_set_channel() argument
2878 struct ieee80211com *ic = &sc->sc_ic; in urtw_set_channel()
2879 struct urtw_rf *rf = &sc->sc_rf; in urtw_set_channel()
2883 if (error = urtw_read32_c(sc, URTW_TX_CONF, &data, 0)) in urtw_set_channel()
2886 if (error = urtw_write32_c(sc, URTW_TX_CONF, in urtw_set_channel()
2893 error = urtw_write32_c(sc, URTW_TX_CONF, in urtw_set_channel()
2903 struct urtw_softc *sc = (struct urtw_softc *)req->bulk_client_private; in urtw_txeof_low() local
2904 struct ieee80211com *ic = &sc->sc_ic; in urtw_txeof_low()
2906 URTW8187_DBG(URTW_DEBUG_TX_PROC, (sc->sc_dev, CE_CONT, in urtw_txeof_low()
2911 sc->sc_tx_low_queued)); in urtw_txeof_low()
2912 mutex_enter(&sc->tx_lock); in urtw_txeof_low()
2918 if (sc->sc_need_sched) { in urtw_txeof_low()
2919 sc->sc_need_sched = 0; in urtw_txeof_low()
2923 sc->sc_tx_low_queued--; in urtw_txeof_low()
2924 mutex_exit(&sc->tx_lock); in urtw_txeof_low()
2932 struct urtw_softc *sc = (struct urtw_softc *)req->bulk_client_private; in urtw_txeof_normal() local
2933 struct ieee80211com *ic = &sc->sc_ic; in urtw_txeof_normal()
2935 URTW8187_DBG(URTW_DEBUG_ACTIVE, (sc->sc_dev, CE_CONT, in urtw_txeof_normal()
2940 sc->sc_tx_normal_queued)); in urtw_txeof_normal()
2942 mutex_enter(&sc->tx_lock); in urtw_txeof_normal()
2948 if (sc->sc_need_sched) { in urtw_txeof_normal()
2949 sc->sc_need_sched = 0; in urtw_txeof_normal()
2953 sc->sc_tx_normal_queued--; in urtw_txeof_normal()
2954 mutex_exit(&sc->tx_lock); in urtw_txeof_normal()
2977 urtw_8187b_update_wmm(struct urtw_softc *sc) in urtw_8187b_update_wmm() argument
2979 struct ieee80211com *ic = &sc->sc_ic; in urtw_8187b_update_wmm()
2998 (void) urtw_write32_c(sc, URTW_AC_VO, data, 0); in urtw_8187b_update_wmm()
2999 (void) urtw_write32_c(sc, URTW_AC_VI, data, 0); in urtw_8187b_update_wmm()
3000 (void) urtw_write32_c(sc, URTW_AC_BE, data, 0); in urtw_8187b_update_wmm()
3001 (void) urtw_write32_c(sc, URTW_AC_BK, data, 0); in urtw_8187b_update_wmm()
3005 urtw_8187b_reset(struct urtw_softc *sc) in urtw_8187b_reset() argument
3010 error = urtw_set_mode(sc, URTW_EPROM_CMD_CONFIG); in urtw_8187b_reset()
3014 (void) urtw_read8_c(sc, URTW_CONFIG3, &data, 0); in urtw_8187b_reset()
3015 (void) urtw_write8_c(sc, URTW_CONFIG3, in urtw_8187b_reset()
3019 (void) urtw_write32_c(sc, URTW_ANAPARAM2, in urtw_8187b_reset()
3021 (void) urtw_write32_c(sc, URTW_ANAPARAM, in urtw_8187b_reset()
3023 (void) urtw_write8_c(sc, URTW_ANAPARAM3, in urtw_8187b_reset()
3026 (void) urtw_write8_c(sc, 0x61, 0x10, 0); in urtw_8187b_reset()
3027 (void) urtw_read8_c(sc, 0x62, &data, 0); in urtw_8187b_reset()
3028 (void) urtw_write8_c(sc, 0x62, data & ~(1 << 5), 0); in urtw_8187b_reset()
3029 (void) urtw_write8_c(sc, 0x62, data | (1 << 5), 0); in urtw_8187b_reset()
3031 (void) urtw_read8_c(sc, URTW_CONFIG3, &data, 0); in urtw_8187b_reset()
3032 (void) urtw_write8_c(sc, URTW_CONFIG3, in urtw_8187b_reset()
3035 error = urtw_set_mode(sc, URTW_EPROM_CMD_NORMAL); in urtw_8187b_reset()
3039 (void) urtw_read8_c(sc, URTW_CMD, &data, 0); in urtw_8187b_reset()
3041 (void) urtw_write8_c(sc, URTW_CMD, data, 0); in urtw_8187b_reset()
3044 (void) urtw_read8_c(sc, URTW_CMD, &data, 0); in urtw_8187b_reset()
3057 struct urtw_softc *sc = arg; in urtw_8187b_init() local
3058 struct urtw_rf *rf = &sc->sc_rf; in urtw_8187b_init()
3059 struct ieee80211com *ic = &sc->sc_ic; in urtw_8187b_init()
3064 urtw_stop(sc); in urtw_8187b_init()
3065 URTW_LOCK(sc); in urtw_8187b_init()
3066 urtw_8187b_update_wmm(sc); in urtw_8187b_init()
3067 error = urtw_8187b_reset(sc); in urtw_8187b_init()
3071 error = urtw_open_pipes(sc); in urtw_8187b_init()
3075 error = urtw_set_mode(sc, URTW_EPROM_CMD_CONFIG); in urtw_8187b_init()
3079 (void) urtw_write8_c(sc, URTW_MAC0 + i, in urtw_8187b_init()
3081 error = urtw_set_mode(sc, URTW_EPROM_CMD_NORMAL); in urtw_8187b_init()
3085 error = urtw_update_msr(sc, IEEE80211_S_INIT); in urtw_8187b_init()
3092 error = urtw_intr_enable(sc); in urtw_8187b_init()
3096 error = urtw_write8e(sc, 0x41, 0xf4); in urtw_8187b_init()
3099 error = urtw_write8e(sc, 0x40, 0x00); in urtw_8187b_init()
3102 error = urtw_write8e(sc, 0x42, 0x00); in urtw_8187b_init()
3105 error = urtw_write8e(sc, 0x42, 0x01); in urtw_8187b_init()
3108 error = urtw_write8e(sc, 0x40, 0x0f); in urtw_8187b_init()
3111 error = urtw_write8e(sc, 0x42, 0x00); in urtw_8187b_init()
3114 error = urtw_write8e(sc, 0x42, 0x01); in urtw_8187b_init()
3118 (void) urtw_read8_c(sc, 0xdb, &data, 0); in urtw_8187b_init()
3119 (void) urtw_write8_c(sc, 0xdb, data | (1 << 2), 0); in urtw_8187b_init()
3120 (void) urtw_write16_c(sc, 0x72, 0x59fa, 3); in urtw_8187b_init()
3121 (void) urtw_write16_c(sc, 0x74, 0x59d2, 3); in urtw_8187b_init()
3122 (void) urtw_write16_c(sc, 0x76, 0x59d2, 3); in urtw_8187b_init()
3123 (void) urtw_write16_c(sc, 0x78, 0x19fa, 3); in urtw_8187b_init()
3124 (void) urtw_write16_c(sc, 0x7a, 0x19fa, 3); in urtw_8187b_init()
3125 (void) urtw_write16_c(sc, 0x7c, 0x00d0, 3); in urtw_8187b_init()
3126 (void) urtw_write8_c(sc, 0x61, 0, 0); in urtw_8187b_init()
3127 (void) urtw_write8_c(sc, 0x80, 0x0f, 1); in urtw_8187b_init()
3128 (void) urtw_write8_c(sc, 0x83, 0x03, 1); in urtw_8187b_init()
3129 (void) urtw_write8_c(sc, 0xda, 0x10, 0); in urtw_8187b_init()
3130 (void) urtw_write8_c(sc, 0x4d, 0x08, 2); in urtw_8187b_init()
3132 (void) urtw_write32_c(sc, URTW_HSSI_PARA, 0x0600321b, 0); in urtw_8187b_init()
3133 (void) urtw_write16_c(sc, 0xec, 0x0800, 1); in urtw_8187b_init()
3134 (void) urtw_write8_c(sc, URTW_ACM_CONTROL, 0, 0); in urtw_8187b_init()
3136 sc->sc_tx_low_queued = 0; in urtw_8187b_init()
3137 sc->sc_tx_normal_queued = 0; in urtw_8187b_init()
3138 error = urtw_rx_enable(sc); in urtw_8187b_init()
3141 urtw_tx_enable(sc); in urtw_8187b_init()
3144 URTW8187_DBG(URTW_DEBUG_ACTIVE, (sc->sc_dev, in urtw_8187b_init()
3146 sc->sc_flags |= URTW_FLAG_RUNNING; in urtw_8187b_init()
3147 URTW_UNLOCK(sc); in urtw_8187b_init()
3153 URTW_UNLOCK(sc); in urtw_8187b_init()
3154 urtw_stop(sc); in urtw_8187b_init()
3159 urtw_8225v2_b_config_mac(struct urtw_softc *sc) in urtw_8225v2_b_config_mac() argument
3166 (void) urtw_write8_c(sc, urtw_8187b_regtbl[i].reg, in urtw_8225v2_b_config_mac()
3170 (void) urtw_write16_c(sc, URTW_TID_AC_MAP, 0xfa50, 0); in urtw_8225v2_b_config_mac()
3171 (void) urtw_write16_c(sc, URTW_INT_MIG, 0, 0); in urtw_8225v2_b_config_mac()
3173 (void) urtw_write32_c(sc, 0xf0, 0, 1); in urtw_8225v2_b_config_mac()
3174 (void) urtw_write32_c(sc, 0xf4, 0, 1); in urtw_8225v2_b_config_mac()
3175 (void) urtw_write8_c(sc, 0xf8, 0, 1); in urtw_8225v2_b_config_mac()
3177 (void) urtw_write32_c(sc, URTW_RF_TIMING, 0x00004001, 0); in urtw_8225v2_b_config_mac()
3181 urtw_8225v2_b_init_rfe(struct urtw_softc *sc) in urtw_8225v2_b_init_rfe() argument
3183 (void) urtw_write16_c(sc, URTW_RF_PINS_OUTPUT, 0x0480, 0); in urtw_8225v2_b_init_rfe()
3184 (void) urtw_write16_c(sc, URTW_RF_PINS_SELECT, 0x2488, 0); in urtw_8225v2_b_init_rfe()
3185 (void) urtw_write16_c(sc, URTW_RF_PINS_ENABLE, 0x1fff, 0); in urtw_8225v2_b_init_rfe()
3190 urtw_8225v2_b_update_chan(struct urtw_softc *sc) in urtw_8225v2_b_update_chan() argument
3192 struct ieee80211com *ic = &sc->sc_ic; in urtw_8225v2_b_update_chan()
3196 (void) urtw_write8_c(sc, URTW_SIFS, 0x22, 0); in urtw_8225v2_b_update_chan()
3210 (void) urtw_write8_c(sc, URTW_SLOT, slot, 0); in urtw_8225v2_b_update_chan()
3212 (void) urtw_write8_c(sc, URTW_AC_VO, aifs, 0); in urtw_8225v2_b_update_chan()
3213 (void) urtw_write8_c(sc, URTW_AC_VI, aifs, 0); in urtw_8225v2_b_update_chan()
3214 (void) urtw_write8_c(sc, URTW_AC_BE, aifs, 0); in urtw_8225v2_b_update_chan()
3215 (void) urtw_write8_c(sc, URTW_AC_BK, aifs, 0); in urtw_8225v2_b_update_chan()
3217 (void) urtw_write8_c(sc, URTW_DIFS, difs, 0); in urtw_8225v2_b_update_chan()
3218 (void) urtw_write8_c(sc, URTW_8187B_EIFS, eifs, 0); in urtw_8225v2_b_update_chan()
3225 struct urtw_softc *sc = rf->rf_sc; in urtw_8225v2_b_rf_init() local
3231 (void) urtw_write16_c(sc, URTW_8187B_BRSR, 0x0fff, 0); in urtw_8225v2_b_rf_init()
3232 (void) urtw_read8_c(sc, URTW_CW_CONF, &data, 0); in urtw_8225v2_b_rf_init()
3233 (void) urtw_write8_c(sc, URTW_CW_CONF, data | in urtw_8225v2_b_rf_init()
3235 (void) urtw_read8_c(sc, URTW_TX_AGC_CTL, &data, 0); in urtw_8225v2_b_rf_init()
3236 (void) urtw_write8_c(sc, URTW_TX_AGC_CTL, data | in urtw_8225v2_b_rf_init()
3241 (void) urtw_write16_c(sc, URTW_ARFR, 0x0fff, 1); /* 1M ~ 54M */ in urtw_8225v2_b_rf_init()
3242 (void) urtw_read8_c(sc, URTW_RATE_FALLBACK, &data, 0); in urtw_8225v2_b_rf_init()
3243 (void) urtw_write8_c(sc, URTW_RATE_FALLBACK, data | in urtw_8225v2_b_rf_init()
3246 (void) urtw_write16_c(sc, URTW_BEACON_INTERVAL, 0x3ff, 0); in urtw_8225v2_b_rf_init()
3247 (void) urtw_write16_c(sc, URTW_ATIM_WND, 2, 0); in urtw_8225v2_b_rf_init()
3248 (void) urtw_write16_c(sc, URTW_FEMR, 0xffff, 1); in urtw_8225v2_b_rf_init()
3250 error = urtw_set_mode(sc, URTW_EPROM_CMD_CONFIG); in urtw_8225v2_b_rf_init()
3253 (void) urtw_read8_c(sc, URTW_CONFIG1, &data, 0); in urtw_8225v2_b_rf_init()
3254 (void) urtw_write8_c(sc, URTW_CONFIG1, (data & 0x3f) | 0x80, 0); in urtw_8225v2_b_rf_init()
3255 error = urtw_set_mode(sc, URTW_EPROM_CMD_NORMAL); in urtw_8225v2_b_rf_init()
3259 (void) urtw_write8_c(sc, URTW_WPA_CONFIG, 0, 0); in urtw_8225v2_b_rf_init()
3260 urtw_8225v2_b_config_mac(sc); in urtw_8225v2_b_rf_init()
3261 (void) urtw_write16_c(sc, URTW_RFSW_CTRL, 0x569a, 2); in urtw_8225v2_b_rf_init()
3263 error = urtw_set_mode(sc, URTW_EPROM_CMD_CONFIG); in urtw_8225v2_b_rf_init()
3266 (void) urtw_read8_c(sc, URTW_CONFIG3, &data, 0); in urtw_8225v2_b_rf_init()
3267 (void) urtw_write8_c(sc, URTW_CONFIG3, in urtw_8225v2_b_rf_init()
3269 error = urtw_set_mode(sc, URTW_EPROM_CMD_NORMAL); in urtw_8225v2_b_rf_init()
3273 urtw_8225v2_b_init_rfe(sc); in urtw_8225v2_b_rf_init()
3277 (void) urtw_8225_write_c(sc, urtw_8225v2_b_rf[i].reg, in urtw_8225v2_b_rf_init()
3283 (void) urtw_8225_write_c(sc, 0x1, (uint8_t)(i + 1)); in urtw_8225v2_b_rf_init()
3284 (void) urtw_8225_write_c(sc, 0x2, urtw_8225v2_rxgain[i]); in urtw_8225v2_b_rf_init()
3287 (void) urtw_8225_write_c(sc, 0x03, 0x080); in urtw_8225v2_b_rf_init()
3288 (void) urtw_8225_write_c(sc, 0x05, 0x004); in urtw_8225v2_b_rf_init()
3289 (void) urtw_8225_write_c(sc, 0x00, 0x0b7); in urtw_8225v2_b_rf_init()
3290 (void) urtw_8225_write_c(sc, 0x02, 0xc4d); in urtw_8225v2_b_rf_init()
3292 (void) urtw_8225_write_c(sc, 0x02, 0x44d); in urtw_8225v2_b_rf_init()
3294 (void) urtw_8225_write_c(sc, 0x00, 0x2bf); in urtw_8225v2_b_rf_init()
3297 (void) urtw_write8_c(sc, URTW_TX_GAIN_CCK, 0x03, 0); in urtw_8225v2_b_rf_init()
3298 (void) urtw_write8_c(sc, URTW_TX_GAIN_OFDM, 0x07, 0); in urtw_8225v2_b_rf_init()
3299 (void) urtw_write8_c(sc, URTW_TX_ANTENNA, 0x03, 0); in urtw_8225v2_b_rf_init()
3301 (void) urtw_8187_write_phy_ofdm_c(sc, 0x80, 0x12); in urtw_8225v2_b_rf_init()
3304 (void) urtw_8187_write_phy_ofdm_c(sc, 0x0f, urtw_8225v2_agc[i]); in urtw_8225v2_b_rf_init()
3305 (void) urtw_8187_write_phy_ofdm_c(sc, 0x0e, (uint8_t)i + 0x80); in urtw_8225v2_b_rf_init()
3306 (void) urtw_8187_write_phy_ofdm_c(sc, 0x0e, 0); in urtw_8225v2_b_rf_init()
3308 (void) urtw_8187_write_phy_ofdm_c(sc, 0x80, 0x10); in urtw_8225v2_b_rf_init()
3312 (void) urtw_8187_write_phy_ofdm_c(sc, i, urtw_8225v2_ofdm[i]); in urtw_8225v2_b_rf_init()
3314 (void) urtw_8225v2_b_update_chan(sc); in urtw_8225v2_b_rf_init()
3316 (void) urtw_8187_write_phy_ofdm_c(sc, 0x97, 0x46); in urtw_8225v2_b_rf_init()
3317 (void) urtw_8187_write_phy_ofdm_c(sc, 0xa4, 0xb6); in urtw_8225v2_b_rf_init()
3318 (void) urtw_8187_write_phy_ofdm_c(sc, 0x85, 0xfc); in urtw_8225v2_b_rf_init()
3319 (void) urtw_8187_write_phy_cck_c(sc, 0xc1, 0x88); in urtw_8225v2_b_rf_init()
3322 ieee80211_chan2ieee(&sc->sc_ic, sc->sc_ic.ic_curchan)); in urtw_8225v2_b_rf_init()
3330 struct urtw_softc *sc = rf->rf_sc; in urtw_8225v2_b_rf_set_chan() local
3333 urtw_8225v2_b_set_txpwrlvl(sc, chan); in urtw_8225v2_b_rf_set_chan()
3334 error = urtw_8225_write_c(sc, 0x7, urtw_8225_channel[chan]); in urtw_8225v2_b_rf_set_chan()
3342 error = urtw_write16_c(sc, URTW_AC_VO, 0x5114, 0); in urtw_8225v2_b_rf_set_chan()
3345 error = urtw_write16_c(sc, URTW_AC_VI, 0x5114, 0); in urtw_8225v2_b_rf_set_chan()
3348 error = urtw_write16_c(sc, URTW_AC_BE, 0x5114, 0); in urtw_8225v2_b_rf_set_chan()
3351 error = urtw_write16_c(sc, URTW_AC_BK, 0x5114, 0); in urtw_8225v2_b_rf_set_chan()
3357 urtw_8225v2_b_set_txpwrlvl(struct urtw_softc *sc, int chan) in urtw_8225v2_b_set_txpwrlvl() argument
3363 int8_t cck_pwrlvl = sc->sc_txpwr_cck[chan] & 0xff; in urtw_8225v2_b_set_txpwrlvl()
3364 int8_t ofdm_pwrlvl = sc->sc_txpwr_ofdm[chan] & 0xff; in urtw_8225v2_b_set_txpwrlvl()
3366 if (sc->sc_hwrev & URTW_HWREV_8187B_B) { in urtw_8225v2_b_set_txpwrlvl()
3382 cck_pwrlvl += sc->sc_txpwr_cck_base; in urtw_8225v2_b_set_txpwrlvl()
3389 if (sc->sc_hwrev & URTW_HWREV_8187B_B) { in urtw_8225v2_b_set_txpwrlvl()
3404 (void) urtw_8187_write_phy_cck_c(sc, 0x44 + i, cck_pwrtable[i]); in urtw_8225v2_b_set_txpwrlvl()
3407 (void) urtw_write8_c(sc, URTW_TX_GAIN_CCK, in urtw_8225v2_b_set_txpwrlvl()
3418 ofdm_pwrlvl += sc->sc_txpwr_ofdm_base; in urtw_8225v2_b_set_txpwrlvl()
3422 (void) urtw_write8_c(sc, URTW_TX_GAIN_OFDM, in urtw_8225v2_b_set_txpwrlvl()
3425 if (sc->sc_hwrev & URTW_HWREV_8187B_B) { in urtw_8225v2_b_set_txpwrlvl()
3427 (void) urtw_8187_write_phy_ofdm_c(sc, 0x87, 0x60); in urtw_8225v2_b_set_txpwrlvl()
3428 (void) urtw_8187_write_phy_ofdm_c(sc, 0x89, 0x60); in urtw_8225v2_b_set_txpwrlvl()
3430 (void) urtw_8187_write_phy_ofdm_c(sc, 0x87, 0x5c); in urtw_8225v2_b_set_txpwrlvl()
3431 (void) urtw_8187_write_phy_ofdm_c(sc, 0x89, 0x5c); in urtw_8225v2_b_set_txpwrlvl()
3435 (void) urtw_8187_write_phy_ofdm_c(sc, 0x87, 0x5c); in urtw_8225v2_b_set_txpwrlvl()
3436 (void) urtw_8187_write_phy_ofdm_c(sc, 0x89, 0x5c); in urtw_8225v2_b_set_txpwrlvl()
3438 (void) urtw_8187_write_phy_ofdm_c(sc, 0x87, 0x54); in urtw_8225v2_b_set_txpwrlvl()
3439 (void) urtw_8187_write_phy_ofdm_c(sc, 0x89, 0x54); in urtw_8225v2_b_set_txpwrlvl()
3441 (void) urtw_8187_write_phy_ofdm_c(sc, 0x87, 0x50); in urtw_8225v2_b_set_txpwrlvl()
3442 (void) urtw_8187_write_phy_ofdm_c(sc, 0x89, 0x50); in urtw_8225v2_b_set_txpwrlvl()
3456 struct urtw_softc *sc = (struct urtw_softc *)ic; in urtw_send() local
3464 mutex_enter(&sc->tx_lock); in urtw_send()
3468 if (URTW_IS_SUSPENDING(sc)) { in urtw_send()
3473 if (((priority)? sc->sc_tx_normal_queued : sc->sc_tx_low_queued) >= in urtw_send()
3475 URTW8187_DBG(URTW_DEBUG_XMIT, (sc->sc_dev, CE_CONT, in urtw_send()
3477 sc->sc_tx_nobuf++; in urtw_send()
3521 if (sc->sc_hwrev & URTW_HWREV_8187) in urtw_send()
3552 if (sc->sc_hwrev & URTW_HWREV_8187) { in urtw_send()
3562 (void) urtw_led_ctl(sc, URTW_LED_CTL_TX); in urtw_send()
3565 URTW8187_DBG(URTW_DEBUG_XMIT, (sc->sc_dev, CE_CONT, in urtw_send()
3569 err = urtw_tx_start(sc, mtx, priority); in urtw_send()
3590 sc->sc_need_sched = 1; in urtw_send()
3592 mutex_exit(&sc->tx_lock); in urtw_send()
3600 struct urtw_softc *sc = (struct urtw_softc *)arg; in urtw_next_scan() local
3602 if (URTW_IS_NOT_RUNNING(sc)) { in urtw_next_scan()
3603 sc->sc_scan_id = 0; in urtw_next_scan()
3610 sc->sc_scan_id = 0; in urtw_next_scan()
3616 struct urtw_softc *sc = arg; in urtw_led_launch() local
3617 ieee80211com_t *ic = &sc->sc_ic; in urtw_led_launch()
3620 URTW_LEDLOCK(sc); in urtw_led_launch()
3621 if ((sc->sc_strategy != URTW_SW_LED_MODE0) || in urtw_led_launch()
3622 URTW_IS_NOT_RUNNING(sc) || in urtw_led_launch()
3623 URTW_IS_SUSPENDING(sc)) { in urtw_led_launch()
3624 URTW8187_DBG(URTW_DEBUG_LED, (sc->sc_dev, CE_CONT, in urtw_led_launch()
3626 sc->sc_strategy, in urtw_led_launch()
3627 sc->sc_flags)); in urtw_led_launch()
3628 sc->sc_led_ch = 0; in urtw_led_launch()
3629 sc->sc_gpio_ledinprogress = 0; in urtw_led_launch()
3630 URTW_LEDUNLOCK(sc); in urtw_led_launch()
3633 error = urtw_led_blink(sc); in urtw_led_launch()
3635 sc->sc_led_ch = timeout(urtw_led_launch, (void *)sc, in urtw_led_launch()
3638 URTW8187_DBG(URTW_DEBUG_LED, (sc->sc_dev, CE_CONT, in urtw_led_launch()
3641 sc->sc_led_ch = 0; in urtw_led_launch()
3642 URTW8187_DBG(URTW_DEBUG_LED, (sc->sc_dev, CE_CONT, in urtw_led_launch()
3645 URTW_LEDUNLOCK(sc); in urtw_led_launch()
3651 struct urtw_softc *sc = (struct urtw_softc *)ic; in urtw_newstate() local
3655 if (sc->sc_scan_id != 0) { in urtw_newstate()
3656 (void) untimeout(sc->sc_scan_id); in urtw_newstate()
3657 sc->sc_scan_id = 0; in urtw_newstate()
3659 URTW_LOCK(sc); in urtw_newstate()
3663 (sc->sc_dev, CE_CONT, "-> IEEE80211_S_INIT...arg(%d)\n", in urtw_newstate()
3665 if (sc->sc_flags & URTW_FLAG_HP) in urtw_newstate()
3667 (void) urtw_update_msr(sc, nstate); in urtw_newstate()
3668 (void) urtw_led_off(sc, URTW_LED_GPIO); in urtw_newstate()
3673 (sc->sc_dev, CE_CONT, in urtw_newstate()
3676 error = urtw_set_channel(sc); in urtw_newstate()
3679 (sc->sc_dev, CE_CONT, "scan setchan failed")); in urtw_newstate()
3682 sc->sc_scan_id = timeout(urtw_next_scan, (void *)sc, in urtw_newstate()
3683 drv_usectohz(sc->dwelltime * 1000)); in urtw_newstate()
3687 URTW8187_DBG(URTW_DEBUG_STATE, (sc->sc_dev, CE_CONT, in urtw_newstate()
3690 error = urtw_set_channel(sc); in urtw_newstate()
3693 (sc->sc_dev, CE_CONT, "auth setchan failed")); in urtw_newstate()
3698 URTW8187_DBG(URTW_DEBUG_STATE, (sc->sc_dev, CE_CONT, in urtw_newstate()
3701 error = urtw_set_channel(sc); in urtw_newstate()
3704 (sc->sc_dev, CE_CONT, "assoc setchan failed")); in urtw_newstate()
3710 (sc->sc_dev, CE_CONT, in urtw_newstate()
3713 error = urtw_set_channel(sc); in urtw_newstate()
3716 (sc->sc_dev, CE_CONT, "run setchan failed")); in urtw_newstate()
3721 (void) urtw_write32_c(sc, URTW_BSSID, in urtw_newstate()
3723 (void) urtw_write16_c(sc, URTW_BSSID + 4, in urtw_newstate()
3725 (void) urtw_update_msr(sc, nstate); in urtw_newstate()
3731 URTW_UNLOCK(sc); in urtw_newstate()
3734 URTW8187_DBG(URTW_DEBUG_STATE, (sc->sc_dev, CE_CONT, in urtw_newstate()
3738 error = sc->sc_newstate(ic, nstate, arg); in urtw_newstate()
3743 urtw_close_pipes(struct urtw_softc *sc) in urtw_close_pipes() argument
3747 if (sc->sc_rxpipe != NULL) { in urtw_close_pipes()
3748 usb_pipe_reset(sc->sc_dev, in urtw_close_pipes()
3749 sc->sc_rxpipe, flags, NULL, 0); in urtw_close_pipes()
3750 usb_pipe_close(sc->sc_dev, in urtw_close_pipes()
3751 sc->sc_rxpipe, flags, NULL, 0); in urtw_close_pipes()
3752 sc->sc_rxpipe = NULL; in urtw_close_pipes()
3755 if (sc->sc_txpipe_low != NULL) { in urtw_close_pipes()
3756 usb_pipe_reset(sc->sc_dev, in urtw_close_pipes()
3757 sc->sc_txpipe_low, flags, NULL, 0); in urtw_close_pipes()
3758 usb_pipe_close(sc->sc_dev, in urtw_close_pipes()
3759 sc->sc_txpipe_low, flags, NULL, 0); in urtw_close_pipes()
3760 sc->sc_txpipe_low = NULL; in urtw_close_pipes()
3763 if (sc->sc_txpipe_normal != NULL) { in urtw_close_pipes()
3764 usb_pipe_reset(sc->sc_dev, in urtw_close_pipes()
3765 sc->sc_txpipe_normal, flags, NULL, 0); in urtw_close_pipes()
3766 usb_pipe_close(sc->sc_dev, in urtw_close_pipes()
3767 sc->sc_txpipe_normal, flags, NULL, 0); in urtw_close_pipes()
3768 sc->sc_txpipe_normal = NULL; in urtw_close_pipes()
3773 urtw_open_pipes(struct urtw_softc *sc) in urtw_open_pipes() argument
3780 if (sc->sc_rxpipe || sc->sc_txpipe_low || sc->sc_txpipe_normal) in urtw_open_pipes()
3783 if ((sc->sc_hwrev & URTW_HWREV_8187) == 0) { in urtw_open_pipes()
3786 ep_node = usb_lookup_ep_data(sc->sc_dev, sc->sc_udev, 0, 0, in urtw_open_pipes()
3792 if ((err = usb_pipe_open(sc->sc_dev, in urtw_open_pipes()
3794 &sc->sc_txpipe_low)) != USB_SUCCESS) { in urtw_open_pipes()
3795 URTW8187_DBG(URTW_DEBUG_ACTIVE, (sc->sc_dev, CE_CONT, in urtw_open_pipes()
3801 ep_node = usb_lookup_ep_data(sc->sc_dev, sc->sc_udev, 0, 0, in urtw_open_pipes()
3807 if ((err = usb_pipe_open(sc->sc_dev, in urtw_open_pipes()
3809 &sc->sc_txpipe_normal)) != USB_SUCCESS) { in urtw_open_pipes()
3810 URTW8187_DBG(URTW_DEBUG_ACTIVE, (sc->sc_dev, CE_CONT, in urtw_open_pipes()
3816 ep_node = usb_lookup_ep_data(sc->sc_dev, sc->sc_udev, 0, 0, 0, in urtw_open_pipes()
3822 if ((err = usb_pipe_open(sc->sc_dev, in urtw_open_pipes()
3824 &sc->sc_rxpipe)) != USB_SUCCESS) { in urtw_open_pipes()
3825 URTW8187_DBG(URTW_DEBUG_ACTIVE, (sc->sc_dev, CE_CONT, in urtw_open_pipes()
3833 urtw_close_pipes(sc); in urtw_open_pipes()
3838 urtw_tx_start(struct urtw_softc *sc, mblk_t *mp, int priority) in urtw_tx_start() argument
3843 req = usb_alloc_bulk_req(sc->sc_dev, 0, USB_FLAGS_SLEEP); in urtw_tx_start()
3845 URTW8187_DBG(URTW_DEBUG_TX_PROC, (sc->sc_dev, CE_CONT, in urtw_tx_start()
3853 req->bulk_client_private = (usb_opaque_t)sc; in urtw_tx_start()
3862 (priority)?sc->sc_txpipe_normal:sc->sc_txpipe_low, req, 0)) in urtw_tx_start()
3864 sc->sc_ic.ic_stats.is_tx_failed++; in urtw_tx_start()
3865 URTW8187_DBG(URTW_DEBUG_TX_PROC, (sc->sc_dev, CE_CONT, in urtw_tx_start()
3872 sc->sc_tx_normal_queued++; in urtw_tx_start()
3874 sc->sc_tx_low_queued++; in urtw_tx_start()
3881 urtw_rx_start(struct urtw_softc *sc) in urtw_rx_start() argument
3886 req = usb_alloc_bulk_req(sc->sc_dev, URTW_RXBUF_SIZE, USB_FLAGS_SLEEP); in urtw_rx_start()
3888 URTW8187_DBG(URTW_DEBUG_RECV, (sc->sc_dev, CE_CONT, in urtw_rx_start()
3894 req->bulk_client_private = (usb_opaque_t)sc; in urtw_rx_start()
3903 err = usb_pipe_bulk_xfer(sc->sc_rxpipe, req, 0); in urtw_rx_start()
3906 URTW8187_DBG(URTW_DEBUG_RECV, (sc->sc_dev, CE_CONT, in urtw_rx_start()
3912 mutex_enter(&sc->rx_lock); in urtw_rx_start()
3913 sc->rx_queued++; in urtw_rx_start()
3914 mutex_exit(&sc->rx_lock); in urtw_rx_start()
3922 struct urtw_softc *sc; in urtw_disconnect() local
3924 sc = ddi_get_soft_state(urtw_soft_state_p, ddi_get_instance(devinfo)); in urtw_disconnect()
3926 (sc->sc_dev, CE_CONT, "urtw_offline()\n")); in urtw_disconnect()
3928 if (URTW_IS_RUNNING(sc)) { in urtw_disconnect()
3929 urtw_stop(sc); in urtw_disconnect()
3930 URTW_LOCK(sc); in urtw_disconnect()
3931 sc->sc_flags |= URTW_FLAG_PLUGIN_ONLINE; in urtw_disconnect()
3932 URTW_UNLOCK(sc); in urtw_disconnect()
3934 sc->sc_flags |= URTW_FLAG_HP; in urtw_disconnect()
3935 ieee80211_new_state(&sc->sc_ic, IEEE80211_S_INIT, -1); in urtw_disconnect()
3936 ieee80211_stop_watchdog(&sc->sc_ic); in urtw_disconnect()
3943 struct urtw_softc *sc; in urtw_reconnect() local
3945 sc = ddi_get_soft_state(urtw_soft_state_p, ddi_get_instance(devinfo)); in urtw_reconnect()
3946 if (usb_check_same_device(sc->sc_dev, NULL, USB_LOG_L2, -1, in urtw_reconnect()
3949 URTW8187_DBG(URTW_DEBUG_HOTPLUG, (sc->sc_dev, CE_CONT, in urtw_reconnect()
3951 sc->sc_flags &= ~URTW_FLAG_HP; in urtw_reconnect()
3952 if (URTW_IS_PLUGIN_ONLINE(sc)) { in urtw_reconnect()
3953 error = sc->urtw_init(sc); in urtw_reconnect()
3955 URTW_LOCK(sc); in urtw_reconnect()
3956 sc->sc_flags &= ~URTW_FLAG_PLUGIN_ONLINE; in urtw_reconnect()
3957 URTW_UNLOCK(sc); in urtw_reconnect()
3966 struct urtw_softc *sc = (struct urtw_softc *)arg; in urtw_m_tx() local
3967 struct ieee80211com *ic = &sc->sc_ic; in urtw_m_tx()
3971 URTW_IS_SUSPENDING(sc)) { in urtw_m_tx()
3991 struct urtw_softc *sc = (struct urtw_softc *)arg; in urtw_m_start() local
3995 (sc->sc_dev, CE_CONT, "urtw_m_start\n")); in urtw_m_start()
3996 error = sc->urtw_init(sc); in urtw_m_start()
4003 struct urtw_softc *sc = (struct urtw_softc *)arg; in urtw_m_stop() local
4005 URTW8187_DBG(URTW_DEBUG_ACTIVE, (sc->sc_dev, CE_CONT, in urtw_m_stop()
4007 ieee80211_new_state(&sc->sc_ic, IEEE80211_S_INIT, -1); in urtw_m_stop()
4008 ieee80211_stop_watchdog(&sc->sc_ic); in urtw_m_stop()
4009 (void) urtw_stop(sc); in urtw_m_stop()
4037 struct urtw_softc *sc = (struct urtw_softc *)arg; in urtw_m_getprop() local
4040 err = ieee80211_getprop(&sc->sc_ic, pr_name, wldp_pr_num, in urtw_m_getprop()
4049 struct urtw_softc *sc = (struct urtw_softc *)arg; in urtw_m_propinfo() local
4051 ieee80211_propinfo(&sc->sc_ic, pr_name, wldp_pr_num, mph); in urtw_m_propinfo()
4058 struct urtw_softc *sc = (struct urtw_softc *)arg; in urtw_m_setprop() local
4059 struct ieee80211com *ic = &sc->sc_ic; in urtw_m_setprop()
4064 URTW_LOCK(sc); in urtw_m_setprop()
4066 if (URTW_IS_RUNNING(sc) && ic->ic_des_esslen) { in urtw_m_setprop()
4067 URTW_UNLOCK(sc); in urtw_m_setprop()
4068 err = sc->urtw_init(sc); in urtw_m_setprop()
4071 (sc->sc_dev, CE_CONT, in urtw_m_setprop()
4076 URTW_LOCK(sc); in urtw_m_setprop()
4080 URTW_UNLOCK(sc); in urtw_m_setprop()
4087 struct urtw_softc *sc = (struct urtw_softc *)arg; in urtw_m_ioctl() local
4088 struct ieee80211com *ic = &sc->sc_ic; in urtw_m_ioctl()
4092 URTW_LOCK(sc); in urtw_m_ioctl()
4094 if (URTW_IS_RUNNING(sc) && ic->ic_des_esslen) { in urtw_m_ioctl()
4095 URTW_UNLOCK(sc); in urtw_m_ioctl()
4096 err = sc->urtw_init(sc); in urtw_m_ioctl()
4099 (sc->sc_dev, in urtw_m_ioctl()
4104 URTW_LOCK(sc); in urtw_m_ioctl()
4107 URTW_UNLOCK(sc); in urtw_m_ioctl()
4113 struct urtw_softc *sc = (struct urtw_softc *)arg; in urtw_m_stat() local
4114 ieee80211com_t *ic = &sc->sc_ic; in urtw_m_stat()
4118 URTW_LOCK(sc); in urtw_m_stat()
4128 *val = sc->sc_tx_nobuf; in urtw_m_stat()
4131 *val = sc->sc_rx_nobuf; in urtw_m_stat()
4134 *val = sc->sc_rx_err; in urtw_m_stat()
4163 URTW_UNLOCK(sc); in urtw_m_stat()
4166 URTW_UNLOCK(sc); in urtw_m_stat()
4169 URTW_UNLOCK(sc); in urtw_m_stat()
4177 struct urtw_softc *sc = arg; in urtw_watchdog() local
4178 struct ieee80211com *ic = &sc->sc_ic; in urtw_watchdog()
4182 URTW_LOCK(sc); in urtw_watchdog()
4183 if (URTW_IS_NOT_RUNNING(sc)) { in urtw_watchdog()
4184 URTW_UNLOCK(sc); in urtw_watchdog()
4188 URTW_UNLOCK(sc); in urtw_watchdog()
4195 (sc->sc_dev, CE_CONT, in urtw_watchdog()
4207 struct urtw_softc *sc; in urtw_attach() local
4222 sc = ddi_get_soft_state(urtw_soft_state_p, in urtw_attach()
4224 ASSERT(sc != NULL); in urtw_attach()
4226 (sc->sc_dev, CE_CONT, "urtw: resume\n")); in urtw_attach()
4227 URTW_LOCK(sc); in urtw_attach()
4228 sc->sc_flags &= ~URTW_FLAG_SUSPEND; in urtw_attach()
4229 URTW_UNLOCK(sc); in urtw_attach()
4230 if (URTW_IS_PLUGIN_ONLINE(sc)) { in urtw_attach()
4231 error = sc->urtw_init(sc); in urtw_attach()
4233 URTW_LOCK(sc); in urtw_attach()
4234 sc->sc_flags &= ~URTW_FLAG_PLUGIN_ONLINE; in urtw_attach()
4235 URTW_UNLOCK(sc); in urtw_attach()
4250 sc = ddi_get_soft_state(urtw_soft_state_p, instance); in urtw_attach()
4251 ic = (ieee80211com_t *)&sc->sc_ic; in urtw_attach()
4252 sc->sc_dev = devinfo; in urtw_attach()
4259 if (usb_get_dev_data(devinfo, &sc->sc_udev, in urtw_attach()
4261 sc->sc_udev = NULL; in urtw_attach()
4265 mutex_init(&sc->sc_genlock, NULL, MUTEX_DRIVER, NULL); in urtw_attach()
4266 mutex_init(&sc->tx_lock, NULL, MUTEX_DRIVER, NULL); in urtw_attach()
4267 mutex_init(&sc->rx_lock, NULL, MUTEX_DRIVER, NULL); in urtw_attach()
4268 mutex_init(&sc->sc_ledlock, NULL, MUTEX_DRIVER, NULL); in urtw_attach()
4270 e = urtw_lookup(sc->sc_udev->dev_descr->idVendor, in urtw_attach()
4271 sc->sc_udev->dev_descr->idProduct); in urtw_attach()
4276 sc->sc_hwrev = e->rev; in urtw_attach()
4278 if (sc->sc_hwrev & URTW_HWREV_8187) { in urtw_attach()
4279 (void) urtw_read32_c(sc, URTW_TX_CONF, &data, 0); in urtw_attach()
4283 sc->sc_hwrev |= URTW_HWREV_8187_D; in urtw_attach()
4291 sc->sc_hwrev = URTW_HWREV_8187B | URTW_HWREV_8187B_B; in urtw_attach()
4295 sc->sc_hwrev |= URTW_HWREV_8187_B; in urtw_attach()
4301 (void) urtw_read8_c(sc, URTW_8187B_HWREV, &data8, 0); in urtw_attach()
4304 sc->sc_hwrev |= URTW_HWREV_8187B_B; in urtw_attach()
4308 sc->sc_hwrev |= URTW_HWREV_8187B_D; in urtw_attach()
4312 sc->sc_hwrev |= URTW_HWREV_8187B_E; in urtw_attach()
4316 sc->sc_hwrev |= URTW_HWREV_8187B_B; in urtw_attach()
4322 URTW8187_DBG(URTW_DEBUG_HWTYPE, (sc->sc_dev, CE_CONT, in urtw_attach()
4324 if (sc->sc_hwrev & URTW_HWREV_8187) { in urtw_attach()
4325 sc->urtw_init = urtw_8187_init; in urtw_attach()
4327 sc->urtw_init = urtw_8187b_init; in urtw_attach()
4330 if (urtw_read32_c(sc, URTW_RX, &data, 0)) in urtw_attach()
4332 sc->sc_epromtype = (data & URTW_RX_9356SEL) ? URTW_EEPROM_93C56 : in urtw_attach()
4334 if (sc->sc_epromtype == URTW_EEPROM_93C56) in urtw_attach()
4335 URTW8187_DBG(URTW_DEBUG_HWTYPE, (sc->sc_dev, CE_CONT, in urtw_attach()
4338 URTW8187_DBG(URTW_DEBUG_HWTYPE, (sc->sc_dev, CE_CONT, in urtw_attach()
4340 error = urtw_get_rfchip(sc); in urtw_attach()
4343 error = urtw_get_macaddr(sc); in urtw_attach()
4346 error = urtw_get_txpwr(sc); in urtw_attach()
4349 error = urtw_led_init(sc); /* XXX incompleted */ in urtw_attach()
4353 sc->sc_rts_retry = URTW_DEFAULT_RTS_RETRY; in urtw_attach()
4354 sc->sc_tx_retry = URTW_DEFAULT_TX_RETRY; in urtw_attach()
4355 sc->sc_currate = 3; in urtw_attach()
4357 sc->sc_preamble_mode = 2; in urtw_attach()
4392 sc->sc_newstate = ic->ic_newstate; in urtw_attach()
4398 sc->dwelltime = 250; in urtw_attach()
4399 sc->sc_flags = 0; in urtw_attach()
4410 URTW8187_DBG(URTW_DEBUG_ATTACH, (sc->sc_dev, CE_CONT, in urtw_attach()
4416 macp->m_driver = sc; in urtw_attach()
4453 URTW8187_DBG(URTW_DEBUG_ATTACH, (sc->sc_dev, CE_CONT, in urtw_attach()
4462 mutex_destroy(&sc->sc_genlock); in urtw_attach()
4463 mutex_destroy(&sc->tx_lock); in urtw_attach()
4464 mutex_destroy(&sc->rx_lock); in urtw_attach()
4465 mutex_destroy(&sc->sc_ledlock); in urtw_attach()
4467 usb_client_detach(sc->sc_dev, sc->sc_udev); in urtw_attach()
4477 struct urtw_softc *sc; in urtw_detach() local
4479 sc = ddi_get_soft_state(urtw_soft_state_p, ddi_get_instance(devinfo)); in urtw_detach()
4480 URTW8187_DBG(URTW_DEBUG_ATTACH, (sc->sc_dev, in urtw_detach()
4488 (sc->sc_dev, CE_CONT, "urtw: suspend\n")); in urtw_detach()
4490 ieee80211_new_state(&sc->sc_ic, IEEE80211_S_INIT, -1); in urtw_detach()
4491 ieee80211_stop_watchdog(&sc->sc_ic); in urtw_detach()
4493 URTW_LOCK(sc); in urtw_detach()
4494 sc->sc_flags |= URTW_FLAG_SUSPEND; in urtw_detach()
4495 URTW_UNLOCK(sc); in urtw_detach()
4496 if (URTW_IS_RUNNING(sc)) { in urtw_detach()
4497 urtw_stop(sc); in urtw_detach()
4498 URTW_LOCK(sc); in urtw_detach()
4499 sc->sc_flags |= URTW_FLAG_PLUGIN_ONLINE; in urtw_detach()
4500 URTW_UNLOCK(sc); in urtw_detach()
4507 if (mac_disable(sc->sc_ic.ic_mach) != 0) in urtw_detach()
4509 urtw_stop(sc); in urtw_detach()
4513 (void) mac_unregister(sc->sc_ic.ic_mach); in urtw_detach()
4515 ieee80211_detach(&sc->sc_ic); in urtw_detach()
4517 usb_client_detach(devinfo, sc->sc_udev); in urtw_detach()
4518 mutex_destroy(&sc->sc_genlock); in urtw_detach()
4519 mutex_destroy(&sc->tx_lock); in urtw_detach()
4520 mutex_destroy(&sc->rx_lock); in urtw_detach()
4521 mutex_destroy(&sc->sc_ledlock); in urtw_detach()
4522 sc->sc_udev = NULL; in urtw_detach()