All of lore.kernel.org
 help / color / mirror / Atom feed
From: Hector Palacios <hector.palacios@digi.com>
To: Lars-Peter Clausen <lars@metafoo.de>
Cc: "linux-iio@vger.kernel.org" <linux-iio@vger.kernel.org>,
	"marex@denx.de" <marex@denx.de>,
	"alexandre.belloni@free-electrons.com"
	<alexandre.belloni@free-electrons.com>,
	"fabio.estevam@freescale.com" <fabio.estevam@freescale.com>
Subject: Re: [PATCH RFC] iio: mxs-lradc: add scaling to enable divide_by_two operation
Date: Wed, 3 Jul 2013 18:39:10 +0200	[thread overview]
Message-ID: <51D453AE.3020005@digi.com> (raw)
In-Reply-To: <51D400FF.5060803@metafoo.de>

Dear Lars,

On 07/03/2013 12:46 PM, Lars-Peter Clausen wrote:
> The scale attribute reports the scale of the raw value. To gain the value of
> the result in mV you have to multiply the raw attribute with the scale
> attribute. The scale attribute does not return the result of a conversion with
> a scale different applied.

Thank you for the guidance, I misunderstood the whole thing.

> I suggest you implement this in two steps. First implement the scale property
> for all channels. Use a LUT for each channel's fullscale value (in mV) and
> implement reading the scale like this.
>
> case IIO_CHAN_INFO_SCALE:
> *val = lut[chan->channel];
> *val2 = chan->scan_type.realbits;
> return IIO_VAL_FRACTIONAL_LOG2;
>
> The next step is to make the scale modifiable for channels which support this.

I'm sorry, it's the first time I work with an iio driver and I'm afraid I don't 
understand this.
Let's say the fullscale value for channel 0 is 1.85V by default (when divide_by_two is 
disabled) and 3.7V (when enabled).

The channel's realbits is currently set to 18, because (although the ADC resolution is 
12 bits) the device can read several samples and return an accumulated value in 18 bits.

Now, considering the default case where 1.85V is the max ref voltage and considering 
that the driver only reads one sample during the raw_read operation (12 bits), what 
value should a read of 'scale' return?

	scale = Vref_mv / ((1 << 12) - 1) = 1850 /4095 = 0.45177045 ?

That is, the value to multiply the raw value to get the voltage in mV?
So that if reading the 'raw' returns say 425 and reading scale returns 0.45177 the 
measured voltage is 425 * 0.45177 = 192mV?


Then let's say I have implemented a function to modify the scale (which should 
eventually allow me to enable/disable the by two divisor). What is the user supposed 
to write to the 'scale'? Is he supposed to supply a decimal number like 0.45177 * 2 = 
0.903? This would be pretty odd.
Should I create a table instead so that writing a 0 means divisor disabled and writing 
1 means divisor enabled, for example?

Does the iio provide any descriptor that automatically shows the value in mV (already 
converted)?

Thank you for your help.
Best regards,
--
Hector Palacios

  reply	other threads:[~2013-07-03 16:41 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-07-03 10:06 [PATCH RFC] iio: mxs-lradc: add scaling to enable divide_by_two operation Hector Palacios
2013-07-03 10:25 ` Alexandre Belloni
2013-07-03 10:39   ` Hector Palacios
2013-07-03 10:46 ` Lars-Peter Clausen
2013-07-03 16:39   ` Hector Palacios [this message]
2013-07-03 16:54     ` Alexandre Belloni
2013-07-03 17:01       ` Lars-Peter Clausen
2013-07-04  8:58       ` Hector Palacios
2013-07-04  9:10         ` Lars-Peter Clausen
2013-07-04  9:17         ` Alexandre Belloni
2013-07-04 14:50       ` Hector Palacios
2013-07-03 11:25 ` Marek Vasut

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=51D453AE.3020005@digi.com \
    --to=hector.palacios@digi.com \
    --cc=alexandre.belloni@free-electrons.com \
    --cc=fabio.estevam@freescale.com \
    --cc=lars@metafoo.de \
    --cc=linux-iio@vger.kernel.org \
    --cc=marex@denx.de \
    /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.