linux-iio.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2] iio: temperature: mlx90632: Interface to change object ambient temperature
@ 2020-09-04 12:07 Crt Mori
  2020-09-04 12:19 ` Andy Shevchenko
  0 siblings, 1 reply; 4+ messages in thread
From: Crt Mori @ 2020-09-04 12:07 UTC (permalink / raw)
  To: Jonathan Cameron; +Cc: linux-iio, Crt Mori, Andy Shevchenko

Since object temperature might be different than the sensor temperature
the infrared sensors should provide an interface to inject ambient
temperature. This was in past done via write to ambient temperature
interface (in_temp_ambient_raw), but I think most people did not know
about it. This solution introduces a new iio type of the CALIBAMBIENT
which is hopefully more descriptive and more explicit about the purpose
and capabilities of the sensors.

Signed-off-by: Crt Mori <cmo@melexis.com>
Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>
---
 drivers/iio/industrialio-core.c    | 1 +
 drivers/iio/temperature/mlx90632.c | 8 +++++++-
 include/linux/iio/types.h          | 1 +
 3 files changed, 9 insertions(+), 1 deletion(-)

diff --git a/drivers/iio/industrialio-core.c b/drivers/iio/industrialio-core.c
index 606d5e61c575..941011502f4d 100644
--- a/drivers/iio/industrialio-core.c
+++ b/drivers/iio/industrialio-core.c
@@ -165,6 +165,7 @@ static const char * const iio_chan_info_postfix[] = {
 	[IIO_CHAN_INFO_CALIBEMISSIVITY] = "calibemissivity",
 	[IIO_CHAN_INFO_OVERSAMPLING_RATIO] = "oversampling_ratio",
 	[IIO_CHAN_INFO_THERMOCOUPLE_TYPE] = "thermocouple_type",
+	[IIO_CHAN_INFO_CALIBAMBIENT] = "calibambient",
 };
 
 #if defined(CONFIG_DEBUG_FS)
diff --git a/drivers/iio/temperature/mlx90632.c b/drivers/iio/temperature/mlx90632.c
index 94bca2b2866a..8e60d401b703 100644
--- a/drivers/iio/temperature/mlx90632.c
+++ b/drivers/iio/temperature/mlx90632.c
@@ -761,6 +761,9 @@ static int mlx90632_read_raw(struct iio_dev *indio_dev,
 			*val2 = data->emissivity * 1000;
 		}
 		return IIO_VAL_INT_PLUS_MICRO;
+	case IIO_CHAN_INFO_CALIBAMBIENT:
+		*val = data->object_ambient_temperature;
+		return IIO_VAL_INT;
 
 	default:
 		return -EINVAL;
@@ -781,6 +784,9 @@ static int mlx90632_write_raw(struct iio_dev *indio_dev,
 			return -EINVAL;
 		data->emissivity = val * 1000 + val2 / 1000;
 		return 0;
+	case IIO_CHAN_INFO_CALIBAMBIENT:
+		data->object_ambient_temperature = val;
+		return 0;
 	default:
 		return -EINVAL;
 	}
@@ -798,7 +804,7 @@ static const struct iio_chan_spec mlx90632_channels[] = {
 		.modified = 1,
 		.channel2 = IIO_MOD_TEMP_OBJECT,
 		.info_mask_separate = BIT(IIO_CHAN_INFO_PROCESSED) |
-			BIT(IIO_CHAN_INFO_CALIBEMISSIVITY),
+			BIT(IIO_CHAN_INFO_CALIBEMISSIVITY) | BIT(IIO_CHAN_INFO_CALIBAMBIENT),
 	},
 };
 
diff --git a/include/linux/iio/types.h b/include/linux/iio/types.h
index e6fd3645963c..1e3ed6f55bca 100644
--- a/include/linux/iio/types.h
+++ b/include/linux/iio/types.h
@@ -59,6 +59,7 @@ enum iio_chan_info_enum {
 	IIO_CHAN_INFO_CALIBEMISSIVITY,
 	IIO_CHAN_INFO_OVERSAMPLING_RATIO,
 	IIO_CHAN_INFO_THERMOCOUPLE_TYPE,
+	IIO_CHAN_INFO_CALIBAMBIENT,
 };
 
 #endif /* _IIO_TYPES_H_ */
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH v2] iio: temperature: mlx90632: Interface to change object ambient temperature
  2020-09-04 12:07 [PATCH v2] iio: temperature: mlx90632: Interface to change object ambient temperature Crt Mori
@ 2020-09-04 12:19 ` Andy Shevchenko
  2020-09-06 13:42   ` Jonathan Cameron
  2020-09-06 21:04   ` Crt Mori
  0 siblings, 2 replies; 4+ messages in thread
