public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Jonathan Cameron <Jonathan.Cameron@huawei.com>
To: Peter Rosin <peda@axentia.se>
Cc: Jonathan Cameron <jic23@kernel.org>,
	<linux-kernel@vger.kernel.org>, Hartmut Knaack <knaack.h@gmx.de>,
	Lars-Peter Clausen <lars@metafoo.de>,
	"Peter Meerwald-Stadler" <pmeerw@pmeerw.net>,
	Rob Herring <robh+dt@kernel.org>,
	"Mark Rutland" <mark.rutland@arm.com>,
	"David S. Miller" <davem@davemloft.net>,
	Mauro Carvalho Chehab <mchehab@kernel.org>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Linus Walleij <linus.walleij@linaro.org>,
	"Randy Dunlap" <rdunlap@infradead.org>,
	<linux-iio@vger.kernel.org>, <devicetree@vger.kernel.org>
Subject: Re: [PATCH 3/3] iio: wrapper: unit-converter: new driver
Date: Tue, 27 Mar 2018 14:22:56 +0100	[thread overview]
Message-ID: <20180327142256.00003056@huawei.com> (raw)
In-Reply-To: <1e950fde-d3d9-ca9c-1055-7ab8fc57fc4a@axentia.se>

On Tue, 27 Mar 2018 09:42:40 +0200
Peter Rosin <peda@axentia.se> wrote:

> On 2018-03-24 15:03, Jonathan Cameron wrote:
> > On Mon, 19 Mar 2018 18:02:46 +0100
> > Peter Rosin <peda@axentia.se> wrote:
> >   
> >> If an ADC channel measures the midpoint of a voltage divider, the
> >> interesting voltage is often the voltage over the full resistance.
> >> E.g. if the full voltage it too big for the ADC to handle.
> >> Likewise, if an ADC channel measures the voltage across a resistor,
> >> the interesting value is often the current through the resistor.
> >>
> >> This driver solves both problems by allowing to linearly scale a channel
> >> and by allowing changes to the type of the channel. Or both.
> >>
> >> Signed-off-by: Peter Rosin <peda@axentia.se>  
> > A few comments inline, but basically the code looks fine, just questions
> > around naming and bindings to answer.
> > 
> > Thanks,
> > 
> > Jonathan
> >   
> 
> *snip*
> 
> >> +static int unit_converter_write_raw(struct iio_dev *indio_dev,
> >> +				    struct iio_chan_spec const *chan,
> >> +				    int val, int val2, long mask)
> >> +{
> >> +	struct unit_converter *uc = iio_priv(indio_dev);
> >> +
> >> +	switch (mask) {
> >> +	case IIO_CHAN_INFO_RAW:
> >> +		return iio_write_channel_raw(uc->parent, val);  
> > Talk me through the logic of having this...  Supporting a DAC?
> > Bindings don't talk about that possibility...  
> 
> There's no logic at all, and I don't need it. It's just leftovers,
> should I remove it?
> 
> >> +	}
> >> +
> >> +	return -EINVAL;
> >> +}
> >> +  
> 
> *snip*
> 
> >> +static int unit_converter_configure_channel(struct device *dev,
> >> +					    struct unit_converter *uc,
> >> +					    enum iio_chan_type type)
> >> +{
> >> +	struct iio_chan_spec *chan = &uc->chan;
> >> +	struct iio_chan_spec const *pchan = uc->parent->channel;
> >> +	int ret;
> >> +
> >> +	chan->indexed = 1;
> >> +	chan->output = pchan->output;
> >> +	chan->ext_info = uc->ext_info;
> >> +
> >> +	if (type == -1) {
> >> +		ret = iio_get_channel_type(uc->parent, &type);
> >> +		if (ret < 0) {
> >> +			dev_err(dev, "failed to get parent channel type\n");
> >> +			return ret;
> >> +		}
> >> +	}
> >> +	chan->type = type;
> >> +
> >> +	if (iio_channel_has_info(pchan, IIO_CHAN_INFO_RAW))
> >> +		chan->info_mask_separate |= BIT(IIO_CHAN_INFO_RAW);  
> > if the parent doesn't support RAW, is there a lot of point in carrying on?  
> 
> Nope, better to error out I suppose. But I'm not familiar with channels
> without RAW, what alternatives are there anyway?

Potentially _PROCESSED though that will need somewhat different handling.
A nasty trick for that might be to map it to RAW and then have the SCALE
reflect the divider circuit scale only.

It's perfectly possible to have channels with neither _RAW or _PROCESSED
but I suspect we don't care about them here.

There might be an application that needs to do buffered data flows in the
long run, but we can figure out how to do that when one exists.

It won't be a huge amount more than you have here, though we might need
a trigger pass through as well to allow you to set the trigger for
the front end and having it automatically applied to the backend.

Jonathan
> 
> >> +	if (iio_channel_has_info(pchan, IIO_CHAN_INFO_SCALE))
> >> +		chan->info_mask_separate |= BIT(IIO_CHAN_INFO_SCALE);
> >> +
> >> +	if (iio_channel_has_available(pchan, IIO_CHAN_INFO_RAW))
> >> +		chan->info_mask_separate_available |= BIT(IIO_CHAN_INFO_RAW);
> >> +
> >> +	chan->channel = 0;
> >> +
> >> +	return 0;
> >> +}  
> --
> To unsubscribe from this list: send the line "unsubscribe linux-iio" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

  reply	other threads:[~2018-03-27 13:22 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-03-19 17:02 [PATCH 0/3] iio: add unit converter Peter Rosin
2018-03-19 17:02 ` [PATCH 1/3] iio: rename the multiplexer category to wrapper Peter Rosin
2018-03-19 18:36   ` Randy Dunlap
2018-03-19 17:02 ` [PATCH 2/3] dt-bindings: iio: wrapper: add io-channel-unit-converter Peter Rosin
2018-03-24 13:53   ` Jonathan Cameron
2018-03-24 14:06     ` Jonathan Cameron
2018-03-26 22:23   ` Rob Herring
2018-03-27  8:01     ` Peter Rosin
2018-03-28  2:29       ` Phil Reid
2018-03-29 13:55       ` Rob Herring
2018-03-30 22:38         ` Peter Rosin
2018-03-19 17:02 ` [PATCH 3/3] iio: wrapper: unit-converter: new driver Peter Rosin
2018-03-24 14:03   ` Jonathan Cameron
2018-03-27  7:42     ` Peter Rosin
2018-03-27 13:22       ` Jonathan Cameron [this message]
2018-03-27 13:32         ` Peter Rosin
2018-03-30  9:24           ` Jonathan Cameron
2018-03-23 13:14 ` [PATCH 0/3] iio: add unit converter Jonathan Cameron
2018-03-23 13:59   ` Peter Rosin
2018-03-24 13:48     ` Jonathan Cameron
2018-03-24 16:34       ` Linus Walleij
2018-03-24 17:47         ` 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=20180327142256.00003056@huawei.com \
    --to=jonathan.cameron@huawei.com \
    --cc=davem@davemloft.net \
    --cc=devicetree@vger.kernel.org \
    --cc=gregkh@linuxfoundation.org \
    --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=linux-kernel@vger.kernel.org \
    --cc=mark.rutland@arm.com \
    --cc=mchehab@kernel.org \
    --cc=peda@axentia.se \
    --cc=pmeerw@pmeerw.net \
    --cc=rdunlap@infradead.org \
    --cc=robh+dt@kernel.org \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox