From: Hector Palacios <hector.palacios@digi.com>
To: Marek Vasut <marex@denx.de>
Cc: "linux-iio@vger.kernel.org" <linux-iio@vger.kernel.org>,
"alexandre.belloni@free-electrons.com"
<alexandre.belloni@free-electrons.com>,
"lars@metafoo.de" <lars@metafoo.de>,
"jic23@kernel.org" <jic23@kernel.org>,
"fabio.estevam@freescale.com" <fabio.estevam@freescale.com>
Subject: Re: [PATCH 3/4] iio: mxs-lradc: add scale_available file to channels
Date: Mon, 8 Jul 2013 10:51:47 +0200 [thread overview]
Message-ID: <51DA7DA3.3050207@digi.com> (raw)
In-Reply-To: <201307051346.03825.marex@denx.de>
Dear Marek,
On 07/05/2013 01:46 PM, Marek Vasut wrote:
[...]
>> + /* Populate available ADC input ranges */
>> + for (i = 0; i < LRADC_MAX_TOTAL_CHANS; i++) {
>> + for (s = 0; s < ARRAY_SIZE(lradc->scale_avail[i]); s++) {
>> + /*
>> + * [0] = optional divider by two disabled (default)
>> + * [1] = optional divider by two enabled
>> + *
>> + * The scale is calculated by doing:
>> + * Vref >> (realbits - s)
>> + * which multiplies by two on the second component
>> + * of the array.
>> + */
>> + scale_uv = ((u64)lradc->vref_mv[i] * 100000000) >>
>> + (iio->channels[i].scan_type.realbits - s);
>
> Given that you do have a table of values already, can this table not be computed
> at compile-time as well?
Yes and no. On one hand, it would be a little redundant and ugly to have two tables
(one computed out of the other). Considering there are two CPUs, it would force you to
maintain four tables.
On the other hand the formula uses the 'realbits' (yeah, well it won't change, but still).
I copied the code from ad7192.c. The operation is only done during probe() so I don't
think the time penalty is worth the effort of having another table.
>> + lradc->scale_avail[i][s][1] = do_div(scale_uv,
>> + 100000000) * 10;
>> + lradc->scale_avail[i][s][0] = scale_uv;
>
> Is this correct? Why is one set to "scale_uv" and the other set to scale_uv /
> 100000000 ? Maybe I just don't understand what each of the fields in the array
> stand for.
The [0] component is the integer (volts) part of the scale. The [1] component is the
nanoV part.
To be honest, after some unsuccessful tries of doing my own math here, I just copied
the one from ad7192.c. It is a bit unintelligible because it is doing 64bit math
operations, but it works. Remember do_div() modifies the first parameter (scale_uv)
during the operation, apart from returning a value. That may have fooled you.
Best regards,
--
Hector Palacios
next prev parent reply other threads:[~2013-07-08 8:51 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-07-05 8:30 [PATCH 0/4] iio: mxs-lradc: add support to optional divider_by_two Hector Palacios
2013-07-05 8:30 ` [PATCH 1/4] iio: mxs-lradc: change the realbits to 12 Hector Palacios
2013-07-05 11:37 ` Marek Vasut
2013-07-05 12:40 ` Hector Palacios
2013-07-05 13:10 ` Marek Vasut
2013-07-05 14:35 ` Hector Palacios
2013-07-05 17:17 ` Lars-Peter Clausen
2013-07-06 10:08 ` Jonathan Cameron
2013-07-06 10:13 ` Marek Vasut
2013-07-10 10:47 ` Hector Palacios
2013-07-10 11:49 ` Marek Vasut
2013-07-10 14:45 ` Hector Palacios
2013-07-10 15:22 ` Marek Vasut
2013-07-05 8:30 ` [PATCH 2/4] iio: mxs-lradc: add scale attribute to channels Hector Palacios
2013-07-05 10:32 ` Lars-Peter Clausen
2013-07-05 15:49 ` Hector Palacios
2013-07-05 16:56 ` Marek Vasut
2013-07-05 11:41 ` Marek Vasut
2013-07-05 16:42 ` Hector Palacios
2013-07-05 16:59 ` Marek Vasut
2013-07-05 17:08 ` Lars-Peter Clausen
2013-07-05 17:39 ` Marek Vasut
2013-07-06 9:59 ` Jonathan Cameron
2013-07-05 8:30 ` [PATCH 3/4] iio: mxs-lradc: add scale_available file " Hector Palacios
2013-07-05 10:40 ` Lars-Peter Clausen
2013-07-08 8:27 ` Hector Palacios
2013-07-08 8:42 ` Lars-Peter Clausen
2013-07-05 11:46 ` Marek Vasut
2013-07-08 8:51 ` Hector Palacios [this message]
2013-07-08 13:05 ` Marek Vasut
2013-07-05 8:30 ` [PATCH 4/4] iio: mxs-lradc: add write_raw function to modify scale Hector Palacios
2013-07-05 10:41 ` Lars-Peter Clausen
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=51DA7DA3.3050207@digi.com \
--to=hector.palacios@digi.com \
--cc=alexandre.belloni@free-electrons.com \
--cc=fabio.estevam@freescale.com \
--cc=jic23@kernel.org \
--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 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).