aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/ath9k
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/wireless/ath9k')
-rw-r--r--drivers/net/wireless/ath9k/calib.c78
-rw-r--r--drivers/net/wireless/ath9k/hw.c5
2 files changed, 42 insertions, 41 deletions
diff --git a/drivers/net/wireless/ath9k/calib.c b/drivers/net/wireless/ath9k/calib.c
index c6d1de0f1e21..69ff01ce968b 100644
--- a/drivers/net/wireless/ath9k/calib.c
+++ b/drivers/net/wireless/ath9k/calib.c
@@ -105,27 +105,29 @@ static void ath9k_hw_do_getnf(struct ath_hal *ah,
105 "NF calibrated [ctl] [chain 0] is %d\n", nf); 105 "NF calibrated [ctl] [chain 0] is %d\n", nf);
106 nfarray[0] = nf; 106 nfarray[0] = nf;
107 107
108 if (AR_SREV_9280_10_OR_LATER(ah)) 108 if (!AR_SREV_9285(ah)) {
109 nf = MS(REG_READ(ah, AR_PHY_CH1_CCA), 109 if (AR_SREV_9280_10_OR_LATER(ah))
110 AR9280_PHY_CH1_MINCCA_PWR); 110 nf = MS(REG_READ(ah, AR_PHY_CH1_CCA),
111 else 111 AR9280_PHY_CH1_MINCCA_PWR);
112 nf = MS(REG_READ(ah, AR_PHY_CH1_CCA), 112 else
113 AR_PHY_CH1_MINCCA_PWR); 113 nf = MS(REG_READ(ah, AR_PHY_CH1_CCA),
114 114 AR_PHY_CH1_MINCCA_PWR);
115 if (nf & 0x100)
116 nf = 0 - ((nf ^ 0x1ff) + 1);
117 DPRINTF(ah->ah_sc, ATH_DBG_CALIBRATE,
118 "NF calibrated [ctl] [chain 1] is %d\n", nf);
119 nfarray[1] = nf;
120 115
121 if (!AR_SREV_9280(ah)) {
122 nf = MS(REG_READ(ah, AR_PHY_CH2_CCA),
123 AR_PHY_CH2_MINCCA_PWR);
124 if (nf & 0x100) 116 if (nf & 0x100)
125 nf = 0 - ((nf ^ 0x1ff) + 1); 117 nf = 0 - ((nf ^ 0x1ff) + 1);
126 DPRINTF(ah->ah_sc, ATH_DBG_CALIBRATE, 118 DPRINTF(ah->ah_sc, ATH_DBG_CALIBRATE,
127 "NF calibrated [ctl] [chain 2] is %d\n", nf); 119 "NF calibrated [ctl] [chain 1] is %d\n", nf);
128 nfarray[2] = nf; 120 nfarray[1] = nf;
121
122 if (!AR_SREV_9280(ah)) {
123 nf = MS(REG_READ(ah, AR_PHY_CH2_CCA),
124 AR_PHY_CH2_MINCCA_PWR);
125 if (nf & 0x100)
126 nf = 0 - ((nf ^ 0x1ff) + 1);
127 DPRINTF(ah->ah_sc, ATH_DBG_CALIBRATE,
128 "NF calibrated [ctl] [chain 2] is %d\n", nf);
129 nfarray[2] = nf;
130 }
129 } 131 }
130 132
131 if (AR_SREV_9280_10_OR_LATER(ah)) 133 if (AR_SREV_9280_10_OR_LATER(ah))
@@ -141,27 +143,29 @@ static void ath9k_hw_do_getnf(struct ath_hal *ah,
141 "NF calibrated [ext] [chain 0] is %d\n", nf); 143 "NF calibrated [ext] [chain 0] is %d\n", nf);
142 nfarray[3] = nf; 144 nfarray[3] = nf;
143 145
144 if (AR_SREV_9280_10_OR_LATER(ah)) 146 if (!AR_SREV_9285(ah)) {
145 nf = MS(REG_READ(ah, AR_PHY_CH1_EXT_CCA), 147 if (AR_SREV_9280_10_OR_LATER(ah))
146 AR9280_PHY_CH1_EXT_MINCCA_PWR); 148 nf = MS(REG_READ(ah, AR_PHY_CH1_EXT_CCA),
147 else 149 AR9280_PHY_CH1_EXT_MINCCA_PWR);
148 nf = MS(REG_READ(ah, AR_PHY_CH1_EXT_CCA), 150 else
149 AR_PHY_CH1_EXT_MINCCA_PWR); 151 nf = MS(REG_READ(ah, AR_PHY_CH1_EXT_CCA),
152 AR_PHY_CH1_EXT_MINCCA_PWR);
150 153
151 if (nf & 0x100)
152 nf = 0 - ((nf ^ 0x1ff) + 1);
153 DPRINTF(ah->ah_sc, ATH_DBG_CALIBRATE,
154 "NF calibrated [ext] [chain 1] is %d\n", nf);
155 nfarray[4] = nf;
156
157 if (!AR_SREV_9280(ah)) {
158 nf = MS(REG_READ(ah, AR_PHY_CH2_EXT_CCA),
159 AR_PHY_CH2_EXT_MINCCA_PWR);
160 if (nf & 0x100) 154 if (nf & 0x100)
161 nf = 0 - ((nf ^ 0x1ff) + 1); 155 nf = 0 - ((nf ^ 0x1ff) + 1);
162 DPRINTF(ah->ah_sc, ATH_DBG_CALIBRATE, 156 DPRINTF(ah->ah_sc, ATH_DBG_CALIBRATE,
163 "NF calibrated [ext] [chain 2] is %d\n", nf); 157 "NF calibrated [ext] [chain 1] is %d\n", nf);
164 nfarray[5] = nf; 158 nfarray[4] = nf;
159
160 if (!AR_SREV_9280(ah)) {
161 nf = MS(REG_READ(ah, AR_PHY_CH2_EXT_CCA),
162 AR_PHY_CH2_EXT_MINCCA_PWR);
163 if (nf & 0x100)
164 nf = 0 - ((nf ^ 0x1ff) + 1);
165 DPRINTF(ah->ah_sc, ATH_DBG_CALIBRATE,
166 "NF calibrated [ext] [chain 2] is %d\n", nf);
167 nfarray[5] = nf;
168 }
165 } 169 }
166} 170}
167 171
@@ -668,12 +672,6 @@ int16_t ath9k_hw_getnf(struct ath_hal *ah,
668 int16_t nfarray[NUM_NF_READINGS] = { 0 }; 672 int16_t nfarray[NUM_NF_READINGS] = { 0 };
669 struct ath9k_nfcal_hist *h; 673 struct ath9k_nfcal_hist *h;
670 struct ieee80211_channel *c = chan->chan; 674 struct ieee80211_channel *c = chan->chan;
671 u8 chainmask;
672
673 if (AR_SREV_9280(ah))
674 chainmask = 0x1B;
675 else
676 chainmask = 0x3F;
677 675
678 chan->channelFlags &= (~CHANNEL_CW_INT); 676 chan->channelFlags &= (~CHANNEL_CW_INT);
679 if (REG_READ(ah, AR_PHY_AGC_CONTROL) & AR_PHY_AGC_CONTROL_NF) { 677 if (REG_READ(ah, AR_PHY_AGC_CONTROL) & AR_PHY_AGC_CONTROL_NF) {
diff --git a/drivers/net/wireless/ath9k/hw.c b/drivers/net/wireless/ath9k/hw.c
index bb8628c7efa1..77282345efc1 100644
--- a/drivers/net/wireless/ath9k/hw.c
+++ b/drivers/net/wireless/ath9k/hw.c
@@ -2165,7 +2165,10 @@ int ath9k_hw_reset(struct ath_hal *ah, struct ath9k_channel *chan,
2165 ahp->ah_txchainmask = sc->sc_tx_chainmask; 2165 ahp->ah_txchainmask = sc->sc_tx_chainmask;
2166 ahp->ah_rxchainmask = sc->sc_rx_chainmask; 2166 ahp->ah_rxchainmask = sc->sc_rx_chainmask;
2167 2167
2168 if (AR_SREV_9280(ah)) { 2168 if (AR_SREV_9285(ah)) {
2169 ahp->ah_txchainmask &= 0x1;
2170 ahp->ah_rxchainmask &= 0x1;
2171 } else if (AR_SREV_9280(ah)) {
2169 ahp->ah_txchainmask &= 0x3; 2172 ahp->ah_txchainmask &= 0x3;
2170 ahp->ah_rxchainmask &= 0x3; 2173 ahp->ah_rxchainmask &= 0x3;
2171 } 2174 }