spi: spi-qcom-qspi: Convert to use resource-managed OPP API
authorYangtao Li <tiny.windzz@gmail.com>
Sun, 14 Mar 2021 16:34:02 +0000 (19:34 +0300)
committerViresh Kumar <viresh.kumar@linaro.org>
Tue, 16 Mar 2021 04:44:11 +0000 (10:14 +0530)
Use resource-managed OPP API to simplify code.

Signed-off-by: Yangtao Li <tiny.windzz@gmail.com>
Acked-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Dmitry Osipenko <digetx@gmail.com>
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
drivers/spi/spi-qcom-qspi.c

index 1dbcc41..c334dfe 100644 (file)
@@ -142,7 +142,6 @@ struct qcom_qspi {
        struct clk_bulk_data *clks;
        struct qspi_xfer xfer;
        struct icc_path *icc_path_cpu_to_qspi;
-       struct opp_table *opp_table;
        unsigned long last_speed;
        /* Lock to protect data accessed by IRQs */
        spinlock_t lock;
@@ -530,14 +529,14 @@ static int qcom_qspi_probe(struct platform_device *pdev)
        master->handle_err = qcom_qspi_handle_err;
        master->auto_runtime_pm = true;
 
-       ctrl->opp_table = dev_pm_opp_set_clkname(&pdev->dev, "core");
-       if (IS_ERR(ctrl->opp_table))
-               return PTR_ERR(ctrl->opp_table);
+       ret = devm_pm_opp_set_clkname(&pdev->dev, "core");
+       if (ret)
+               return ret;
        /* OPP table is optional */
-       ret = dev_pm_opp_of_add_table(&pdev->dev);
+       ret = devm_pm_opp_of_add_table(&pdev->dev);
        if (ret && ret != -ENODEV) {
                dev_err(&pdev->dev, "invalid OPP table in device tree\n");
-               goto exit_probe_put_clkname;
+               return ret;
        }
 
        pm_runtime_use_autosuspend(dev);
@@ -549,10 +548,6 @@ static int qcom_qspi_probe(struct platform_device *pdev)
                return 0;
 
        pm_runtime_disable(dev);
-       dev_pm_opp_of_remove_table(&pdev->dev);
-
-exit_probe_put_clkname:
-       dev_pm_opp_put_clkname(ctrl->opp_table);
 
        return ret;
 }
@@ -560,14 +555,11 @@ exit_probe_put_clkname:
 static int qcom_qspi_remove(struct platform_device *pdev)
 {
        struct spi_master *master = platform_get_drvdata(pdev);
-       struct qcom_qspi *ctrl = spi_master_get_devdata(master);
 
        /* Unregister _before_ disabling pm_runtime() so we stop transfers */
        spi_unregister_master(master);
 
        pm_runtime_disable(&pdev->dev);
-       dev_pm_opp_of_remove_table(&pdev->dev);
-       dev_pm_opp_put_clkname(ctrl->opp_table);
 
        return 0;
 }