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

Commit d65bd337 authored by Anurag Chouhan's avatar Anurag Chouhan Committed by Gerrit - the friendly Code Review server
Browse files

icnss: Add support to handle SSR within SSR



Add state bit to defer recursive shutdown. This state
bit adds support for synchronization between reinit
and shutdown method during SSR within SSR.

Change-Id: Ifb857ecdb6545709706380631c423f0e24269e11
Signed-off-by: default avatarAnurag Chouhan <achouhan@codeaurora.org>
parent 0abd412d
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -202,6 +202,7 @@ enum icnss_driver_state {
	ICNSS_MSA0_ASSIGNED,
	ICNSS_WLFW_EXISTS,
	ICNSS_WDOG_BITE,
	ICNSS_SHUTDOWN_DONE,
};

struct ce_irq_list {
@@ -1990,9 +1991,13 @@ static int icnss_call_driver_shutdown(struct icnss_priv *priv)
	if (!priv->ops || !priv->ops->shutdown)
		goto out;

	if (test_bit(ICNSS_SHUTDOWN_DONE, &penv->state))
		goto out;

	icnss_pr_dbg("Calling driver shutdown state: 0x%lx\n", priv->state);

	priv->ops->shutdown(&priv->pdev->dev);
	set_bit(ICNSS_SHUTDOWN_DONE, &penv->state);

out:
	return 0;
@@ -2030,6 +2035,7 @@ static int icnss_pd_restart_complete(struct icnss_priv *priv)
	}

out:
	clear_bit(ICNSS_SHUTDOWN_DONE, &penv->state);
	return 0;

call_probe:
@@ -3667,6 +3673,9 @@ static int icnss_stats_show_state(struct seq_file *s, struct icnss_priv *priv)
		case ICNSS_WDOG_BITE:
			seq_puts(s, "MODEM WDOG BITE");
			continue;
		case ICNSS_SHUTDOWN_DONE:
			seq_puts(s, "SHUTDOWN DONE");
			continue;
		}

		seq_printf(s, "UNKNOWN-%d", i);