All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Ardelean, Alexandru" <alexandru.Ardelean@analog.com>
To: "jic23@kernel.org" <jic23@kernel.org>,
	"linux-iio@vger.kernel.org" <linux-iio@vger.kernel.org>,
	"linus.walleij@linaro.org" <linus.walleij@linaro.org>
Cc: "Hennerich, Michael" <Michael.Hennerich@analog.com>,
	"knaack.h@gmx.de" <knaack.h@gmx.de>,
	"lars@metafoo.de" <lars@metafoo.de>,
	"pmeerw@pmeerw.net" <pmeerw@pmeerw.net>
Subject: Re: [PATCH] iio: adf4350: Convert to use GPIO descriptor
Date: Mon, 2 Dec 2019 08:50:05 +0000	[thread overview]
Message-ID: <a1be250ce3e9a89e5a352390e16504ce8e017dbe.camel@analog.com> (raw)
In-Reply-To: <20191202083830.71572-1-linus.walleij@linaro.org>

On Mon, 2019-12-02 at 09:38 +0100, Linus Walleij wrote:
> The lock detect GPIO line is better to grab using
> a GPIO descriptor. We drop the pdata for this: clients using board
> files can use machine descriptor tables to pass this GPIO from
> static data.

Hey,

Thanks for the patch.
A question inline. Maybe to Jonathan as well.
Other than that this looks good.

