iwlwifi: mvm: change when the BT_COEX is sent
authorEmmanuel Grumbach <emmanuel.grumbach@intel.com>
Mon, 29 May 2017 11:01:06 +0000 (14:01 +0300)
committerLuca Coelho <luciano.coelho@intel.com>
Thu, 29 Jun 2017 10:26:25 +0000 (13:26 +0300)
The BT_COEX command should not be sent to the INIT
firmware image starting from 8000 family.
The firmware team also requested to send the BT_COEX
command after the PHY_DB_CMD and the PHY_CFG_CMD.

While at it:
s/iwl_send_bt_init_conf/iwl_mvm_send_bt_init_conf/

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
drivers/net/wireless/intel/iwlwifi/mvm/coex.c
drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c
drivers/net/wireless/intel/iwlwifi/mvm/fw.c
drivers/net/wireless/intel/iwlwifi/mvm/mvm.h

index fe7f1e424f55b35f375426cd38301000a8aef0ed..34dd5c40ce77839b7f2e32a145b432d205405b38 100644 (file)
@@ -406,7 +406,7 @@ iwl_get_coex_type(struct iwl_mvm *mvm, const struct ieee80211_vif *vif)
        return ret;
 }
 
-int iwl_send_bt_init_conf(struct iwl_mvm *mvm)
+int iwl_mvm_send_bt_init_conf(struct iwl_mvm *mvm)
 {
        struct iwl_bt_coex_cmd bt_cmd = {};
        u32 mode;
index c3ab13ee409717bfe63e8e2d6746ca55f7a8756f..f87a43dad086192356a63d62f6671b34f6fb2233 100644 (file)
@@ -644,7 +644,7 @@ iwl_dbgfs_bt_force_ant_write(struct iwl_mvm *mvm, char *buf,
                       modes_str[mvm->bt_force_ant_mode]);
 
        if (iwl_mvm_firmware_running(mvm))
-               ret = iwl_send_bt_init_conf(mvm);
+               ret = iwl_mvm_send_bt_init_conf(mvm);
        else
                ret = 0;
 
index 273e19460016125d5ff187f6d1cf8b63f8baed61..07308912486a368b9dfa20b3409606b947bb67ed 100644 (file)
@@ -836,9 +836,11 @@ int iwl_run_init_mvm_ucode(struct iwl_mvm *mvm, bool read_nvm)
                goto error;
        }
 
-       ret = iwl_send_bt_init_conf(mvm);
-       if (ret)
-               goto error;
+       if (mvm->cfg->device_family < IWL_DEVICE_FAMILY_8000) {
+               ret = iwl_mvm_send_bt_init_conf(mvm);
+               if (ret)
+                       goto error;
+       }
 
        /* Read the NVM only at driver load time, no need to do this twice */
        if (read_nvm) {
@@ -1545,10 +1547,6 @@ int iwl_mvm_up(struct iwl_mvm *mvm)
        if (ret)
                goto error;
 
-       ret = iwl_send_bt_init_conf(mvm);
-       if (ret)
-               goto error;
-
        /* Send phy db control command and then phy db calibration*/
        if (!iwl_mvm_has_new_tx_api(mvm)) {
                ret = iwl_send_phy_db_data(mvm->phy_db);
@@ -1560,6 +1558,10 @@ int iwl_mvm_up(struct iwl_mvm *mvm)
                        goto error;
        }
 
+       ret = iwl_mvm_send_bt_init_conf(mvm);
+       if (ret)
+               goto error;
+
        /* Init RSS configuration */
        /* TODO - remove a000 disablement when we have RXQ config API */
        if (iwl_mvm_has_new_rx_api(mvm) && !iwl_mvm_has_new_tx_api(mvm)) {
index 9b777b847e22283394c65cead9bfd89d737dd339..f2f1e04f471daf07283b97caa233e513e8f741ad 100644 (file)
@@ -1680,7 +1680,7 @@ int iwl_mvm_exit_d0i3(struct iwl_op_mode *op_mode);
 int _iwl_mvm_exit_d0i3(struct iwl_mvm *mvm);
 
 /* BT Coex */
-int iwl_send_bt_init_conf(struct iwl_mvm *mvm);
+int iwl_mvm_send_bt_init_conf(struct iwl_mvm *mvm);
 void iwl_mvm_rx_bt_coex_notif(struct iwl_mvm *mvm,
                              struct iwl_rx_cmd_buffer *rxb);
 void iwl_mvm_bt_rssi_event(struct iwl_mvm *mvm, struct ieee80211_vif *vif,