devicetree.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Jonathan Cameron <jic23-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
To: Hector Palacios <hector.palacios-i7dp0qKlBMg@public.gmane.org>
Cc: Marek Vasut <marex-ynQEQJNshbs@public.gmane.org>,
	"fabio.estevam-KZfg59tc24xl57MIdRCFDg@public.gmane.org"
	<fabio.estevam-KZfg59tc24xl57MIdRCFDg@public.gmane.org>,
	"lars-Qo5EllUWu/uELgA04lAiVw@public.gmane.org"
	<lars-Qo5EllUWu/uELgA04lAiVw@public.gmane.org>,
	"linux-iio-u79uwXL29TY76Z2rM5mHXA@public.gmane.org"
	<linux-iio-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
	"devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org"
	<devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org>,
	"linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org"
	<linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
	"alexandre.belloni-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org"
	<alexandre.belloni-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org>
Subject: Re: [PATCH v2 5/5] iio: mxs-lradc: add write_raw function to modify scale
Date: Fri, 19 Jul 2013 21:23:05 +0100	[thread overview]
Message-ID: <51E9A029.3000008@kernel.org> (raw)
In-Reply-To: <51E967D8.8020001-i7dp0qKlBMg@public.gmane.org>

On 07/19/2013 05:22 PM, Hector Palacios wrote:
> Dear Marek,
> 
> On 07/19/2013 06:17 PM, Marek Vasut wrote:
>>> Here you have three entries per channel:
>>> in_voltageX_raw        -> the sample raw value
>>> in_voltageX_scale    -> the scale to multiply the raw value to get the
>> voltage
>>> in mV in_voltageX_scale_available -> lists the available scales of the
>>> channel
>>>
>>> For example for channel 0:
>>>
>>> # cat in_voltage0_scale_available
>>> 0.451660156 0.903320312    (two scales available, first with divider by two
>>> disabled, second with divider by two enabled)
>>>
>>> # cat in_voltage0_scale
>>> 0.451660156            (divider by two is currently disabled)
>>>
>>> # cat in_voltage0_raw        (shows measured value)
>>> 1000
>>>
>>> If you multiply the value by the scale you get: 1000 * 0.451660156 = 451.6
>>> mV
>>>
>>> # echo 0.903320312 > in_voltage0_scale    (enables the divider by two)
>>
>> Ok, so I have to remember this value : '0.903320312' in case I want to enable
>> divide-by-two functionality?
> 
> No you don't. That's why there is a 'in_voltage_scale_available' that lists the available values.
> 
>> Hmmmm ... why would this interface not work:
>> echo 2 > in_voltage0_scale
>>
>> or
>>
>> echo 1 > in_voltage0_scale
> 
> An easy thing like that is what I first submitted, but it was rejected and I was told to use the scale_available
> descriptor instead, which is the common interface the rest of drivers use.

This comes down to allowing us to have one generic predictable interface (which sometimes
ends up looking uggly!).  The key thing is that if you are outputing using the _raw
sysfs interfaces, the aim is to avoid doing nasty maths in kernel to get to 'standard' units such as mV.

Hence that scale attribute tells you what to apply to the value.  If you just wanted it
to be 1 or 2 then the in_voltage0_raw value would have to be a long and nasty
decimal.  Now we do have the option of in_voltage0_calibscale which would be applied
internally to the value but it really isn't for this purpose (it's for devices with a 'trim'
control) and you'd still have scale set to 0.903320312 or similar. Although they have
meaning obviously, in this case 1 and 2 are little more than 'magic' numbers.

Note that when things are quite, I'm at least in theory working on a cleaner interface
for these 'available' attributes that would also provide in kernel access for IIO consumers.
Basically this will be another callback to get either the 'range' of pseudo continuous
variables or the 'available' set for parameters like this.

Being lazy I'm happy to let someone else clean this corner up if they like? *looks hopeful*

