From: Jonathan Cameron <jic23@kernel.org>
To: Nicola Corna <nicola@corna.info>,
Hartmut Knaack <knaack.h@gmx.de>,
Lars-Peter Clausen <lars@metafoo.de>,
Peter Meerwald <pmeerw@pmeerw.net>
Cc: linux-iio@vger.kernel.org
Subject: Re: [PATCH 3/3] iio:humidity:si7020: added processed data
Date: Sat, 22 Aug 2015 18:21:55 +0100 [thread overview]
Message-ID: <55D8AFB3.6010603@kernel.org> (raw)
In-Reply-To: <1440079909-1337-3-git-send-email-nicola@corna.info>
On 20/08/15 15:11, Nicola Corna wrote:
> The value given by the Si7013/20/21 modules needs a conversion using a
> small expression in order to obtain the measurement in °C or %RH. This
> patch adds the computation inside the si7020 module, allowing the user to
> obtain the measurement in m°C and 10E-3%RH without any additional
> calculation.
>
> Signed-off-by: Nicola Corna <nicola@corna.info>
What is the benefit in doing this? Userspace already has all the numbers
to calculate the value? The calculation is trivial to do in userspace.
The basic principle of IIO is to do as little as possible in the driver
and to leave such calculations to userspace which has the benefit of
easy access to floating point calculations if desired.
So sorry, not taking this one.
Jonathan
> ---
> drivers/iio/humidity/si7020.c | 18 ++++++++++++++++--
> 1 file changed, 16 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/iio/humidity/si7020.c b/drivers/iio/humidity/si7020.c
> index a8bad04..c534706 100644
> --- a/drivers/iio/humidity/si7020.c
> +++ b/drivers/iio/humidity/si7020.c
> @@ -70,6 +70,7 @@ static int si7020_read_raw(struct iio_dev *indio_dev,
>
> switch (mask) {
> case IIO_CHAN_INFO_RAW:
> + case IIO_CHAN_INFO_PROCESSED:
> if (holdmode) {
> ret = i2c_smbus_read_word_data(*client,
> chan->type == IIO_TEMP ?
> @@ -108,6 +109,17 @@ static int si7020_read_raw(struct iio_dev *indio_dev,
> else if (*val > 55575) /* 100%RH */
> *val = 55575;
> }
> + if (mask == IIO_CHAN_INFO_PROCESSED) {
> + /*
> + * To avoid overflows the fractions can be simplified:
> + * temperature --> 175720 / (65536 >> 2) = 21965 / 2048
> + * humidity --> 125000 / (65536 >> 2) = 15625 / 2048
> + */
> + if (chan->type == IIO_TEMP)
> + *val = (*val - 4368) * 21965 / 2048;
> + else
> + *val = (*val - 768) * 15625 / 2048;
> + }
> return IIO_VAL_INT;
> case IIO_CHAN_INFO_SCALE:
> if (chan->type == IIO_TEMP)
> @@ -142,12 +154,14 @@ static const struct iio_chan_spec si7020_channels[] = {
> {
> .type = IIO_HUMIDITYRELATIVE,
> .info_mask_separate = BIT(IIO_CHAN_INFO_RAW) |
> - BIT(IIO_CHAN_INFO_SCALE) | BIT(IIO_CHAN_INFO_OFFSET),
> + BIT(IIO_CHAN_INFO_SCALE) | BIT(IIO_CHAN_INFO_OFFSET) |
> + BIT(IIO_CHAN_INFO_PROCESSED),
> },
> {
> .type = IIO_TEMP,
> .info_mask_separate = BIT(IIO_CHAN_INFO_RAW) |
> - BIT(IIO_CHAN_INFO_SCALE) | BIT(IIO_CHAN_INFO_OFFSET),
> + BIT(IIO_CHAN_INFO_SCALE) | BIT(IIO_CHAN_INFO_OFFSET) |
> + BIT(IIO_CHAN_INFO_PROCESSED),
> }
> };
>
>
next prev parent reply other threads:[~2015-08-22 17:21 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-08-20 14:11 [PATCH 1/3] iio:humidity:si7020: replaced bitmask on humidity values with range check Nicola Corna
2015-08-20 14:11 ` [PATCH 2/3] iio:humidity:si7020: added No Hold read mode Nicola Corna
2015-08-22 14:00 ` Jonathan Cameron
2015-08-23 9:50 ` Nicola Corna
2015-08-27 14:40 ` Jean Delvare
2015-08-27 16:12 ` Jonathan Cameron
2015-08-28 7:32 ` Nicola Corna
2015-08-28 10:00 ` Jean Delvare
2015-08-20 14:11 ` [PATCH 3/3] iio:humidity:si7020: added processed data Nicola Corna
2015-08-21 7:34 ` Crt Mori
2015-08-22 17:21 ` Jonathan Cameron [this message]
2015-08-22 17:50 ` Nicola Corna
2015-08-20 20:49 ` [PATCH 1/3] iio:humidity:si7020: replaced bitmask on humidity values with range check Hartmut Knaack
2015-08-20 21:57 ` Nicola Corna
2015-08-21 8:34 ` Hartmut Knaack
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=55D8AFB3.6010603@kernel.org \
--to=jic23@kernel.org \
--cc=knaack.h@gmx.de \
--cc=lars@metafoo.de \
--cc=linux-iio@vger.kernel.org \
--cc=nicola@corna.info \
--cc=pmeerw@pmeerw.net \
/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).