diff options
Diffstat (limited to 'drivers/clk/qcom/turingcc-qcs404.c')
| -rw-r--r-- | drivers/clk/qcom/turingcc-qcs404.c | 36 |
1 files changed, 17 insertions, 19 deletions
diff --git a/drivers/clk/qcom/turingcc-qcs404.c b/drivers/clk/qcom/turingcc-qcs404.c index 4cfbbf5bf4d9..2cd288d6c3e4 100644 --- a/drivers/clk/qcom/turingcc-qcs404.c +++ b/drivers/clk/qcom/turingcc-qcs404.c @@ -4,6 +4,7 @@ */ #include <linux/bitops.h> +#include <linux/clk-provider.h> #include <linux/err.h> #include <linux/platform_device.h> #include <linux/module.h> @@ -110,40 +111,38 @@ static int turingcc_probe(struct platform_device *pdev) { int ret; - pm_runtime_enable(&pdev->dev); - ret = pm_clk_create(&pdev->dev); + ret = devm_pm_runtime_enable(&pdev->dev); if (ret) - goto disable_pm_runtime; + return ret; + + ret = devm_pm_clk_create(&pdev->dev); + if (ret) + return ret; ret = pm_clk_add(&pdev->dev, NULL); if (ret < 0) { dev_err(&pdev->dev, "failed to acquire iface clock\n"); - goto destroy_pm_clk; + return ret; } + ret = pm_runtime_resume_and_get(&pdev->dev); + if (ret) + return ret; + ret = qcom_cc_probe(pdev, &turingcc_desc); if (ret < 0) - goto destroy_pm_clk; + goto err_put_rpm; - return 0; + pm_runtime_put(&pdev->dev); -destroy_pm_clk: - pm_clk_destroy(&pdev->dev); + return 0; -disable_pm_runtime: - pm_runtime_disable(&pdev->dev); +err_put_rpm: + pm_runtime_put_sync(&pdev->dev); return ret; } -static int turingcc_remove(struct platform_device *pdev) -{ - pm_clk_destroy(&pdev->dev); - pm_runtime_disable(&pdev->dev); - - return 0; -} - static const struct dev_pm_ops turingcc_pm_ops = { SET_RUNTIME_PM_OPS(pm_clk_suspend, pm_clk_resume, NULL) }; @@ -156,7 +155,6 @@ MODULE_DEVICE_TABLE(of, turingcc_match_table); static struct platform_driver turingcc_driver = { .probe = turingcc_probe, - .remove = turingcc_remove, .driver = { .name = "qcs404-turingcc", .of_match_table = turingcc_match_table, |
