Explorar el Código

qcacmn: Add wmi support for 4-wire coex configuration

This patch adds support of new WMI command WMI_COEX_VERSION_CFG_CMID
for 4-wire coex configuration in non_tlv_ops.

Change-Id: I63da2c7ae99c38d297f7f13a8086611263f7fc5b
Acked-by: Daniel Kim <[email protected]>
CRs-Fixed: 1081065
Sathish Kumar hace 8 años
padre
commit
58a9fb97aa
Se han modificado 3 ficheros con 59 adiciones y 0 borrados
  1. 21 0
      wmi_unified_api.c
  2. 37 0
      wmi_unified_non_tlv.c
  3. 1 0
      wmi_unified_tlv.c

+ 21 - 0
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

+ 37 - 0
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;

+ 1 - 0
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;
 }
 
 /**