From a7ed86496fdadbda0f2091f48ca5198ead87f413 Mon Sep 17 00:00:00 2001 From: Yue Ma Date: Wed, 12 May 2021 18:05:31 -0700 Subject: [PATCH] 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 --- drivers/net/wireless/cnss2/main.c | 40 ++++++++++++++++--------------- 1 file changed, 21 insertions(+), 19 deletions(-) diff --git a/drivers/net/wireless/cnss2/main.c b/drivers/net/wireless/cnss2/main.c index 75e69ff96fc8..53f211bc9141 100644 --- a/drivers/net/wireless/cnss2/main.c +++ b/drivers/net/wireless/cnss2/main.c @@ -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;