From: Andy Shevchenko @ 2020-09-04 12:19 UTC (permalink / raw)
  To: Crt Mori; +Cc: Jonathan Cameron, linux-iio

On Fri, Sep 4, 2020 at 3:08 PM Crt Mori <cmo@melexis.com> wrote:
>
> Since object temperature might be different than the sensor temperature
> the infrared sensors should provide an interface to inject ambient
> temperature. This was in past done via write to ambient temperature
> interface (in_temp_ambient_raw), but I think most people did not know
> about it. This solution introduces a new iio type of the CALIBAMBIENT
> which is hopefully more descriptive and more explicit about the purpose
> and capabilities of the sensors.

I'm fine, but one really picky comment below. I don't think a new
version is needed till Jonathan will ask for it.

> Signed-off-by: Crt Mori <cmo@melexis.com>
> Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>
> ---
>  drivers/iio/industrialio-core.c    | 1 +
>  drivers/iio/temperature/mlx90632.c | 8 +++++++-
>  include/linux/iio/types.h          | 1 +
>  3 files changed, 9 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/iio/industrialio-core.c b/drivers/iio/industrialio-core.c
> index 606d5e61c575..941011502f4d 100644
> --- a/drivers/iio/industrialio-core.c
> +++ b/drivers/iio/industrialio-core.c
> @@ -165,6 +165,7 @@ static const char * const iio_chan_info_postfix[] = {
>         [IIO_CHAN_INFO_CALIBEMISSIVITY] = "calibemissivity",
>         [IIO_CHAN_INFO_OVERSAMPLING_RATIO] = "oversampling_ratio",
>         [IIO_CHAN_INFO_THERMOCOUPLE_TYPE] = "thermocouple_type",
> +       [IIO_CHAN_INFO_CALIBAMBIENT] = "calibambient",
>  };
>
>  #if defined(CONFIG_DEBUG_FS)
> diff --git a/drivers/iio/temperature/mlx90632.c b/drivers/iio/temperature/mlx90632.c
> index 94bca2b2866a..8e60d401b703 100644
> --- a/drivers/iio/temperature/mlx90632.c
> +++ b/drivers/iio/temperature/mlx90632.c
> @@ -761,6 +761,9 @@ static int mlx90632_read_raw(struct iio_dev *indio_dev,
>                         *val2 = data->emissivity * 1000;
>                 }
>                 return IIO_VAL_INT_PLUS_MICRO;

Blank line is missed here.

> +       case IIO_CHAN_INFO_CALIBAMBIENT:
> +               *val = data->object_ambient_temperature;
> +               return IIO_VAL_INT;
>
>         default:
>                 return -EINVAL;
> @@ -781,6 +784,9 @@ static int mlx90632_write_raw(struct iio_dev *indio_dev,
>                         return -EINVAL;
>                 data->emissivity = val * 1000 + val2 / 1000;
>                 return 0;
> +       case IIO_CHAN_INFO_CALIBAMBIENT:
> +               data->object_ambient_temperature = val;
> +               return 0;
>         default:
>                 return -EINVAL;
>         }
> @@ -798,7 +804,7 @@ static const struct iio_chan_spec mlx90632_channels[] = {
>                 .modified = 1,
>                 .channel2 = IIO_MOD_TEMP_OBJECT,
>                 .info_mask_separate = BIT(IIO_CHAN_INFO_PROCESSED) |
> -                       BIT(IIO_CHAN_INFO_CALIBEMISSIVITY),
> +                       BIT(IIO_CHAN_INFO_CALIBEMISSIVITY) | BIT(IIO_CHAN_INFO_CALIBAMBIENT),
>         },
>  };
>
> diff --git a/include/linux/iio/types.h b/include/linux/iio/types.h
> index e6fd3645963c..1e3ed6f55bca 100644
> --- a/include/linux/iio/types.h
> +++ b/include/linux/iio/types.h
> @@ -59,6 +59,7 @@ enum iio_chan_info_enum {
>         IIO_CHAN_INFO_CALIBEMISSIVITY,
>         IIO_CHAN_INFO_OVERSAMPLING_RATIO,
>         IIO_CHAN_INFO_THERMOCOUPLE_TYPE,
> +       IIO_CHAN_INFO_CALIBAMBIENT,
>  };
>
>  #endif /* _IIO_TYPES_H_ */
> --
> 2.25.1
>