> 
> Cc: Michael Hennerich <michael.hennerich@analog.com>
> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
> ---
>  drivers/iio/frequency/adf4350.c       | 30 +++++++--------------------
>  include/linux/iio/frequency/adf4350.h |  4 ----
>  2 files changed, 8 insertions(+), 26 deletions(-)
> 
> diff --git a/drivers/iio/frequency/adf4350.c
> b/drivers/iio/frequency/adf4350.c
> index ae0ca09ae062..1c2dc9b00f31 100644
> --- a/drivers/iio/frequency/adf4350.c
> +++ b/drivers/iio/frequency/adf4350.c
> @@ -14,11 +14,10 @@
>  #include <linux/err.h>
>  #include <linux/module.h>
>  #include <linux/gcd.h>
> -#include <linux/gpio.h>
> +#include <linux/gpio/consumer.h>
>  #include <asm/div64.h>
>  #include <linux/clk.h>
>  #include <linux/of.h>
> -#include <linux/of_gpio.h>
>  
>  #include <linux/iio/iio.h>
>  #include <linux/iio/sysfs.h>
> @@ -34,6 +33,7 @@ enum {
>  struct adf4350_state {
>  	struct spi_device		*spi;
>  	struct regulator		*reg;
> +	struct gpio_desc		*lock_detect_gpiod;
>  	struct adf4350_platform_data	*pdata;
>  	struct clk			*clk;
>  	unsigned long			clkin;
> @@ -61,7 +61,6 @@ static struct adf4350_platform_data default_pdata = {
>  	.r3_user_settings = ADF4350_REG3_12BIT_CLKDIV_MODE(0),
>  	.r4_user_settings = ADF4350_REG4_OUTPUT_PWR(3) |
>  			    ADF4350_REG4_MUTE_TILL_LOCK_EN,
> -	.gpio_lock_detect = -1,
>  };
>  
>  static int adf4350_sync_config(struct adf4350_state *st)
> @@ -317,8 +316,8 @@ static ssize_t adf4350_read(struct iio_dev
> *indio_dev,
>  			(u64)st->fpfd;
>  		do_div(val, st->r1_mod * (1 << st->r4_rf_div_sel));
>  		/* PLL unlocked? return error */
> -		if (gpio_is_valid(st->pdata->gpio_lock_detect))
> -			if (!gpio_get_value(st->pdata->gpio_lock_detect)) {
> +		if (st->lock_detect_gpiod)
> +			if (!gpiod_get_value(st->lock_detect_gpiod)) {
>  				dev_dbg(&st->spi->dev, "PLL un-locked\n");
>  				ret = -EBUSY;
>  			}
> @@ -381,7 +380,6 @@ static struct adf4350_platform_data
> *adf4350_parse_dt(struct device *dev)
>  	struct device_node *np = dev->of_node;
>  	struct adf4350_platform_data *pdata;
>  	unsigned int tmp;
> -	int ret;
>  
>  	pdata = devm_kzalloc(dev, sizeof(*pdata), GFP_KERNEL);
>  	if (!pdata)
> @@ -401,12 +399,6 @@ static struct adf4350_platform_data
> *adf4350_parse_dt(struct device *dev)
>  	of_property_read_u32(np, "adi,reference-div-factor", &tmp);
>  	pdata->ref_div_factor = tmp;
>  
> -	ret = of_get_gpio(np, 0);
> -	if (ret < 0)
> -		pdata->gpio_lock_detect = -1;
> -	else
> -		pdata->gpio_lock_detect = ret;
> -
>  	pdata->ref_doubler_en = of_property_read_bool(np,
>  			"adi,reference-doubler-enable");
>  	pdata->ref_div2_en = of_property_read_bool(np,
> @@ -561,16 +553,10 @@ static int adf4350_probe(struct spi_device *spi)
>  
>  	memset(st->regs_hw, 0xFF, sizeof(st->regs_hw));
>  
> -	if (gpio_is_valid(pdata->gpio_lock_detect)) {
> -		ret = devm_gpio_request(&spi->dev, pdata->gpio_lock_detect,
> -					indio_dev->name);
> -		if (ret) {
> -			dev_err(&spi->dev, "fail to request lock detect
> GPIO-%d",
> -				pdata->gpio_lock_detect);
> -			goto error_disable_reg;
> -		}
> -		gpio_direction_input(pdata->gpio_lock_detect);
> -	}
> +	st->lock_detect_gpiod = devm_gpiod_get_optional(&spi->dev, NULL,

Would it make sense to name the GPIO here?
Maybe name it "lock-detect"?

I do realize that this goes into the realm of changing some default
behavior.
And I am not sure how acceptable this is [generally].

Thanks
Alex

> +							GPIOD_IN);
> +	if (IS_ERR(st->lock_detect_gpiod))
> +		return PTR_ERR(st->lock_detect_gpiod);
>  
>  	if (pdata->power_up_frequency) {
>  		ret = adf4350_set_freq(st, pdata->power_up_frequency);
> diff --git a/include/linux/iio/frequency/adf4350.h
> b/include/linux/iio/frequency/adf4350.h
> index ce9490bfeb89..de45cf2ee1e4 100644
> --- a/include/linux/iio/frequency/adf4350.h
> +++ b/include/linux/iio/frequency/adf4350.h
> @@ -103,9 +103,6 @@
>   * @r2_user_settings:	User defined settings for ADF4350/1
> REGISTER_2.
>   * @r3_user_settings:	User defined settings for ADF4350/1
> REGISTER_3.
>   * @r4_user_settings:	User defined settings for ADF4350/1
> REGISTER_4.
> - * @gpio_lock_detect:	Optional, if set with a valid GPIO number,
> - *			pll lock state is tested upon read.
> - *			If not used - set to -1.
>   */
>  
>  struct adf4350_platform_data {
> @@ -121,7 +118,6 @@ struct adf4350_platform_data {
>  	unsigned		r2_user_settings;
>  	unsigned		r3_user_settings;
>  	unsigned		r4_user_settings;
> -	int			gpio_lock_detect;
>  };
>  
>  #endif /* IIO_PLL_ADF4350_H_ */

  reply	other threads:[~2019-12-02  8:50 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-12-02  8:38 [PATCH] iio: adf4350: Convert to use GPIO descriptor Linus Walleij
2019-12-02  8:50 ` Ardelean, Alexandru [this message]
2019-12-02  9:16   ` Linus Walleij
2019-12-02  9:28     ` Ardelean, Alexandru
2019-12-07  9:45       ` Jonathan Cameron

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=a1be250ce3e9a89e5a352390e16504ce8e017dbe.camel@analog.com \
    --to=alexandru.ardelean@analog.com \
    --cc=Michael.Hennerich@analog.com \
    --cc=jic23@kernel.org \
    --cc=knaack.h@gmx.de \
    --cc=lars@metafoo.de \
    --cc=linus.walleij@linaro.org \
    --cc=linux-iio@vger.kernel.org \
    --cc=pmeerw@pmeerw.net \
    /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.