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

Commit 73c254c0 authored by Yue Ma's avatar Yue Ma Committed by Gerrit - the friendly Code Review server
Browse files

cnss2: Add multiple recoveries support without WLAN host driver



In order to support multiple recoveries without WLAN host driver,
clear recovery flag properly for debug state and also move WLAN
host driver ops check to proper place during powerup and shutdown.

Change-Id: I8cb17a495f6106bd07fe29dba282d4168c9f7411
CRs-fixed: 2124999
Signed-off-by: default avatarYue Ma <yuem@codeaurora.org>
parent 7c366cc7
Loading
Loading
Loading
Loading
+14 −22
Original line number Diff line number Diff line
@@ -564,9 +564,15 @@ out:

static int cnss_driver_call_probe(struct cnss_plat_data *plat_priv)
{
	int ret;
	int ret = 0;
	struct cnss_pci_data *pci_priv = plat_priv->bus_priv;

	if (test_bit(CNSS_DRIVER_DEBUG, &plat_priv->driver_state)) {
		clear_bit(CNSS_DRIVER_RECOVERY, &plat_priv->driver_state);
		cnss_pr_dbg("Skip driver probe\n");
		goto out;
	}

	if (!plat_priv->driver_ops) {
		cnss_pr_err("driver_ops is NULL\n");
		ret = -EINVAL;
@@ -604,6 +610,13 @@ static int cnss_driver_call_remove(struct cnss_plat_data *plat_priv)
{
	struct cnss_pci_data *pci_priv = plat_priv->bus_priv;

	if (test_bit(CNSS_COLD_BOOT_CAL, &plat_priv->driver_state) ||
	    test_bit(CNSS_FW_BOOT_RECOVERY, &plat_priv->driver_state) ||
	    test_bit(CNSS_DRIVER_DEBUG, &plat_priv->driver_state)) {
		cnss_pr_dbg("Skip driver remove\n");
		return 0;
	}

	if (!plat_priv->driver_ops) {
		cnss_pr_err("driver_ops is NULL\n");
		return -EINVAL;
@@ -997,11 +1010,6 @@ static int cnss_qca6174_powerup(struct cnss_plat_data *plat_priv)
		return -ENODEV;
	}

	if (!plat_priv->driver_ops) {
		cnss_pr_err("driver_ops is NULL!\n");
		return -EINVAL;
	}

	ret = cnss_power_on_device(plat_priv);
	if (ret) {
		cnss_pr_err("Failed to power on device, err = %d\n", ret);
@@ -1035,15 +1043,8 @@ static int cnss_qca6174_shutdown(struct cnss_plat_data *plat_priv)
	if (!pci_priv)
		return -ENODEV;

	if (test_bit(CNSS_DRIVER_DEBUG, &plat_priv->driver_state))
		goto skip_driver_remove;

	if (!plat_priv->driver_ops)
		return -EINVAL;

	cnss_driver_call_remove(plat_priv);

skip_driver_remove:
	cnss_request_bus_bandwidth(CNSS_BUS_WIDTH_NONE);
	cnss_pci_set_monitor_wake_intr(pci_priv, false);
	cnss_pci_set_auto_suspended(pci_priv, 0);
@@ -1140,17 +1141,8 @@ static int cnss_qca6290_shutdown(struct cnss_plat_data *plat_priv)
	if (!pci_priv)
		return -ENODEV;

	if (test_bit(CNSS_COLD_BOOT_CAL, &plat_priv->driver_state) ||
	    test_bit(CNSS_FW_BOOT_RECOVERY, &plat_priv->driver_state) ||
	    test_bit(CNSS_DRIVER_DEBUG, &plat_priv->driver_state))
		goto skip_driver_remove;

	if (!plat_priv->driver_ops)
		return -EINVAL;

	cnss_driver_call_remove(plat_priv);

skip_driver_remove:
	cnss_request_bus_bandwidth(CNSS_BUS_WIDTH_NONE);
	cnss_pci_set_monitor_wake_intr(pci_priv, false);
	cnss_pci_set_auto_suspended(pci_priv, 0);