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

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

Merge "icnss: Check firmware status to ignore QMI handshake"

parents 53ed5955 ad2e60b4
Loading
Loading
Loading
Loading
+19 −0
Original line number Diff line number Diff line
@@ -841,6 +841,10 @@ static int icnss_driver_event_server_arrive(void *data)

	ret = wlfw_ind_register_send_sync_msg(penv);
	if (ret < 0) {
		if (ret == -EALREADY) {
			ret = 0;
			goto qmi_registered;
		}
		ignore_assert = true;
		goto err_power_on;
	}
@@ -889,6 +893,7 @@ static int icnss_driver_event_server_arrive(void *data)
	icnss_clear_server(penv);
fail:
	ICNSS_ASSERT(ignore_assert);
qmi_registered:
	return ret;
}

@@ -2505,6 +2510,15 @@ static void icnss_allow_recursive_recovery(struct device *dev)
	icnss_pr_info("Recursive recovery allowed for WLAN\n");
}

static void icnss_disallow_recursive_recovery(struct device *dev)
{
	struct icnss_priv *priv = dev_get_drvdata(dev);

	priv->allow_recursive_recovery = false;

	icnss_pr_info("Recursive recovery disallowed for WLAN\n");
}

static ssize_t icnss_fw_debug_write(struct file *fp,
				    const char __user *user_buf,
				    size_t count, loff_t *off)
@@ -2556,6 +2570,9 @@ static ssize_t icnss_fw_debug_write(struct file *fp,
		case 4:
			icnss_allow_recursive_recovery(&priv->pdev->dev);
			break;
		case 5:
			icnss_disallow_recursive_recovery(&priv->pdev->dev);
			break;
		default:
			return -EINVAL;
		}
@@ -3204,6 +3221,8 @@ static int icnss_probe(struct platform_device *pdev)

	priv->vreg_info = icnss_vreg_info;

	icnss_allow_recursive_recovery(dev);

	if (of_property_read_bool(pdev->dev.of_node, "qcom,icnss-adc_tm")) {
		ret = icnss_get_vbatt_info(priv);
		if (ret == -EPROBE_DEFER)
+10 −1
Original line number Diff line number Diff line
@@ -307,14 +307,23 @@ int wlfw_ind_register_send_sync_msg(struct icnss_priv *priv)

	priv->stats.ind_register_resp++;

	if (resp->fw_status_valid &&
	   (resp->fw_status & QMI_WLFW_ALREADY_REGISTERED_V01)) {
		ret = -EALREADY;
		icnss_pr_dbg("WLFW already registered\n");
		goto qmi_registered;
	}

	kfree(resp);
	kfree(req);

	return 0;

out:
	priv->stats.ind_register_err++;
qmi_registered:
	kfree(resp);
	kfree(req);
	priv->stats.ind_register_err++;
	return ret;
}