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

Commit 27a74e82 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 af69b431 811638a4
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -1978,6 +1978,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");
@@ -2119,6 +2120,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
@@ -2058,6 +2058,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);
@@ -2070,6 +2071,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,
@@ -2125,7 +2131,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);