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

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

Merge "cnss2: Fix a few issues during platform reboot or shutdown"

parents 822206b0 ed35aa43
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -1971,6 +1971,7 @@ static ssize_t shutdown_store(struct kobject *kobj,
		set_bit(CNSS_IN_REBOOT, &plat_priv->driver_state);
		del_timer(&plat_priv->fw_boot_timer);
		complete_all(&plat_priv->power_up_complete);
		complete_all(&plat_priv->cal_complete);
	}

	cnss_pr_dbg("Received shutdown notification\n");
@@ -2112,6 +2113,7 @@ static int cnss_reboot_notifier(struct notifier_block *nb,
	set_bit(CNSS_IN_REBOOT, &plat_priv->driver_state);
	del_timer(&plat_priv->fw_boot_timer);
	complete_all(&plat_priv->power_up_complete);
	complete_all(&plat_priv->cal_complete);
	cnss_pr_dbg("Reboot is in progress with action %d\n", action);

	return NOTIFY_DONE;
+8 −2
Original line number Diff line number Diff line
@@ -2138,6 +2138,7 @@ int cnss_wlan_register_driver(struct cnss_wlan_driver *driver_ops)
					  msecs_to_jiffies(timeout) << 2);
	if (!ret) {
		cnss_pr_err("Timeout waiting for calibration to complete\n");
		if (!test_bit(CNSS_IN_REBOOT, &plat_priv->driver_state))
			CNSS_ASSERT(0);

		cal_info = kzalloc(sizeof(*cal_info), GFP_KERNEL);
@@ -2150,6 +2151,11 @@ int cnss_wlan_register_driver(struct cnss_wlan_driver *driver_ops)
				       0, cal_info);
	}

	if (test_bit(CNSS_IN_REBOOT, &plat_priv->driver_state)) {
		cnss_pr_dbg("Reboot or shutdown is in progress, ignore register driver\n");
		return -EINVAL;
	}

register_driver:
	ret = cnss_driver_event_post(plat_priv,
				     CNSS_DRIVER_EVENT_REGISTER_DRIVER,
@@ -2205,7 +2211,7 @@ void cnss_wlan_unregister_driver(struct cnss_wlan_driver *driver_ops)
skip_wait_recovery:
	cnss_driver_event_post(plat_priv,
			       CNSS_DRIVER_EVENT_UNREGISTER_DRIVER,
			       CNSS_EVENT_SYNC_UNINTERRUPTIBLE, NULL);
			       CNSS_EVENT_SYNC_UNKILLABLE, NULL);
}
EXPORT_SYMBOL(cnss_wlan_unregister_driver);