void r88eu_post_init(struct rtwn_softc *sc) { /* Enable per-packet TX report. */ rtwn_setbits_1(sc, R88E_TX_RPT_CTRL, 0, R88E_TX_RPT1_ENA); /* Disable Tx if MACID is not associated. */ rtwn_write_4(sc, R88E_MACID_NO_LINK, 0xffffffff); rtwn_write_4(sc, R88E_MACID_NO_LINK + 4, 0xffffffff); r88e_macid_enable_link(sc, RTWN_MACID_BC, 1); /* Perform LO and IQ calibrations. */ r88e_iq_calib(sc); /* Perform LC calibration. */ r92c_lc_calib(sc); rtwn_write_1(sc, R92C_USB_HRPWM, 0); if (sc->sc_ratectl_sysctl == RTWN_RATECTL_FW) { /* No support (yet?) for f/w rate adaptation. */ sc->sc_ratectl = RTWN_RATECTL_NET80211; } else sc->sc_ratectl = sc->sc_ratectl_sysctl; }
void r92cu_post_init(struct rtwn_softc *sc) { /* Perform LO and IQ calibrations. */ r92c_iq_calib(sc); /* Perform LC calibration. */ r92c_lc_calib(sc); /* Fix USB interference issue. */ rtwn_write_1(sc, 0xfe40, 0xe0); rtwn_write_1(sc, 0xfe41, 0x8d); rtwn_write_1(sc, 0xfe42, 0x80); r92c_pa_bias_init(sc); /* Fix for lower temperature. */ rtwn_write_1(sc, 0x15, 0xe9); #ifndef RTWN_WITHOUT_UCODE if (sc->sc_flags & RTWN_FW_LOADED) { struct r92c_softc *rs = sc->sc_priv; if (sc->sc_ratectl_sysctl == RTWN_RATECTL_FW) { /* XXX firmware RA does not work yet */ sc->sc_ratectl = RTWN_RATECTL_NET80211; } else sc->sc_ratectl = sc->sc_ratectl_sysctl; /* Start C2H event handling. */ callout_reset(&rs->rs_c2h_report, rs->rs_c2h_timeout, r92c_handle_c2h_report, sc); } else #endif sc->sc_ratectl = RTWN_RATECTL_NONE; }