Skip to content

Commit d6c612a

Browse files
Li Zetaobroonie
authored andcommitted
spi: rockchip: Use helper function devm_clk_get_enabled()
Since commit 7ef9651 ("clk: Provide new devm_clk helpers for prepared and enabled clocks"), devm_clk_get() and clk_prepare_enable() can now be replaced by devm_clk_get_enabled() when driver enables (and possibly prepares) the clocks for the whole lifetime of the device. Moreover, it is no longer necessary to unprepare and disable the clocks explicitly. Reviewed-by: Jonathan Cameron <[email protected]> Signed-off-by: Li Zetao <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Mark Brown <[email protected]>
1 parent 9351339 commit d6c612a

File tree

1 file changed

+5
-25
lines changed

1 file changed

+5
-25
lines changed

drivers/spi/spi-rockchip.c

Lines changed: 5 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -782,42 +782,30 @@ static int rockchip_spi_probe(struct platform_device *pdev)
782782
goto err_put_ctlr;
783783
}
784784

785-
rs->apb_pclk = devm_clk_get(&pdev->dev, "apb_pclk");
785+
rs->apb_pclk = devm_clk_get_enabled(&pdev->dev, "apb_pclk");
786786
if (IS_ERR(rs->apb_pclk)) {
787787
dev_err(&pdev->dev, "Failed to get apb_pclk\n");
788788
ret = PTR_ERR(rs->apb_pclk);
789789
goto err_put_ctlr;
790790
}
791791

792-
rs->spiclk = devm_clk_get(&pdev->dev, "spiclk");
792+
rs->spiclk = devm_clk_get_enabled(&pdev->dev, "spiclk");
793793
if (IS_ERR(rs->spiclk)) {
794794
dev_err(&pdev->dev, "Failed to get spi_pclk\n");
795795
ret = PTR_ERR(rs->spiclk);
796796
goto err_put_ctlr;
797797
}
798798

799-
ret = clk_prepare_enable(rs->apb_pclk);
800-
if (ret < 0) {
801-
dev_err(&pdev->dev, "Failed to enable apb_pclk\n");
802-
goto err_put_ctlr;
803-
}
804-
805-
ret = clk_prepare_enable(rs->spiclk);
806-
if (ret < 0) {
807-
dev_err(&pdev->dev, "Failed to enable spi_clk\n");
808-
goto err_disable_apbclk;
809-
}
810-
811799
spi_enable_chip(rs, false);
812800

813801
ret = platform_get_irq(pdev, 0);
814802
if (ret < 0)
815-
goto err_disable_spiclk;
803+
goto err_put_ctlr;
816804

817805
ret = devm_request_threaded_irq(&pdev->dev, ret, rockchip_spi_isr, NULL,
818806
IRQF_ONESHOT, dev_name(&pdev->dev), ctlr);
819807
if (ret)
820-
goto err_disable_spiclk;
808+
goto err_put_ctlr;
821809

822810
rs->dev = &pdev->dev;
823811
rs->freq = clk_get_rate(rs->spiclk);
@@ -843,7 +831,7 @@ static int rockchip_spi_probe(struct platform_device *pdev)
843831
if (!rs->fifo_len) {
844832
dev_err(&pdev->dev, "Failed to get fifo length\n");
845833
ret = -EINVAL;
846-
goto err_disable_spiclk;
834+
goto err_put_ctlr;
847835
}
848836

849837
pm_runtime_set_autosuspend_delay(&pdev->dev, ROCKCHIP_AUTOSUSPEND_TIMEOUT);
@@ -937,10 +925,6 @@ static int rockchip_spi_probe(struct platform_device *pdev)
937925
dma_release_channel(ctlr->dma_tx);
938926
err_disable_pm_runtime:
939927
pm_runtime_disable(&pdev->dev);
940-
err_disable_spiclk:
941-
clk_disable_unprepare(rs->spiclk);
942-
err_disable_apbclk:
943-
clk_disable_unprepare(rs->apb_pclk);
944928
err_put_ctlr:
945929
spi_controller_put(ctlr);
946930

@@ -950,13 +934,9 @@ static int rockchip_spi_probe(struct platform_device *pdev)
950934
static void rockchip_spi_remove(struct platform_device *pdev)
951935
{
952936
struct spi_controller *ctlr = spi_controller_get(platform_get_drvdata(pdev));
953-
struct rockchip_spi *rs = spi_controller_get_devdata(ctlr);
954937

955938
pm_runtime_get_sync(&pdev->dev);
956939

957-
clk_disable_unprepare(rs->spiclk);
958-
clk_disable_unprepare(rs->apb_pclk);
959-
960940
pm_runtime_put_noidle(&pdev->dev);
961941
pm_runtime_disable(&pdev->dev);
962942
pm_runtime_set_suspended(&pdev->dev);

0 commit comments

Comments
 (0)