-- 
With Best Regards,
Andy Shevchenko

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH v2] iio: temperature: mlx90632: Interface to change object ambient temperature
  2020-09-04 12:19 ` Andy Shevchenko
@ 2020-09-06 13:42   ` Jonathan Cameron
  2020-09-06 21:04   ` Crt Mori
  1 sibling, 0 replies; 4+ messages in thread
From: Jonathan Cameron @ 2020-09-06 13:42 UTC (permalink / raw)
  To: Andy Shevchenko; +Cc: Crt Mori, linux-iio

On Fri, 4 Sep 2020 15:19:27 +0300
Andy Shevchenko <andy.shevchenko@gmail.com> wrote:

> On Fri, Sep 4, 2020 at 3:08 PM Crt Mori <cmo@melexis.com> wrote:
> >
> > Since object temperature might be different than the sensor temperature
> > the infrared sensors should provide an interface to inject ambient
> > temperature. This was in past done via write to ambient temperature
> > interface (in_temp_ambient_raw), but I think most people did not know
> > about it. This solution introduces a new iio type of the CALIBAMBIENT
> > which is hopefully more descriptive and more explicit about the purpose
> > and capabilities of the sensors.  
> 
> I'm fine, but one really picky comment below. I don't think a new
> version is needed till Jonathan will ask for it.
> 
> > Signed-off-by: Crt Mori <cmo@melexis.com>
> > Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>

Starting point for a new ABI is docs, so please add to
Documentation/ABI/testing/sysfs-bus-iio*

This is a somewhat odd corner case of saying don't use the local
measurement but one from 'over there' that we are supplying.

I'd love to come up with a more generic term for that, but if
we did I guess we'd back in the position that we are now, with a
non-obvious interface for this particular usecase.

So unless anyone else comments, please do a v3 with docs and
I'll pick it up.

Thanks,

Jonathan

> > ---
> >  drivers/iio/industrialio-core.c    | 1 +
> >  drivers/iio/temperature/mlx90632.c | 8 +++++++-
> >  include/linux/iio/types.h          | 1 +
> >  3 files changed, 9 insertions(+), 1 deletion(-)
> >
> > diff --git a/drivers/iio/industrialio-core.c b/drivers/iio/industrialio-core.c
> > index 606d5e61c575..941011502f4d 100644
> > --- a/drivers/iio/industrialio-core.c
> > +++ b/drivers/iio/industrialio-core.c
> > @@ -165,6 +165,7 @@ static const char * const iio_chan_info_postfix[] = {
> >         [IIO_CHAN_INFO_CALIBEMISSIVITY] = "calibemissivity",
> >         [IIO_CHAN_INFO_OVERSAMPLING_RATIO] = "oversampling_ratio",
> >         [IIO_CHAN_INFO_THERMOCOUPLE_TYPE] = "thermocouple_type",
> > +       [IIO_CHAN_INFO_CALIBAMBIENT] = "calibambient",
> >  };
> >
> >  #if defined(CONFIG_DEBUG_FS)
> > diff --git a/drivers/iio/temperature/mlx90632.c b/drivers/iio/temperature/mlx90632.c
> > index 94bca2b2866a..8e60d401b703 100644
> > --- a/drivers/iio/temperature/mlx90632.c
> > +++ b/drivers/iio/temperature/mlx90632.c
> > @@ -761,6 +761,9 @@ static int mlx90632_read_raw(struct iio_dev *indio_dev,
> >                         *val2 = data->emissivity * 1000;
> >                 }
> >                 return IIO_VAL_INT_PLUS_MICRO;  
> 
> Blank line is missed here.
> 
> > +       case IIO_CHAN_INFO_CALIBAMBIENT:
> > +               *val = data->object_ambient_temperature;
> > +               return IIO_VAL_INT;
> >
> >         default:
> >                 return -EINVAL;
> > @@ -781,6 +784,9 @@ static int mlx90632_write_raw(struct iio_dev *indio_dev,
> >                         return -EINVAL;
> >                 data->emissivity = val * 1000 + val2 / 1000;
> >                 return 0;
> > +       case IIO_CHAN_INFO_CALIBAMBIENT:
> > +               data->object_ambient_temperature = val;
> > +               return 0;
> >         default:
> >                 return -EINVAL;
> >         }
> > @@ -798,7 +804,7 @@ static const struct iio_chan_spec mlx90632_channels[] = {
> >                 .modified = 1,
> >                 .channel2 = IIO_MOD_TEMP_OBJECT,
> >                 .info_mask_separate = BIT(IIO_CHAN_INFO_PROCESSED) |
> > -                       BIT(IIO_CHAN_INFO_CALIBEMISSIVITY),
> > +                       BIT(IIO_CHAN_INFO_CALIBEMISSIVITY) | BIT(IIO_CHAN_INFO_CALIBAMBIENT),
> >         },
> >  };
> >
> > diff --git a/include/linux/iio/types.h b/include/linux/iio/types.h
> > index e6fd3645963c..1e3ed6f55bca 100644
> > --- a/include/linux/iio/types.h
> > +++ b/include/linux/iio/types.h
> > @@ -59,6 +59,7 @@ enum iio_chan_info_enum {
> >         IIO_CHAN_INFO_CALIBEMISSIVITY,
> >         IIO_CHAN_INFO_OVERSAMPLING_RATIO,
> >         IIO_CHAN_INFO_THERMOCOUPLE_TYPE,
> > +       IIO_CHAN_INFO_CALIBAMBIENT,
> >  };
> >
> >  #endif /* _IIO_TYPES_H_ */
> > --
> > 2.25.1
> >  
> 
> 


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH v2] iio: temperature: mlx90632: Interface to change object ambient temperature
  2020-09-04 12:19 ` Andy Shevchenko
  2020-09-06 13:42   ` Jonathan Cameron
@ 2020-09-06 21:04   ` Crt Mori
  1 sibling, 0 replies; 4+ messages in thread
