mirror of https://gitee.com/openkylin/linux.git
ath9k_hw: skip asynch fifo enablement to AR9003
The asynch fifo code is specific to >= AR9287 so stuff it into the AR9002 hardware family code and skip it for AR9003 cards. Signed-off-by: Luis R. Rodriguez <lrodriguez@atheros.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
parent
57b32227cd
commit
78ec267788
|
@ -526,6 +526,35 @@ int ar9002_hw_rf_claim(struct ath_hw *ah)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Enable ASYNC FIFO
|
||||||
|
*
|
||||||
|
* If Async FIFO is enabled, the following counters change as MAC now runs
|
||||||
|
* at 117 Mhz instead of 88/44MHz when async FIFO is disabled.
|
||||||
|
*
|
||||||
|
* The values below tested for ht40 2 chain.
|
||||||
|
* Overwrite the delay/timeouts initialized in process ini.
|
||||||
|
*/
|
||||||
|
void ar9002_hw_enable_async_fifo(struct ath_hw *ah)
|
||||||
|
{
|
||||||
|
if (AR_SREV_9287_12_OR_LATER(ah)) {
|
||||||
|
REG_WRITE(ah, AR_D_GBL_IFS_SIFS,
|
||||||
|
AR_D_GBL_IFS_SIFS_ASYNC_FIFO_DUR);
|
||||||
|
REG_WRITE(ah, AR_D_GBL_IFS_SLOT,
|
||||||
|
AR_D_GBL_IFS_SLOT_ASYNC_FIFO_DUR);
|
||||||
|
REG_WRITE(ah, AR_D_GBL_IFS_EIFS,
|
||||||
|
AR_D_GBL_IFS_EIFS_ASYNC_FIFO_DUR);
|
||||||
|
|
||||||
|
REG_WRITE(ah, AR_TIME_OUT, AR_TIME_OUT_ACK_CTS_ASYNC_FIFO_DUR);
|
||||||
|
REG_WRITE(ah, AR_USEC, AR_USEC_ASYNC_FIFO_DUR);
|
||||||
|
|
||||||
|
REG_SET_BIT(ah, AR_MAC_PCU_LOGIC_ANALYZER,
|
||||||
|
AR_MAC_PCU_LOGIC_ANALYZER_DISBUG20768);
|
||||||
|
REG_RMW_FIELD(ah, AR_AHB_MODE, AR_AHB_CUSTOM_BURST_EN,
|
||||||
|
AR_AHB_CUSTOM_BURST_ASYNC_FIFO_VAL);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* Sets up the AR5008/AR9001/AR9002 hardware familiy callbacks */
|
/* Sets up the AR5008/AR9001/AR9002 hardware familiy callbacks */
|
||||||
void ar9002_hw_attach_ops(struct ath_hw *ah)
|
void ar9002_hw_attach_ops(struct ath_hw *ah)
|
||||||
{
|
{
|
||||||
|
|
|
@ -1265,22 +1265,9 @@ int ath9k_hw_reset(struct ath_hw *ah, struct ath9k_channel *chan,
|
||||||
|
|
||||||
ath9k_hw_init_global_settings(ah);
|
ath9k_hw_init_global_settings(ah);
|
||||||
|
|
||||||
if (AR_SREV_9287_12_OR_LATER(ah)) {
|
if (!AR_SREV_9300_20_OR_LATER(ah))
|
||||||
REG_WRITE(ah, AR_D_GBL_IFS_SIFS,
|
ar9002_hw_enable_async_fifo(ah);
|
||||||
AR_D_GBL_IFS_SIFS_ASYNC_FIFO_DUR);
|
|
||||||
REG_WRITE(ah, AR_D_GBL_IFS_SLOT,
|
|
||||||
AR_D_GBL_IFS_SLOT_ASYNC_FIFO_DUR);
|
|
||||||
REG_WRITE(ah, AR_D_GBL_IFS_EIFS,
|
|
||||||
AR_D_GBL_IFS_EIFS_ASYNC_FIFO_DUR);
|
|
||||||
|
|
||||||
REG_WRITE(ah, AR_TIME_OUT, AR_TIME_OUT_ACK_CTS_ASYNC_FIFO_DUR);
|
|
||||||
REG_WRITE(ah, AR_USEC, AR_USEC_ASYNC_FIFO_DUR);
|
|
||||||
|
|
||||||
REG_SET_BIT(ah, AR_MAC_PCU_LOGIC_ANALYZER,
|
|
||||||
AR_MAC_PCU_LOGIC_ANALYZER_DISBUG20768);
|
|
||||||
REG_RMW_FIELD(ah, AR_AHB_MODE, AR_AHB_CUSTOM_BURST_EN,
|
|
||||||
AR_AHB_CUSTOM_BURST_ASYNC_FIFO_VAL);
|
|
||||||
}
|
|
||||||
if (AR_SREV_9287_12_OR_LATER(ah)) {
|
if (AR_SREV_9287_12_OR_LATER(ah)) {
|
||||||
REG_SET_BIT(ah, AR_PCU_MISC_MODE2,
|
REG_SET_BIT(ah, AR_PCU_MISC_MODE2,
|
||||||
AR_PCU_MISC_MODE2_ENABLE_AGGWEP);
|
AR_PCU_MISC_MODE2_ENABLE_AGGWEP);
|
||||||
|
|
|
@ -850,6 +850,7 @@ void ath9k_hw_get_delta_slope_vals(struct ath_hw *ah, u32 coef_scaled,
|
||||||
*/
|
*/
|
||||||
void ar9002_hw_cck_chan14_spread(struct ath_hw *ah);
|
void ar9002_hw_cck_chan14_spread(struct ath_hw *ah);
|
||||||
int ar9002_hw_rf_claim(struct ath_hw *ah);
|
int ar9002_hw_rf_claim(struct ath_hw *ah);
|
||||||
|
void ar9002_hw_enable_async_fifo(struct ath_hw *ah);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Code specifric to AR9003, we stuff these here to avoid callbacks
|
* Code specifric to AR9003, we stuff these here to avoid callbacks
|
||||||
|
|
Loading…
Reference in New Issue