diff options
Diffstat (limited to 'drivers/net/wireless/ath/ath9k/ar9003_calib.c')
-rw-r--r-- | drivers/net/wireless/ath/ath9k/ar9003_calib.c | 50 |
1 files changed, 10 insertions, 40 deletions
diff --git a/drivers/net/wireless/ath/ath9k/ar9003_calib.c b/drivers/net/wireless/ath/ath9k/ar9003_calib.c index a0387a027db..9fdd70fcaf5 100644 --- a/drivers/net/wireless/ath/ath9k/ar9003_calib.c +++ b/drivers/net/wireless/ath/ath9k/ar9003_calib.c | |||
@@ -892,34 +892,6 @@ static void ar9003_hw_tx_iq_cal_reload(struct ath_hw *ah) | |||
892 | AR_PHY_RX_IQCAL_CORR_B0_LOOPBACK_IQCORR_EN, 0x1); | 892 | AR_PHY_RX_IQCAL_CORR_B0_LOOPBACK_IQCORR_EN, 0x1); |
893 | } | 893 | } |
894 | 894 | ||
895 | static bool ar9003_hw_rtt_restore(struct ath_hw *ah, struct ath9k_channel *chan) | ||
896 | { | ||
897 | struct ath9k_rtt_hist *hist; | ||
898 | u32 *table; | ||
899 | int i; | ||
900 | bool restore; | ||
901 | |||
902 | if (!ah->caldata) | ||
903 | return false; | ||
904 | |||
905 | hist = &ah->caldata->rtt_hist; | ||
906 | if (!hist->num_readings) | ||
907 | return false; | ||
908 | |||
909 | ar9003_hw_rtt_enable(ah); | ||
910 | ar9003_hw_rtt_set_mask(ah, 0x00); | ||
911 | for (i = 0; i < AR9300_MAX_CHAINS; i++) { | ||
912 | if (!(ah->rxchainmask & (1 << i))) | ||
913 | continue; | ||
914 | table = &hist->table[i][hist->num_readings][0]; | ||
915 | ar9003_hw_rtt_load_hist(ah, i, table); | ||
916 | } | ||
917 | restore = ar9003_hw_rtt_force_restore(ah); | ||
918 | ar9003_hw_rtt_disable(ah); | ||
919 | |||
920 | return restore; | ||
921 | } | ||
922 | |||
923 | static bool ar9003_hw_init_cal(struct ath_hw *ah, | 895 | static bool ar9003_hw_init_cal(struct ath_hw *ah, |
924 | struct ath9k_channel *chan) | 896 | struct ath9k_channel *chan) |
925 | { | 897 | { |
@@ -942,9 +914,10 @@ static bool ar9003_hw_init_cal(struct ath_hw *ah, | |||
942 | if (!ar9003_hw_rtt_restore(ah, chan)) | 914 | if (!ar9003_hw_rtt_restore(ah, chan)) |
943 | run_rtt_cal = true; | 915 | run_rtt_cal = true; |
944 | 916 | ||
945 | ath_dbg(common, CALIBRATE, "RTT restore %s\n", | 917 | if (run_rtt_cal) |
946 | run_rtt_cal ? "failed" : "succeed"); | 918 | ath_dbg(common, CALIBRATE, "RTT calibration to be done\n"); |
947 | } | 919 | } |
920 | |||
948 | run_agc_cal = run_rtt_cal; | 921 | run_agc_cal = run_rtt_cal; |
949 | 922 | ||
950 | if (run_rtt_cal) { | 923 | if (run_rtt_cal) { |
@@ -1069,17 +1042,14 @@ skip_tx_iqcal: | |||
1069 | #undef CL_TAB_ENTRY | 1042 | #undef CL_TAB_ENTRY |
1070 | 1043 | ||
1071 | if (run_rtt_cal && caldata) { | 1044 | if (run_rtt_cal && caldata) { |
1072 | struct ath9k_rtt_hist *hist = &caldata->rtt_hist; | 1045 | if (is_reusable) { |
1073 | if (is_reusable && (hist->num_readings < RTT_HIST_MAX)) { | 1046 | if (!ath9k_hw_rfbus_req(ah)) |
1074 | u32 *table; | 1047 | ath_err(ath9k_hw_common(ah), |
1048 | "Could not stop baseband\n"); | ||
1049 | else | ||
1050 | ar9003_hw_rtt_fill_hist(ah); | ||
1075 | 1051 | ||
1076 | hist->num_readings++; | 1052 | ath9k_hw_rfbus_done(ah); |
1077 | for (i = 0; i < AR9300_MAX_CHAINS; i++) { | ||
1078 | if (!(ah->rxchainmask & (1 << i))) | ||
1079 | continue; | ||
1080 | table = &hist->table[i][hist->num_readings][0]; | ||
1081 | ar9003_hw_rtt_fill_hist(ah, i, table); | ||
1082 | } | ||
1083 | } | 1053 | } |
1084 | 1054 | ||
1085 | ar9003_hw_rtt_disable(ah); | 1055 | ar9003_hw_rtt_disable(ah); |