From: Crt Mori @ 2020-09-06 21:04 UTC (permalink / raw)
  To: Andy Shevchenko; +Cc: Jonathan Cameron, linux-iio

On Fri, 4 Sep 2020 at 14:19, Andy Shevchenko <andy.shevchenko@gmail.com> wrote:
>
> On Fri, Sep 4, 2020 at 3:08 PM Crt Mori <cmo@melexis.com> wrote:
> >
> > Since object temperature might be different than the sensor temperature
> > the infrared sensors should provide an interface to inject ambient
> > temperature. This was in past done via write to ambient temperature
> > interface (in_temp_ambient_raw), but I think most people did not know
> > about it. This solution introduces a new iio type of the CALIBAMBIENT
> > which is hopefully more descriptive and more explicit about the purpose
> > and capabilities of the sensors.
>
> I'm fine, but one really picky comment below. I don't think a new
> version is needed till Jonathan will ask for it.
>
> > Signed-off-by: Crt Mori <cmo@melexis.com>
> > Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>
> > ---
> >  drivers/iio/industrialio-core.c    | 1 +
> >  drivers/iio/temperature/mlx90632.c | 8 +++++++-
> >  include/linux/iio/types.h          | 1 +
> >  3 files changed, 9 insertions(+), 1 deletion(-)
> >
> > diff --git a/drivers/iio/industrialio-core.c b/drivers/iio/industrialio-core.c
> > index 606d5e61c575..941011502f4d 100644
> > --- a/drivers/iio/industrialio-core.c
> > +++ b/drivers/iio/industrialio-core.c
> > @@ -165,6 +165,7 @@ static const char * const iio_chan_info_postfix[] = {
> >         [IIO_CHAN_INFO_CALIBEMISSIVITY] = "calibemissivity",
> >         [IIO_CHAN_INFO_OVERSAMPLING_RATIO] = "oversampling_ratio",
> >         [IIO_CHAN_INFO_THERMOCOUPLE_TYPE] = "thermocouple_type",
> > +       [IIO_CHAN_INFO_CALIBAMBIENT] = "calibambient",
> >  };
> >
> >  #if defined(CONFIG_DEBUG_FS)
> > diff --git a/drivers/iio/temperature/mlx90632.c b/drivers/iio/temperature/mlx90632.c
> > index 94bca2b2866a..8e60d401b703 100644
> > --- a/drivers/iio/temperature/mlx90632.c
> > +++ b/drivers/iio/temperature/mlx90632.c
> > @@ -761,6 +761,9 @@ static int mlx90632_read_raw(struct iio_dev *indio_dev,
> >                         *val2 = data->emissivity * 1000;
> >                 }
> >                 return IIO_VAL_INT_PLUS_MICRO;
>
> Blank line is missed here.
>

