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: Sujith <Sujith.Manoharan@atheros.com> Signed-off-by: Vasanthakumar Thiagarajan <vasanth@atheros.com> Signed-off-by: Luis R. Rodriguez <lrodriguez@atheros.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
@@ -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,
|
|||||||
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)
|
|||||||
}
|
}
|
||||||
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);
|
|||||||
|
|
||||||
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
|
||||||
|
Reference in New Issue
Block a user