diff options
author | Sujith Manoharan <c_manoha@qca.qualcomm.com> | 2012-06-04 06:57:30 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2012-06-06 15:20:25 -0400 |
commit | 5955b2b0ef208e03188ef1c2810c004bde493253 (patch) | |
tree | e71d756ab768640a0771e98798d420b9af0c5a74 /drivers/net/wireless/ath/ath9k/hw.c | |
parent | 83c7a52dcce256fc20cd43dbf6866e3e05f2bf71 (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.c | 15 |
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); |