mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-13 00:00:00 -04:00
qcacld-3.0: Add support to send MWS-COEX configurations to FW
Add support to send below two MWS-COEX configurations to FW 1. Enable/disable MWS-COEX 4G (LTE) Quick FTDM 2. Set MWS-COEX 5G-NR power limit Change-Id: I14656ced91c9dec2be85590e6f6c1e7497505a28 CRs-Fixed: 2265352
This commit is contained in:
parent
5b33d62a25
commit
eab3b8d472
4 changed files with 119 additions and 0 deletions
3
Kbuild
3
Kbuild
|
|
@ -1881,6 +1881,9 @@ cppflags-y += -DANI_BIG_BYTE_ENDIAN
|
|||
cppflags-y += -DBIG_ENDIAN_HOST
|
||||
endif
|
||||
|
||||
#Enable MWS COEX support for 4G quick TDM and 5G NR pwr limit
|
||||
cppflags-y += -DMWS_COEX
|
||||
|
||||
#Enable TX reclaim support
|
||||
cppflags-$(CONFIG_TX_CREDIT_RECLAIM_SUPPORT) += -DTX_CREDIT_RECLAIM_SUPPORT
|
||||
|
||||
|
|
|
|||
|
|
@ -13894,6 +13894,58 @@ enum hdd_external_acs_policy {
|
|||
#define CFG_NUM_VDEV_ENABLE_MAX (0x4)
|
||||
#define CFG_NUM_VDEV_ENABLE_DEFAULT (CFG_TGT_NUM_VDEV)
|
||||
|
||||
#ifdef MWS_COEX
|
||||
/*
|
||||
* <ini>
|
||||
* gMwsCoex4gQuickTdm - Bitmap to control MWS-COEX 4G quick FTDM policy
|
||||
* @Min: 0x00000000
|
||||
* @Max: 0xFFFFFFFF
|
||||
* @Default: 0x00000000
|
||||
*
|
||||
* It is a 32 bit value such that the various bits represent as below:
|
||||
* Bit-0 : 0 - Don't allow quick FTDM policy (Default)
|
||||
* 1 - Allow quick FTDM policy
|
||||
* Bit 1-31 : reserved for future use
|
||||
*
|
||||
* It is used to enable or disable MWS-COEX 4G (LTE) Quick FTDM
|
||||
*
|
||||
* Usage: Internal
|
||||
*
|
||||
* </ini>
|
||||
*/
|
||||
|
||||
#define CFG_MWS_COEX_4G_QUICK_FTDM_NAME "gMwsCoex4gQuickTdm"
|
||||
#define CFG_MWS_COEX_4G_QUICK_FTDM_MIN (0x00000000)
|
||||
#define CFG_MWS_COEX_4G_QUICK_FTDM_MAX (0xFFFFFFFF)
|
||||
#define CFG_MWS_COEX_4G_QUICK_FTDM_DEFAULT (0x00000000)
|
||||
|
||||
/*
|
||||
* <ini>
|
||||
* gMwsCoex5gnrPwrLimit - Bitmap to set MWS-COEX 5G-NR power limit
|
||||
* @Min: 0x00000000
|
||||
* @Max: 0xFFFFFFFF
|
||||
* @Default: 0x00000000
|
||||
*
|
||||
* It is a 32 bit value such that the various bits represent as below:
|
||||
* Bit-0 : Don't apply user specific power limit,
|
||||
* use internal power limit (Default)
|
||||
* Bit 1-2 : Invalid value (Ignored)
|
||||
* Bit 3-21 : Apply the specified value as the external power limit, in dBm
|
||||
* Bit 22-31 : Invalid value (Ignored)
|
||||
*
|
||||
* It is used to set MWS-COEX 5G-NR power limit
|
||||
*
|
||||
* Usage: Internal
|
||||
*
|
||||
* </ini>
|
||||
*/
|
||||
|
||||
#define CFG_MWS_COEX_5G_NR_PWR_LIMIT_NAME "gMwsCoex5gnrPwrLimit"
|
||||
#define CFG_MWS_COEX_5G_NR_PWR_LIMIT_MIN (0x00000000)
|
||||
#define CFG_MWS_COEX_5G_NR_PWR_LIMIT_MAX (0xFFFFFFFF)
|
||||
#define CFG_MWS_COEX_5G_NR_PWR_LIMIT_DEFAULT (0x00000000)
|
||||
#endif
|
||||
|
||||
/*
|
||||
* <ini>
|
||||
* gEnableChangeChannelBandWidth - Enable/Disable change
|
||||
|
|
@ -13983,6 +14035,14 @@ struct hdd_config {
|
|||
/* Bitmap for operating voltage corner mode */
|
||||
uint32_t vc_mode_cfg_bitmap;
|
||||
|
||||
#ifdef MWS_COEX
|
||||
/* Bitmap for MWS-COEX 4G Quick FTDM */
|
||||
uint32_t mws_coex_4g_quick_tdm;
|
||||
|
||||
/* Bitmap for MWS-COEX 5G-NR power limit */
|
||||
uint32_t mws_coex_5g_nr_pwr_limit;
|
||||
#endif
|
||||
|
||||
uint16_t nNeighborScanPeriod;
|
||||
uint16_t neighbor_scan_min_period;
|
||||
uint8_t nNeighborLookupRssiThreshold;
|
||||
|
|
|
|||
|
|
@ -5301,6 +5301,20 @@ struct reg_table_entry g_registry_table[] = {
|
|||
CFG_CHANGE_CHANNEL_BANDWIDTH_DEFAULT,
|
||||
CFG_CHANGE_CHANNEL_BANDWIDTH_MIN,
|
||||
CFG_CHANGE_CHANNEL_BANDWIDTH_MAX),
|
||||
#ifdef MWS_COEX
|
||||
REG_VARIABLE(CFG_MWS_COEX_4G_QUICK_FTDM_NAME, WLAN_PARAM_HexInteger,
|
||||
struct hdd_config, mws_coex_4g_quick_tdm,
|
||||
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
|
||||
CFG_MWS_COEX_4G_QUICK_FTDM_DEFAULT,
|
||||
CFG_MWS_COEX_4G_QUICK_FTDM_MIN,
|
||||
CFG_MWS_COEX_4G_QUICK_FTDM_MAX),
|
||||
REG_VARIABLE(CFG_MWS_COEX_5G_NR_PWR_LIMIT_NAME, WLAN_PARAM_HexInteger,
|
||||
struct hdd_config, mws_coex_5g_nr_pwr_limit,
|
||||
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
|
||||
CFG_MWS_COEX_5G_NR_PWR_LIMIT_DEFAULT,
|
||||
CFG_MWS_COEX_5G_NR_PWR_LIMIT_MIN,
|
||||
CFG_MWS_COEX_5G_NR_PWR_LIMIT_MAX),
|
||||
#endif
|
||||
};
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -10256,6 +10256,44 @@ static int hdd_set_auto_shutdown_cb(struct hdd_context *hdd_ctx)
|
|||
}
|
||||
#endif
|
||||
|
||||
#ifdef MWS_COEX
|
||||
/**
|
||||
* hdd_set_mws_coex() - Set MWS coex configurations
|
||||
* @hdd_ctx: HDD context
|
||||
*
|
||||
* This function sends MWS-COEX 4G quick FTDM and
|
||||
* MWS-COEX 5G-NR power limit to FW
|
||||
*
|
||||
* Return: 0 on success and errno on failure.
|
||||
*/
|
||||
static int hdd_init_mws_coex(struct hdd_context *hdd_ctx)
|
||||
{
|
||||
int ret = 0;
|
||||
|
||||
ret = sme_cli_set_command(0, WMI_PDEV_PARAM_MWSCOEX_4G_ALLOW_QUICK_FTDM,
|
||||
hdd_ctx->config->mws_coex_4g_quick_tdm,
|
||||
PDEV_CMD);
|
||||
if (ret) {
|
||||
hdd_warn("Unable to send MWS-COEX 4G quick FTDM policy");
|
||||
return ret;
|
||||
}
|
||||
|
||||
ret = sme_cli_set_command(0, WMI_PDEV_PARAM_MWSCOEX_SET_5GNR_PWR_LIMIT,
|
||||
hdd_ctx->config->mws_coex_5g_nr_pwr_limit,
|
||||
PDEV_CMD);
|
||||
if (ret) {
|
||||
hdd_warn("Unable to send MWS-COEX 4G quick FTDM policy");
|
||||
return ret;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
#else
|
||||
static int hdd_init_mws_coex(struct hdd_context *hdd_ctx)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
/**
|
||||
* hdd_features_init() - Init features
|
||||
* @hdd_ctx: HDD context
|
||||
|
|
@ -10275,6 +10313,10 @@ static int hdd_features_init(struct hdd_context *hdd_ctx)
|
|||
|
||||
hdd_enter();
|
||||
|
||||
ret = hdd_init_mws_coex(hdd_ctx);
|
||||
if (ret)
|
||||
hdd_warn("Error initializing mws-coex");
|
||||
|
||||
cfg = hdd_ctx->config;
|
||||
/* FW capabilities received, Set the Dot11 mode */
|
||||
mac_handle = hdd_ctx->mac_handle;
|
||||
|
|
|
|||
Loading…
Reference in a new issue