diff --git a/wmi_unified_api.c b/wmi_unified_api.c index 44d06e637e..83d201d102 100644 --- a/wmi_unified_api.c +++ b/wmi_unified_api.c @@ -6555,6 +6555,27 @@ QDF_STATUS wmi_extract_pdev_utf_event(void *wmi_hdl, return QDF_STATUS_E_FAILURE; } +/** + * wmi_unified_send_coex_ver_cfg_cmd() - send coex ver cfg command + * @wmi_handle: wmi handle + * @param: wmi coex ver cfg params + * + * Send WMI_COEX_VERSION_CFG_CMID parameters to fw. + * + * Return: QDF_STATUS_SUCCESS on success, QDF_STATUS_E_** on error + */ +QDF_STATUS wmi_unified_send_coex_ver_cfg_cmd(void *wmi_hdl, + coex_ver_cfg_t *param) +{ + wmi_unified_t wmi_handle = (wmi_unified_t) wmi_hdl; + + if (wmi_handle->ops->send_coex_ver_cfg_cmd) + return wmi_handle->ops->send_coex_ver_cfg_cmd(wmi_handle, + param); + + return QDF_STATUS_E_FAILURE; +} + /** * wmi_extract_peer_delete_response_event() - * extract vdev id and peer mac addresse from peer delete response event diff --git a/wmi_unified_non_tlv.c b/wmi_unified_non_tlv.c index 98c303e259..fa5b0e55e7 100644 --- a/wmi_unified_non_tlv.c +++ b/wmi_unified_non_tlv.c @@ -5216,6 +5216,40 @@ send_btcoex_duty_cycle_cmd_non_tlv(wmi_unified_t wmi_handle, return QDF_STATUS_SUCCESS; } + +/** + * send_coex_ver_cfg_cmd_non_tlv() - send coex ver cfg + * @wmi_handle: wmi handle + * @param: coex ver and configuration + * + * Return: 0 for success or error code + */ +QDF_STATUS +send_coex_ver_cfg_cmd_non_tlv(wmi_unified_t wmi_handle, coex_ver_cfg_t *param) +{ + wmi_buf_t buf; + coex_ver_cfg_t *cmd; + int len = sizeof(wmi_coex_ver_cfg_cmd); + + buf = wmi_buf_alloc(wmi_handle, len); + if (!buf) { + qdf_print("%s:wmi_buf_alloc failed\n", __func__); + return QDF_STATUS_E_FAILURE; + } + cmd = (coex_ver_cfg_t *)wmi_buf_data(buf); + cmd->coex_version = param->coex_version; + cmd->length = param->length; + qdf_mem_copy(cmd->config_buf, param->config_buf, + sizeof(cmd->config_buf)); + if (wmi_unified_cmd_send(wmi_handle, buf, len, + WMI_COEX_VERSION_CFG_CMID)) { + wmi_buf_free(buf); + return QDF_STATUS_E_FAILURE; + } + + return QDF_STATUS_SUCCESS; +} + /** * wmi_copy_resource_config_non_tlv() - copy resource configuration function * @param resource_cfg: pointer to resource configuration @@ -7959,6 +7993,7 @@ struct wmi_ops non_tlv_ops = { send_pdev_caldata_version_check_cmd_non_tlv, .send_btcoex_wlan_priority_cmd = send_btcoex_wlan_priority_cmd_non_tlv, .send_btcoex_duty_cycle_cmd = send_btcoex_duty_cycle_cmd_non_tlv, + .send_coex_ver_cfg_cmd = send_coex_ver_cfg_cmd_non_tlv, .get_target_cap_from_service_ready = extract_service_ready_non_tlv, .extract_fw_version = extract_fw_version_non_tlv, @@ -8120,6 +8155,8 @@ static void populate_non_tlv_service(uint32_t *wmi_service) WMI_SERVICE_CHECK_CAL_VERSION; wmi_service[wmi_service_btcoex_duty_cycle] = WMI_SERVICE_BTCOEX_DUTY_CYCLE; + wmi_service[wmi_service_4_wire_coex_support] = + WMI_SERVICE_4_WIRE_COEX_SUPPORT; wmi_service[wmi_service_roam_scan_offload] = WMI_SERVICE_UNAVAILABLE; wmi_service[wmi_service_arpns_offload] = WMI_SERVICE_UNAVAILABLE; diff --git a/wmi_unified_tlv.c b/wmi_unified_tlv.c index 246a96331e..c396f6787d 100644 --- a/wmi_unified_tlv.c +++ b/wmi_unified_tlv.c @@ -14008,6 +14008,7 @@ static void populate_tlv_service(uint32_t *wmi_service) wmi_service[wmi_service_tx_mode_push_pull] = WMI_SERVICE_UNAVAILABLE; wmi_service[wmi_service_tx_mode_dynamic] = WMI_SERVICE_UNAVAILABLE; wmi_service[wmi_service_btcoex_duty_cycle] = WMI_SERVICE_UNAVAILABLE; + wmi_service[wmi_service_4_wire_coex_support] = WMI_SERVICE_UNAVAILABLE; } /**