ath9k: Setup MCI statistics properly
authorSujith Manoharan <c_manoha@qca.qualcomm.com>
Mon, 16 Feb 2015 05:19:58 +0000 (10:49 +0530)
committerKalle Valo <kvalo@codeaurora.org>
Tue, 3 Mar 2015 12:55:22 +0000 (14:55 +0200)
Use a subroutine to enable MCI debug statistics
if it is present in the global configuration.

Signed-off-by: Sujith Manoharan <c_manoha@qca.qualcomm.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
drivers/net/wireless/ath/ath9k/ar9003_mci.c
drivers/net/wireless/ath/ath9k/reg_mci.h

index aca9015079d62b6d54589d5fc7a5729c12186376..de65ce190c6b72c3da959e545935f4bc9e0de0a2 100644 (file)
@@ -821,6 +821,25 @@ static void ar9003_mci_osla_setup(struct ath_hw *ah, bool enable)
                      AR_BTCOEX_CTRL_ONE_STEP_LOOK_AHEAD_EN, 1);
 }
 
+static void ar9003_mci_stat_setup(struct ath_hw *ah)
+{
+       struct ath9k_hw_mci *mci = &ah->btcoex_hw.mci;
+
+       if (!AR_SREV_9565(ah))
+               return;
+
+       if (mci->config & ATH_MCI_CONFIG_MCI_STAT_DBG) {
+               REG_RMW_FIELD(ah, AR_MCI_DBG_CNT_CTRL,
+                             AR_MCI_DBG_CNT_CTRL_ENABLE, 1);
+               REG_RMW_FIELD(ah, AR_MCI_DBG_CNT_CTRL,
+                             AR_MCI_DBG_CNT_CTRL_BT_LINKID,
+                             MCI_STAT_ALL_BT_LINKID);
+       } else {
+               REG_RMW_FIELD(ah, AR_MCI_DBG_CNT_CTRL,
+                             AR_MCI_DBG_CNT_CTRL_ENABLE, 0);
+       }
+}
+
 static void ar9003_mci_set_btcoex_ctrl_9565_1ANT(struct ath_hw *ah)
 {
        u32 regval;
@@ -984,10 +1003,8 @@ int ar9003_mci_reset(struct ath_hw *ah, bool en_int, bool is_2g,
 
        mci->ready = true;
        ar9003_mci_prep_interface(ah);
+       ar9003_mci_stat_setup(ah);
 
-       if (AR_SREV_9565(ah))
-               REG_RMW_FIELD(ah, AR_MCI_DBG_CNT_CTRL,
-                             AR_MCI_DBG_CNT_CTRL_ENABLE, 0);
        if (en_int)
                ar9003_mci_enable_interrupt(ah);
 
index 8d1572dcc05a78cf5a87b83b6a08bb3e1234ea3b..3bd7c21ea6cf1ef160c9ff8f2207e4e7dbf68152 100644 (file)
 #define AR_MCI_MISC                                     0x1a74
 #define AR_MCI_MISC_HW_FIX_EN                           0x00000001
 #define AR_MCI_MISC_HW_FIX_EN_S                         0
+
 #define AR_MCI_DBG_CNT_CTRL                             0x1a78
 #define AR_MCI_DBG_CNT_CTRL_ENABLE                      0x00000001
 #define AR_MCI_DBG_CNT_CTRL_ENABLE_S                    0
+#define AR_MCI_DBG_CNT_CTRL_BT_LINKID                   0x000007f8
+#define AR_MCI_DBG_CNT_CTRL_BT_LINKID_S                 3
+
+#define MCI_STAT_ALL_BT_LINKID                          0xffff
 
 #define AR_MCI_INTERRUPT_DEFAULT (AR_MCI_INTERRUPT_SW_MSG_DONE         | \
                                  AR_MCI_INTERRUPT_RX_INVALID_HDR      | \