All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jonathan Cameron <jic23@kernel.org>
To: Matt Ranostay <matt.ranostay@konsulko.com>
Cc: linux-iio@vger.kernel.org
Subject: Re: [PATCH v2] iio: potentiometer: tpl0102: add IIO_AVAIL_RANGE support
Date: Sun, 25 Nov 2018 14:35:25 +0000	[thread overview]
Message-ID: <20181125143525.42287818@archlinux> (raw)
In-Reply-To: <20181028204354.9561-1-matt.ranostay@konsulko.com>

On Sun, 28 Oct 2018 13:43:54 -0700
Matt Ranostay <matt.ranostay@konsulko.com> wrote:

> Report the step range of the respective potentiometers that are
> possible to userspace.
> 
> Signed-off-by: Matt Ranostay <matt.ranostay@konsulko.com>
Sorry, I lost this one completely it seems.

I had actually applied it but forgot to say so for some reason.
Jonathan
> ---
> 
> Changes from v1:
> * Made commit message more clear
> * Add missing .info_mask_separate_available channel defines
> 
>  drivers/iio/potentiometer/tpl0102.c | 34 +++++++++++++++++++++++------
>  1 file changed, 27 insertions(+), 7 deletions(-)
> 
> diff --git a/drivers/iio/potentiometer/tpl0102.c b/drivers/iio/potentiometer/tpl0102.c
> index 8e8adabe672b..a0a07e47f13f 100644
> --- a/drivers/iio/potentiometer/tpl0102.c
> +++ b/drivers/iio/potentiometer/tpl0102.c
> @@ -15,7 +15,7 @@
>  
>  struct tpl0102_cfg {
>  	int wipers;
> -	int max_pos;
> +	int avail[3];
>  	int kohms;
>  };
>  
> @@ -28,11 +28,11 @@ enum tpl0102_type {
>  
>  static const struct tpl0102_cfg tpl0102_cfg[] = {
>  	/* on-semiconductor parts */
> -	[CAT5140_503] = { .wipers = 1, .max_pos = 256, .kohms = 50, },
> -	[CAT5140_104] = { .wipers = 1, .max_pos = 256, .kohms = 100, },
> +	[CAT5140_503] = { .wipers = 1, .avail = { 0, 1, 255 }, .kohms = 50, },
> +	[CAT5140_104] = { .wipers = 1, .avail = { 0, 1, 255 }, .kohms = 100, },
>  	/* ti parts */
> -	[TPL0102_104] = { .wipers = 2, .max_pos = 256, .kohms = 100 },
> -	[TPL0401_103] = { .wipers = 1, .max_pos = 128, .kohms = 10, },
> +	[TPL0102_104] = { .wipers = 2, .avail = { 0, 1, 255 }, .kohms = 100 },
> +	[TPL0401_103] = { .wipers = 1, .avail = { 0, 1, 127 }, .kohms = 10, },
>  };
>  
>  struct tpl0102_data {
> @@ -52,6 +52,7 @@ static const struct regmap_config tpl0102_regmap_config = {
>  	.channel = (ch),					\
>  	.info_mask_separate = BIT(IIO_CHAN_INFO_RAW),		\
>  	.info_mask_shared_by_type = BIT(IIO_CHAN_INFO_SCALE),	\
> +	.info_mask_separate_available = BIT(IIO_CHAN_INFO_RAW),	\
>  }
>  
>  static const struct iio_chan_spec tpl0102_channels[] = {
> @@ -73,13 +74,31 @@ static int tpl0102_read_raw(struct iio_dev *indio_dev,
>  	}
>  	case IIO_CHAN_INFO_SCALE:
>  		*val = 1000 * data->cfg->kohms;
> -		*val2 = data->cfg->max_pos;
> +		*val2 = data->cfg->avail[2] + 1;
>  		return IIO_VAL_FRACTIONAL;
>  	}
>  
>  	return -EINVAL;
>  }
>  
> +static int tpl0102_read_avail(struct iio_dev *indio_dev,
> +			      struct iio_chan_spec const *chan,
> +			      const int **vals, int *type, int *length,
> +			      long mask)
> +{
> +	struct tpl0102_data *data = iio_priv(indio_dev);
> +
> +	switch (mask) {
> +	case IIO_CHAN_INFO_RAW:
> +		*length = ARRAY_SIZE(data->cfg->avail);
> +		*vals = data->cfg->avail;
> +		*type = IIO_VAL_INT;
> +		return IIO_AVAIL_RANGE;
> +	}
> +
> +	return -EINVAL;
> +}
> +
>  static int tpl0102_write_raw(struct iio_dev *indio_dev,
>  			     struct iio_chan_spec const *chan,
>  			     int val, int val2, long mask)
> @@ -89,7 +108,7 @@ static int tpl0102_write_raw(struct iio_dev *indio_dev,
>  	if (mask != IIO_CHAN_INFO_RAW)
>  		return -EINVAL;
>  
> -	if (val >= data->cfg->max_pos || val < 0)
> +	if (val > data->cfg->avail[2] || val < 0)
>  		return -EINVAL;
>  
>  	return regmap_write(data->regmap, chan->channel, val);
> @@ -97,6 +116,7 @@ static int tpl0102_write_raw(struct iio_dev *indio_dev,
>  
>  static const struct iio_info tpl0102_info = {
>  	.read_raw = tpl0102_read_raw,
> +	.read_avail = tpl0102_read_avail,
>  	.write_raw = tpl0102_write_raw,
>  };
>  

      reply	other threads:[~2018-11-26  1:26 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-10-28 20:43 [PATCH v2] iio: potentiometer: tpl0102: add IIO_AVAIL_RANGE support Matt Ranostay
2018-11-25 14:35 ` Jonathan Cameron [this message]

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=20181125143525.42287818@archlinux \
    --to=jic23@kernel.org \
    --cc=linux-iio@vger.kernel.org \
    --cc=matt.ranostay@konsulko.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.