diff options
Diffstat (limited to 'drivers/net/wireless/ath/ath5k/reset.c')
| -rw-r--r-- | drivers/net/wireless/ath/ath5k/reset.c | 22 | 
1 files changed, 12 insertions, 10 deletions
diff --git a/drivers/net/wireless/ath/ath5k/reset.c b/drivers/net/wireless/ath/ath5k/reset.c index a35a7db0fc4..cbf28e37984 100644 --- a/drivers/net/wireless/ath/ath5k/reset.c +++ b/drivers/net/wireless/ath/ath5k/reset.c @@ -851,12 +851,15 @@ static void ath5k_hw_commit_eeprom_settings(struct ath5k_hw *ah,  				AR5K_PHY_OFDM_SELFCORR_CYPWR_THR1,  				AR5K_INIT_CYCRSSI_THR1); -	/* I/Q correction -	 * TODO: Per channel i/q infos ? */ -	AR5K_REG_ENABLE_BITS(ah, AR5K_PHY_IQ, -		AR5K_PHY_IQ_CORR_ENABLE | -		(ee->ee_i_cal[ee_mode] << AR5K_PHY_IQ_CORR_Q_I_COFF_S) | -		ee->ee_q_cal[ee_mode]); +	/* I/Q correction (set enable bit last to match HAL sources) */ +	/* TODO: Per channel i/q infos ? */ +	if (ah->ah_ee_version >= AR5K_EEPROM_VERSION_4_0) { +		AR5K_REG_WRITE_BITS(ah, AR5K_PHY_IQ, AR5K_PHY_IQ_CORR_Q_I_COFF, +			    ee->ee_i_cal[ee_mode]); +		AR5K_REG_WRITE_BITS(ah, AR5K_PHY_IQ, AR5K_PHY_IQ_CORR_Q_Q_COFF, +			    ee->ee_q_cal[ee_mode]); +		AR5K_REG_ENABLE_BITS(ah, AR5K_PHY_IQ, AR5K_PHY_IQ_CORR_ENABLE); +	}  	/* Heavy clipping -disable for now */  	if (ah->ah_ee_version >= AR5K_EEPROM_VERSION_5_1) @@ -1379,11 +1382,10 @@ int ath5k_hw_reset(struct ath5k_hw *ah, enum nl80211_iftype op_mode,  		ath5k_hw_set_sleep_clock(ah, true);  	/* -	 * Disable beacons and reset the register +	 * Disable beacons and reset the TSF  	 */ -	AR5K_REG_DISABLE_BITS(ah, AR5K_BEACON, AR5K_BEACON_ENABLE | -			AR5K_BEACON_RESET_TSF); - +	AR5K_REG_DISABLE_BITS(ah, AR5K_BEACON, AR5K_BEACON_ENABLE); +	ath5k_hw_reset_tsf(ah);  	return 0;  }  |