All of lore.kernel.org
 help / color / mirror / Atom feed
From: Marek Vasut <marex@denx.de>
To: Jonathan Cameron <jic23@kernel.org>
Cc: Hector Palacios <hector.palacios@digi.com>,
	"linux-iio@vger.kernel.org" <linux-iio@vger.kernel.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"devicetree-discuss@lists.ozlabs.org"
	<devicetree-discuss@lists.ozlabs.org>,
	"alexandre.belloni@free-electrons.com"
	<alexandre.belloni@free-electrons.com>,
	"lars@metafoo.de" <lars@metafoo.de>,
	"fabio.estevam@freescale.com" <fabio.estevam@freescale.com>
Subject: Re: [PATCH v2 5/5] iio: mxs-lradc: add write_raw function to modify scale
Date: Sat, 20 Jul 2013 21:00:09 +0200	[thread overview]
Message-ID: <201307202100.09749.marex@denx.de> (raw)
In-Reply-To: <51E9A029.3000008@kernel.org>

Dear Jonathan Cameron,

> 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.

OK, understood.

> 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.

Thanks for the explanation!

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

Please don't look at me, I already am fully loaded with fixing my mess all 
around ;-/

Best regards,
Marek Vasut

WARNING: multiple messages have this Message-ID (diff)
From: Marek Vasut <marex-ynQEQJNshbs@public.gmane.org>
To: Jonathan Cameron <jic23-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
Cc: Hector Palacios <hector.palacios-i7dp0qKlBMg@public.gmane.org>,
	"linux-iio-u79uwXL29TY76Z2rM5mHXA@public.gmane.org"
	<linux-iio-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
	"linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org"
	<linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
	"devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org"
	<devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org>,
	"alexandre.belloni-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org"
	<alexandre.belloni-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org>,
	"lars-Qo5EllUWu/uELgA04lAiVw@public.gmane.org"
	<lars-Qo5EllUWu/uELgA04lAiVw@public.gmane.org>,
	"fabio.estevam-KZfg59tc24xl57MIdRCFDg@public.gmane.org"
	<fabio.estevam-KZfg59tc24xl57MIdRCFDg@public.gmane.org>
Subject: Re: [PATCH v2 5/5] iio: mxs-lradc: add write_raw function to modify scale
Date: Sat, 20 Jul 2013 21:00:09 +0200	[thread overview]
Message-ID: <201307202100.09749.marex@denx.de> (raw)
In-Reply-To: <51E9A029.3000008-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>

Dear Jonathan Cameron,

> 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.

OK, understood.

> 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.

Thanks for the explanation!

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

Please don't look at me, I already am fully loaded with fixing my mess all 
around ;-/

Best regards,
Marek Vasut

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

Thread overview: 56+ 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 ` Hector Palacios
2013-07-19  9:13 ` [PATCH v2 1/5] iio: mxs-lradc: change the realbits to 12 Hector Palacios
2013-07-19  9:13   ` Hector Palacios
2013-07-19 13:56   ` Marek Vasut
2013-07-19 13:56     ` Marek Vasut
2013-07-19 17:09   ` Alexandre Belloni
2013-07-19 17:09     ` Alexandre Belloni
2013-07-19  9:13 ` [PATCH v2 2/5] ARM: dts: add reference voltage property for MXS LRADC Hector Palacios
2013-07-19  9:13   ` Hector Palacios
2013-07-19 13:58   ` Marek Vasut
2013-07-19 13:58     ` Marek Vasut
2013-07-19 17:10   ` Alexandre Belloni
2013-07-19 17:10     ` Alexandre Belloni
2013-07-19  9:13 ` [PATCH v2 3/5] iio: mxs-lradc: add scale attribute to channels Hector Palacios
2013-07-19  9:13   ` Hector Palacios
2013-07-19 14:30   ` Marek Vasut
2013-07-19 14:30     ` Marek Vasut
2013-07-19 15:44     ` Hector Palacios
2013-07-19 15:44       ` Hector Palacios
2013-07-19 16:14       ` Marek Vasut
2013-07-19 16:14         ` Marek Vasut
2013-07-22  7:22         ` Hector Palacios
2013-07-22  7:22           ` Hector Palacios
2013-07-22  7:42           ` Marek Vasut
2013-07-22  7:42             ` Marek Vasut
2013-07-22  7:46             ` Hector Palacios
2013-07-22  7:46               ` Hector Palacios
2013-07-22  7:58               ` Marek Vasut
2013-07-19 17:06   ` Alexandre Belloni
2013-07-19 17:06     ` Alexandre Belloni
2013-07-22  7:26     ` Hector Palacios
2013-07-22  7:26       ` Hector Palacios
2013-07-19  9:13 ` [PATCH v2 4/5] iio: mxs-lradc: add scale_available file " Hector Palacios
2013-07-19  9:13   ` Hector Palacios
2013-07-19 17:20   ` Alexandre Belloni
2013-07-19 17:20     ` Alexandre Belloni
2013-07-19  9:13 ` [PATCH v2 5/5] iio: mxs-lradc: add write_raw function to modify scale Hector Palacios
2013-07-19  9:13   ` Hector Palacios
2013-07-19 14:39   ` Marek Vasut
2013-07-19 14:39     ` Marek Vasut
2013-07-19 15:31     ` Hector Palacios
2013-07-19 15:31       ` Hector Palacios
2013-07-19 16:17       ` Marek Vasut
2013-07-19 16:17         ` Marek Vasut
2013-07-19 16:22         ` Hector Palacios
2013-07-19 20:23           ` Jonathan Cameron
2013-07-19 20:23             ` Jonathan Cameron
2013-07-20 19:00             ` Marek Vasut [this message]
2013-07-20 19:00               ` Marek Vasut
2013-07-19 20:32       ` Jonathan Cameron
2013-07-19 20:32         ` Jonathan Cameron
2013-07-22  8:01         ` Hector Palacios
2013-07-22  8:01           ` Hector Palacios
2013-07-19 17:21   ` Alexandre Belloni
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=201307202100.09749.marex@denx.de \
    --to=marex@denx.de \
    --cc=alexandre.belloni@free-electrons.com \
    --cc=devicetree-discuss@lists.ozlabs.org \
    --cc=fabio.estevam@freescale.com \
    --cc=hector.palacios@digi.com \
    --cc=jic23@kernel.org \
    --cc=lars@metafoo.de \
    --cc=linux-iio@vger.kernel.org \
    --cc=linux-kernel@vger.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 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.