From: Yangtao Li <tiny.win...@gmail.com>

Use resource-managed OPP API to simplify code.

Signed-off-by: Yangtao Li <tiny.win...@gmail.com>
Acked-by: Mark Brown <broo...@kernel.org>
Signed-off-by: Dmitry Osipenko <dig...@gmail.com>
---
 drivers/spi/spi-qcom-qspi.c | 19 ++++++-------------
 1 file changed, 6 insertions(+), 13 deletions(-)

diff --git a/drivers/spi/spi-qcom-qspi.c b/drivers/spi/spi-qcom-qspi.c
index 1dbcc410cd35..f14801dd5120 100644
--- a/drivers/spi/spi-qcom-qspi.c
+++ b/drivers/spi/spi-qcom-qspi.c
@@ -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;
@@ -459,6 +458,7 @@ static int qcom_qspi_probe(struct platform_device *pdev)
        struct device *dev;
        struct spi_master *master;
        struct qcom_qspi *ctrl;
+       struct opp_table *opp_table;
 
        dev = &pdev->dev;
 
@@ -530,14 +530,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);
+       opp_table = devm_pm_opp_set_clkname(&pdev->dev, "core");
+       if (IS_ERR(opp_table))
+               return PTR_ERR(opp_table);
        /* 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 +549,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 +556,11 @@ static int qcom_qspi_probe(struct platform_device *pdev)
 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;
 }
-- 
2.29.2

Reply via email to