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

Commit 8569d1a3 authored by Frank Liu's avatar Frank Liu
Browse files

cnss2: Add check to avoid unbalanced power set



Driver may enter CLOSED state after loaded and idle for a certain time,
power is turned off in such case, then if unload happen, power would be
turned off again, which will cause unbalance.

Add power_up state in cnss_plat_data to avoid unbalanced power set.

Change-Id: I640d98650e32b53632cc2712af1cbae8ac280a68
Signed-off-by: default avatarFrank Liu <qiliu@codeaurora.org>
parent 76153cda
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -247,6 +247,7 @@ struct cnss_plat_data {
	u32 diag_reg_read_len;
	u8 *diag_reg_read_buf;
	bool cal_done;
	bool powered_on;
	char firmware_name[13];
};

+12 −0
Original line number Diff line number Diff line
@@ -346,6 +346,11 @@ int cnss_power_on_device(struct cnss_plat_data *plat_priv)
{
	int ret = 0;

	if (plat_priv->powered_on) {
		cnss_pr_dbg("Already powered up");
		return 0;
	}

	ret = cnss_vreg_on(plat_priv);
	if (ret) {
		cnss_pr_err("Failed to turn on vreg, err = %d\n", ret);
@@ -357,6 +362,7 @@ int cnss_power_on_device(struct cnss_plat_data *plat_priv)
		cnss_pr_err("Failed to select pinctrl state, err = %d\n", ret);
		goto vreg_off;
	}
	plat_priv->powered_on = true;

	return 0;
vreg_off:
@@ -367,8 +373,14 @@ int cnss_power_on_device(struct cnss_plat_data *plat_priv)

void cnss_power_off_device(struct cnss_plat_data *plat_priv)
{
	if (!plat_priv->powered_on) {
		cnss_pr_dbg("Already powered down");
		return;
	}

	cnss_select_pinctrl_state(plat_priv, false);
	cnss_vreg_off(plat_priv);
	plat_priv->powered_on = false;
}

void cnss_set_pin_connect_status(struct cnss_plat_data *plat_priv)