Commit b39adc63 authored by Sujith Manoharan's avatar Sujith Manoharan Committed by Kalle Valo
Browse files

ath9k: Check MCI PowerSave state



The power save state of MCI has to be disabled
when enabling WoW sleep, check this properly.
ar9003_mci_state() doesn't handle MCI_STATE_GET_WLAN_PS_STATE
right now, but this will be done later when proper
support for MCI/PS is added.

Signed-off-by: default avatarSujith Manoharan <c_manoha@qca.qualcomm.com>
Signed-off-by: default avatarKalle Valo <kvalo@codeaurora.org>
parent ff6f0c03
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -188,6 +188,13 @@ enum mci_bt_state {
	MCI_BT_CAL
};

enum mci_ps_state {
	MCI_PS_DISABLE,
	MCI_PS_ENABLE,
	MCI_PS_ENABLE_OFF,
	MCI_PS_ENABLE_ON
};

/* Type of state query */
enum mci_state_type {
	MCI_STATE_ENABLE,
+15 −1
Original line number Diff line number Diff line
@@ -20,11 +20,25 @@
#include "reg_wow.h"
#include "hw-ops.h"

static void ath9k_hw_set_sta_powersave(struct ath_hw *ah)
{
	if (!ath9k_hw_mci_is_enabled(ah))
		goto set;
	/*
	 * If MCI is being used, set PWR_SAV only when MCI's
	 * PS state is disabled.
	 */
	if (ar9003_mci_state(ah, MCI_STATE_GET_WLAN_PS_STATE) != MCI_PS_DISABLE)
		return;
set:
	REG_SET_BIT(ah, AR_STA_ID1, AR_STA_ID1_PWR_SAV);
}

static void ath9k_hw_set_powermode_wow_sleep(struct ath_hw *ah)
{
	struct ath_common *common = ath9k_hw_common(ah);

	REG_SET_BIT(ah, AR_STA_ID1, AR_STA_ID1_PWR_SAV);
	ath9k_hw_set_sta_powersave(ah);

	/* set rx disable bit */
	REG_WRITE(ah, AR_CR, AR_CR_RXD);