1 /*
2  * Copyright (c) 2012-2021 The Linux Foundation. All rights reserved.
3  * Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved.
4  *
5  * Permission to use, copy, modify, and/or distribute this software for
6  * any purpose with or without fee is hereby granted, provided that the
7  * above copyright notice and this permission notice appear in all
8  * copies.
9  *
10  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
11  * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
12  * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
13  * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
14  * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
15  * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
16  * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
17  * PERFORMANCE OF THIS SOFTWARE.
18  */
19 
20 /**
21  * DOC: This file contains centralized definitions of converged configuration.
22  */
23 
24 #ifndef __CFG_COEX_H
25 #define __CFG_COEX_H
26 
27 /*
28  * <ini>
29  * gSetBTCMode - Config BTC mode
30  * @Min: 0
31  * @Max: 2
32  * @Default: 0
33  *
34  * 0 - TDD
35  * 1 - FDD
36  * 2 - Hybrid
37  *
38  * Usage: External
39  *
40  * </ini>
41  */
42 #define CFG_BTC_MODE CFG_INI_UINT( \
43 			"gSetBTCMode", \
44 			0, \
45 			2, \
46 			0, \
47 			CFG_VALUE_OR_DEFAULT, \
48 			"BTC mode")
49 
50 /*
51  * <ini>
52  * gSetAntennaIsolation - Set Antenna Isolation
53  * @Min: 0
54  * @Max: 255
55  * @Default: 25
56  *
57  * Usage: External
58  *
59  * </ini>
60  */
61 #define CFG_ANTENNA_ISOLATION CFG_INI_UINT( \
62 			"gSetAntennaIsolation", \
63 			0, \
64 			255, \
65 			25, \
66 			CFG_VALUE_OR_DEFAULT, \
67 			"Antenna Isolation")
68 
69 /*
70  * <ini>
71  * gSetMaxTxPowerForBTC - Set Max WLAN Tx power in COEX scenario
72  * @Min: 0
73  * @Max: 100
74  * @Default: 100
75  *
76  * Usage: External
77  *
78  * </ini>
79  */
80 #define CFG_MAX_TX_POWER_FOR_BTC CFG_INI_UINT( \
81 			"gSetMaxTxPowerForBTC", \
82 			0, \
83 			100, \
84 			100, \
85 			CFG_VALUE_OR_DEFAULT, \
86 			"Max Tx Power for BTC")
87 
88 /*
89  * <ini>
90  * gSetWlanLowRssiThreshold - Set WLAN low RSSI threshold for BTC mode switching
91  * @Min: -100
92  * @Max: 0
93  * @Default: -80
94  *
95  * Usage: External
96  *
97  * </ini>
98  */
99 #define CFG_WLAN_LOW_RSSI_THRESHOLD CFG_INI_INT( \
100 			"gSetWlanLowRssiThreshold", \
101 			-100, \
102 			0, \
103 			-80, \
104 			CFG_VALUE_OR_DEFAULT, \
105 			"WLAN Low RSSI Threshold")
106 
107 /*
108  * <ini>
109  * gSetBtLowRssiThreshold - Set BT low RSSI threshold for BTC mode switching
110  * @Min: -100
111  * @Max: 0
112  * @Default: -65
113  *
114  * Usage: External
115  *
116  * </ini>
117  */
118 #define CFG_BT_LOW_RSSI_THRESHOLD CFG_INI_INT( \
119 			"gSetBtLowRssiThreshold", \
120 			-100, \
121 			0, \
122 			-65, \
123 			CFG_VALUE_OR_DEFAULT, \
124 			"BT Low RSSI Threshold")
125 
126 /*
127  * <ini>
128  * gSetBtInterferenceLowLL - Set lower limit of low level BT interference
129  * @Min: -100
130  * @Max: 100
131  * @Default: -25
132  *
133  * Usage: External
134  *
135  * </ini>
136  */
137 #define CFG_BT_INTERFERENCE_LOW_LL CFG_INI_INT( \
138 			"gSetBtInterferenceLowLL", \
139 			-100, \
140 			100, \
141 			-25, \
142 			CFG_VALUE_OR_DEFAULT, \
143 			"BT Interference Low LL")
144 
145 /*
146  * <ini>
147  * gSetBtInterferenceLowUL - Set upper limit of low level BT interference
148  * @Min: -100
149  * @Max: 100
150  * @Default: -21
151  *
152  * Usage: External
153  *
154  * </ini>
155  */
156 #define CFG_BT_INTERFERENCE_LOW_UL CFG_INI_INT( \
157 			"gSetBtInterferenceLowUL", \
158 			-100, \
159 			100, \
160 			-21, \
161 			CFG_VALUE_OR_DEFAULT, \
162 			"BT Interference Low UL")
163 
164 /*
165  * <ini>
166  * gSetBtInterferenceMediumLL - Set lower limit of medium level BT interference
167  * @Min: -100
168  * @Max: 100
169  * @Default: -20
170  *
171  * Usage: External
172  *
173  * </ini>
174  */
175 #define CFG_BT_INTERFERENCE_MEDIUM_LL CFG_INI_INT( \
176 			"gSetBtInterferenceMediumLL", \
177 			-100, \
178 			100, \
179 			-20, \
180 			CFG_VALUE_OR_DEFAULT, \
181 			"BT Interference Medium LL")
182 
183 /*
184  * <ini>
185  * gSetBtInterferenceMediumUL - Set upper limit of medium level BT interference
186  * @Min: -100
187  * @Max: 100
188  * @Default: -16
189  *
190  * Usage: External
191  *
192  * </ini>
193  */
194 #define CFG_BT_INTERFERENCE_MEDIUM_UL CFG_INI_INT( \
195 			"gSetBtInterferenceMediumUL", \
196 			-100, \
197 			100, \
198 			-16, \
199 			CFG_VALUE_OR_DEFAULT, \
200 			"BT Interference Medium UL")
201 
202 /*
203  * <ini>
204  * gSetBtInterferenceHighLL - Set lower limit of high level BT interference
205  * @Min: -100
206  * @Max: 100
207  * @Default: -15
208  *
209  * Usage: External
210  *
211  * </ini>
212  */
213 #define CFG_BT_INTERFERENCE_HIGH_LL CFG_INI_INT( \
214 			"gSetBtInterferenceHighLL", \
215 			-100, \
216 			100, \
217 			-15, \
218 			CFG_VALUE_OR_DEFAULT, \
219 			"BT Interference High LL")
220 
221 /*
222  * <ini>
223  * gSetBtInterferenceHighUL - Set upper limit of high level BT interference
224  * @Min: -100
225  * @Max: 100
226  * @Default: -11
227  *
228  * Usage: External
229  *
230  * </ini>
231  */
232 #define CFG_BT_INTERFERENCE_HIGH_UL CFG_INI_INT( \
233 			"gSetBtInterferenceHighUL", \
234 			-100, \
235 			100, \
236 			-11, \
237 			CFG_VALUE_OR_DEFAULT, \
238 			"BT Interference High UL")
239 
240 #ifdef FEATURE_MPTA_HELPER
241 /*
242  * <ini>
243  * gMPTAHelperEnable - Enable MPTA Helper
244  * @Min: 0
245  * @Max: 1
246  * @Default: 0
247  *
248  * This ini is used to enable or disable coex MPTA Helper.
249  *
250  * Usage: External
251  *
252  * </ini>
253  */
254 #define CFG_COEX_MPTA_HELPER CFG_INI_BOOL( \
255 		"gMPTAHelperEnable", \
256 		0, \
257 		"Enable/Disable MPTA Helper")
258 
259 #define COEX_MPTA_HELPER_CFG CFG(CFG_COEX_MPTA_HELPER)
260 #else
261 #define COEX_MPTA_HELPER_CFG
262 #endif
263 
264 /*
265  * <ini>
266  * gBtScoAllowWlan2GScan - Allow wlan 2g scan when BT SCO connection is on
267  * @Min: 0
268  * @Max: 1
269  * @Default: 1
270  *
271  * 0 - Disable
272  * 1 - Enable
273  *
274  * This ini is used to enable or disable wlan 2g scan
275  * when BT SCO connection is on.
276  *
277  * Usage: External
278  *
279  * </ini>
280  */
281 #define CFG_BT_SCO_ALLOW_WLAN_2G_SCAN CFG_INI_BOOL( \
282 		"gBtScoAllowWlan2GScan", \
283 		1, \
284 		"Bt Sco Allow Wlan 2G Scan")
285 
286 /*
287  * <ini>
288  * ble_scan_coex_policy - Ini to configure coex policy
289  * @Min: 0
290  * @Max: 1
291  * @Default: 0
292  *
293  * 0 - Better BLE Advertiser reception performance
294  * 1 - Better WLAN performance
295  *
296  * This ini is used to control the performance of ble scan case,’0’ to place
297  * more emphasis on BLE Scan results , ‘1’ to place more emphasis on WLAN
298  * performance
299  *
300  * Usage: External
301  *
302  * </ini>
303  */
304 #define CFG_BLE_SCAN_COEX_POLICY CFG_INI_BOOL( \
305 		"ble_scan_coex_policy", \
306 		0, \
307 		"BLE scan Coex policy")
308 
309 #ifdef FEATURE_COEX_CONFIG
310 /*
311  * <ini>
312  * gThreeWayCoexConfigLegacyEnable - Enable coex config legacy feature
313  * @Min: 0
314  * @Max: 1
315  * @Default: 0
316  *
317  * This ini is used to enable or disable three way coex config legacy feature.
318  * This feature is designed only for non-mobile solution.
319  * When the feature is disabled, Firmware use the default configuration to
320  * set the coex priority of three antenna(WLAN, BT, ZIGBEE).
321  * when enable this feature, customer can use the vendor command to set antenna
322  * coex priority dynamically.
323  *
324  * Supported Feature: three way coex config
325  *
326  * Usage: External
327  *
328  * </ini>
329  */
330 #define CFG_THREE_WAY_COEX_CONFIG_LEGACY CFG_INI_BOOL( \
331 		"gThreeWayCoexConfigLegacyEnable", \
332 		0, \
333 		"Enable/Disable COEX Config Legacy")
334 
335 #define THREE_WAY_COEX_CONFIG_LEGACY_CFG CFG(CFG_THREE_WAY_COEX_CONFIG_LEGACY)
336 #else
337 #define THREE_WAY_COEX_CONFIG_LEGACY_CFG
338 #endif
339 
340 #ifdef FEATURE_BTC_CHAIN_MODE
341 /*
342  * <ini>
343  * gSetInitChainModeForBTC - Used to set init chain mode for BTC
344  * @Min: 0
345  * @Max: 0xFF
346  * @Default: 0xFF
347  *
348  * This ini is used to set init chain mode for BTC, default value
349  * should be set to the same as macro WLAN_COEX_BTC_CHAIN_MODE_UNSETTLED(0xFF),
350  * only below values can be set:
351  * 0 - init WLAN 2.4G to support 2x2.
352  *     It means chains of BT and WLAN 2.4G are shared, or BT is OFF.
353  * 1 - init WLAN 2.4G as 1x1, chains of BT and WLAN 2.4G are separated,
354  *     fixed FDD.
355  * 2 - init WLAN 2.4G as 1x1, chains of BT and WLAN 2.4G are separated,
356  *     hybrid mode
357  * 0xFF - no need to send init chain mode for BTC to firmware.
358  *
359  * Supported Feature: init chain mode for BTC
360  *
361  * Usage: External
362  *
363  * </ini>
364  */
365 #define CFG_SET_INIT_CHAIN_MODE_FOR_BTC CFG_INI_UINT( \
366 		"gSetInitChainModeForBTC", \
367 		0, \
368 		0xFF, \
369 		0xFF, \
370 		CFG_VALUE_OR_DEFAULT, \
371 		"Init Chain Mode For BTC")
372 
373 #define SET_INIT_CHAIN_MODE_FOR_BTC_CFG CFG(CFG_SET_INIT_CHAIN_MODE_FOR_BTC)
374 #else
375 #define SET_INIT_CHAIN_MODE_FOR_BTC_CFG
376 #endif
377 
378 #ifdef FEATURE_COEX_TPUT_SHAPING_CONFIG
379 /*
380  * <ini>
381  * coex_tput_shaping_enable - Ini to enable wifi configure traffic shaping
382  * @Min: 0
383  * @Max: 1
384  * @Default: 0
385  *
386  * 0 - traffic shaping is disable
387  * 1 - traffic shaping is enable
388  *
389  * This ini is used to enable and disable wifi traffic shaping
390  *
391  * Usage: External
392  *
393  * </ini>
394  */
395 #define CFG_TPUT_SHAPING_ENABLE CFG_INI_BOOL( \
396 		"coex_tput_shaping_enable", \
397 		0, \
398 		"coex_tput_shaping_enable")
399 #define TPUT_SHAPING_ENABLE_CFG CFG(CFG_TPUT_SHAPING_ENABLE)
400 #else
401 #define TPUT_SHAPING_ENABLE_CFG
402 #endif
403 
404 #define CFG_COEX_ALL \
405 	CFG(CFG_BTC_MODE) \
406 	CFG(CFG_ANTENNA_ISOLATION) \
407 	CFG(CFG_MAX_TX_POWER_FOR_BTC) \
408 	CFG(CFG_WLAN_LOW_RSSI_THRESHOLD) \
409 	CFG(CFG_BT_LOW_RSSI_THRESHOLD) \
410 	CFG(CFG_BT_INTERFERENCE_LOW_LL) \
411 	CFG(CFG_BT_INTERFERENCE_LOW_UL) \
412 	CFG(CFG_BT_INTERFERENCE_MEDIUM_LL) \
413 	CFG(CFG_BT_INTERFERENCE_MEDIUM_UL) \
414 	CFG(CFG_BT_INTERFERENCE_HIGH_LL) \
415 	CFG(CFG_BT_INTERFERENCE_HIGH_UL) \
416 	COEX_MPTA_HELPER_CFG \
417 	CFG(CFG_BT_SCO_ALLOW_WLAN_2G_SCAN) \
418 	THREE_WAY_COEX_CONFIG_LEGACY_CFG \
419 	SET_INIT_CHAIN_MODE_FOR_BTC_CFG \
420 	CFG(CFG_BLE_SCAN_COEX_POLICY) \
421 	TPUT_SHAPING_ENABLE_CFG
422 #endif
423