Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 22f25d0d authored by Vasanthakumar Thiagarajan's avatar Vasanthakumar Thiagarajan Committed by John W. Linville
Browse files

ath9k: Determine btcoex scheme type based on chip version

parent f14462c6
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -20,7 +20,14 @@
#define ATH_WLANACTIVE_GPIO	5
#define ATH_BTACTIVE_GPIO	6

enum ath_btcoex_scheme {
	ATH_BTCOEX_CFG_NONE,
	ATH_BTCOEX_CFG_2WIRE,
	ATH_BTCOEX_CFG_3WIRE,
};

struct ath_btcoex_info {
	enum ath_btcoex_scheme btcoex_scheme;
	u8 wlanactive_gpio;
	u8 btactive_gpio;
};
+10 −2
Original line number Diff line number Diff line
@@ -3489,6 +3489,7 @@ void ath9k_hw_fill_cap_info(struct ath_hw *ah)
{
	struct ath9k_hw_capabilities *pCap = &ah->caps;
	struct ath_regulatory *regulatory = ath9k_hw_regulatory(ah);
	struct ath_btcoex_info *btcoex_info = &ah->ah_sc->btcoex_info;

	u16 capField = 0, eeval;

@@ -3666,8 +3667,15 @@ void ath9k_hw_fill_cap_info(struct ath_hw *ah)

	if (AR_SREV_9280_10_OR_LATER(ah) && btcoex_enable) {
		pCap->hw_caps |= ATH9K_HW_CAP_BT_COEX;
		ah->ah_sc->btcoex_info.btactive_gpio = ATH_BTACTIVE_GPIO;
		ah->ah_sc->btcoex_info.wlanactive_gpio = ATH_WLANACTIVE_GPIO;
		btcoex_info->btactive_gpio = ATH_BTACTIVE_GPIO;
		btcoex_info->wlanactive_gpio = ATH_WLANACTIVE_GPIO;

		if (AR_SREV_9285(ah))
			btcoex_info->btcoex_scheme = ATH_BTCOEX_CFG_3WIRE;
		else
			btcoex_info->btcoex_scheme = ATH_BTCOEX_CFG_2WIRE;
	} else {
		btcoex_info->btcoex_scheme = ATH_BTCOEX_CFG_NONE;
	}
}

+3 −1
Original line number Diff line number Diff line
@@ -1509,7 +1509,8 @@ static int ath_init_softc(u16 devid, struct ath_softc *sc)
			ARRAY_SIZE(ath9k_5ghz_chantable);
	}

	if (ah->caps.hw_caps & ATH9K_HW_CAP_BT_COEX)
	if ((ah->caps.hw_caps & ATH9K_HW_CAP_BT_COEX) &&
	    (sc->btcoex_info.btcoex_scheme == ATH_BTCOEX_CFG_2WIRE))
		ath9k_hw_btcoex_init(ah);

	return 0;
@@ -1993,6 +1994,7 @@ static int ath9k_start(struct ieee80211_hw *hw)
	ieee80211_queue_delayed_work(sc->hw, &sc->tx_complete_work, 0);

	if ((sc->sc_ah->caps.hw_caps & ATH9K_HW_CAP_BT_COEX) &&
	    (sc->btcoex_info.btcoex_scheme == ATH_BTCOEX_CFG_2WIRE) &&
	    !(sc->sc_flags & SC_OP_BTCOEX_ENABLED))
		ath9k_hw_btcoex_enable(sc->sc_ah);