All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jonathan Cameron <jic23@kernel.org>
To: "Uwe Kleine-König" <u.kleine-koenig@pengutronix.de>
Cc: "Michael Turquette" <mturquette@baylibre.com>,
	"Stephen Boyd" <sboyd@kernel.org>,
	"Russell King" <linux@armlinux.org.uk>,
	"Lars-Peter Clausen" <lars@metafoo.de>,
	"Michael Hennerich" <Michael.Hennerich@analog.com>,
	linux-clk@vger.kernel.org, kernel@pengutronix.de,
	"Paul Cercueil" <paul@crapouillou.net>,
	"Vladimir Zapolskiy" <vz@mleia.com>,
	"Heiko Stuebner" <heiko@sntech.de>,
	"Tomislav Denis" <tomislav.denis@avl.com>,
	"Anand Ashok Dumbre" <anand.ashok.dumbre@xilinx.com>,
	"Michal Simek" <michal.simek@xilinx.com>,
	"Nuno Sa" <nuno.sa@analog.com>,
	"André Gustavo Nakagomi Lopez" <andregnl@usp.br>,
	"Cai Huoqing" <caihuoqing@baidu.com>,
	linux-iio@vger.kernel.org, linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH v8 04/16] iio: Make use of devm_clk_get_enabled()
Date: Sat, 19 Mar 2022 18:22:40 +0000	[thread overview]
Message-ID: <20220319182240.30456776@jic23-huawei> (raw)
In-Reply-To: <20220314141643.22184-5-u.kleine-koenig@pengutronix.de>

On Mon, 14 Mar 2022 15:16:31 +0100
Uwe Kleine-König <u.kleine-koenig@pengutronix.de> wrote:

> Several drivers manually register a devm handler to disable their clk.
> Convert them to devm_clk_get_enabled().
> 
> Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>

Acked-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>

If this does get picked up, can who ever does it please provide
an immutable branch. With some many drivers cleaned up, it's very
likely to cause some merge fun somewhere otherwise.

Thanks,

Jonathan

