diff options
author | Sujith Manoharan <c_manoha@qca.qualcomm.com> | 2015-01-28 07:24:24 -0500 |
---|---|---|
committer | Kalle Valo <kvalo@codeaurora.org> | 2015-01-29 03:33:23 -0500 |
commit | 7a722ebc596a572a9b24cfe1466642faa6a8988a (patch) | |
tree | b86ce83f6ee106a62f97375a19fdc6a964212b7e /drivers/net/wireless/ath | |
parent | f49c90db4d2351f354c4f6902f6718637cd23393 (diff) |
ath9k: Fix manual peak calibration initialization
The LNA gain setting override needs to be done
only for AR9330 and PCOEM chips.
Signed-off-by: Sujith Manoharan <c_manoha@qca.qualcomm.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
Diffstat (limited to 'drivers/net/wireless/ath')
-rw-r--r-- | drivers/net/wireless/ath/ath9k/ar9003_calib.c | 38 |
1 files changed, 30 insertions, 8 deletions
diff --git a/drivers/net/wireless/ath/ath9k/ar9003_calib.c b/drivers/net/wireless/ath/ath9k/ar9003_calib.c index 06ab71db6e80..374aef1d9008 100644 --- a/drivers/net/wireless/ath/ath9k/ar9003_calib.c +++ b/drivers/net/wireless/ath/ath9k/ar9003_calib.c | |||
@@ -1205,22 +1205,34 @@ static void ar9003_hw_manual_peak_cal(struct ath_hw *ah, u8 chain, bool is_2g) | |||
1205 | int offset[8] = {0}, total = 0, test; | 1205 | int offset[8] = {0}, total = 0, test; |
1206 | int agc_out, i; | 1206 | int agc_out, i; |
1207 | 1207 | ||
1208 | /* | ||
1209 | * Turn off LNA/SW. | ||
1210 | */ | ||
1208 | REG_RMW_FIELD(ah, AR_PHY_65NM_RXRF_GAINSTAGES(chain), | 1211 | REG_RMW_FIELD(ah, AR_PHY_65NM_RXRF_GAINSTAGES(chain), |
1209 | AR_PHY_65NM_RXRF_GAINSTAGES_RX_OVERRIDE, 0x1); | 1212 | AR_PHY_65NM_RXRF_GAINSTAGES_RX_OVERRIDE, 0x1); |
1210 | REG_RMW_FIELD(ah, AR_PHY_65NM_RXRF_GAINSTAGES(chain), | 1213 | REG_RMW_FIELD(ah, AR_PHY_65NM_RXRF_GAINSTAGES(chain), |
1211 | AR_PHY_65NM_RXRF_GAINSTAGES_LNAON_CALDC, 0x0); | 1214 | AR_PHY_65NM_RXRF_GAINSTAGES_LNAON_CALDC, 0x0); |
1212 | if (is_2g) | ||
1213 | REG_RMW_FIELD(ah, AR_PHY_65NM_RXRF_GAINSTAGES(chain), | ||
1214 | AR_PHY_65NM_RXRF_GAINSTAGES_LNA2G_GAIN_OVR, 0x0); | ||
1215 | else | ||
1216 | REG_RMW_FIELD(ah, AR_PHY_65NM_RXRF_GAINSTAGES(chain), | ||
1217 | AR_PHY_65NM_RXRF_GAINSTAGES_LNA5G_GAIN_OVR, 0x0); | ||
1218 | 1215 | ||
1216 | if (AR_SREV_9003_PCOEM(ah) || AR_SREV_9330_11(ah)) { | ||
1217 | if (is_2g) | ||
1218 | REG_RMW_FIELD(ah, AR_PHY_65NM_RXRF_GAINSTAGES(chain), | ||
1219 | AR_PHY_65NM_RXRF_GAINSTAGES_LNA2G_GAIN_OVR, 0x0); | ||
1220 | else | ||
1221 | REG_RMW_FIELD(ah, AR_PHY_65NM_RXRF_GAINSTAGES(chain), | ||
1222 | AR_PHY_65NM_RXRF_GAINSTAGES_LNA5G_GAIN_OVR, 0x0); | ||
1223 | } | ||
1224 | |||
1225 | /* | ||
1226 | * Turn off RXON. | ||
1227 | */ | ||
1219 | REG_RMW_FIELD(ah, AR_PHY_65NM_RXTX2(chain), | 1228 | REG_RMW_FIELD(ah, AR_PHY_65NM_RXTX2(chain), |
1220 | AR_PHY_65NM_RXTX2_RXON_OVR, 0x1); | 1229 | AR_PHY_65NM_RXTX2_RXON_OVR, 0x1); |
1221 | REG_RMW_FIELD(ah, AR_PHY_65NM_RXTX2(chain), | 1230 | REG_RMW_FIELD(ah, AR_PHY_65NM_RXTX2(chain), |
1222 | AR_PHY_65NM_RXTX2_RXON, 0x0); | 1231 | AR_PHY_65NM_RXTX2_RXON, 0x0); |
1223 | 1232 | ||
1233 | /* | ||
1234 | * Turn on AGC for cal. | ||
1235 | */ | ||
1224 | REG_RMW_FIELD(ah, AR_PHY_65NM_RXRF_AGC(chain), | 1236 | REG_RMW_FIELD(ah, AR_PHY_65NM_RXRF_AGC(chain), |
1225 | AR_PHY_65NM_RXRF_AGC_AGC_OVERRIDE, 0x1); | 1237 | AR_PHY_65NM_RXRF_AGC_AGC_OVERRIDE, 0x1); |
1226 | REG_RMW_FIELD(ah, AR_PHY_65NM_RXRF_AGC(chain), | 1238 | REG_RMW_FIELD(ah, AR_PHY_65NM_RXRF_AGC(chain), |
@@ -1228,10 +1240,11 @@ static void ar9003_hw_manual_peak_cal(struct ath_hw *ah, u8 chain, bool is_2g) | |||
1228 | REG_RMW_FIELD(ah, AR_PHY_65NM_RXRF_AGC(chain), | 1240 | REG_RMW_FIELD(ah, AR_PHY_65NM_RXRF_AGC(chain), |
1229 | AR_PHY_65NM_RXRF_AGC_AGC_CAL_OVR, 0x1); | 1241 | AR_PHY_65NM_RXRF_AGC_AGC_CAL_OVR, 0x1); |
1230 | 1242 | ||
1231 | if (AR_SREV_9330_11(ah)) { | 1243 | if (AR_SREV_9330_11(ah)) |
1232 | REG_RMW_FIELD(ah, AR_PHY_65NM_RXRF_AGC(chain), | 1244 | REG_RMW_FIELD(ah, AR_PHY_65NM_RXRF_AGC(chain), |
1233 | AR_PHY_65NM_RXRF_AGC_AGC2G_CALDAC_OVR, 0x0); | 1245 | AR_PHY_65NM_RXRF_AGC_AGC2G_CALDAC_OVR, 0x0); |
1234 | } else { | 1246 | |
1247 | if (AR_SREV_9003_PCOEM(ah)) { | ||
1235 | if (is_2g) | 1248 | if (is_2g) |
1236 | REG_RMW_FIELD(ah, AR_PHY_65NM_RXRF_AGC(chain), | 1249 | REG_RMW_FIELD(ah, AR_PHY_65NM_RXRF_AGC(chain), |
1237 | AR_PHY_65NM_RXRF_AGC_AGC2G_DBDAC_OVR, 0x0); | 1250 | AR_PHY_65NM_RXRF_AGC_AGC2G_DBDAC_OVR, 0x0); |
@@ -1266,10 +1279,19 @@ static void ar9003_hw_manual_peak_cal(struct ath_hw *ah, u8 chain, bool is_2g) | |||
1266 | REG_RMW_FIELD(ah, AR_PHY_65NM_RXRF_AGC(chain), | 1279 | REG_RMW_FIELD(ah, AR_PHY_65NM_RXRF_AGC(chain), |
1267 | AR_PHY_65NM_RXRF_AGC_AGC5G_CALDAC_OVR, total); | 1280 | AR_PHY_65NM_RXRF_AGC_AGC5G_CALDAC_OVR, total); |
1268 | 1281 | ||
1282 | /* | ||
1283 | * Turn on LNA. | ||
1284 | */ | ||
1269 | REG_RMW_FIELD(ah, AR_PHY_65NM_RXRF_GAINSTAGES(chain), | 1285 | REG_RMW_FIELD(ah, AR_PHY_65NM_RXRF_GAINSTAGES(chain), |
1270 | AR_PHY_65NM_RXRF_GAINSTAGES_RX_OVERRIDE, 0); | 1286 | AR_PHY_65NM_RXRF_GAINSTAGES_RX_OVERRIDE, 0); |
1287 | /* | ||
1288 | * Turn off RXON. | ||
1289 | */ | ||
1271 | REG_RMW_FIELD(ah, AR_PHY_65NM_RXTX2(chain), | 1290 | REG_RMW_FIELD(ah, AR_PHY_65NM_RXTX2(chain), |
1272 | AR_PHY_65NM_RXTX2_RXON_OVR, 0); | 1291 | AR_PHY_65NM_RXTX2_RXON_OVR, 0); |
1292 | /* | ||
1293 | * Turn off peak detect calibration. | ||
1294 | */ | ||
1273 | REG_RMW_FIELD(ah, AR_PHY_65NM_RXRF_AGC(chain), | 1295 | REG_RMW_FIELD(ah, AR_PHY_65NM_RXRF_AGC(chain), |
1274 | AR_PHY_65NM_RXRF_AGC_AGC_CAL_OVR, 0); | 1296 | AR_PHY_65NM_RXRF_AGC_AGC_CAL_OVR, 0); |
1275 | } | 1297 | } |