ath9k: move ath9k_ps_wakeup() and ath9k_ps_restore() to main.c
These are driver core helpers. Signed-off-by: Luis R. Rodriguez <lrodriguez@atheros.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
parent
21526d57ad
commit
a91d75aec1
@ -2932,8 +2932,7 @@ static bool ath9k_hw_set_power_awake(struct ath_hw *ah, int setChip)
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool ath9k_hw_setpower_nolock(struct ath_hw *ah,
|
bool ath9k_hw_setpower_nolock(struct ath_hw *ah, enum ath9k_power_mode mode)
|
||||||
enum ath9k_power_mode mode)
|
|
||||||
{
|
{
|
||||||
int status = true, setChip = true;
|
int status = true, setChip = true;
|
||||||
static const char *modes[] = {
|
static const char *modes[] = {
|
||||||
@ -2982,39 +2981,6 @@ bool ath9k_hw_setpower(struct ath_hw *ah, enum ath9k_power_mode mode)
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ath9k_ps_wakeup(struct ath_softc *sc)
|
|
||||||
{
|
|
||||||
unsigned long flags;
|
|
||||||
|
|
||||||
spin_lock_irqsave(&sc->sc_pm_lock, flags);
|
|
||||||
if (++sc->ps_usecount != 1)
|
|
||||||
goto unlock;
|
|
||||||
|
|
||||||
ath9k_hw_setpower_nolock(sc->sc_ah, ATH9K_PM_AWAKE);
|
|
||||||
|
|
||||||
unlock:
|
|
||||||
spin_unlock_irqrestore(&sc->sc_pm_lock, flags);
|
|
||||||
}
|
|
||||||
|
|
||||||
void ath9k_ps_restore(struct ath_softc *sc)
|
|
||||||
{
|
|
||||||
unsigned long flags;
|
|
||||||
|
|
||||||
spin_lock_irqsave(&sc->sc_pm_lock, flags);
|
|
||||||
if (--sc->ps_usecount != 0)
|
|
||||||
goto unlock;
|
|
||||||
|
|
||||||
if (sc->ps_enabled &&
|
|
||||||
!(sc->sc_flags & (SC_OP_WAIT_FOR_BEACON |
|
|
||||||
SC_OP_WAIT_FOR_CAB |
|
|
||||||
SC_OP_WAIT_FOR_PSPOLL_DATA |
|
|
||||||
SC_OP_WAIT_FOR_TX_ACK)))
|
|
||||||
ath9k_hw_setpower_nolock(sc->sc_ah, ATH9K_PM_NETWORK_SLEEP);
|
|
||||||
|
|
||||||
unlock:
|
|
||||||
spin_unlock_irqrestore(&sc->sc_pm_lock, flags);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Helper for ASPM support.
|
* Helper for ASPM support.
|
||||||
*
|
*
|
||||||
|
@ -652,8 +652,10 @@ void ath9k_hw_set11nmac2040(struct ath_hw *ah, enum ath9k_ht_macmode mode);
|
|||||||
void ath9k_hw_beaconinit(struct ath_hw *ah, u32 next_beacon, u32 beacon_period);
|
void ath9k_hw_beaconinit(struct ath_hw *ah, u32 next_beacon, u32 beacon_period);
|
||||||
void ath9k_hw_set_sta_beacon_timers(struct ath_hw *ah,
|
void ath9k_hw_set_sta_beacon_timers(struct ath_hw *ah,
|
||||||
const struct ath9k_beacon_state *bs);
|
const struct ath9k_beacon_state *bs);
|
||||||
bool ath9k_hw_setpower(struct ath_hw *ah,
|
|
||||||
enum ath9k_power_mode mode);
|
bool ath9k_hw_setpower_nolock(struct ath_hw *ah, enum ath9k_power_mode mode);
|
||||||
|
bool ath9k_hw_setpower(struct ath_hw *ah, enum ath9k_power_mode mode);
|
||||||
|
|
||||||
void ath9k_hw_configpcipowersave(struct ath_hw *ah, int restore, int power_off);
|
void ath9k_hw_configpcipowersave(struct ath_hw *ah, int restore, int power_off);
|
||||||
|
|
||||||
/* Interrupt Handling */
|
/* Interrupt Handling */
|
||||||
|
@ -243,6 +243,39 @@ static struct ath9k_channel *ath_get_curchannel(struct ath_softc *sc,
|
|||||||
return channel;
|
return channel;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ath9k_ps_wakeup(struct ath_softc *sc)
|
||||||
|
{
|
||||||
|
unsigned long flags;
|
||||||
|
|
||||||
|
spin_lock_irqsave(&sc->sc_pm_lock, flags);
|
||||||
|
if (++sc->ps_usecount != 1)
|
||||||
|
goto unlock;
|
||||||
|
|
||||||
|
ath9k_hw_setpower_nolock(sc->sc_ah, ATH9K_PM_AWAKE);
|
||||||
|
|
||||||
|
unlock:
|
||||||
|
spin_unlock_irqrestore(&sc->sc_pm_lock, flags);
|
||||||
|
}
|
||||||
|
|
||||||
|
void ath9k_ps_restore(struct ath_softc *sc)
|
||||||
|
{
|
||||||
|
unsigned long flags;
|
||||||
|
|
||||||
|
spin_lock_irqsave(&sc->sc_pm_lock, flags);
|
||||||
|
if (--sc->ps_usecount != 0)
|
||||||
|
goto unlock;
|
||||||
|
|
||||||
|
if (sc->ps_enabled &&
|
||||||
|
!(sc->sc_flags & (SC_OP_WAIT_FOR_BEACON |
|
||||||
|
SC_OP_WAIT_FOR_CAB |
|
||||||
|
SC_OP_WAIT_FOR_PSPOLL_DATA |
|
||||||
|
SC_OP_WAIT_FOR_TX_ACK)))
|
||||||
|
ath9k_hw_setpower_nolock(sc->sc_ah, ATH9K_PM_NETWORK_SLEEP);
|
||||||
|
|
||||||
|
unlock:
|
||||||
|
spin_unlock_irqrestore(&sc->sc_pm_lock, flags);
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Set/change channels. If the channel is really being changed, it's done
|
* Set/change channels. If the channel is really being changed, it's done
|
||||||
* by reseting the chip. To accomplish this we must first cleanup any pending
|
* by reseting the chip. To accomplish this we must first cleanup any pending
|
||||||
|
Loading…
x
Reference in New Issue
Block a user