]> git.karo-electronics.de Git - linux-beck.git/commitdiff
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 0189b9050f22d5ec2720612b74d6b501cba0a89e..83b9ff6ff3ad8771a2bbc02d16e58371c7c87fbd 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 9a4d94a1f90d66deb8003e455c4499a86ccfc50d..dbd622a3929ce47c0c91ca4a5d78b82c2c38eaca 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