Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 806ee5aa authored by qctecmdr's avatar qctecmdr Committed by Gerrit - the friendly Code Review server
Browse files

Merge "cnss2: Add support for configuring calibration duration"

parents ab0a02c0 3eb5ad43
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -2665,6 +2665,13 @@ cnss_use_nv_mac(struct cnss_plat_data *plat_priv)
				     "use-nv-mac");
}

static inline int cnss_get_cal_duration(struct cnss_plat_data *plat_priv)
{
	return of_property_read_u32(plat_priv->plat_dev->dev.of_node,
				    "qcom,cnss-cal-duration",
				    &plat_priv->cal_duration);
}

static int cnss_probe(struct platform_device *plat_dev)
{
	int ret = 0;
@@ -2698,6 +2705,9 @@ static int cnss_probe(struct platform_device *plat_dev)
	plat_priv->device_id = device_id->driver_data;
	plat_priv->bus_type = cnss_get_bus_type(plat_priv->device_id);
	plat_priv->use_nv_mac = cnss_use_nv_mac(plat_priv);
	if (cnss_get_cal_duration(plat_priv) != 0)
		plat_priv->cal_duration = CNSS_INVALID_CAL_DURATION;

	plat_priv->use_fw_path_with_prefix =
		cnss_use_fw_path_with_prefix(plat_priv);
	cnss_set_plat_priv(plat_dev, plat_priv);
+2 −0
Original line number Diff line number Diff line
@@ -31,6 +31,7 @@
#define CNSS_RAMDUMP_MAGIC		0x574C414E
#define CNSS_RAMDUMP_VERSION		0
#define MAX_FIRMWARE_NAME_LEN		20
#define CNSS_INVALID_CAL_DURATION       0xFFFFFFFF

#define CNSS_EVENT_SYNC   BIT(0)
#define CNSS_EVENT_UNINTERRUPTIBLE BIT(1)
@@ -397,6 +398,7 @@ struct cnss_plat_data {
	u32 diag_reg_read_len;
	u8 *diag_reg_read_buf;
	u8 cal_done;
	u32 cal_duration;
	u8 powered_on;
	u8 use_fw_path_with_prefix;
	char firmware_name[MAX_FIRMWARE_NAME_LEN];
+9 −0
Original line number Diff line number Diff line
@@ -228,6 +228,15 @@ static int cnss_wlfw_host_cap_send_sync(struct cnss_plat_data *plat_priv)
	req->cal_done = plat_priv->cal_done;
	cnss_pr_dbg("Calibration done is %d\n", plat_priv->cal_done);

	if (plat_priv->cal_duration != CNSS_INVALID_CAL_DURATION) {
		req->cal_duration_valid = 1;
		req->cal_duration = plat_priv->cal_duration;
		cnss_pr_dbg("Calibration duration: %u",
			    plat_priv->cal_duration);
	} else {
		cnss_pr_dbg("Calibration duration not valid");
	}

	if (!cnss_bus_get_iova(plat_priv, &iova_start, &iova_size) &&
	    !cnss_bus_get_iova_ipa(plat_priv, &iova_ipa_start,
				   &iova_ipa_size)) {