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

Commit a7ed8649 authored by Yue Ma's avatar Yue Ma
Browse files

cnss2: Move power on and bus init to the end of platform probe call



Device power on and bus init should happen when all platform related
init are done since it means all platform configs are ready and it is
good to bring up device. Hence move them to the end of platform probe
call.

Change-Id: I22a69be4a25de6f8c45994dca23f6f631fd1474f
Signed-off-by: default avatarYue Ma <yuem@codeaurora.org>
parent e38c09a5
Loading
Loading
Loading
Loading
+21 −19
Original line number Diff line number Diff line
@@ -3162,19 +3162,9 @@ static int cnss_probe(struct platform_device *plat_dev)
	if (ret)
		goto reset_ctx;

	if (!test_bit(SKIP_DEVICE_BOOT, &plat_priv->ctrl_params.quirks)) {
		ret = cnss_power_on_device(plat_priv);
		if (ret)
			goto free_res;

		ret = cnss_bus_init(plat_priv);
		if (ret)
			goto power_off;
	}

	ret = cnss_register_esoc(plat_priv);
	if (ret)
		goto deinit_bus;
		goto free_res;

	ret = cnss_register_bus_scale(plat_priv);
	if (ret)
@@ -3204,6 +3194,19 @@ static int cnss_probe(struct platform_device *plat_dev)
	if (ret)
		goto destroy_debugfs;

	/* Make sure all platform related init are done before
	 * device power on and bus init.
	 */
	if (!test_bit(SKIP_DEVICE_BOOT, &plat_priv->ctrl_params.quirks)) {
		ret = cnss_power_on_device(plat_priv);
		if (ret)
			goto deinit_misc;

		ret = cnss_bus_init(plat_priv);
		if (ret)
			goto power_off;
	}

	cnss_register_coex_service(plat_priv);
	cnss_register_ims_service(plat_priv);

@@ -3215,6 +3218,11 @@ static int cnss_probe(struct platform_device *plat_dev)

	return 0;

power_off:
	if (!test_bit(SKIP_DEVICE_BOOT, &plat_priv->ctrl_params.quirks))
		cnss_power_off_device(plat_priv);
deinit_misc:
	cnss_misc_deinit(plat_priv);
destroy_debugfs:
	cnss_debugfs_destroy(plat_priv);
deinit_dms:
@@ -3229,12 +3237,6 @@ static int cnss_probe(struct platform_device *plat_dev)
	cnss_unregister_bus_scale(plat_priv);
unreg_esoc:
	cnss_unregister_esoc(plat_priv);
deinit_bus:
	if (!test_bit(SKIP_DEVICE_BOOT, &plat_priv->ctrl_params.quirks))
		cnss_bus_deinit(plat_priv);
power_off:
	if (!test_bit(SKIP_DEVICE_BOOT, &plat_priv->ctrl_params.quirks))
		cnss_power_off_device(plat_priv);
free_res:
	cnss_put_resources(plat_priv);
reset_ctx:
@@ -3251,15 +3253,15 @@ static int cnss_remove(struct platform_device *plat_dev)
	cnss_genl_exit();
	cnss_unregister_ims_service(plat_priv);
	cnss_unregister_coex_service(plat_priv);
	cnss_bus_deinit(plat_priv);
	cnss_misc_deinit(plat_priv);
	cnss_debugfs_destroy(plat_priv);
	cnss_qmi_deinit(plat_priv);
	cnss_dms_deinit(plat_priv);
	cnss_qmi_deinit(plat_priv);
	cnss_event_work_deinit(plat_priv);
	cnss_remove_sysfs(plat_priv);
	cnss_unregister_bus_scale(plat_priv);
	cnss_unregister_esoc(plat_priv);
	cnss_bus_deinit(plat_priv);
	cnss_put_resources(plat_priv);
	platform_set_drvdata(plat_dev, NULL);
	plat_env = NULL;