Skip to content

Commit a24802b

Browse files
juhosgbroonie
authored andcommitted
spi: spi-qpic-snand: simplify clock handling by using devm_clk_get_enabled()
The devm_clk_get_enabled() function prepares and enables the particular clock, which then automatically gets disabled and unprepared on probe failure and on device removal. Use that function instead of devm_clk_get() and remove the clk_prepare_enable()/clk_disable_unprepare() calls in order to simplify the code. This also ensures that the clocks are handled in the correct order during device removal. Signed-off-by: Gabor Juhos <j4g8y7@gmail.com> Link: https://patch.msgid.link/20250916-qpic-snand-devm_clk_get_enabled-v1-1-09953493b7f1@gmail.com Signed-off-by: Mark Brown <broonie@kernel.org>
1 parent ab63e99 commit a24802b

1 file changed

Lines changed: 3 additions & 26 deletions

File tree

drivers/spi/spi-qpic-snand.c

Lines changed: 3 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1542,15 +1542,15 @@ static int qcom_spi_probe(struct platform_device *pdev)
15421542

15431543
snandc->props = dev_data;
15441544

1545-
snandc->core_clk = devm_clk_get(dev, "core");
1545+
snandc->core_clk = devm_clk_get_enabled(dev, "core");
15461546
if (IS_ERR(snandc->core_clk))
15471547
return PTR_ERR(snandc->core_clk);
15481548

1549-
snandc->aon_clk = devm_clk_get(dev, "aon");
1549+
snandc->aon_clk = devm_clk_get_enabled(dev, "aon");
15501550
if (IS_ERR(snandc->aon_clk))
15511551
return PTR_ERR(snandc->aon_clk);
15521552

1553-
snandc->qspi->iomacro_clk = devm_clk_get(dev, "iom");
1553+
snandc->qspi->iomacro_clk = devm_clk_get_enabled(dev, "iom");
15541554
if (IS_ERR(snandc->qspi->iomacro_clk))
15551555
return PTR_ERR(snandc->qspi->iomacro_clk);
15561556

@@ -1564,18 +1564,6 @@ static int qcom_spi_probe(struct platform_device *pdev)
15641564
if (dma_mapping_error(dev, snandc->base_dma))
15651565
return -ENXIO;
15661566

1567-
ret = clk_prepare_enable(snandc->core_clk);
1568-
if (ret)
1569-
goto err_dis_core_clk;
1570-
1571-
ret = clk_prepare_enable(snandc->aon_clk);
1572-
if (ret)
1573-
goto err_dis_aon_clk;
1574-
1575-
ret = clk_prepare_enable(snandc->qspi->iomacro_clk);
1576-
if (ret)
1577-
goto err_dis_iom_clk;
1578-
15791567
ret = qcom_nandc_alloc(snandc);
15801568
if (ret)
15811569
goto err_snand_alloc;
@@ -1616,12 +1604,6 @@ static int qcom_spi_probe(struct platform_device *pdev)
16161604
err_spi_init:
16171605
qcom_nandc_unalloc(snandc);
16181606
err_snand_alloc:
1619-
clk_disable_unprepare(snandc->qspi->iomacro_clk);
1620-
err_dis_iom_clk:
1621-
clk_disable_unprepare(snandc->aon_clk);
1622-
err_dis_aon_clk:
1623-
clk_disable_unprepare(snandc->core_clk);
1624-
err_dis_core_clk:
16251607
dma_unmap_resource(dev, res->start, resource_size(res),
16261608
DMA_BIDIRECTIONAL, 0);
16271609
return ret;
@@ -1636,11 +1618,6 @@ static void qcom_spi_remove(struct platform_device *pdev)
16361618
spi_unregister_controller(ctlr);
16371619
nand_ecc_unregister_on_host_hw_engine(&snandc->qspi->ecc_eng);
16381620
qcom_nandc_unalloc(snandc);
1639-
1640-
clk_disable_unprepare(snandc->aon_clk);
1641-
clk_disable_unprepare(snandc->core_clk);
1642-
clk_disable_unprepare(snandc->qspi->iomacro_clk);
1643-
16441621
dma_unmap_resource(&pdev->dev, snandc->base_dma, resource_size(res),
16451622
DMA_BIDIRECTIONAL, 0);
16461623
}

0 commit comments

Comments
 (0)