Commit 05020d23 authored by Sujith's avatar Sujith Committed by John W. Linville

ath9k_hw: add HTC init hardware call for special resets for AR9271

AR9271 needs a full reset only upon the first reset, add
a call for the driver to enable these special resets. We
can optimize this out later without an export.
Signed-off-by: default avatarSujith <Sujith.Manoharan@atheros.com>
Signed-off-by: default avatarVasanthakumar Thiagarajan <vasanth@atheros.com>
Signed-off-by: default avatarLuis R. Rodriguez <lrodriguez@atheros.com>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent 25e2ab17
...@@ -1951,6 +1951,7 @@ int ath9k_hw_reset(struct ath_hw *ah, struct ath9k_channel *chan, ...@@ -1951,6 +1951,7 @@ int ath9k_hw_reset(struct ath_hw *ah, struct ath9k_channel *chan,
ath9k_hw_mark_phy_inactive(ah); ath9k_hw_mark_phy_inactive(ah);
/* Only required on the first reset */
if (AR_SREV_9271(ah) && ah->htc_reset_init) { if (AR_SREV_9271(ah) && ah->htc_reset_init) {
REG_WRITE(ah, REG_WRITE(ah,
AR9271_RESET_POWER_DOWN_CONTROL, AR9271_RESET_POWER_DOWN_CONTROL,
...@@ -1963,6 +1964,7 @@ int ath9k_hw_reset(struct ath_hw *ah, struct ath9k_channel *chan, ...@@ -1963,6 +1964,7 @@ int ath9k_hw_reset(struct ath_hw *ah, struct ath9k_channel *chan,
return -EINVAL; return -EINVAL;
} }
/* Only required on the first reset */
if (AR_SREV_9271(ah) && ah->htc_reset_init) { if (AR_SREV_9271(ah) && ah->htc_reset_init) {
ah->htc_reset_init = false; ah->htc_reset_init = false;
REG_WRITE(ah, REG_WRITE(ah,
...@@ -3857,6 +3859,16 @@ void ath_gen_timer_isr(struct ath_hw *ah) ...@@ -3857,6 +3859,16 @@ void ath_gen_timer_isr(struct ath_hw *ah)
} }
EXPORT_SYMBOL(ath_gen_timer_isr); EXPORT_SYMBOL(ath_gen_timer_isr);
/********/
/* HTC */
/********/
void ath9k_hw_htc_resetinit(struct ath_hw *ah)
{
ah->htc_reset_init = true;
}
EXPORT_SYMBOL(ath9k_hw_htc_resetinit);
static struct { static struct {
u32 version; u32 version;
const char * name; const char * name;
......
...@@ -707,6 +707,9 @@ u32 ath9k_hw_gettsf32(struct ath_hw *ah); ...@@ -707,6 +707,9 @@ u32 ath9k_hw_gettsf32(struct ath_hw *ah);
void ath9k_hw_name(struct ath_hw *ah, char *hw_name, size_t len); void ath9k_hw_name(struct ath_hw *ah, char *hw_name, size_t len);
/* HTC */
void ath9k_hw_htc_resetinit(struct ath_hw *ah);
#define ATH_PCIE_CAP_LINK_CTRL 0x70 #define ATH_PCIE_CAP_LINK_CTRL 0x70
#define ATH_PCIE_CAP_LINK_L0S 1 #define ATH_PCIE_CAP_LINK_L0S 1
#define ATH_PCIE_CAP_LINK_L1 2 #define ATH_PCIE_CAP_LINK_L1 2
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment