diff options
Diffstat (limited to 'drivers/net')
-rw-r--r-- | drivers/net/wireless/ath/ath9k/ar9003_mci.c | 16 | ||||
-rw-r--r-- | drivers/net/wireless/ath/ath9k/ar9003_mci.h | 1 | ||||
-rw-r--r-- | drivers/net/wireless/ath/ath9k/hw.c | 3 |
3 files changed, 20 insertions, 0 deletions
diff --git a/drivers/net/wireless/ath/ath9k/ar9003_mci.c b/drivers/net/wireless/ath/ath9k/ar9003_mci.c index 854dff66a63f..8b09a8239c1c 100644 --- a/drivers/net/wireless/ath/ath9k/ar9003_mci.c +++ b/drivers/net/wireless/ath/ath9k/ar9003_mci.c | |||
@@ -1391,3 +1391,19 @@ u32 ar9003_mci_state(struct ath_hw *ah, u32 state_type, u32 *p_data) | |||
1391 | return value; | 1391 | return value; |
1392 | } | 1392 | } |
1393 | EXPORT_SYMBOL(ar9003_mci_state); | 1393 | EXPORT_SYMBOL(ar9003_mci_state); |
1394 | |||
1395 | void ar9003_mci_bt_gain_ctrl(struct ath_hw *ah) | ||
1396 | { | ||
1397 | struct ath_common *common = ath9k_hw_common(ah); | ||
1398 | struct ath9k_hw_mci *mci = &ah->btcoex_hw.mci; | ||
1399 | |||
1400 | ath_dbg(common, MCI, "Give LNA and SPDT control to BT\n"); | ||
1401 | |||
1402 | REG_SET_BIT(ah, AR_PHY_GLB_CONTROL, AR_BTCOEX_CTRL_BT_OWN_SPDT_CTRL); | ||
1403 | mci->is_2g = false; | ||
1404 | mci->update_2g5g = true; | ||
1405 | ar9003_mci_send_2g5g_status(ah, true); | ||
1406 | |||
1407 | /* Force another 2g5g update at next scanning */ | ||
1408 | mci->update_2g5g = true; | ||
1409 | } | ||
diff --git a/drivers/net/wireless/ath/ath9k/ar9003_mci.h b/drivers/net/wireless/ath/ath9k/ar9003_mci.h index 652ab8c39e2b..f4a6a4450ba8 100644 --- a/drivers/net/wireless/ath/ath9k/ar9003_mci.h +++ b/drivers/net/wireless/ath/ath9k/ar9003_mci.h | |||
@@ -266,6 +266,7 @@ void ar9003_mci_setup(struct ath_hw *ah, u32 gpm_addr, void *gpm_buf, | |||
266 | void ar9003_mci_cleanup(struct ath_hw *ah); | 266 | void ar9003_mci_cleanup(struct ath_hw *ah); |
267 | void ar9003_mci_get_interrupt(struct ath_hw *ah, u32 *raw_intr, | 267 | void ar9003_mci_get_interrupt(struct ath_hw *ah, u32 *raw_intr, |
268 | u32 *rx_msg_intr); | 268 | u32 *rx_msg_intr); |
269 | void ar9003_mci_bt_gain_ctrl(struct ath_hw *ah); | ||
269 | 270 | ||
270 | /* | 271 | /* |
271 | * These functions are used by ath9k_hw. | 272 | * These functions are used by ath9k_hw. |
diff --git a/drivers/net/wireless/ath/ath9k/hw.c b/drivers/net/wireless/ath/ath9k/hw.c index 9f0f5f74f17a..98478fd5d284 100644 --- a/drivers/net/wireless/ath/ath9k/hw.c +++ b/drivers/net/wireless/ath/ath9k/hw.c | |||
@@ -2737,6 +2737,9 @@ EXPORT_SYMBOL(ath9k_hw_setrxfilter); | |||
2737 | 2737 | ||
2738 | bool ath9k_hw_phy_disable(struct ath_hw *ah) | 2738 | bool ath9k_hw_phy_disable(struct ath_hw *ah) |
2739 | { | 2739 | { |
2740 | if (ath9k_hw_mci_is_enabled(ah)) | ||
2741 | ar9003_mci_bt_gain_ctrl(ah); | ||
2742 | |||
2740 | if (!ath9k_hw_set_reset_reg(ah, ATH9K_RESET_WARM)) | 2743 | if (!ath9k_hw_set_reset_reg(ah, ATH9K_RESET_WARM)) |
2741 | return false; | 2744 | return false; |
2742 | 2745 | ||