Jonathan
> 
> Best regards,
> -- 
> Hector Palacios

  parent reply	other threads:[~2013-07-19 20:23 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-07-19  9:13 [PATCH v2 0/5] iio: mxs-lradc: add support to optional divider_by_two Hector Palacios
2013-07-19  9:13 ` [PATCH v2 2/5] ARM: dts: add reference voltage property for MXS LRADC Hector Palacios
     [not found]   ` <1374225208-28940-3-git-send-email-hector.palacios-i7dp0qKlBMg@public.gmane.org>
2013-07-19 13:58     ` Marek Vasut
2013-07-19 17:10     ` Alexandre Belloni
2013-07-19  9:13 ` [PATCH v2 4/5] iio: mxs-lradc: add scale_available file to channels Hector Palacios
     [not found]   ` <1374225208-28940-5-git-send-email-hector.palacios-i7dp0qKlBMg@public.gmane.org>
2013-07-19 17:20     ` Alexandre Belloni
     [not found] ` <1374225208-28940-1-git-send-email-hector.palacios-i7dp0qKlBMg@public.gmane.org>
2013-07-19  9:13   ` [PATCH v2 1/5] iio: mxs-lradc: change the realbits to 12 Hector Palacios
     [not found]     ` <1374225208-28940-2-git-send-email-hector.palacios-i7dp0qKlBMg@public.gmane.org>
2013-07-19 13:56       ` Marek Vasut
2013-07-19 17:09       ` Alexandre Belloni
2013-07-19  9:13   ` [PATCH v2 3/5] iio: mxs-lradc: add scale attribute to channels Hector Palacios
     [not found]     ` <1374225208-28940-4-git-send-email-hector.palacios-i7dp0qKlBMg@public.gmane.org>
2013-07-19 14:30       ` Marek Vasut
     [not found]         ` <201307191630.17149.marex-ynQEQJNshbs@public.gmane.org>
2013-07-19 15:44           ` Hector Palacios
     [not found]             ` <51E95EF1.4040503-i7dp0qKlBMg@public.gmane.org>
2013-07-19 16:14               ` Marek Vasut
     [not found]                 ` <201307191814.15491.marex-ynQEQJNshbs@public.gmane.org>
2013-07-22  7:22                   ` Hector Palacios
     [not found]                     ` <51ECDD9F.4080506-i7dp0qKlBMg@public.gmane.org>
2013-07-22  7:42                       ` Marek Vasut
     [not found]                         ` <201307220942.08990.marex-ynQEQJNshbs@public.gmane.org>
2013-07-22  7:46                           ` Hector Palacios
2013-07-22  7:58                             ` Marek Vasut
2013-07-19 17:06       ` Alexandre Belloni
     [not found]         ` <51E97201.4010508-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org>
2013-07-22  7:26           ` Hector Palacios
2013-07-19  9:13   ` [PATCH v2 5/5] iio: mxs-lradc: add write_raw function to modify scale Hector Palacios
     [not found]     ` <1374225208-28940-6-git-send-email-hector.palacios-i7dp0qKlBMg@public.gmane.org>
2013-07-19 14:39       ` Marek Vasut
     [not found]         ` <201307191639.01240.marex-ynQEQJNshbs@public.gmane.org>
2013-07-19 15:31           ` Hector Palacios
     [not found]             ` <51E95BEC.5080703-i7dp0qKlBMg@public.gmane.org>
2013-07-19 16:17               ` Marek Vasut
2013-07-19 16:22                 ` Hector Palacios
     [not found]                   ` <51E967D8.8020001-i7dp0qKlBMg@public.gmane.org>
2013-07-19 20:23                     ` Jonathan Cameron [this message]
     [not found]                       ` <51E9A029.3000008-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
2013-07-20 19:00                         ` Marek Vasut
2013-07-19 20:32               ` Jonathan Cameron
     [not found]                 ` <51E9A240.3000108-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
2013-07-22  8:01                   ` Hector Palacios
2013-07-19 17:21       ` Alexandre Belloni

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=51E9A029.3000008@kernel.org \
    --to=jic23-dgejt+ai2ygdnm+yrofe0a@public.gmane.org \
    --cc=alexandre.belloni-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org \
    --cc=devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org \
    --cc=fabio.estevam-KZfg59tc24xl57MIdRCFDg@public.gmane.org \
    --cc=hector.palacios-i7dp0qKlBMg@public.gmane.org \
    --cc=lars-Qo5EllUWu/uELgA04lAiVw@public.gmane.org \
    --cc=linux-iio-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=marex-ynQEQJNshbs@public.gmane.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;
as well as URLs for NNTP newsgroup(s).