diff --git a/wmi_unified_api.c b/wmi_unified_api.c index 41bbf2bb21..8f7081a478 100644 --- a/wmi_unified_api.c +++ b/wmi_unified_api.c @@ -6387,20 +6387,40 @@ QDF_STATUS wmi_unified_encrypt_decrypt_send_cmd(void *wmi_hdl, /* * wmi_unified_send_btcoex_wlan_priority_cmd() - send btcoex priority commands * @wmi_handle: wmi handle - * @value: Priority value + * @param : wmi btcoex cfg params * * Send WMI_BTCOEX_CFG_CMDID parameters to fw. * * Return: QDF_STATUS_SUCCESS on success, QDF_STATUS_E_** on error */ QDF_STATUS wmi_unified_send_btcoex_wlan_priority_cmd(void *wmi_hdl, - int value) + struct btcoex_cfg_params *param) { wmi_unified_t wmi = (wmi_unified_t) wmi_hdl; if (wmi->ops->send_btcoex_wlan_priority_cmd) return wmi->ops->send_btcoex_wlan_priority_cmd(wmi, - value); + param); + + return QDF_STATUS_E_FAILURE; +} +/** + * wmi_unified_send_btcoex_duty_cycle_cmd() - send btcoex duty cycle commands + * @wmi_handle: wmi handle + * @param: wmi btcoex cfg params + * + * Send WMI_BTCOEX_CFG_CMDID parameters to fw. + * + * Return: QDF_STATUS_SUCCESS on success, QDF_STATUS_E_** on error + */ +QDF_STATUS wmi_unified_send_btcoex_duty_cycle_cmd(void *wmi_hdl, + struct btcoex_cfg_params *param) +{ + wmi_unified_t wmi = (wmi_unified_t) wmi_hdl; + + if (wmi->ops->send_btcoex_duty_cycle_cmd) + return wmi->ops->send_btcoex_duty_cycle_cmd(wmi, + param); return QDF_STATUS_E_FAILURE; } diff --git a/wmi_unified_non_tlv.c b/wmi_unified_non_tlv.c index 85ffa2f17a..cc1b5b8a30 100644 --- a/wmi_unified_non_tlv.c +++ b/wmi_unified_non_tlv.c @@ -5214,12 +5214,13 @@ send_pdev_caldata_version_check_cmd_non_tlv(wmi_unified_t wmi_handle, /** * send_btcoex_wlan_priority_cmd_non_tlv() - send btcoex wlan priority fw * @wmi_handle: wmi handle - * @value: priority value + * @param: btcoex config params * * Return: 0 for success or error code */ QDF_STATUS -send_btcoex_wlan_priority_cmd_non_tlv(wmi_unified_t wmi_handle, int value) +send_btcoex_wlan_priority_cmd_non_tlv(wmi_unified_t wmi_handle, + struct btcoex_cfg_params *param) { wmi_buf_t buf; wmi_btcoex_cfg_cmd *cmd; @@ -5231,7 +5232,41 @@ send_btcoex_wlan_priority_cmd_non_tlv(wmi_unified_t wmi_handle, int value) return QDF_STATUS_E_FAILURE; } cmd = (wmi_btcoex_cfg_cmd *) wmi_buf_data(buf); - cmd->btcoex_wlan_priority_bitmap = value; + + cmd->btcoex_wlan_priority_bitmap = param->btcoex_wlan_priority_bitmap; + cmd->btcoex_param_flags = param->btcoex_param_flags; + if (wmi_unified_cmd_send(wmi_handle, buf, len, WMI_BTCOEX_CFG_CMDID)) { + wmi_buf_free(buf); + return QDF_STATUS_E_FAILURE; + } + + return QDF_STATUS_SUCCESS; +} + +/** + * send_btcoex_duty_cycle_cmd_non_tlv() - send btcoex wlan priority fw + * @wmi_handle: wmi handle + * @param: period and duration + * + * Return: 0 for success or error code + */ +QDF_STATUS +send_btcoex_duty_cycle_cmd_non_tlv(wmi_unified_t wmi_handle, + struct btcoex_cfg_params *param) +{ + wmi_buf_t buf; + wmi_btcoex_cfg_cmd *cmd; + int len = sizeof(wmi_btcoex_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 = (wmi_btcoex_cfg_cmd *) wmi_buf_data(buf); + cmd->wlan_duration = param->wlan_duration; + cmd->period = param->period; + cmd->btcoex_param_flags = param->btcoex_param_flags; if (wmi_unified_cmd_send(wmi_handle, buf, len, WMI_BTCOEX_CFG_CMDID)) { wmi_buf_free(buf); return QDF_STATUS_E_FAILURE; @@ -7879,6 +7914,7 @@ struct wmi_ops non_tlv_ops = { .send_pdev_caldata_version_check_cmd = 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, .get_target_cap_from_service_ready = extract_service_ready_non_tlv, .extract_fw_version = extract_fw_version_non_tlv, @@ -8039,6 +8075,8 @@ static void populate_non_tlv_service(uint32_t *wmi_service) wmi_service[wmi_service_tx_mode_dynamic] = WMI_SERVICE_TX_MODE_DYNAMIC; wmi_service[wmi_service_check_cal_version] = WMI_SERVICE_CHECK_CAL_VERSION; + wmi_service[wmi_service_btcoex_duty_cycle] = + WMI_SERVICE_BTCOEX_DUTY_CYCLE; 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 e623ebbd18..6d9a149896 100644 --- a/wmi_unified_tlv.c +++ b/wmi_unified_tlv.c @@ -13103,6 +13103,7 @@ static void populate_tlv_service(uint32_t *wmi_service) wmi_service[wmi_service_tx_mode_push_only] = WMI_SERVICE_UNAVAILABLE; 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; } /**