aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/iwlwifi/mvm
diff options
context:
space:
mode:
authorEmmanuel Grumbach <emmanuel.grumbach@intel.com>2013-09-11 06:33:28 -0400
committerJohannes Berg <johannes.berg@intel.com>2013-10-11 03:56:56 -0400
commitd1d5e3cda07fc8ddc6c9dc768eca50c17d675abc (patch)
treee60e40aca6bdd5345e203ab7dccb4e44cbff4ff4 /drivers/net/wireless/iwlwifi/mvm
parent9145d15128bd3ca68cd7fdf04535a710ac88bdba (diff)
iwlwifi: mvm: BT Coex - set the proper LUT for single ant devices
Single shared antenna devices need a special LUT. Address this need. Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com> Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Diffstat (limited to 'drivers/net/wireless/iwlwifi/mvm')
-rw-r--r--drivers/net/wireless/iwlwifi/mvm/bt-coex.c54
1 files changed, 52 insertions, 2 deletions
diff --git a/drivers/net/wireless/iwlwifi/mvm/bt-coex.c b/drivers/net/wireless/iwlwifi/mvm/bt-coex.c
index 57a7503030fc..a007790223d9 100644
--- a/drivers/net/wireless/iwlwifi/mvm/bt-coex.c
+++ b/drivers/net/wireless/iwlwifi/mvm/bt-coex.c
@@ -131,6 +131,51 @@ static const __le32 iwl_bt_prio_boost[BT_COEX_BOOST_SIZE] = {
131 cpu_to_le32(0xff00ff00), 131 cpu_to_le32(0xff00ff00),
132}; 132};
133 133
134static const __le32 iwl_single_shared_ant[BT_COEX_MAX_LUT][BT_COEX_LUT_SIZE] = {
135 {
136 cpu_to_le32(0x40000000),
137 cpu_to_le32(0x00000000),
138 cpu_to_le32(0x44000000),
139 cpu_to_le32(0x00000000),
140 cpu_to_le32(0x40000000),
141 cpu_to_le32(0x00000000),
142 cpu_to_le32(0x44000000),
143 cpu_to_le32(0x00000000),
144 cpu_to_le32(0xc0004000),
145 cpu_to_le32(0xf0005000),
146 cpu_to_le32(0xc0004000),
147 cpu_to_le32(0xf0005000),
148 },
149 {
150 cpu_to_le32(0x40000000),
151 cpu_to_le32(0x00000000),
152 cpu_to_le32(0x44000000),
153 cpu_to_le32(0x00000000),
154 cpu_to_le32(0x40000000),
155 cpu_to_le32(0x00000000),
156 cpu_to_le32(0x44000000),
157 cpu_to_le32(0x00000000),
158 cpu_to_le32(0xc0004000),
159 cpu_to_le32(0xf0005000),
160 cpu_to_le32(0xc0004000),
161 cpu_to_le32(0xf0005000),
162 },
163 {
164 cpu_to_le32(0x40000000),
165 cpu_to_le32(0x00000000),
166 cpu_to_le32(0x44000000),
167 cpu_to_le32(0x00000000),
168 cpu_to_le32(0x40000000),
169 cpu_to_le32(0x00000000),
170 cpu_to_le32(0x44000000),
171 cpu_to_le32(0x00000000),
172 cpu_to_le32(0xc0004000),
173 cpu_to_le32(0xf0005000),
174 cpu_to_le32(0xc0004000),
175 cpu_to_le32(0xf0005000),
176 },
177};
178
134static const __le32 iwl_combined_lookup[BT_COEX_MAX_LUT][BT_COEX_LUT_SIZE] = { 179static const __le32 iwl_combined_lookup[BT_COEX_MAX_LUT][BT_COEX_LUT_SIZE] = {
135 { 180 {
136 /* Tight */ 181 /* Tight */
@@ -354,8 +399,13 @@ int iwl_send_bt_init_conf(struct iwl_mvm *mvm)
354 BT_VALID_TXTX_DELTA_FREQ_THRS | 399 BT_VALID_TXTX_DELTA_FREQ_THRS |
355 BT_VALID_TXRX_MAX_FREQ_0); 400 BT_VALID_TXRX_MAX_FREQ_0);
356 401
357 memcpy(&bt_cmd->decision_lut, iwl_combined_lookup, 402 if (mvm->cfg->bt_shared_single_ant)
358 sizeof(iwl_combined_lookup)); 403 memcpy(&bt_cmd->decision_lut, iwl_single_shared_ant,
404 sizeof(iwl_single_shared_ant));
405 else
406 memcpy(&bt_cmd->decision_lut, iwl_combined_lookup,
407 sizeof(iwl_combined_lookup));
408
359 memcpy(&bt_cmd->bt_prio_boost, iwl_bt_prio_boost, 409 memcpy(&bt_cmd->bt_prio_boost, iwl_bt_prio_boost,
360 sizeof(iwl_bt_prio_boost)); 410 sizeof(iwl_bt_prio_boost));
361 memcpy(&bt_cmd->bt4_multiprio_lut, iwl_bt_mprio_lut, 411 memcpy(&bt_cmd->bt4_multiprio_lut, iwl_bt_mprio_lut,