ath9k_hw_setpower() is a core driver helper with locking
protection. Locking protection should be left to the driver
core, not the hw code. Hardware code no longer contends for
locking when it needs to wake up the chip or put it to sleep.
Signed-off-by: Luis R. Rodriguez <lrodriguez@atheros.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
- if (!ath9k_hw_setpower(ah, ATH9K_PM_AWAKE)) {
+ if (!ath9k_hw_setpower_nolock(ah, ATH9K_PM_AWAKE)) {
DPRINTF(ah, ATH_DBG_FATAL, "Couldn't wakeup chip\n");
return -EIO;
}
DPRINTF(ah, ATH_DBG_FATAL, "Couldn't wakeup chip\n");
return -EIO;
}
ath9k_hw_ani_disable(ah);
ath9k_hw_rf_free(ah);
ath9k_hw_ani_disable(ah);
ath9k_hw_rf_free(ah);
- ath9k_hw_setpower(ah, ATH9K_PM_FULL_SLEEP);
+ ath9k_hw_setpower_nolock(ah, ATH9K_PM_FULL_SLEEP);
} else if (!ath9k_hw_set_reset_reg(ah, ATH9K_RESET_WARM))
return false;
} else if (!ath9k_hw_set_reset_reg(ah, ATH9K_RESET_WARM))
return false;
- if (!ath9k_hw_setpower(ah, ATH9K_PM_AWAKE))
+ if (!ath9k_hw_setpower_nolock(ah, ATH9K_PM_AWAKE))
return false;
ah->chip_fullsleep = false;
return false;
ah->chip_fullsleep = false;
ah->txchainmask = sc->tx_chainmask;
ah->rxchainmask = sc->rx_chainmask;
ah->txchainmask = sc->tx_chainmask;
ah->rxchainmask = sc->rx_chainmask;
- if (!ath9k_hw_setpower(ah, ATH9K_PM_AWAKE))
+ if (!ath9k_hw_setpower_nolock(ah, ATH9K_PM_AWAKE))
return -EIO;
if (curchan && !ah->chip_fullsleep)
return -EIO;
if (curchan && !ah->chip_fullsleep)
bool ath9k_hw_disable(struct ath_hw *ah)
{
bool ath9k_hw_disable(struct ath_hw *ah)
{
- if (!ath9k_hw_setpower(ah, ATH9K_PM_AWAKE))
+ if (!ath9k_hw_setpower_nolock(ah, ATH9K_PM_AWAKE))
return false;
return ath9k_hw_set_reset_reg(ah, ATH9K_RESET_COLD);
return false;
return ath9k_hw_set_reset_reg(ah, ATH9K_RESET_COLD);