static A_STATUS ar6000_resume_ev(void *context) { AR_SOFTC_T *ar = (AR_SOFTC_T *)context; A_UINT16 powerCtrl = ar->arOsPowerCtrl; wake_lock(&ar6k_init_wake_lock); AR_DEBUG_PRINTF(ATH_DEBUG_SUSPEND, ("%s: enter previous state %d wowState %d\n", __func__, powerCtrl, ar->arWowState)); ar->arOsPowerCtrl = WLAN_PWR_CTRL_UP; switch (powerCtrl) { case WLAN_PWR_CTRL_WOW: ar6000_wow_resume(ar); break; case WLAN_PWR_CTRL_CUT_PWR: ar6000_restart_endpoint(ar->arNetDev); break; case WLAN_PWR_CTRL_DEEP_SLEEP: ar6000_set_wlan_state(ar, WLAN_ENABLED); break; case WLAN_PWR_CTRL_DEEP_SLEEP_DISABLED: break; case WLAN_PWR_CTRL_UP: break; default: AR_DEBUG_PRINTF(ATH_DEBUG_ERR, ("Strange SDIO bus power mode!!\n")); break; } wake_unlock(&ar6k_init_wake_lock); return A_OK; }
A_STATUS ar6000_exit_cut_power_state(AR_SOFTC_T *ar) { WMI_REPORT_SLEEP_STATE_EVENT wmiSleepEvent ; ar6000_restart_endpoint(ar->arNetDev); wmiSleepEvent.sleepState = WMI_REPORT_SLEEP_STATUS_IS_DEEP_SLEEP; ar6000_send_event_to_app(ar, WMI_REPORT_SLEEP_STATE_EVENTID, (A_UINT8*)&wmiSleepEvent, sizeof(WMI_REPORT_SLEEP_STATE_EVENTID)); return A_OK; }