diff options
author | Mohammed Shafi Shajakhan <mohammed@qca.qualcomm.com> | 2011-11-30 00:11:28 -0500 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2011-11-30 15:08:56 -0500 |
commit | 19686ddf638cac8c779216bb1f5e53b2666a9035 (patch) | |
tree | ad27e2edf7f2a8e6f55d6bab700fd9b977eb05b4 /drivers/net/wireless/ath/ath9k/init.c | |
parent | 63d3296741e9f556d1edbdc34c07ce7dbe54a471 (diff) |
ath9k: MCI state machine based on MCI interrupt
Cc: Wilson Tsao <wtsao@qca.qualcomm.com>
Cc: Senthil Balasubramanian <senthilb@qca.qualcomm.com>
Signed-off-by: Rajkumar Manoharan <rmanohar@qca.qualcomm.com>
Signed-off-by: Mohammed Shafi Shajakhan <mohammed@qca.qualcomm.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/ath/ath9k/init.c')
-rw-r--r-- | drivers/net/wireless/ath/ath9k/init.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/drivers/net/wireless/ath/ath9k/init.c b/drivers/net/wireless/ath/ath9k/init.c index 34b922bbe65d..e9711e2b48c6 100644 --- a/drivers/net/wireless/ath/ath9k/init.c +++ b/drivers/net/wireless/ath/ath9k/init.c | |||
@@ -425,8 +425,16 @@ static int ath9k_init_btcoex(struct ath_softc *sc) | |||
425 | txq = sc->tx.txq_map[WME_AC_BE]; | 425 | txq = sc->tx.txq_map[WME_AC_BE]; |
426 | ath9k_hw_init_btcoex_hw(sc->sc_ah, txq->axq_qnum); | 426 | ath9k_hw_init_btcoex_hw(sc->sc_ah, txq->axq_qnum); |
427 | sc->btcoex.bt_stomp_type = ATH_BTCOEX_STOMP_LOW; | 427 | sc->btcoex.bt_stomp_type = ATH_BTCOEX_STOMP_LOW; |
428 | break; | ||
429 | case ATH_BTCOEX_CFG_MCI: | ||
430 | sc->btcoex.bt_stomp_type = ATH_BTCOEX_STOMP_LOW; | ||
428 | sc->btcoex.duty_cycle = ATH_BTCOEX_DEF_DUTY_CYCLE; | 431 | sc->btcoex.duty_cycle = ATH_BTCOEX_DEF_DUTY_CYCLE; |
429 | INIT_LIST_HEAD(&sc->btcoex.mci.info); | 432 | INIT_LIST_HEAD(&sc->btcoex.mci.info); |
433 | |||
434 | r = ath_mci_setup(sc); | ||
435 | if (r) | ||
436 | return r; | ||
437 | |||
430 | if (sc->sc_ah->caps.hw_caps & ATH9K_HW_CAP_MCI) { | 438 | if (sc->sc_ah->caps.hw_caps & ATH9K_HW_CAP_MCI) { |
431 | ah->btcoex_hw.mci.ready = false; | 439 | ah->btcoex_hw.mci.ready = false; |
432 | ah->btcoex_hw.mci.bt_state = 0; | 440 | ah->btcoex_hw.mci.bt_state = 0; |
@@ -861,6 +869,9 @@ static void ath9k_deinit_softc(struct ath_softc *sc) | |||
861 | sc->sc_ah->btcoex_hw.scheme == ATH_BTCOEX_CFG_3WIRE) | 869 | sc->sc_ah->btcoex_hw.scheme == ATH_BTCOEX_CFG_3WIRE) |
862 | ath_gen_timer_free(sc->sc_ah, sc->btcoex.no_stomp_timer); | 870 | ath_gen_timer_free(sc->sc_ah, sc->btcoex.no_stomp_timer); |
863 | 871 | ||
872 | if (sc->sc_ah->btcoex_hw.scheme == ATH_BTCOEX_CFG_MCI) | ||
873 | ath_mci_cleanup(sc); | ||
874 | |||
864 | for (i = 0; i < ATH9K_NUM_TX_QUEUES; i++) | 875 | for (i = 0; i < ATH9K_NUM_TX_QUEUES; i++) |
865 | if (ATH_TXQ_SETUP(sc, i)) | 876 | if (ATH_TXQ_SETUP(sc, i)) |
866 | ath_tx_cleanupq(sc, &sc->tx.txq[i]); | 877 | ath_tx_cleanupq(sc, &sc->tx.txq[i]); |