aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/ath/ath9k/hw.c
diff options
context:
space:
mode:
authorSujith Manoharan <c_manoha@qca.qualcomm.com>2012-06-04 06:57:30 -0400
committerJohn W. Linville <linville@tuxdriver.com>2012-06-06 15:20:25 -0400
commit5955b2b0ef208e03188ef1c2810c004bde493253 (patch)
treee71d756ab768640a0771e98798d420b9af0c5a74 /drivers/net/wireless/ath/ath9k/hw.c
parent83c7a52dcce256fc20cd43dbf6866e3e05f2bf71 (diff)
ath9k_hw: Fix MCI usage
MCI has to be handled only when BTCOEX is actually enabled. Check for this condition before calling MCI related functions from various reset/calibration call-sites. Signed-off-by: Sujith Manoharan <c_manoha@qca.qualcomm.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/ath/ath9k/hw.c')
-rw-r--r--drivers/net/wireless/ath/ath9k/hw.c15
1 files changed, 7 insertions, 8 deletions
diff --git a/drivers/net/wireless/ath/ath9k/hw.c b/drivers/net/wireless/ath/ath9k/hw.c
index 42cf3c8db95b..a7231cadec40 100644
--- a/drivers/net/wireless/ath/ath9k/hw.c
+++ b/drivers/net/wireless/ath/ath9k/hw.c
@@ -1707,7 +1707,7 @@ static int ath9k_hw_do_fastcc(struct ath_hw *ah, struct ath9k_channel *chan)
1707 ath9k_hw_loadnf(ah, ah->curchan); 1707 ath9k_hw_loadnf(ah, ah->curchan);
1708 ath9k_hw_start_nfcal(ah, true); 1708 ath9k_hw_start_nfcal(ah, true);
1709 1709
1710 if ((ah->caps.hw_caps & ATH9K_HW_CAP_MCI) && ar9003_mci_is_ready(ah)) 1710 if (ath9k_hw_mci_is_enabled(ah))
1711 ar9003_mci_2g5g_switch(ah, true); 1711 ar9003_mci_2g5g_switch(ah, true);
1712 1712
1713 if (AR_SREV_9271(ah)) 1713 if (AR_SREV_9271(ah))
@@ -1728,10 +1728,9 @@ int ath9k_hw_reset(struct ath_hw *ah, struct ath9k_channel *chan,
1728 u64 tsf = 0; 1728 u64 tsf = 0;
1729 int i, r; 1729 int i, r;
1730 bool start_mci_reset = false; 1730 bool start_mci_reset = false;
1731 bool mci = !!(ah->caps.hw_caps & ATH9K_HW_CAP_MCI);
1732 bool save_fullsleep = ah->chip_fullsleep; 1731 bool save_fullsleep = ah->chip_fullsleep;
1733 1732
1734 if (mci) { 1733 if (ath9k_hw_mci_is_enabled(ah)) {
1735 start_mci_reset = ar9003_mci_start_reset(ah, chan); 1734 start_mci_reset = ar9003_mci_start_reset(ah, chan);
1736 if (start_mci_reset) 1735 if (start_mci_reset)
1737 return 0; 1736 return 0;
@@ -1760,7 +1759,7 @@ int ath9k_hw_reset(struct ath_hw *ah, struct ath9k_channel *chan,
1760 return r; 1759 return r;
1761 } 1760 }
1762 1761
1763 if (mci) 1762 if (ath9k_hw_mci_is_enabled(ah))
1764 ar9003_mci_stop_bt(ah, save_fullsleep); 1763 ar9003_mci_stop_bt(ah, save_fullsleep);
1765 1764
1766 saveDefAntenna = REG_READ(ah, AR_DEF_ANTENNA); 1765 saveDefAntenna = REG_READ(ah, AR_DEF_ANTENNA);
@@ -1818,7 +1817,7 @@ int ath9k_hw_reset(struct ath_hw *ah, struct ath9k_channel *chan,
1818 if (r) 1817 if (r)
1819 return r; 1818 return r;
1820 1819
1821 if (mci) 1820 if (ath9k_hw_mci_is_enabled(ah))
1822 ar9003_mci_reset(ah, false, IS_CHAN_2GHZ(chan), save_fullsleep); 1821 ar9003_mci_reset(ah, false, IS_CHAN_2GHZ(chan), save_fullsleep);
1823 1822
1824 /* 1823 /*
@@ -1937,7 +1936,7 @@ int ath9k_hw_reset(struct ath_hw *ah, struct ath9k_channel *chan,
1937 ath9k_hw_loadnf(ah, chan); 1936 ath9k_hw_loadnf(ah, chan);
1938 ath9k_hw_start_nfcal(ah, true); 1937 ath9k_hw_start_nfcal(ah, true);
1939 1938
1940 if (mci && ar9003_mci_end_reset(ah, chan, caldata)) 1939 if (ath9k_hw_mci_is_enabled(ah) && ar9003_mci_end_reset(ah, chan, caldata))
1941 return -EIO; 1940 return -EIO;
1942 1941
1943 ENABLE_REGWRITE_BUFFER(ah); 1942 ENABLE_REGWRITE_BUFFER(ah);
@@ -1982,7 +1981,7 @@ int ath9k_hw_reset(struct ath_hw *ah, struct ath9k_channel *chan,
1982 if (ath9k_hw_btcoex_is_enabled(ah)) 1981 if (ath9k_hw_btcoex_is_enabled(ah))
1983 ath9k_hw_btcoex_enable(ah); 1982 ath9k_hw_btcoex_enable(ah);
1984 1983
1985 if (mci) 1984 if (ath9k_hw_mci_is_enabled(ah))
1986 ar9003_mci_check_bt(ah); 1985 ar9003_mci_check_bt(ah);
1987 1986
1988 if (AR_SREV_9300_20_OR_LATER(ah)) { 1987 if (AR_SREV_9300_20_OR_LATER(ah)) {
@@ -2166,7 +2165,7 @@ bool ath9k_hw_setpower(struct ath_hw *ah, enum ath9k_power_mode mode)
2166 status = ath9k_hw_set_power_awake(ah, setChip); 2165 status = ath9k_hw_set_power_awake(ah, setChip);
2167 break; 2166 break;
2168 case ATH9K_PM_FULL_SLEEP: 2167 case ATH9K_PM_FULL_SLEEP:
2169 if (ah->caps.hw_caps & ATH9K_HW_CAP_MCI) 2168 if (ath9k_hw_mci_is_enabled(ah))
2170 ar9003_mci_set_full_sleep(ah); 2169 ar9003_mci_set_full_sleep(ah);
2171 2170
2172 ath9k_set_power_sleep(ah, setChip); 2171 ath9k_set_power_sleep(ah, setChip);