iwlwifi: mvm: add BT-Coex LUT for 1x1 products
authorEmmanuel Grumbach <emmanuel.grumbach@intel.com>
Tue, 18 Jun 2013 02:34:58 +0000 (05:34 +0300)
committerJohannes Berg <johannes.berg@intel.com>
Tue, 25 Jun 2013 10:11:31 +0000 (12:11 +0200)
1x1 products will need a special LUT.

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
drivers/net/wireless/iwlwifi/iwl-config.h
drivers/net/wireless/iwlwifi/mvm/bt-coex.c

index 0189b90..83b9ff6 100644 (file)
@@ -222,6 +222,7 @@ struct iwl_cfg {
        const u32 max_inst_size;
        u8   valid_tx_ant;
        u8   valid_rx_ant;
+       bool bt_shared_single_ant;
        u16  nvm_ver;
        u16  nvm_calib_ver;
        /* params not likely to change within a device family */
index 9a4d94a..dbd622a 100644 (file)
@@ -202,6 +202,22 @@ static const __le32 iwl_concurrent_lookup[BT_COEX_LUT_SIZE] = {
        cpu_to_le32(0x00000000),
 };
 
+/* single shared antenna */
+static const __le32 iwl_single_shared_ant_lookup[BT_COEX_LUT_SIZE] = {
+       cpu_to_le32(0x40000000),
+       cpu_to_le32(0x00000000),
+       cpu_to_le32(0x44000000),
+       cpu_to_le32(0x00000000),
+       cpu_to_le32(0x40000000),
+       cpu_to_le32(0x00000000),
+       cpu_to_le32(0x44000000),
+       cpu_to_le32(0x00000000),
+       cpu_to_le32(0xC0004000),
+       cpu_to_le32(0xF0005000),
+       cpu_to_le32(0xC0004000),
+       cpu_to_le32(0xF0005000),
+};
+
 int iwl_send_bt_init_conf(struct iwl_mvm *mvm)
 {
        struct iwl_bt_coex_cmd cmd = {
@@ -225,7 +241,10 @@ int iwl_send_bt_init_conf(struct iwl_mvm *mvm)
                                        BT_VALID_REDUCED_TX_POWER |
                                        BT_VALID_LUT);
 
-       if (is_loose_coex())
+       if (mvm->cfg->bt_shared_single_ant)
+               memcpy(&cmd.decision_lut, iwl_single_shared_ant_lookup,
+                      sizeof(iwl_single_shared_ant_lookup));
+       else if (is_loose_coex())
                memcpy(&cmd.decision_lut, iwl_loose_lookup,
                       sizeof(iwl_tight_lookup));
        else