> ---
>  drivers/iio/adc/ad7124.c           | 15 +---------
>  drivers/iio/adc/ad7768-1.c         | 17 +-----------
>  drivers/iio/adc/ad9467.c           | 17 +-----------
>  drivers/iio/adc/ingenic-adc.c      | 15 ++--------
>  drivers/iio/adc/lpc18xx_adc.c      | 18 +-----------
>  drivers/iio/adc/rockchip_saradc.c  | 44 ++----------------------------
>  drivers/iio/adc/ti-ads131e08.c     | 19 +------------
>  drivers/iio/adc/xilinx-ams.c       | 15 +---------
>  drivers/iio/adc/xilinx-xadc-core.c | 18 +-----------
>  drivers/iio/frequency/adf4371.c    | 17 +-----------
>  drivers/iio/frequency/admv1013.c   | 15 +---------
>  drivers/iio/frequency/adrf6780.c   | 16 +----------
>  drivers/iio/imu/adis16475.c        | 15 +---------
>  13 files changed, 15 insertions(+), 226 deletions(-)
> 
> diff --git a/drivers/iio/adc/ad7124.c b/drivers/iio/adc/ad7124.c
> index b400bbe291aa..fcfa4e0b41fb 100644
> --- a/drivers/iio/adc/ad7124.c
> +++ b/drivers/iio/adc/ad7124.c
> @@ -862,11 +862,6 @@ static void ad7124_reg_disable(void *r)
>  	regulator_disable(r);
>  }
>  
> -static void ad7124_clk_disable(void *c)
> -{
> -	clk_disable_unprepare(c);
> -}
> -
>  static int ad7124_probe(struct spi_device *spi)
>  {
>  	const struct ad7124_chip_info *info;
> @@ -917,18 +912,10 @@ static int ad7124_probe(struct spi_device *spi)
>  			return ret;
>  	}
>  
> -	st->mclk = devm_clk_get(&spi->dev, "mclk");
> +	st->mclk = devm_clk_get_enabled(&spi->dev, "mclk");
>  	if (IS_ERR(st->mclk))
>  		return PTR_ERR(st->mclk);
>  
> -	ret = clk_prepare_enable(st->mclk);
> -	if (ret < 0)
> -		return ret;
> -
> -	ret = devm_add_action_or_reset(&spi->dev, ad7124_clk_disable, st->mclk);
> -	if (ret)
> -		return ret;
> -
>  	ret = ad7124_soft_reset(st);
>  	if (ret < 0)
>  		return ret;
> diff --git a/drivers/iio/adc/ad7768-1.c b/drivers/iio/adc/ad7768-1.c
> index aa42ba759fa1..8ae34ed8fabd 100644
> --- a/drivers/iio/adc/ad7768-1.c
> +++ b/drivers/iio/adc/ad7768-1.c
> @@ -539,13 +539,6 @@ static void ad7768_regulator_disable(void *data)
>  	regulator_disable(st->vref);
>  }
>  
> -static void ad7768_clk_disable(void *data)
> -{
> -	struct ad7768_state *st = data;
> -
> -	clk_disable_unprepare(st->mclk);
> -}
> -
>  static int ad7768_set_channel_label(struct iio_dev *indio_dev,
>  						int num_channels)
>  {
> @@ -600,18 +593,10 @@ static int ad7768_probe(struct spi_device *spi)
>  	if (ret)
>  		return ret;
>  
> -	st->mclk = devm_clk_get(&spi->dev, "mclk");
> +	st->mclk = devm_clk_get_enabled(&spi->dev, "mclk");
>  	if (IS_ERR(st->mclk))
>  		return PTR_ERR(st->mclk);
>  
> -	ret = clk_prepare_enable(st->mclk);
> -	if (ret < 0)
> -		return ret;
> -
> -	ret = devm_add_action_or_reset(&spi->dev, ad7768_clk_disable, st);
> -	if (ret)
> -		return ret;
> -
>  	st->mclk_freq = clk_get_rate(st->mclk);
>  
>  	mutex_init(&st->lock);
> diff --git a/drivers/iio/adc/ad9467.c b/drivers/iio/adc/ad9467.c
> index dbfc8517cb8a..a07df0fd3329 100644
> --- a/drivers/iio/adc/ad9467.c
> +++ b/drivers/iio/adc/ad9467.c
> @@ -378,13 +378,6 @@ static int ad9467_preenable_setup(struct adi_axi_adc_conv *conv)
>  	return ad9467_outputmode_set(st->spi, st->output_mode);
>  }
>  
> -static void ad9467_clk_disable(void *data)
> -{
> -	struct ad9467_state *st = data;
> -
> -	clk_disable_unprepare(st->clk);
> -}
> -
>  static int ad9467_probe(struct spi_device *spi)
>  {
>  	const struct ad9467_chip_info *info;
> @@ -404,18 +397,10 @@ static int ad9467_probe(struct spi_device *spi)
>  	st = adi_axi_adc_conv_priv(conv);
>  	st->spi = spi;
>  
> -	st->clk = devm_clk_get(&spi->dev, "adc-clk");
> +	st->clk = devm_clk_get_enabled(&spi->dev, "adc-clk");
>  	if (IS_ERR(st->clk))
>  		return PTR_ERR(st->clk);
>  
> -	ret = clk_prepare_enable(st->clk);
> -	if (ret < 0)
> -		return ret;
> -
> -	ret = devm_add_action_or_reset(&spi->dev, ad9467_clk_disable, st);
> -	if (ret)
> -		return ret;
> -
>  	st->pwrdown_gpio = devm_gpiod_get_optional(&spi->dev, "powerdown",
>  						   GPIOD_OUT_LOW);
>  	if (IS_ERR(st->pwrdown_gpio))
> diff --git a/drivers/iio/adc/ingenic-adc.c b/drivers/iio/adc/ingenic-adc.c
> index 2b3912c6ca6b..b6433bcd53f5 100644
> --- a/drivers/iio/adc/ingenic-adc.c
> +++ b/drivers/iio/adc/ingenic-adc.c
> @@ -732,11 +732,6 @@ static int ingenic_adc_of_xlate(struct iio_dev *iio_dev,
>  	return -EINVAL;
>  }
>  
> -static void ingenic_adc_clk_cleanup(void *data)
> -{
> -	clk_unprepare(data);
> -}
> -
>  static const struct iio_info ingenic_adc_info = {
>  	.write_raw = ingenic_adc_write_raw,
>  	.read_raw = ingenic_adc_read_raw,
> @@ -856,13 +851,13 @@ static int ingenic_adc_probe(struct platform_device *pdev)
>  	if (IS_ERR(adc->base))
>  		return PTR_ERR(adc->base);
>  
> -	adc->clk = devm_clk_get(dev, "adc");
> +	adc->clk = devm_clk_get_prepared(dev, "adc");
>  	if (IS_ERR(adc->clk)) {
>  		dev_err(dev, "Unable to get clock\n");
>  		return PTR_ERR(adc->clk);
>  	}
>  
> -	ret = clk_prepare_enable(adc->clk);
> +	ret = clk_enable(adc->clk);
>  	if (ret) {
>  		dev_err(dev, "Failed to enable clock\n");
>  		return ret;
> @@ -891,12 +886,6 @@ static int ingenic_adc_probe(struct platform_device *pdev)
>  	usleep_range(2000, 3000); /* Must wait at least 2ms. */
>  	clk_disable(adc->clk);
>  
> -	ret = devm_add_action_or_reset(dev, ingenic_adc_clk_cleanup, adc->clk);
> -	if (ret) {
> -		dev_err(dev, "Unable to add action\n");
> -		return ret;
> -	}
> -
>  	iio_dev->name = "jz-adc";
>  	iio_dev->modes = INDIO_DIRECT_MODE | INDIO_BUFFER_SOFTWARE;
>  	iio_dev->setup_ops = &ingenic_buffer_setup_ops;
> diff --git a/drivers/iio/adc/lpc18xx_adc.c b/drivers/iio/adc/lpc18xx_adc.c
> index ae9c9384f23e..8bbc18aaa474 100644
> --- a/drivers/iio/adc/lpc18xx_adc.c
> +++ b/drivers/iio/adc/lpc18xx_adc.c
> @@ -122,11 +122,6 @@ static void lpc18xx_clear_cr_reg(void *data)
>  	writel(0, adc->base + LPC18XX_ADC_CR);
>  }
>  
> -static void lpc18xx_clk_disable(void *clk)
> -{
> -	clk_disable_unprepare(clk);
> -}
> -
>  static void lpc18xx_regulator_disable(void *vref)
>  {
>  	regulator_disable(vref);
> @@ -152,7 +147,7 @@ static int lpc18xx_adc_probe(struct platform_device *pdev)
>  	if (IS_ERR(adc->base))
>  		return PTR_ERR(adc->base);
>  
> -	adc->clk = devm_clk_get(&pdev->dev, NULL);
> +	adc->clk = devm_clk_get_enabled(&pdev->dev, NULL);
>  	if (IS_ERR(adc->clk))
>  		return dev_err_probe(&pdev->dev, PTR_ERR(adc->clk),
>  				     "error getting clock\n");
> @@ -178,17 +173,6 @@ static int lpc18xx_adc_probe(struct platform_device *pdev)
>  	if (ret)
>  		return ret;
>  
> -	ret = clk_prepare_enable(adc->clk);
> -	if (ret) {
> -		dev_err(&pdev->dev, "unable to enable clock\n");
> -		return ret;
> -	}
> -
> -	ret = devm_add_action_or_reset(&pdev->dev, lpc18xx_clk_disable,
> -				       adc->clk);
> -	if (ret)
> -		return ret;
> -
>  	rate = clk_get_rate(adc->clk);
>  	clkdiv = DIV_ROUND_UP(rate, LPC18XX_ADC_CLK_TARGET);
>  
> diff --git a/drivers/iio/adc/rockchip_saradc.c b/drivers/iio/adc/rockchip_saradc.c
> index 14b8df4ca9c8..0a053e8b2483 100644
> --- a/drivers/iio/adc/rockchip_saradc.c
> +++ b/drivers/iio/adc/rockchip_saradc.c
> @@ -233,20 +233,6 @@ static void rockchip_saradc_reset_controller(struct reset_control *reset)
>  	reset_control_deassert(reset);
>  }
>  
> -static void rockchip_saradc_clk_disable(void *data)
> -{
> -	struct rockchip_saradc *info = data;
> -
> -	clk_disable_unprepare(info->clk);
> -}
> -
> -static void rockchip_saradc_pclk_disable(void *data)
> -{
> -	struct rockchip_saradc *info = data;
> -
> -	clk_disable_unprepare(info->pclk);
> -}
> -
>  static void rockchip_saradc_regulator_disable(void *data)
>  {
>  	struct rockchip_saradc *info = data;
> @@ -380,12 +366,12 @@ static int rockchip_saradc_probe(struct platform_device *pdev)
>  		return ret;
>  	}
>  
> -	info->pclk = devm_clk_get(&pdev->dev, "apb_pclk");
> +	info->pclk = devm_clk_get_enabled(&pdev->dev, "apb_pclk");
>  	if (IS_ERR(info->pclk))
>  		return dev_err_probe(&pdev->dev, PTR_ERR(info->pclk),
>  				     "failed to get pclk\n");
>  
> -	info->clk = devm_clk_get(&pdev->dev, "saradc");
> +	info->clk = devm_clk_get_enabled(&pdev->dev, "saradc");
>  	if (IS_ERR(info->clk))
>  		return dev_err_probe(&pdev->dev, PTR_ERR(info->clk),
>  				     "failed to get adc clock\n");
> @@ -427,32 +413,6 @@ static int rockchip_saradc_probe(struct platform_device *pdev)
>  
>  	info->uv_vref = ret;
>  
> -	ret = clk_prepare_enable(info->pclk);
> -	if (ret < 0) {
> -		dev_err(&pdev->dev, "failed to enable pclk\n");
> -		return ret;
> -	}
> -	ret = devm_add_action_or_reset(&pdev->dev,
> -				       rockchip_saradc_pclk_disable, info);
> -	if (ret) {
> -		dev_err(&pdev->dev, "failed to register devm action, %d\n",
> -			ret);
> -		return ret;
> -	}
> -
> -	ret = clk_prepare_enable(info->clk);
> -	if (ret < 0) {
> -		dev_err(&pdev->dev, "failed to enable converter clock\n");
> -		return ret;
> -	}
> -	ret = devm_add_action_or_reset(&pdev->dev,
> -				       rockchip_saradc_clk_disable, info);
> -	if (ret) {
> -		dev_err(&pdev->dev, "failed to register devm action, %d\n",
> -			ret);
> -		return ret;
> -	}
> -
>  	platform_set_drvdata(pdev, indio_dev);
>  
>  	indio_dev->name = dev_name(&pdev->dev);
> diff --git a/drivers/iio/adc/ti-ads131e08.c b/drivers/iio/adc/ti-ads131e08.c
> index 0c2025a22575..7d7a8f0d3ab5 100644
> --- a/drivers/iio/adc/ti-ads131e08.c
> +++ b/drivers/iio/adc/ti-ads131e08.c
> @@ -793,13 +793,6 @@ static void ads131e08_regulator_disable(void *data)
>  	regulator_disable(st->vref_reg);
>  }
>  
> -static void ads131e08_clk_disable(void *data)
> -{
> -	struct ads131e08_state *st = data;
> -
> -	clk_disable_unprepare(st->adc_clk);
> -}
> -
>  static int ads131e08_probe(struct spi_device *spi)
>  {
>  	const struct ads131e08_info *info;
> @@ -892,21 +885,11 @@ static int ads131e08_probe(struct spi_device *spi)
>  		st->vref_reg = NULL;
>  	}
>  
> -	st->adc_clk = devm_clk_get(&spi->dev, "adc-clk");
> +	st->adc_clk = devm_clk_get_enabled(&spi->dev, "adc-clk");
>  	if (IS_ERR(st->adc_clk))
>  		return dev_err_probe(&spi->dev, PTR_ERR(st->adc_clk),
>  				     "failed to get the ADC clock\n");
>  
> -	ret = clk_prepare_enable(st->adc_clk);
> -	if (ret) {
> -		dev_err(&spi->dev, "failed to prepare/enable the ADC clock\n");
> -		return ret;
> -	}
> -
> -	ret = devm_add_action_or_reset(&spi->dev, ads131e08_clk_disable, st);
> -	if (ret)
> -		return ret;
> -
>  	adc_clk_hz = clk_get_rate(st->adc_clk);
>  	if (!adc_clk_hz) {
>  		dev_err(&spi->dev, "failed to get the ADC clock rate\n");
> diff --git a/drivers/iio/adc/xilinx-ams.c b/drivers/iio/adc/xilinx-ams.c
> index 8343c5f74121..4e4f0c80db54 100644
> --- a/drivers/iio/adc/xilinx-ams.c
> +++ b/drivers/iio/adc/xilinx-ams.c
> @@ -1343,11 +1343,6 @@ static const struct of_device_id ams_of_match_table[] = {
>  };
>  MODULE_DEVICE_TABLE(of, ams_of_match_table);
>  
> -static void ams_clk_disable_unprepare(void *data)
> -{
> -	clk_disable_unprepare(data);
> -}
> -
>  static void ams_cancel_delayed_work(void *data)
>  {
>  	cancel_delayed_work(data);
> @@ -1377,18 +1372,10 @@ static int ams_probe(struct platform_device *pdev)
>  	if (IS_ERR(ams->base))
>  		return PTR_ERR(ams->base);
>  
> -	ams->clk = devm_clk_get(&pdev->dev, NULL);
> +	ams->clk = devm_clk_get_enabled(&pdev->dev, NULL);
>  	if (IS_ERR(ams->clk))
>  		return PTR_ERR(ams->clk);
>  
> -	ret = clk_prepare_enable(ams->clk);
> -	if (ret < 0)
> -		return ret;
> -
> -	ret = devm_add_action_or_reset(&pdev->dev, ams_clk_disable_unprepare, ams->clk);
> -	if (ret < 0)
> -		return ret;
> -
>  	INIT_DELAYED_WORK(&ams->ams_unmask_work, ams_unmask_worker);
>  	ret = devm_add_action_or_reset(&pdev->dev, ams_cancel_delayed_work,
>  				       &ams->ams_unmask_work);
> diff --git a/drivers/iio/adc/xilinx-xadc-core.c b/drivers/iio/adc/xilinx-xadc-core.c
> index 823c8e5f9809..a520e07e4e08 100644
> --- a/drivers/iio/adc/xilinx-xadc-core.c
> +++ b/drivers/iio/adc/xilinx-xadc-core.c
> @@ -1299,13 +1299,6 @@ static const char * const xadc_type_names[] = {
>  	[XADC_TYPE_US] = "xilinx-system-monitor",
>  };
>  
> -static void xadc_clk_disable_unprepare(void *data)
> -{
> -	struct clk *clk = data;
> -
> -	clk_disable_unprepare(clk);
> -}
> -
>  static void xadc_cancel_delayed_work(void *data)
>  {
>  	struct delayed_work *work = data;
> @@ -1383,19 +1376,10 @@ static int xadc_probe(struct platform_device *pdev)
>  		}
>  	}
>  
> -	xadc->clk = devm_clk_get(dev, NULL);
> +	xadc->clk = devm_clk_get_enabled(dev, NULL);
>  	if (IS_ERR(xadc->clk))
>  		return PTR_ERR(xadc->clk);
>  
> -	ret = clk_prepare_enable(xadc->clk);
> -	if (ret)
> -		return ret;
> -
> -	ret = devm_add_action_or_reset(dev,
> -				       xadc_clk_disable_unprepare, xadc->clk);
> -	if (ret)
> -		return ret;
> -
>  	/*
>  	 * Make sure not to exceed the maximum samplerate since otherwise the
>  	 * resulting interrupt storm will soft-lock the system.
> diff --git a/drivers/iio/frequency/adf4371.c b/drivers/iio/frequency/adf4371.c
> index ecd5e18995ad..54040b5fded0 100644
> --- a/drivers/iio/frequency/adf4371.c
> +++ b/drivers/iio/frequency/adf4371.c
> @@ -540,13 +540,6 @@ static int adf4371_setup(struct adf4371_state *st)
>  	return regmap_bulk_write(st->regmap, ADF4371_REG(0x30), st->buf, 5);
>  }
>  
> -static void adf4371_clk_disable(void *data)
> -{
> -	struct adf4371_state *st = data;
> -
> -	clk_disable_unprepare(st->clkin);
> -}
> -
>  static int adf4371_probe(struct spi_device *spi)
>  {
>  	const struct spi_device_id *id = spi_get_device_id(spi);
> @@ -579,18 +572,10 @@ static int adf4371_probe(struct spi_device *spi)
>  	indio_dev->channels = st->chip_info->channels;
>  	indio_dev->num_channels = st->chip_info->num_channels;
>  
> -	st->clkin = devm_clk_get(&spi->dev, "clkin");
> +	st->clkin = devm_clk_get_enabled(&spi->dev, "clkin");
>  	if (IS_ERR(st->clkin))
>  		return PTR_ERR(st->clkin);
>  
> -	ret = clk_prepare_enable(st->clkin);
> -	if (ret < 0)
> -		return ret;
> -
> -	ret = devm_add_action_or_reset(&spi->dev, adf4371_clk_disable, st);
> -	if (ret)
> -		return ret;
> -
>  	st->clkin_freq = clk_get_rate(st->clkin);
>  
>  	ret = adf4371_setup(st);
> diff --git a/drivers/iio/frequency/admv1013.c b/drivers/iio/frequency/admv1013.c
> index 3f3c478e9baa..b3e7eb322ade 100644
> --- a/drivers/iio/frequency/admv1013.c
> +++ b/drivers/iio/frequency/admv1013.c
> @@ -490,11 +490,6 @@ static int admv1013_init(struct admv1013_state *st)
>  					  st->input_mode);
>  }
>  
> -static void admv1013_clk_disable(void *data)
> -{
> -	clk_disable_unprepare(data);
> -}
> -
>  static void admv1013_reg_disable(void *data)
>  {
>  	regulator_disable(data);
> @@ -559,7 +554,7 @@ static int admv1013_properties_parse(struct admv1013_state *st)
>  		return dev_err_probe(&spi->dev, PTR_ERR(st->reg),
>  				     "failed to get the common-mode voltage\n");
>  
> -	st->clkin = devm_clk_get(&spi->dev, "lo_in");
> +	st->clkin = devm_clk_get_enabled(&spi->dev, "lo_in");
>  	if (IS_ERR(st->clkin))
>  		return dev_err_probe(&spi->dev, PTR_ERR(st->clkin),
>  				     "failed to get the LO input clock\n");
> @@ -601,14 +596,6 @@ static int admv1013_probe(struct spi_device *spi)
>  	if (ret)
>  		return ret;
>  
> -	ret = clk_prepare_enable(st->clkin);
> -	if (ret)
> -		return ret;
> -
> -	ret = devm_add_action_or_reset(&spi->dev, admv1013_clk_disable, st->clkin);
> -	if (ret)
> -		return ret;
> -
>  	st->nb.notifier_call = admv1013_freq_change;
>  	ret = devm_clk_notifier_register(&spi->dev, st->clkin, &st->nb);
>  	if (ret)
> diff --git a/drivers/iio/frequency/adrf6780.c b/drivers/iio/frequency/adrf6780.c
> index 8255ffd174f6..d7bf34ceedd8 100644
> --- a/drivers/iio/frequency/adrf6780.c
> +++ b/drivers/iio/frequency/adrf6780.c
> @@ -441,11 +441,6 @@ static void adrf6780_properties_parse(struct adrf6780_state *st)
>  	st->vdet_out_en = device_property_read_bool(&spi->dev, "adi,vdet-out-en");
>  }
>  
> -static void adrf6780_clk_disable(void *data)
> -{
> -	clk_disable_unprepare(data);
> -}
> -
>  static void adrf6780_powerdown(void *data)
>  {
>  	/* Disable all components in the Enable Register */
> @@ -473,20 +468,11 @@ static int adrf6780_probe(struct spi_device *spi)
>  
>  	adrf6780_properties_parse(st);
>  
> -	st->clkin = devm_clk_get(&spi->dev, "lo_in");
> +	st->clkin = devm_clk_get_enabled(&spi->dev, "lo_in");
>  	if (IS_ERR(st->clkin))
>  		return dev_err_probe(&spi->dev, PTR_ERR(st->clkin),
>  				     "failed to get the LO input clock\n");
>  
> -	ret = clk_prepare_enable(st->clkin);
> -	if (ret)
> -		return ret;
> -
> -	ret = devm_add_action_or_reset(&spi->dev, adrf6780_clk_disable,
> -				       st->clkin);
> -	if (ret)
> -		return ret;
> -
>  	mutex_init(&st->lock);
>  
>  	ret = adrf6780_init(st);
> diff --git a/drivers/iio/imu/adis16475.c b/drivers/iio/imu/adis16475.c
> index ea91d127077d..45a8765d7c16 100644
> --- a/drivers/iio/imu/adis16475.c
> +++ b/drivers/iio/imu/adis16475.c
> @@ -1120,11 +1120,6 @@ static irqreturn_t adis16475_trigger_handler(int irq, void *p)
>  	return IRQ_HANDLED;
>  }
>  
> -static void adis16475_disable_clk(void *data)
> -{
> -	clk_disable_unprepare((struct clk *)data);
> -}
> -
>  static int adis16475_config_sync_mode(struct adis16475 *st)
>  {
>  	int ret;
> @@ -1150,19 +1145,11 @@ static int adis16475_config_sync_mode(struct adis16475 *st)
>  
>  	/* All the other modes require external input signal */
>  	if (sync->sync_mode != ADIS16475_SYNC_OUTPUT) {
> -		struct clk *clk = devm_clk_get(dev, NULL);
> +		struct clk *clk = devm_clk_get_enabled(dev, NULL);
>  
>  		if (IS_ERR(clk))
>  			return PTR_ERR(clk);
>  
> -		ret = clk_prepare_enable(clk);
> -		if (ret)
> -			return ret;
> -
> -		ret = devm_add_action_or_reset(dev, adis16475_disable_clk, clk);
> -		if (ret)
> -			return ret;
> -
>  		st->clk_freq = clk_get_rate(clk);
>  		if (st->clk_freq < sync->min_rate ||
>  		    st->clk_freq > sync->max_rate) {


WARNING: multiple messages have this Message-ID (diff)
From: Jonathan Cameron <jic23@kernel.org>
To: "Uwe Kleine-König" <u.kleine-koenig@pengutronix.de>
Cc: "Michael Turquette" <mturquette@baylibre.com>,
	"Stephen Boyd" <sboyd@kernel.org>,
	"Russell King" <linux@armlinux.org.uk>,
	"Lars-Peter Clausen" <lars@metafoo.de>,
	"Michael Hennerich" <Michael.Hennerich@analog.com>,
	linux-clk@vger.kernel.org, kernel@pengutronix.de,
	"Paul Cercueil" <paul@crapouillou.net>,
	"Vladimir Zapolskiy" <vz@mleia.com>,
	"Heiko Stuebner" <heiko@sntech.de>,
	"Tomislav Denis" <tomislav.denis@avl.com>,
	"Anand Ashok Dumbre" <anand.ashok.dumbre@xilinx.com>,
	"Michal Simek" <michal.simek@xilinx.com>,
	"Nuno Sa" <nuno.sa@analog.com>,
	"André Gustavo Nakagomi Lopez" <andregnl@usp.br>,
	"Cai Huoqing" <caihuoqing@baidu.com>,
	linux-iio@vger.kernel.org, linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH v8 04/16] iio: Make use of devm_clk_get_enabled()
Date: Sat, 19 Mar 2022 18:22:40 +0000	[thread overview]
Message-ID: <20220319182240.30456776@jic23-huawei> (raw)
In-Reply-To: <20220314141643.22184-5-u.kleine-koenig@pengutronix.de>

On Mon, 14 Mar 2022 15:16:31 +0100
Uwe Kleine-König <u.kleine-koenig@pengutronix.de> wrote:

> Several drivers manually register a devm handler to disable their clk.
> Convert them to devm_clk_get_enabled().
> 
> Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>

Acked-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>

If this does get picked up, can who ever does it please provide
an immutable branch. With some many drivers cleaned up, it's very
likely to cause some merge fun somewhere otherwise.

Thanks,

Jonathan

> ---
>  drivers/iio/adc/ad7124.c           | 15 +---------
>  drivers/iio/adc/ad7768-1.c         | 17 +-----------
>  drivers/iio/adc/ad9467.c           | 17 +-----------
>  drivers/iio/adc/ingenic-adc.c      | 15 ++--------
>  drivers/iio/adc/lpc18xx_adc.c      | 18 +-----------
>  drivers/iio/adc/rockchip_saradc.c  | 44 ++----------------------------
>  drivers/iio/adc/ti-ads131e08.c     | 19 +------------
>  drivers/iio/adc/xilinx-ams.c       | 15 +---------
>  drivers/iio/adc/xilinx-xadc-core.c | 18 +-----------
>  drivers/iio/frequency/adf4371.c    | 17 +-----------
>  drivers/iio/frequency/admv1013.c   | 15 +---------
>  drivers/iio/frequency/adrf6780.c   | 16 +----------
>  drivers/iio/imu/adis16475.c        | 15 +---------
>  13 files changed, 15 insertions(+), 226 deletions(-)
> 
> diff --git a/drivers/iio/adc/ad7124.c b/drivers/iio/adc/ad7124.c
> index b400bbe291aa..fcfa4e0b41fb 100644
> --- a/drivers/iio/adc/ad7124.c
> +++ b/drivers/iio/adc/ad7124.c
> @@ -862,11 +862,6 @@ static void ad7124_reg_disable(void *r)
>  	regulator_disable(r);
>  }
>  
> -static void ad7124_clk_disable(void *c)
> -{
> -	clk_disable_unprepare(c);
> -}
> -
>  static int ad7124_probe(struct spi_device *spi)
>  {
>  	const struct ad7124_chip_info *info;
> @@ -917,18 +912,10 @@ static int ad7124_probe(struct spi_device *spi)
>  			return ret;
>  	}
>  
> -	st->mclk = devm_clk_get(&spi->dev, "mclk");
> +	st->mclk = devm_clk_get_enabled(&spi->dev, "mclk");
>  	if (IS_ERR(st->mclk))
>  		return PTR_ERR(st->mclk);
>  
> -	ret = clk_prepare_enable(st->mclk);
> -	if (ret < 0)
> -		return ret;
> -
> -	ret = devm_add_action_or_reset(&spi->dev, ad7124_clk_disable, st->mclk);
> -	if (ret)
> -		return ret;
> -
>  	ret = ad7124_soft_reset(st);
>  	if (ret < 0)
>  		return ret;
> diff --git a/drivers/iio/adc/ad7768-1.c b/drivers/iio/adc/ad7768-1.c
> index aa42ba759fa1..8ae34ed8fabd 100644
> --- a/drivers/iio/adc/ad7768-1.c
> +++ b/drivers/iio/adc/ad7768-1.c
> @@ -539,13 +539,6 @@ static void ad7768_regulator_disable(void *data)
>  	regulator_disable(st->vref);
>  }
>  
> -static void ad7768_clk_disable(void *data)
> -{
> -	struct ad7768_state *st = data;
> -
> -	clk_disable_unprepare(st->mclk);
> -}
> -
>  static int ad7768_set_channel_label(struct iio_dev *indio_dev,
>  						int num_channels)
>  {
> @@ -600,18 +593,10 @@ static int ad7768_probe(struct spi_device *spi)
>  	if (ret)
>  		return ret;
>  
> -	st->mclk = devm_clk_get(&spi->dev, "mclk");
> +	st->mclk = devm_clk_get_enabled(&spi->dev, "mclk");
>  	if (IS_ERR(st->mclk))
>  		return PTR_ERR(st->mclk);
>  
> -	ret = clk_prepare_enable(st->mclk);
> -	if (ret < 0)
> -		return ret;
> -
> -	ret = devm_add_action_or_reset(&spi->dev, ad7768_clk_disable, st);
> -	if (ret)
> -		return ret;
> -
>  	st->mclk_freq = clk_get_rate(st->mclk);
>  
>  	mutex_init(&st->lock);
> diff --git a/drivers/iio/adc/ad9467.c b/drivers/iio/adc/ad9467.c
> index dbfc8517cb8a..a07df0fd3329 100644
> --- a/drivers/iio/adc/ad9467.c
> +++ b/drivers/iio/adc/ad9467.c
> @@ -378,13 +378,6 @@ static int ad9467_preenable_setup(struct adi_axi_adc_conv *conv)
>  	return ad9467_outputmode_set(st->spi, st->output_mode);
>  }
>  
> -static void ad9467_clk_disable(void *data)
> -{
> -	struct ad9467_state *st = data;
> -
> -	clk_disable_unprepare(st->clk);
> -}
> -
>  static int ad9467_probe(struct spi_device *spi)
>  {
>  	const struct ad9467_chip_info *info;
> @@ -404,18 +397,10 @@ static int ad9467_probe(struct spi_device *spi)
>  	st = adi_axi_adc_conv_priv(conv);
>  	st->spi = spi;
>  
> -	st->clk = devm_clk_get(&spi->dev, "adc-clk");
> +	st->clk = devm_clk_get_enabled(&spi->dev, "adc-clk");
>  	if (IS_ERR(st->clk))
>  		return PTR_ERR(st->clk);
>  
> -	ret = clk_prepare_enable(st->clk);
> -	if (ret < 0)
> -		return ret;
> -
> -	ret = devm_add_action_or_reset(&spi->dev, ad9467_clk_disable, st);
> -	if (ret)
> -		return ret;
> -
>  	st->pwrdown_gpio = devm_gpiod_get_optional(&spi->dev, "powerdown",
>  						   GPIOD_OUT_LOW);
>  	if (IS_ERR(st->pwrdown_gpio))
> diff --git a/drivers/iio/adc/ingenic-adc.c b/drivers/iio/adc/ingenic-adc.c
> index 2b3912c6ca6b..b6433bcd53f5 100644
> --- a/drivers/iio/adc/ingenic-adc.c
> +++ b/drivers/iio/adc/ingenic-adc.c
> @@ -732,11 +732,6 @@ static int ingenic_adc_of_xlate(struct iio_dev *iio_dev,
>  	return -EINVAL;
>  }
>  
> -static void ingenic_adc_clk_cleanup(void *data)
> -{
> -	clk_unprepare(data);
> -}
> -
>  static const struct iio_info ingenic_adc_info = {
>  	.write_raw = ingenic_adc_write_raw,
>  	.read_raw = ingenic_adc_read_raw,
> @@ -856,13 +851,13 @@ static int ingenic_adc_probe(struct platform_device *pdev)
>  	if (IS_ERR(adc->base))
>  		return PTR_ERR(adc->base);
>  
> -	adc->clk = devm_clk_get(dev, "adc");
> +	adc->clk = devm_clk_get_prepared(dev, "adc");
>  	if (IS_ERR(adc->clk)) {
>  		dev_err(dev, "Unable to get clock\n");
>  		return PTR_ERR(adc->clk);
>  	}
>  
> -	ret = clk_prepare_enable(adc->clk);
> +	ret = clk_enable(adc->clk);
>  	if (ret) {
>  		dev_err(dev, "Failed to enable clock\n");
>  		return ret;
> @@ -891,12 +886,6 @@ static int ingenic_adc_probe(struct platform_device *pdev)
>  	usleep_range(2000, 3000); /* Must wait at least 2ms. */
>  	clk_disable(adc->clk);
>  
> -	ret = devm_add_action_or_reset(dev, ingenic_adc_clk_cleanup, adc->clk);
> -	if (ret) {
> -		dev_err(dev, "Unable to add action\n");
> -		return ret;
> -	}
> -
>  	iio_dev->name = "jz-adc";
>  	iio_dev->modes = INDIO_DIRECT_MODE | INDIO_BUFFER_SOFTWARE;
>  	iio_dev->setup_ops = &ingenic_buffer_setup_ops;
> diff --git a/drivers/iio/adc/lpc18xx_adc.c b/drivers/iio/adc/lpc18xx_adc.c
> index ae9c9384f23e..8bbc18aaa474 100644
> --- a/drivers/iio/adc/lpc18xx_adc.c
> +++ b/drivers/iio/adc/lpc18xx_adc.c
> @@ -122,11 +122,6 @@ static void lpc18xx_clear_cr_reg(void *data)
>  	writel(0, adc->base + LPC18XX_ADC_CR);
>  }
>  
> -static void lpc18xx_clk_disable(void *clk)
> -{
> -	clk_disable_unprepare(clk);
> -}
> -
>  static void lpc18xx_regulator_disable(void *vref)
>  {
>  	regulator_disable(vref);
> @@ -152,7 +147,7 @@ static int lpc18xx_adc_probe(struct platform_device *pdev)
>  	if (IS_ERR(adc->base))
>  		return PTR_ERR(adc->base);
>  
> -	adc->clk = devm_clk_get(&pdev->dev, NULL);
> +	adc->clk = devm_clk_get_enabled(&pdev->dev, NULL);
>  	if (IS_ERR(adc->clk))
>  		return dev_err_probe(&pdev->dev, PTR_ERR(adc->clk),
>  				     "error getting clock\n");
> @@ -178,17 +173,6 @@ static int lpc18xx_adc_probe(struct platform_device *pdev)
>  	if (ret)
>  		return ret;
>  
> -	ret = clk_prepare_enable(adc->clk);
> -	if (ret) {
> -		dev_err(&pdev->dev, "unable to enable clock\n");
> -		return ret;
> -	}
> -
> -	ret = devm_add_action_or_reset(&pdev->dev, lpc18xx_clk_disable,
> -				       adc->clk);
> -	if (ret)
> -		return ret;
> -
>  	rate = clk_get_rate(adc->clk);
>  	clkdiv = DIV_ROUND_UP(rate, LPC18XX_ADC_CLK_TARGET);
>  
> diff --git a/drivers/iio/adc/rockchip_saradc.c b/drivers/iio/adc/rockchip_saradc.c
> index 14b8df4ca9c8..0a053e8b2483 100644
> --- a/drivers/iio/adc/rockchip_saradc.c
> +++ b/drivers/iio/adc/rockchip_saradc.c
> @@ -233,20 +233,6 @@ static void rockchip_saradc_reset_controller(struct reset_control *reset)
>  	reset_control_deassert(reset);
>  }
>  
> -static void rockchip_saradc_clk_disable(void *data)
> -{
> -	struct rockchip_saradc *info = data;
> -
> -	clk_disable_unprepare(info->clk);
> -}
> -
> -static void rockchip_saradc_pclk_disable(void *data)
> -{
> -	struct rockchip_saradc *info = data;
> -
> -	clk_disable_unprepare(info->pclk);
> -}
> -
>  static void rockchip_saradc_regulator_disable(void *data)
>  {
>  	struct rockchip_saradc *info = data;
> @@ -380,12 +366,12 @@ static int rockchip_saradc_probe(struct platform_device *pdev)
>  		return ret;
>  	}
>  
> -	info->pclk = devm_clk_get(&pdev->dev, "apb_pclk");
> +	info->pclk = devm_clk_get_enabled(&pdev->dev, "apb_pclk");
>  	if (IS_ERR(info->pclk))
>  		return dev_err_probe(&pdev->dev, PTR_ERR(info->pclk),
>  				     "failed to get pclk\n");
>  
> -	info->clk = devm_clk_get(&pdev->dev, "saradc");
> +	info->clk = devm_clk_get_enabled(&pdev->dev, "saradc");
>  	if (IS_ERR(info->clk))
>  		return dev_err_probe(&pdev->dev, PTR_ERR(info->clk),
>  				     "failed to get adc clock\n");
> @@ -427,32 +413,6 @@ static int rockchip_saradc_probe(struct platform_device *pdev)
>  
>  	info->uv_vref = ret;
>  
> -	ret = clk_prepare_enable(info->pclk);
> -	if (ret < 0) {
> -		dev_err(&pdev->dev, "failed to enable pclk\n");
> -		return ret;
> -	}
> -	ret = devm_add_action_or_reset(&pdev->dev,
> -				       rockchip_saradc_pclk_disable, info);
> -	if (ret) {
> -		dev_err(&pdev->dev, "failed to register devm action, %d\n",
> -			ret);
> -		return ret;
> -	}
> -
> -	ret = clk_prepare_enable(info->clk);
> -	if (ret < 0) {
> -		dev_err(&pdev->dev, "failed to enable converter clock\n");
> -		return ret;
> -	}
> -	ret = devm_add_action_or_reset(&pdev->dev,
> -				       rockchip_saradc_clk_disable, info);
> -	if (ret) {
> -		dev_err(&pdev->dev, "failed to register devm action, %d\n",
> -			ret);
> -		return ret;
> -	}
> -
>  	platform_set_drvdata(pdev, indio_dev);
>  
>  	indio_dev->name = dev_name(&pdev->dev);
> diff --git a/drivers/iio/adc/ti-ads131e08.c b/drivers/iio/adc/ti-ads131e08.c
> index 0c2025a22575..7d7a8f0d3ab5 100644
> --- a/drivers/iio/adc/ti-ads131e08.c
> +++ b/drivers/iio/adc/ti-ads131e08.c
> @@ -793,13 +793,6 @@ static void ads131e08_regulator_disable(void *data)
>  	regulator_disable(st->vref_reg);
>  }
>  
> -static void ads131e08_clk_disable(void *data)
> -{
> -	struct ads131e08_state *st = data;
> -
> -	clk_disable_unprepare(st->adc_clk);
> -}
> -
>  static int ads131e08_probe(struct spi_device *spi)
>  {
>  	const struct ads131e08_info *info;
> @@ -892,21 +885,11 @@ static int ads131e08_probe(struct spi_device *spi)
>  		st->vref_reg = NULL;
>  	}
>  
> -	st->adc_clk = devm_clk_get(&spi->dev, "adc-clk");
> +	st->adc_clk = devm_clk_get_enabled(&spi->dev, "adc-clk");
>  	if (IS_ERR(st->adc_clk))
>  		return dev_err_probe(&spi->dev, PTR_ERR(st->adc_clk),
>  				     "failed to get the ADC clock\n");
>  
> -	ret = clk_prepare_enable(st->adc_clk);
> -	if (ret) {
> -		dev_err(&spi->dev, "failed to prepare/enable the ADC clock\n");
> -		return ret;
> -	}
> -
> -	ret = devm_add_action_or_reset(&spi->dev, ads131e08_clk_disable, st);
> -	if (ret)
> -		return ret;
> -
>  	adc_clk_hz = clk_get_rate(st->adc_clk);
>  	if (!adc_clk_hz) {
>  		dev_err(&spi->dev, "failed to get the ADC clock rate\n");
> diff --git a/drivers/iio/adc/xilinx-ams.c b/drivers/iio/adc/xilinx-ams.c
> index 8343c5f74121..4e4f0c80db54 100644
> --- a/drivers/iio/adc/xilinx-ams.c
> +++ b/drivers/iio/adc/xilinx-ams.c
> @@ -1343,11 +1343,6 @@ static const struct of_device_id ams_of_match_table[] = {
>  };
>  MODULE_DEVICE_TABLE(of, ams_of_match_table);
>  
> -static void ams_clk_disable_unprepare(void *data)
> -{
> -	clk_disable_unprepare(data);
> -}
> -
>  static void ams_cancel_delayed_work(void *data)
>  {
>  	cancel_delayed_work(data);
> @@ -1377,18 +1372,10 @@ static int ams_probe(struct platform_device *pdev)
>  	if (IS_ERR(ams->base))
>  		return PTR_ERR(ams->base);
>  
> -	ams->clk = devm_clk_get(&pdev->dev, NULL);
> +	ams->clk = devm_clk_get_enabled(&pdev->dev, NULL);
>  	if (IS_ERR(ams->clk))
>  		return PTR_ERR(ams->clk);
>  
> -	ret = clk_prepare_enable(ams->clk);
> -	if (ret < 0)
> -		return ret;
> -
> -	ret = devm_add_action_or_reset(&pdev->dev, ams_clk_disable_unprepare, ams->clk);
> -	if (ret < 0)
> -		return ret;
> -
>  	INIT_DELAYED_WORK(&ams->ams_unmask_work, ams_unmask_worker);
>  	ret = devm_add_action_or_reset(&pdev->dev, ams_cancel_delayed_work,
>  				       &ams->ams_unmask_work);
> diff --git a/drivers/iio/adc/xilinx-xadc-core.c b/drivers/iio/adc/xilinx-xadc-core.c
> index 823c8e5f9809..a520e07e4e08 100644
> --- a/drivers/iio/adc/xilinx-xadc-core.c
> +++ b/drivers/iio/adc/xilinx-xadc-core.c
> @@ -1299,13 +1299,6 @@ static const char * const xadc_type_names[] = {
>  	[XADC_TYPE_US] = "xilinx-system-monitor",
>  };
>  
> -static void xadc_clk_disable_unprepare(void *data)
> -{
> -	struct clk *clk = data;
> -
> -	clk_disable_unprepare(clk);
> -}
> -
>  static void xadc_cancel_delayed_work(void *data)
>  {
>  	struct delayed_work *work = data;
> @@ -1383,19 +1376,10 @@ static int xadc_probe(struct platform_device *pdev)
>  		}
>  	}
>  
> -	xadc->clk = devm_clk_get(dev, NULL);
> +	xadc->clk = devm_clk_get_enabled(dev, NULL);
>  	if (IS_ERR(xadc->clk))
>  		return PTR_ERR(xadc->clk);
>  
> -	ret = clk_prepare_enable(xadc->clk);
> -	if (ret)
> -		return ret;
> -
> -	ret = devm_add_action_or_reset(dev,
> -				       xadc_clk_disable_unprepare, xadc->clk);
> -	if (ret)
> -		return ret;
> -
>  	/*
>  	 * Make sure not to exceed the maximum samplerate since otherwise the
>  	 * resulting interrupt storm will soft-lock the system.
> diff --git a/drivers/iio/frequency/adf4371.c b/drivers/iio/frequency/adf4371.c
> index ecd5e18995ad..54040b5fded0 100644
> --- a/drivers/iio/frequency/adf4371.c
> +++ b/drivers/iio/frequency/adf4371.c
> @@ -540,13 +540,6 @@ static int adf4371_setup(struct adf4371_state *st)
>  	return regmap_bulk_write(st->regmap, ADF4371_REG(0x30), st->buf, 5);
>  }
>  
> -static void adf4371_clk_disable(void *data)
> -{
> -	struct adf4371_state *st = data;
> -
> -	clk_disable_unprepare(st->clkin);
> -}
> -
>  static int adf4371_probe(struct spi_device *spi)
>  {
>  	const struct spi_device_id *id = spi_get_device_id(spi);
> @@ -579,18 +572,10 @@ static int adf4371_probe(struct spi_device *spi)
>  	indio_dev->channels = st->chip_info->channels;
>  	indio_dev->num_channels = st->chip_info->num_channels;
>  
> -	st->clkin = devm_clk_get(&spi->dev, "clkin");
> +	st->clkin = devm_clk_get_enabled(&spi->dev, "clkin");
>  	if (IS_ERR(st->clkin))
>  		return PTR_ERR(st->clkin);
>  
> -	ret = clk_prepare_enable(st->clkin);
> -	if (ret < 0)
> -		return ret;
> -
> -	ret = devm_add_action_or_reset(&spi->dev, adf4371_clk_disable, st);
> -	if (ret)
> -		return ret;
> -
>  	st->clkin_freq = clk_get_rate(st->clkin);
>  
>  	ret = adf4371_setup(st);
> diff --git a/drivers/iio/frequency/admv1013.c b/drivers/iio/frequency/admv1013.c
> index 3f3c478e9baa..b3e7eb322ade 100644
> --- a/drivers/iio/frequency/admv1013.c
> +++ b/drivers/iio/frequency/admv1013.c
> @@ -490,11 +490,6 @@ static int admv1013_init(struct admv1013_state *st)
>  					  st->input_mode);
>  }
>  
> -static void admv1013_clk_disable(void *data)
> -{
> -	clk_disable_unprepare(data);
> -}
> -
>  static void admv1013_reg_disable(void *data)
>  {
>  	regulator_disable(data);
> @@ -559,7 +554,7 @@ static int admv1013_properties_parse(struct admv1013_state *st)
>  		return dev_err_probe(&spi->dev, PTR_ERR(st->reg),
>  				     "failed to get the common-mode voltage\n");
>  
> -	st->clkin = devm_clk_get(&spi->dev, "lo_in");
> +	st->clkin = devm_clk_get_enabled(&spi->dev, "lo_in");
>  	if (IS_ERR(st->clkin))
>  		return dev_err_probe(&spi->dev, PTR_ERR(st->clkin),
>  				     "failed to get the LO input clock\n");
> @@ -601,14 +596,6 @@ static int admv1013_probe(struct spi_device *spi)
>  	if (ret)
>  		return ret;
>  
> -	ret = clk_prepare_enable(st->clkin);
> -	if (ret)
> -		return ret;
> -
> -	ret = devm_add_action_or_reset(&spi->dev, admv1013_clk_disable, st->clkin);
> -	if (ret)
> -		return ret;
> -
>  	st->nb.notifier_call = admv1013_freq_change;
>  	ret = devm_clk_notifier_register(&spi->dev, st->clkin, &st->nb);
>  	if (ret)
> diff --git a/drivers/iio/frequency/adrf6780.c b/drivers/iio/frequency/adrf6780.c
> index 8255ffd174f6..d7bf34ceedd8 100644
> --- a/drivers/iio/frequency/adrf6780.c
> +++ b/drivers/iio/frequency/adrf6780.c
> @@ -441,11 +441,6 @@ static void adrf6780_properties_parse(struct adrf6780_state *st)
>  	st->vdet_out_en = device_property_read_bool(&spi->dev, "adi,vdet-out-en");
>  }
>  
> -static void adrf6780_clk_disable(void *data)
> -{
> -	clk_disable_unprepare(data);
> -}
> -
>  static void adrf6780_powerdown(void *data)
>  {
>  	/* Disable all components in the Enable Register */
> @@ -473,20 +468,11 @@ static int adrf6780_probe(struct spi_device *spi)
>  
>  	adrf6780_properties_parse(st);
>  
> -	st->clkin = devm_clk_get(&spi->dev, "lo_in");
> +	st->clkin = devm_clk_get_enabled(&spi->dev, "lo_in");
>  	if (IS_ERR(st->clkin))
>  		return dev_err_probe(&spi->dev, PTR_ERR(st->clkin),
>  				     "failed to get the LO input clock\n");
>  
> -	ret = clk_prepare_enable(st->clkin);
> -	if (ret)
> -		return ret;
> -
> -	ret = devm_add_action_or_reset(&spi->dev, adrf6780_clk_disable,
> -				       st->clkin);
> -	if (ret)
> -		return ret;
> -
>  	mutex_init(&st->lock);
>  
>  	ret = adrf6780_init(st);
> diff --git a/drivers/iio/imu/adis16475.c b/drivers/iio/imu/adis16475.c
> index ea91d127077d..45a8765d7c16 100644
> --- a/drivers/iio/imu/adis16475.c
> +++ b/drivers/iio/imu/adis16475.c
> @@ -1120,11 +1120,6 @@ static irqreturn_t adis16475_trigger_handler(int irq, void *p)
>  	return IRQ_HANDLED;
>  }
>  
> -static void adis16475_disable_clk(void *data)
> -{
> -	clk_disable_unprepare((struct clk *)data);
> -}
> -
>  static int adis16475_config_sync_mode(struct adis16475 *st)
>  {
>  	int ret;
> @@ -1150,19 +1145,11 @@ static int adis16475_config_sync_mode(struct adis16475 *st)
>  
>  	/* All the other modes require external input signal */
>  	if (sync->sync_mode != ADIS16475_SYNC_OUTPUT) {
> -		struct clk *clk = devm_clk_get(dev, NULL);
> +		struct clk *clk = devm_clk_get_enabled(dev, NULL);
>  
>  		if (IS_ERR(clk))
>  			return PTR_ERR(clk);
>  
> -		ret = clk_prepare_enable(clk);
> -		if (ret)
> -			return ret;
> -
> -		ret = devm_add_action_or_reset(dev, adis16475_disable_clk, clk);
> -		if (ret)
> -			return ret;
> -
>  		st->clk_freq = clk_get_rate(clk);
>  		if (st->clk_freq < sync->min_rate ||
>  		    st->clk_freq > sync->max_rate) {


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

  parent reply	other threads:[~2022-03-19 18:15 UTC|newest]

Thread overview: 88+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-03-14 14:16 [PATCH v8 00/16] clk: provide new devm helpers for prepared and enabled clocks Uwe Kleine-König
2022-03-14 14:16 ` Uwe Kleine-König
2022-03-14 14:16 ` Uwe Kleine-König
2022-03-14 14:16 ` [PATCH v8 01/16] clk: generalize devm_clk_get() a bit Uwe Kleine-König
2022-03-14 14:16   ` Uwe Kleine-König
2022-03-14 14:16   ` Uwe Kleine-König
2022-06-21 19:57   ` Jon Hunter
2022-06-21 19:57     ` Jon Hunter
2022-06-21 19:57     ` Jon Hunter
2022-06-21 20:49     ` Uwe Kleine-König
2022-06-21 20:49       ` Uwe Kleine-König
2022-06-21 20:49       ` Uwe Kleine-König
2022-06-22 10:36       ` Andy Shevchenko
2022-06-22 10:36         ` Andy Shevchenko
2022-06-22 10:36         ` Andy Shevchenko
2022-06-22 11:14         ` Neil Armstrong
2022-06-22 11:14           ` Neil Armstrong
2022-06-22 11:14           ` Neil Armstrong
2022-06-22 15:28       ` Jon Hunter
2022-06-22 15:28         ` Jon Hunter
2022-06-22 15:28         ` Jon Hunter
2022-03-14 14:16 ` [PATCH v8 02/16] clk: Provide new devm_clk helpers for prepared and enabled clocks Uwe Kleine-König
2022-03-14 14:16   ` Uwe Kleine-König
2022-03-14 14:16   ` Uwe Kleine-König
2022-03-19 18:29   ` Jonathan Cameron
2022-03-19 18:29     ` Jonathan Cameron
2022-03-19 18:29     ` Jonathan Cameron
2022-03-21  7:22     ` Uwe Kleine-König
2022-03-21  7:22       ` Uwe Kleine-König
2022-03-21  7:22       ` Uwe Kleine-König
2022-05-19 23:45   ` Stephen Boyd
2022-03-14 14:16 ` [PATCH v8 03/16] hwmon: Make use of devm_clk_get_enabled() Uwe Kleine-König
2022-03-14 14:16   ` Uwe Kleine-König
2022-03-14 14:16   ` Uwe Kleine-König
2022-03-15 23:26   ` Guenter Roeck
2022-03-15 23:26     ` Guenter Roeck
2022-03-15 23:26     ` Guenter Roeck
2022-03-14 14:16 ` [PATCH v8 04/16] iio: " Uwe Kleine-König
2022-03-14 14:16   ` Uwe Kleine-König
2022-03-14 15:01   ` Sa, Nuno
2022-03-14 15:01     ` Sa, Nuno
2022-03-19 18:22   ` Jonathan Cameron [this message]
2022-03-19 18:22     ` Jonathan Cameron
2022-03-21  7:41     ` Uwe Kleine-König
2022-03-21  7:41       ` Uwe Kleine-König
2022-03-22 20:34       ` Jonathan Cameron
2022-03-22 20:34         ` Jonathan Cameron
2022-03-14 14:16 ` [PATCH v8 05/16] hwrng: meson - Don't open-code devm_clk_get_optional_enabled() Uwe Kleine-König
2022-03-14 14:16   ` Uwe Kleine-König
2022-03-14 14:16   ` Uwe Kleine-König
2022-03-16  8:32   ` Neil Armstrong
2022-03-16  8:32     ` Neil Armstrong
2022-03-16  8:32     ` Neil Armstrong
2022-03-14 14:16 ` [PATCH v8 06/16] bus: bt1: Don't open code devm_clk_get_enabled() Uwe Kleine-König
2022-03-14 14:16 ` [PATCH v8 07/16] gpio: vf610: Simplify error handling in probe Uwe Kleine-König
2022-03-14 15:01   ` Bartosz Golaszewski
2022-03-14 14:16 ` [PATCH v8 08/16] drm/meson: dw-hdmi: Don't open code devm_clk_get_enabled() Uwe Kleine-König
2022-03-14 14:16   ` Uwe Kleine-König
2022-03-14 14:16   ` Uwe Kleine-König
2022-03-14 14:16   ` Uwe Kleine-König
2022-03-16  8:33   ` Neil Armstrong
2022-03-16  8:33     ` Neil Armstrong
2022-03-16  8:33     ` Neil Armstrong
2022-03-16  8:33     ` Neil Armstrong
2022-03-14 14:16 ` [PATCH v8 09/16] rtc: ingenic: Simplify using devm_clk_get_enabled() Uwe Kleine-König
2022-03-15 22:47   ` Paul Cercueil
2022-03-14 14:16 ` [PATCH v8 10/16] clk: meson: axg-audio: Don't duplicate devm_clk_get_enabled() Uwe Kleine-König
2022-03-14 14:16   ` Uwe Kleine-König
2022-03-14 14:16   ` Uwe Kleine-König
2022-03-14 14:16 ` [PATCH v8 11/16] watchdog: Make use of devm_clk_get_enabled() Uwe Kleine-König
2022-03-14 14:16   ` Uwe Kleine-König
2022-03-14 14:16   ` Uwe Kleine-König
2022-03-16  1:29   ` Guenter Roeck
2022-03-16  1:29     ` Guenter Roeck
2022-03-16  1:29     ` Guenter Roeck
2022-03-14 14:16 ` [PATCH v8 12/16] pwm: atmel: Simplify using devm_clk_get_prepared() Uwe Kleine-König
2022-03-14 14:16   ` Uwe Kleine-König
2022-03-15  9:33   ` Claudiu.Beznea
2022-03-15  9:33     ` Claudiu.Beznea
2022-03-14 14:16 ` [PATCH v8 13/16] rtc: at91sam9: Simplify using devm_clk_get_enabled() Uwe Kleine-König
2022-03-14 14:16   ` Uwe Kleine-König
2022-03-14 14:16 ` [PATCH v8 14/16] i2c: imx: " Uwe Kleine-König
2022-03-14 14:16   ` Uwe Kleine-König
2022-03-14 14:16 ` [PATCH v8 15/16] spi: davinci: " Uwe Kleine-König
2022-03-14 14:16 ` [PATCH v8 16/16] dmaengine: lgm: Fix error handling Uwe Kleine-König
2022-03-15 18:03 ` [PATCH v8 00/16] clk: provide new devm helpers for prepared and enabled clocks Andy Shevchenko
2022-03-15 18:03   ` Andy Shevchenko
2022-03-15 18:03   ` Andy Shevchenko

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20220319182240.30456776@jic23-huawei \
    --to=jic23@kernel.org \
    --cc=Michael.Hennerich@analog.com \
    --cc=anand.ashok.dumbre@xilinx.com \
    --cc=andregnl@usp.br \
    --cc=caihuoqing@baidu.com \
    --cc=heiko@sntech.de \
    --cc=kernel@pengutronix.de \
    --cc=lars@metafoo.de \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-clk@vger.kernel.org \
    --cc=linux-iio@vger.kernel.org \
    --cc=linux@armlinux.org.uk \
    --cc=michal.simek@xilinx.com \
    --cc=mturquette@baylibre.com \
    --cc=nuno.sa@analog.com \
    --cc=paul@crapouillou.net \
    --cc=sboyd@kernel.org \
    --cc=tomislav.denis@avl.com \
    --cc=u.kleine-koenig@pengutronix.de \
    --cc=vz@mleia.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.