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: Yue Ma <yuem@codeaurora.org>
This commit is contained in:
Yue Ma 2021-05-12 18:05:31 -07:00
commit a7ed86496f

View file

@ -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 @@ unreg_bus_scale:
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;