Browse Source

qcacmn: Add extract API to get sw cal version

cal version is included in EXT2 svc ready message to indicate the bdf
and ftm version to host. Add API to extract this from ext2 message.

Change-Id: I83f4d6e83a3f78f993b40527aed7291c6496777c
CRs-Fixed: 3182634
Kiran Venkatappa 3 years ago
parent
commit
a5e928212a

+ 13 - 0
wmi/inc/wmi_unified_api.h

@@ -3667,6 +3667,19 @@ QDF_STATUS wmi_extract_scan_radio_cap_service_ready_ext2(
 			uint8_t *evt_buf, uint8_t idx,
 			struct wlan_psoc_host_scan_radio_caps *param);
 
+/**
+ * wmi_extract_sw_cal_ver_ext2: Extract sw cal version received through
+ *                              extended service ready2 event
+ * @wmi_handle: WMI handle
+ * @event: Event buffer
+ * @cal: Pointer to sw cal ver struct
+ *
+ * Return: QDF status of operation
+ */
+QDF_STATUS wmi_extract_sw_cal_ver_ext2(wmi_unified_t wmi_handle,
+				       uint8_t *event,
+				       struct wmi_host_sw_cal_ver *cal);
+
 /**
  * wmi_extract_spectral_scaling_params_service_ready_ext: Extract Spectral
  *                                             scaling params received through

+ 12 - 0
wmi/inc/wmi_unified_param.h

@@ -8648,4 +8648,16 @@ struct vdev_pn_mgmt_rxfilter_params {
 	uint8_t vdev_id;
 	uint32_t pn_rxfilter;
 };
+
+/**
+ * struct wmi_host_sw_cal_ver - BDF and FTM cal version data
+ * @bdf_cal_ver: SW cal version in BDF
+ * @ftm_cal_ver: SW cal version in factory data
+ * @status: status. 0 for success, non-zero if version is incorrect
+ */
+struct wmi_host_sw_cal_ver {
+	uint32_t bdf_cal_ver;
+	uint32_t ftm_cal_ver;
+	uint32_t status;
+};
 #endif /* _WMI_UNIFIED_PARAM_H_ */

+ 4 - 0
wmi/inc/wmi_unified_priv.h

@@ -2150,6 +2150,10 @@ QDF_STATUS (*extract_scan_radio_cap_service_ready_ext2)(
 			uint8_t *evt_buf, uint8_t idx,
 			struct wlan_psoc_host_scan_radio_caps *param);
 
+QDF_STATUS (*extract_sw_cal_ver_ext2)(wmi_unified_t wmi_handle,
+				      uint8_t *event,
+				      struct wmi_host_sw_cal_ver *cal);
+
 QDF_STATUS (*extract_scaling_params_service_ready_ext)(
 			wmi_unified_t wmi_handle,
 			uint8_t *evt_buf, uint8_t idx,

+ 12 - 0
wmi/src/wmi_unified_api.c

@@ -2670,6 +2670,18 @@ QDF_STATUS wmi_extract_scan_radio_cap_service_ready_ext2(
 	return QDF_STATUS_E_FAILURE;
 }
 
+QDF_STATUS wmi_extract_sw_cal_ver_ext2(wmi_unified_t wmi_handle,
+				       uint8_t *event,
+				       struct wmi_host_sw_cal_ver *cal)
+{
+	if (wmi_handle->ops->extract_sw_cal_ver_ext2)
+		return wmi_handle->ops->extract_sw_cal_ver_ext2(wmi_handle,
+								event,
+								cal);
+
+	return QDF_STATUS_E_FAILURE;
+}
+
 #ifdef WLAN_CONV_SPECTRAL_ENABLE
 QDF_STATUS wmi_extract_pdev_sscan_fw_cmd_fixed_param(
 			wmi_unified_t wmi_handle,

+ 23 - 0
wmi/src/wmi_unified_tlv.c

@@ -13022,6 +13022,28 @@ static QDF_STATUS extract_scan_radio_cap_service_ready_ext2_tlv(
 	return QDF_STATUS_SUCCESS;
 }
 
+static QDF_STATUS extract_sw_cal_ver_ext2_tlv(wmi_unified_t wmi_handle,
+					      uint8_t *event,
+					      struct wmi_host_sw_cal_ver *cal)
+{
+	WMI_SERVICE_READY_EXT2_EVENTID_param_tlvs *param_buf;
+	wmi_sw_cal_ver_cap *fw_cap;
+
+	param_buf = (WMI_SERVICE_READY_EXT2_EVENTID_param_tlvs *)event;
+	if (!param_buf)
+		return QDF_STATUS_E_INVAL;
+
+	fw_cap = param_buf->sw_cal_ver_cap;
+	if (!fw_cap)
+		return QDF_STATUS_E_INVAL;
+
+	cal->bdf_cal_ver = fw_cap->bdf_cal_ver;
+	cal->ftm_cal_ver = fw_cap->ftm_cal_ver;
+	cal->status = fw_cap->status;
+
+	return QDF_STATUS_SUCCESS;
+}
+
 /**
  * wmi_tgt_thermal_level_to_host() - Convert target thermal level to host enum
  * @level: target thermal level from WMI_THERM_THROT_STATS_EVENTID event
@@ -17672,6 +17694,7 @@ struct wmi_ops tlv_ops =  {
 				extract_dbr_ring_cap_service_ready_ext2_tlv,
 	.extract_scan_radio_cap_service_ready_ext2 =
 				extract_scan_radio_cap_service_ready_ext2_tlv,
+	.extract_sw_cal_ver_ext2 = extract_sw_cal_ver_ext2_tlv,
 	.extract_sar_cap_service_ready_ext =
 				extract_sar_cap_service_ready_ext_tlv,
 	.extract_pdev_utf_event = extract_pdev_utf_event_tlv,