ath9k_hw: remove ATH_BTCOEX_CFG_MCI
authorRajkumar Manoharan <rmanohar@qca.qualcomm.com>
Thu, 19 Apr 2012 13:43:52 +0000 (19:13 +0530)
committerJohn W. Linville <linville@tuxdriver.com>
Mon, 23 Apr 2012 19:35:30 +0000 (15:35 -0400)
AR9462 uses modified version of 3-Wire hw scheme for btcoex.
MCI itself is not a separate hw scheme but it aids to manage
multiple bt profiles. In ar9462, bt priority traffic is identified
by the number of bt profile types instead of gpio. So that this
patch removes MCI hw scheme.

Signed-off-by: Rajkumar Manoharan <rmanohar@qca.qualcomm.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/ath/ath9k/btcoex.c
drivers/net/wireless/ath/ath9k/btcoex.h
drivers/net/wireless/ath/ath9k/gpio.c

index ec32719934116e9252efeb840ae6925bf0819ac4..1ca6da80d4ad3f16c1ac152b31d1b8724e598052 100644 (file)
@@ -108,9 +108,7 @@ void ath9k_hw_btcoex_init_scheme(struct ath_hw *ah)
                return;
        }
 
-       if (AR_SREV_9462(ah)) {
-               btcoex_hw->scheme = ATH_BTCOEX_CFG_MCI;
-       } else if (AR_SREV_9300_20_OR_LATER(ah)) {
+       if (AR_SREV_9300_20_OR_LATER(ah)) {
                btcoex_hw->scheme = ATH_BTCOEX_CFG_3WIRE;
                btcoex_hw->btactive_gpio = ATH_BTACTIVE_GPIO_9300;
                btcoex_hw->wlanactive_gpio = ATH_WLANACTIVE_GPIO_9300;
@@ -284,11 +282,12 @@ void ath9k_hw_btcoex_enable(struct ath_hw *ah)
                ath9k_hw_btcoex_enable_2wire(ah);
                break;
        case ATH_BTCOEX_CFG_3WIRE:
+               if (AR_SREV_9462(ah)) {
+                       ath9k_hw_btcoex_enable_mci(ah);
+                       return;
+               }
                ath9k_hw_btcoex_enable_3wire(ah);
                break;
-       case ATH_BTCOEX_CFG_MCI:
-               ath9k_hw_btcoex_enable_mci(ah);
-               return;
        }
 
        REG_RMW(ah, AR_GPIO_PDPU,
@@ -305,11 +304,12 @@ void ath9k_hw_btcoex_disable(struct ath_hw *ah)
        int i;
 
        btcoex_hw->enabled = false;
-       if (btcoex_hw->scheme == ATH_BTCOEX_CFG_MCI) {
+       if (AR_SREV_9462(ah)) {
                ath9k_hw_btcoex_bt_stomp(ah, ATH_BTCOEX_STOMP_NONE);
                for (i = 0; i < AR9300_NUM_BT_WEIGHTS; i++)
                        REG_WRITE(ah, AR_MCI_COEX_WL_WEIGHTS(i),
                                  btcoex_hw->wlan_weight[i]);
+               return;
        }
        ath9k_hw_set_gpio(ah, btcoex_hw->wlanactive_gpio, 0);
 
index 8f93aef4414fabe2a5897c1e4f1e67df4746930b..3a1e1cfabd5e28f15345f89b1f428c1a35c63841 100644 (file)
@@ -51,7 +51,6 @@ enum ath_btcoex_scheme {
        ATH_BTCOEX_CFG_NONE,
        ATH_BTCOEX_CFG_2WIRE,
        ATH_BTCOEX_CFG_3WIRE,
-       ATH_BTCOEX_CFG_MCI,
 };
 
 struct ath9k_hw_mci {
index dd10f4ac03efabd6c12e528629a46a87d62be1eb..281a9af0f1b60b62ceaa3a449fa752854af2d5b9 100644 (file)
@@ -365,7 +365,7 @@ void ath9k_stop_btcoex(struct ath_softc *sc)
                ath9k_hw_btcoex_disable(ah);
                if (ath9k_hw_get_btcoex_scheme(ah) == ATH_BTCOEX_CFG_3WIRE)
                        ath9k_btcoex_timer_pause(sc);
-               if (ath9k_hw_get_btcoex_scheme(ah) == ATH_BTCOEX_CFG_MCI)
+               if (AR_SREV_9462(ah))
                        ath_mci_flush_profile(&sc->btcoex.mci);
        }
 }
@@ -376,7 +376,7 @@ void ath9k_deinit_btcoex(struct ath_softc *sc)
            ath9k_hw_get_btcoex_scheme(sc->sc_ah) == ATH_BTCOEX_CFG_3WIRE)
                ath_gen_timer_free(sc->sc_ah, sc->btcoex.no_stomp_timer);
 
-       if (ath9k_hw_get_btcoex_scheme(sc->sc_ah) == ATH_BTCOEX_CFG_MCI)
+       if (AR_SREV_9462(sc->sc_ah))
                ath_mci_cleanup(sc);
 }
 
@@ -402,17 +402,16 @@ int ath9k_init_btcoex(struct ath_softc *sc)
                txq = sc->tx.txq_map[WME_AC_BE];
                ath9k_hw_init_btcoex_hw(sc->sc_ah, txq->axq_qnum);
                sc->btcoex.bt_stomp_type = ATH_BTCOEX_STOMP_LOW;
-               break;
-       case ATH_BTCOEX_CFG_MCI:
-               sc->btcoex.bt_stomp_type = ATH_BTCOEX_STOMP_LOW;
-               sc->btcoex.duty_cycle = ATH_BTCOEX_DEF_DUTY_CYCLE;
-               INIT_LIST_HEAD(&sc->btcoex.mci.info);
+               if (AR_SREV_9462(ah)) {
+                       sc->btcoex.duty_cycle = ATH_BTCOEX_DEF_DUTY_CYCLE;
+                       INIT_LIST_HEAD(&sc->btcoex.mci.info);
 
-               r = ath_mci_setup(sc);
-               if (r)
-                       return r;
+                       r = ath_mci_setup(sc);
+                       if (r)
+                               return r;
 
-               ath9k_hw_btcoex_init_mci(ah);
+                       ath9k_hw_btcoex_init_mci(ah);
+               }
 
                break;
        default: