linux-iio.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Jonathan Cameron <jic23@kernel.org>
To: Crt Mori <cmo@melexis.com>, linux-iio@vger.kernel.org
Subject: Re: [PATCH] iio: mlx90614: Replace offset sign and define magic numbers
Date: Sun, 05 Jul 2015 13:51:35 +0100	[thread overview]
Message-ID: <55992857.9030702@kernel.org> (raw)
In-Reply-To: <CAKv63utcGsuqOvdG0iEQntomBY0ub0ze++tT=mzx2K3CCURsZg@mail.gmail.com>

On 29/06/15 15:43, Crt Mori wrote:
>>> Translates the magic constant numbers to named macros and add some
>>> additional comments about their meaning. Also changed the offset to
>>> negative as usual equation is: (raw + offset)*scale and in this
>>> case offset should be negative (as we deduct 273.15 Kelvin to get
>>> temperature in Celsius)..
> 
>> On 29 June 2015 at 14:19, Peter Meerwald <pmeerw@pmeerw.net> wrote:
>> looks good; strictly, this patch is
>> (a) a bugfix (the offset should be negative),
>> (b) cleanup to replace constants by macros.
> 
> I agree, but other things are more design than a proper change.
True, but the fix may well go via a faster route and be backported
to older kernels.  The other stuff is good, but we can take our time
with it.  Please split the patch and repost.
> 
> I would also like you to reconsider the usage of
> IIO_CHAN_INFO_PROCESSED which would report calculated value
> to avoid knowing the sensor specifics and just provide general output
> (this would avoid different calculations of final temperature for different
> sensors).
If it can't be done via a straight linear map, then processed is the
only option.  If it can then it really doesn't matter as generic
userspace will handle it just fine.
> 
>>>
>>> The diff is made towards togreg branch as that branch seems to have the
>>> most recent updates of mlx90614 driver (many are yet to be merged).
>>>
>>> Signed-off-by: Crt Mori <cmo@melexis.com>
>>> ---
>>>  drivers/iio/temperature/mlx90614.c | 20 ++++++++++++++------
>>>  1 file changed, 14 insertions(+), 6 deletions(-)
>>>
>>> diff --git a/drivers/iio/temperature/mlx90614.c
>>> b/drivers/iio/temperature/mlx90614.c
>>> index cb2e8ad..909278a 100644
>>> --- a/drivers/iio/temperature/mlx90614.c
>>> +++ b/drivers/iio/temperature/mlx90614.c
>>> @@ -65,6 +65,13 @@
>>>
>>>  #define MLX90614_AUTOSLEEP_DELAY 5000 /* default autosleep delay */
>>>
>>> +/* Magic constants */
>>> +#define MLX90614_CONST_OFFSET_DEC -13657 /* decimal part of the Kelvin
>>> offset */
>>> +#define MLX90614_CONST_OFFSET_REM 500000 /* remainder of offset
>>> (273.15*50) */
>>> +#define MLX90614_CONST_SCALE 20 /* Scale in milliKelvin (0.02 * 1000) */
>>> +#define MLX90614_CONST_RAW_EMISSIVITY_MAX 65535 /* max value for
>>> emissivity */
>>> +#define MLX90614_CONST_EMISSIVITY_RESOLUTION 15259 /* 1/65535 ~
>>> 0.000015259 */
>>> +
>>>  struct mlx90614_data {
>>>         struct i2c_client *client;
>>>         struct mutex lock; /* for EEPROM access only */
>>> @@ -204,11 +211,11 @@ static int mlx90614_read_raw(struct iio_dev
>>> *indio_dev,
>>>                 *val = ret;
>>>                 return IIO_VAL_INT;
>>>         case IIO_CHAN_INFO_OFFSET:
>>> -               *val = 13657;
>>> -               *val2 = 500000;
>>> +               *val = MLX90614_CONST_OFFSET_DEC;
>>> +               *val2 = MLX90614_CONST_OFFSET_REM;
>>>                 return IIO_VAL_INT_PLUS_MICRO;
>>>         case IIO_CHAN_INFO_SCALE:
>>> -               *val = 20;
>>> +               *val = MLX90614_CONST_SCALE;
>>>                 return IIO_VAL_INT;
>>>         case IIO_CHAN_INFO_CALIBEMISSIVITY: /* 1/65535 / LSB */
>>>                 mlx90614_power_get(data, false);
>>> @@ -221,12 +228,12 @@ static int mlx90614_read_raw(struct iio_dev
>>> *indio_dev,
>>>                 if (ret < 0)
>>>                         return ret;
>>>
>>> -               if (ret == 65535) {
>>> +               if (ret == MLX90614_CONST_RAW_EMISSIVITY_MAX) {
>>>                         *val = 1;
>>>                         *val2 = 0;
>>>                 } else {
>>>                         *val = 0;
>>> -                       *val2 = ret * 15259; /* 1/65535 ~ 0.000015259 */
>>> +                       *val2 = ret * MLX90614_CONST_EMISSIVITY_RESOLUTION;
>>>                 }
>>>                 return IIO_VAL_INT_PLUS_NANO;
>>>         default:
>>> @@ -245,7 +252,8 @@ static int mlx90614_write_raw(struct iio_dev *indio_dev,
>>>         case IIO_CHAN_INFO_CALIBEMISSIVITY: /* 1/65535 / LSB */
>>>                 if (val < 0 || val2 < 0 || val > 1 || (val == 1 && val2 !=
>>> 0))
>>>                         return -EINVAL;
>>> -               val = val * 65535 + val2 / 15259; /* 1/65535 ~ 0.000015259
>>> */
>>> +               val = val * MLX90614_CONST_RAW_EMISSIVITY_MAX +
>>> +                       val2 / MLX90614_CONST_EMISSIVITY_RESOLUTION;
>>>
>>>                 mlx90614_power_get(data, false);
>>>                 mutex_lock(&data->lock);
>>>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-iio" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> 


      reply	other threads:[~2015-07-05 12:51 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-06-29 12:03 [PATCH] iio: mlx90614: Replace offset sign and define magic numbers Crt Mori
2015-06-29 12:19 ` Peter Meerwald
2015-06-29 14:39   ` Crt Mori
2015-06-29 14:43   ` Crt Mori
2015-07-05 12:51     ` Jonathan Cameron [this message]

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=55992857.9030702@kernel.org \
    --to=jic23@kernel.org \
    --cc=cmo@melexis.com \
    --cc=linux-iio@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 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).