Re: [PATCH v3 3/6] iio: adc: bcm_iproc_adc: use devm-managed clock
From: Jonathan Cameron <jic23@kernel.org>
Date: 2026-09-05 23:34:16
Also in:
linux-iio, lkml
Convert the ADC clock to use devm-managed APIs to simplify resource cleanup. Signed-off-by: Mohammad Shahid <redacted>
Hi, One thing that should have been in this patch has ended up in the next one. Whilst minor this just passed the level of what I'd normally tidy up whilst applying. So I will be looking for a v4 after this has had time for others to comment on v3. Breaking changes up into a series of minor changes is a bit of an art form and often takes a couple of passes to get perfect. It is worth doing though as keeps each change nice an easy to review on their own. Thanks, Jonathan
quoted hunk ↗ jump to hunk
diff --git a/drivers/iio/adc/bcm_iproc_adc.c b/drivers/iio/adc/bcm_iproc_adc.c index e54f613d266a..3bbf814d4c8f 100644 --- a/drivers/iio/adc/bcm_iproc_adc.c +++ b/drivers/iio/adc/bcm_iproc_adc.c@@ -109,7 +109,6 @@ do { \ struct iproc_adc_priv { struct regmap *regmap; - struct clk *adc_clk; struct mutex mutex; int irqno; int chan_val;@@ -510,6 +509,7 @@ static int iproc_adc_probe(struct platform_device *pdev) struct iproc_adc_priv *adc_priv; struct iio_dev *indio_dev = NULL; struct device *dev = &pdev->dev; + struct clk *adc_clk; int ret; indio_dev = devm_iio_device_alloc(dev, sizeof(*adc_priv));@@ -529,10 +529,9 @@ static int iproc_adc_probe(struct platform_device *pdev) return dev_err_probe(dev, PTR_ERR(adc_priv->regmap), "failed to get handle for tsc syscon\n"); - adc_priv->adc_clk = devm_clk_get(dev, "tsc_clk"); - if (IS_ERR(adc_priv->adc_clk)) - return dev_err_probe(dev, PTR_ERR(adc_priv->adc_clk), - "failed getting clock tsc_clk\n"); + adc_clk = devm_clk_get_enabled(dev, "tsc_clk"); + if (IS_ERR(adc_clk)) + return dev_err_probe(dev, PTR_ERR(adc_clk), "failed to enable clock\n"); adc_priv->irqno = platform_get_irq(pdev, 0); if (adc_priv->irqno < 0)@@ -550,10 +549,6 @@ static int iproc_adc_probe(struct platform_device *pdev) if (ret) return ret; - ret = clk_prepare_enable(adc_priv->adc_clk); - if (ret) - return dev_err_probe(dev, ret, "failed to enable clock\n"); - ret = iproc_adc_enable(indio_dev); if (ret) goto err_adc_enable;@@ -575,19 +570,15 @@ static int iproc_adc_probe(struct platform_device *pdev) err_clk: iproc_adc_disable(indio_dev); err_adc_enable: - clk_disable_unprepare(adc_priv->adc_clk);
This gets tidied up in the next patch, but ideal would have been to replace the goto err_adc_enable; with a return ret in this patch (the one that enables that change) and remove the label here. -- Jonathan Cameron [off-list ref]