I don't have new lines before and after case: in switch statements
through whole file, so I decided to remove the blank line 4 rows down
as well to keep it all nicely unified in v3.

> > +       case IIO_CHAN_INFO_CALIBAMBIENT:
> > +               *val = data->object_ambient_temperature;
> > +               return IIO_VAL_INT;
> >
> >         default:
> >                 return -EINVAL;
> > @@ -781,6 +784,9 @@ static int mlx90632_write_raw(struct iio_dev *indio_dev,
> >                         return -EINVAL;
> >                 data->emissivity = val * 1000 + val2 / 1000;
> >                 return 0;
> > +       case IIO_CHAN_INFO_CALIBAMBIENT:
> > +               data->object_ambient_temperature = val;
> > +               return 0;
> >         default:
> >                 return -EINVAL;
> >         }
> > @@ -798,7 +804,7 @@ static const struct iio_chan_spec mlx90632_channels[] = {
> >                 .modified = 1,
> >                 .channel2 = IIO_MOD_TEMP_OBJECT,
> >                 .info_mask_separate = BIT(IIO_CHAN_INFO_PROCESSED) |
> > -                       BIT(IIO_CHAN_INFO_CALIBEMISSIVITY),
> > +                       BIT(IIO_CHAN_INFO_CALIBEMISSIVITY) | BIT(IIO_CHAN_INFO_CALIBAMBIENT),
> >         },
> >  };
> >
> > diff --git a/include/linux/iio/types.h b/include/linux/iio/types.h
> > index e6fd3645963c..1e3ed6f55bca 100644
> > --- a/include/linux/iio/types.h
> > +++ b/include/linux/iio/types.h
> > @@ -59,6 +59,7 @@ enum iio_chan_info_enum {
> >         IIO_CHAN_INFO_CALIBEMISSIVITY,
> >         IIO_CHAN_INFO_OVERSAMPLING_RATIO,
> >         IIO_CHAN_INFO_THERMOCOUPLE_TYPE,
> > +       IIO_CHAN_INFO_CALIBAMBIENT,
> >  };
> >
> >  #endif /* _IIO_TYPES_H_ */
> > --
> > 2.25.1
> >
>
>
> --
> With Best Regards,
> Andy Shevchenko

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2020-09-06 21:05 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-09-04 12:07 [PATCH v2] iio: temperature: mlx90632: Interface to change object ambient temperature Crt Mori
2020-09-04 12:19 ` Andy Shevchenko
2020-09-06 13:42   ` Jonathan Cameron
2020-09-06 21:04   ` Crt Mori

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