All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Sa, Nuno" <Nuno.Sa@analog.com>
To: "Uwe Kleine-König" <u.kleine-koenig@pengutronix.de>,
	"Michael Turquette" <mturquette@baylibre.com>,
	"Stephen Boyd" <sboyd@kernel.org>,
	"Russell King" <linux@armlinux.org.uk>,
	"Lars-Peter Clausen" <lars@metafoo.de>,
	"Hennerich, Michael" <Michael.Hennerich@analog.com>,
	"Jonathan Cameron" <jic23@kernel.org>
Cc: "linux-clk@vger.kernel.org" <linux-clk@vger.kernel.org>,
	"kernel@pengutronix.de" <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>,
	"André Gustavo Nakagomi Lopez" <andregnl@usp.br>,
	"Cai Huoqing" <caihuoqing@baidu.com>,
	"linux-iio@vger.kernel.org" <linux-iio@vger.kernel.org>,
	"linux-arm-kernel@lists.infradead.org"
	<linux-arm-kernel@lists.infradead.org>
Subject: RE: [PATCH v8 04/16] iio: Make use of devm_clk_get_enabled()
Date: Mon, 14 Mar 2022 15:01:46 +0000	[thread overview]
Message-ID: <PH0PR03MB6786E0B3C10DEB054C1CF67D990F9@PH0PR03MB6786.namprd03.prod.outlook.com> (raw)
In-Reply-To: <20220314141643.22184-5-u.kleine-koenig@pengutronix.de>


> From: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
> Sent: Monday, March 14, 2022 3:17 PM
> To: Michael Turquette <mturquette@baylibre.com>; Stephen Boyd
> <sboyd@kernel.org>; Russell King <linux@armlinux.org.uk>; Lars-
> Peter Clausen <lars@metafoo.de>; Hennerich, Michael
> <Michael.Hennerich@analog.com>; Jonathan Cameron
> <jic23@kernel.org>
> Cc: 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>; Sa, Nuno <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: [PATCH v8 04/16] iio: Make use of devm_clk_get_enabled()
> 
> [External]
> 
> 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>
> ---

I do think this is a very nice cleanup. I can see the same thing being
done for, say, regulators (maybe)...

Reviewed-by: Nuno Sá <nuno.sa@analog.com>

>  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) {
> --
> 2.35.1

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

WARNING: multiple messages have this Message-ID (diff)
From: "Sa, Nuno" <Nuno.Sa@analog.com>
To: "Uwe Kleine-König" <u.kleine-koenig@pengutronix.de>,
	"Michael Turquette" <mturquette@baylibre.com>,
	"Stephen Boyd" <sboyd@kernel.org>,
	"Russell King" <linux@armlinux.org.uk>,
	"Lars-Peter Clausen" <lars@metafoo.de>,
	"Hennerich, Michael" <Michael.Hennerich@analog.com>,
	"Jonathan Cameron" <jic23@kernel.org>
Cc: "linux-clk@vger.kernel.org" <linux-clk@vger.kernel.org>,
	"kernel@pengutronix.de" <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>,
	"André Gustavo Nakagomi Lopez" <andregnl@usp.br>,
	"Cai Huoqing" <caihuoqing@baidu.com>,
	"linux-iio@vger.kernel.org" <linux-iio@vger.kernel.org>,
	"linux-arm-kernel@lists.infradead.org"
	<linux-arm-kernel@lists.infradead.org>
Subject: RE: [PATCH v8 04/16] iio: Make use of devm_clk_get_enabled()
Date: Mon, 14 Mar 2022 15:01:46 +0000	[thread overview]
Message-ID: <PH0PR03MB6786E0B3C10DEB054C1CF67D990F9@PH0PR03MB6786.namprd03.prod.outlook.com> (raw)
In-Reply-To: <20220314141643.22184-5-u.kleine-koenig@pengutronix.de>


> From: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
> Sent: Monday, March 14, 2022 3:17 PM
> To: Michael Turquette <mturquette@baylibre.com>; Stephen Boyd
> <sboyd@kernel.org>; Russell King <linux@armlinux.org.uk>; Lars-
> Peter Clausen <lars@metafoo.de>; Hennerich, Michael
> <Michael.Hennerich@analog.com>; Jonathan Cameron
> <jic23@kernel.org>
> Cc: 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>; Sa, Nuno <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: [PATCH v8 04/16] iio: Make use of devm_clk_get_enabled()
> 
> [External]
> 
> 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>
> ---

I do think this is a very nice cleanup. I can see the same thing being
done for, say, regulators (maybe)...

Reviewed-by: Nuno Sá <nuno.sa@analog.com>

>  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) {
> --
> 2.35.1


  reply	other threads:[~2022-03-14 15:04 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 [this message]
2022-03-14 15:01     ` Sa, Nuno
2022-03-19 18:22   ` Jonathan Cameron
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=PH0PR03MB6786E0B3C10DEB054C1CF67D990F9@PH0PR03MB6786.namprd03.prod.outlook.com \
    --to=nuno.sa@analog.com \
    --cc=Michael.Hennerich@analog.com \
    --cc=anand.ashok.dumbre@xilinx.com \
    --cc=andregnl@usp.br \
    --cc=caihuoqing@baidu.com \
    --cc=heiko@sntech.de \
    --cc=jic23@kernel.org \
    --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=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.