Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1219431 > unrolled thread

[RFC v1 0/4] iio: new chemical sensor framework and channel types

Started byMatt Ranostay <mranostay@gmail.com>
First post2015-09-05 08:00 +0200
Last post2015-09-05 18:00 +0200
Articles 6 — 4 participants

Back to article view | Back to linux.kernel


Contents

  [RFC v1 0/4] iio: new chemical sensor framework and channel types Matt Ranostay <mranostay@gmail.com> - 2015-09-05 08:00 +0200
    [RFC v1 1/4] iio: chemical: Add IIO_CONCENTRATION channel type Matt Ranostay <mranostay@gmail.com> - 2015-09-05 08:00 +0200
      Re: [RFC v1 1/4] iio: chemical: Add IIO_CONCENTRATION channel type Peter Meerwald <pmeerw@pmeerw.net> - 2015-09-05 09:30 +0200
      Re: [RFC v1 1/4] iio: chemical: Add IIO_CONCENTRATION channel type Jonathan Cameron <jic23@kernel.org> - 2015-09-05 18:00 +0200
    Re: [RFC v1 0/4] iio: new chemical sensor framework and channel types Daniel Baluta <daniel.baluta@gmail.com> - 2015-09-05 10:30 +0200
      Re: [RFC v1 0/4] iio: new chemical sensor framework and channel types Jonathan Cameron <jic23@kernel.org> - 2015-09-05 18:00 +0200

#1219431 — [RFC v1 0/4] iio: new chemical sensor framework and channel types

FromMatt Ranostay <mranostay@gmail.com>
Date2015-09-05 08:00 +0200
Subject[RFC v1 0/4] iio: new chemical sensor framework and channel types
Message-ID<q5eG5-8pS-3@gated-at.bofh.it>
Initial RFC for new chemical sensor framework, IIO_CONCENTRATION,
and IIO_RESISTANCE channel types.

Important notes:
* Not been tested on real hardware yet but that isn't the main RFC reason and
  once hardware is in hand it will be verified
* Reason the IIO_CONCENTRATION type isn't in percent but has modifiers for ppm
  and ppb is the scale value for the latter would cause a integer overflow
  using IIO_VAL_FRACTIONAL

Matt Ranostay (4):
  iio: chemical: Add IIO_CONCENTRATION channel type
  iio: resistance: add IIO_RESISTANCE channel type
  devicetree: add SGX Sensortech vendor id
  iio: chemical: add SGX VZ89x VOC sensor support

 Documentation/ABI/testing/sysfs-bus-iio            |  16 ++
 .../devicetree/bindings/i2c/trivial-devices.txt    |   1 +
 .../devicetree/bindings/vendor-prefixes.txt        |   1 +
 drivers/iio/Kconfig                                |   1 +
 drivers/iio/Makefile                               |   1 +
 drivers/iio/chemical/Makefile                      |   6 +
 drivers/iio/chemical/vz89x.c                       | 237 +++++++++++++++++++++
 drivers/iio/industrialio-core.c                    |   4 +
 include/uapi/linux/iio/types.h                     |   4 +
 9 files changed, 271 insertions(+)
 create mode 100644 drivers/iio/chemical/Makefile
 create mode 100644 drivers/iio/chemical/vz89x.c

-- 
1.9.1

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[toc] | [next] | [standalone]


#1219432 — [RFC v1 1/4] iio: chemical: Add IIO_CONCENTRATION channel type

FromMatt Ranostay <mranostay@gmail.com>
Date2015-09-05 08:00 +0200
Subject[RFC v1 1/4] iio: chemical: Add IIO_CONCENTRATION channel type
Message-ID<q5eG6-8pS-13@gated-at.bofh.it>
In reply to#1219431
There are air quality sensors that report data back in parts per million
of VOC (Volatile Organic Compounds) which are usually indexed from CO2
or another common pollutant.

This patchset adds an IIO_CONCENTRATION type and IIO_MOD_PPM/PPB modifiers
because no other channels types fit this use case.

Signed-off-by: Matt Ranostay <mranostay@gmail.com>
---
 Documentation/ABI/testing/sysfs-bus-iio | 10 ++++++++++
 drivers/iio/industrialio-core.c         |  3 +++
 include/uapi/linux/iio/types.h          |  3 +++
 3 files changed, 16 insertions(+)

diff --git a/Documentation/ABI/testing/sysfs-bus-iio b/Documentation/ABI/testing/sysfs-bus-iio
index 42d360f..a3803a1 100644
--- a/Documentation/ABI/testing/sysfs-bus-iio
+++ b/Documentation/ABI/testing/sysfs-bus-iio
@@ -1459,3 +1459,13 @@ Description:
 		measurements and return the average value as output data. Each
 		value resulted from <type>[_name]_oversampling_ratio measurements
 		is considered as one sample for <type>[_name]_sampling_frequency.
+
+What:		/sys/bus/iio/devices/iio:deviceX/in_concentrationX_raw
+What:		/sys/bus/iio/devices/iio:deviceX/in_concentrationX_ppm_raw
+What:		/sys/bus/iio/devices/iio:deviceX/in_concentrationX_ppb_raw
+KernelVersion:	4.3
+Contact:	linux-iio@vger.kernel.org
+Description:
+		Raw (unscaled no offset etc.) concentration reading of data like
+		CO2 or VOC (Volatile Organic Compounds) substances with or without
+		ppm (Part Per Million) or ppb (Parts Per Billion) channel modifiers.
diff --git a/drivers/iio/industrialio-core.c b/drivers/iio/industrialio-core.c
index b3fcc2c..ea9e31a 100644
--- a/drivers/iio/industrialio-core.c
+++ b/drivers/iio/industrialio-core.c
@@ -75,6 +75,7 @@ static const char * const iio_chan_type_name_spec[] = {
 	[IIO_ENERGY] = "energy",
 	[IIO_DISTANCE] = "distance",
 	[IIO_VELOCITY] = "velocity",
+	[IIO_CONCENTRATION] = "concentration",
 };
 
 static const char * const iio_modifier_names[] = {
@@ -111,6 +112,8 @@ static const char * const iio_modifier_names[] = {
 	[IIO_MOD_ROOT_SUM_SQUARED_X_Y_Z] = "sqrt(x^2+y^2+z^2)",
 	[IIO_MOD_I] = "i",
 	[IIO_MOD_Q] = "q",
+	[IIO_MOD_PPM] = "ppm",
+	[IIO_MOD_PPB] = "ppb",
 };
 
 /* relies on pairs of these shared then separate */
diff --git a/include/uapi/linux/iio/types.h b/include/uapi/linux/iio/types.h
index 2f8b117..dfb8b8c 100644
--- a/include/uapi/linux/iio/types.h
+++ b/include/uapi/linux/iio/types.h
@@ -35,6 +35,7 @@ enum iio_chan_type {
 	IIO_ENERGY,
 	IIO_DISTANCE,
 	IIO_VELOCITY,
+	IIO_CONCENTRATION,
 };
 
 enum iio_modifier {
@@ -72,6 +73,8 @@ enum iio_modifier {
 	IIO_MOD_ROOT_SUM_SQUARED_X_Y_Z,
 	IIO_MOD_I,
 	IIO_MOD_Q,
+	IIO_MOD_PPM,
+	IIO_MOD_PPB,
 };
 
 enum iio_event_type {
-- 
1.9.1

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[toc] | [prev] | [next] | [standalone]


#1219437 — Re: [RFC v1 1/4] iio: chemical: Add IIO_CONCENTRATION channel type

FromPeter Meerwald <pmeerw@pmeerw.net>
Date2015-09-05 09:30 +0200
SubjectRe: [RFC v1 1/4] iio: chemical: Add IIO_CONCENTRATION channel type
Message-ID<q5g5b-25a-1@gated-at.bofh.it>
In reply to#1219432
> There are air quality sensors that report data back in parts per million
> of VOC (Volatile Organic Compounds) which are usually indexed from CO2
> or another common pollutant.
> 
> This patchset adds an IIO_CONCENTRATION type and IIO_MOD_PPM/PPB modifiers
> because no other channels types fit this use case.

comments below
can you add these to tools/iio/iio_event_monitor.c as well?
 
> Signed-off-by: Matt Ranostay <mranostay@gmail.com>
> ---
>  Documentation/ABI/testing/sysfs-bus-iio | 10 ++++++++++
>  drivers/iio/industrialio-core.c         |  3 +++
>  include/uapi/linux/iio/types.h          |  3 +++
>  3 files changed, 16 insertions(+)
> 
> diff --git a/Documentation/ABI/testing/sysfs-bus-iio b/Documentation/ABI/testing/sysfs-bus-iio
> index 42d360f..a3803a1 100644
> --- a/Documentation/ABI/testing/sysfs-bus-iio
> +++ b/Documentation/ABI/testing/sysfs-bus-iio
> @@ -1459,3 +1459,13 @@ Description:
>  		measurements and return the average value as output data. Each
>  		value resulted from <type>[_name]_oversampling_ratio measurements
>  		is considered as one sample for <type>[_name]_sampling_frequency.
> +
> +What:		/sys/bus/iio/devices/iio:deviceX/in_concentrationX_raw
> +What:		/sys/bus/iio/devices/iio:deviceX/in_concentrationX_ppm_raw
> +What:		/sys/bus/iio/devices/iio:deviceX/in_concentrationX_ppb_raw
> +KernelVersion:	4.3
> +Contact:	linux-iio@vger.kernel.org
> +Description:
> +		Raw (unscaled no offset etc.) concentration reading of data like
> +		CO2 or VOC (Volatile Organic Compounds) substances with or without
> +		ppm (Part Per Million) or ppb (Parts Per Billion) channel modifiers.

Part_s_ Per Million

> diff --git a/drivers/iio/industrialio-core.c b/drivers/iio/industrialio-core.c
> index b3fcc2c..ea9e31a 100644
> --- a/drivers/iio/industrialio-core.c
> +++ b/drivers/iio/industrialio-core.c
> @@ -75,6 +75,7 @@ static const char * const iio_chan_type_name_spec[] = {
>  	[IIO_ENERGY] = "energy",
>  	[IIO_DISTANCE] = "distance",
>  	[IIO_VELOCITY] = "velocity",
> +	[IIO_CONCENTRATION] = "concentration",
>  };
>  
>  static const char * const iio_modifier_names[] = {
> @@ -111,6 +112,8 @@ static const char * const iio_modifier_names[] = {
>  	[IIO_MOD_ROOT_SUM_SQUARED_X_Y_Z] = "sqrt(x^2+y^2+z^2)",
>  	[IIO_MOD_I] = "i",
>  	[IIO_MOD_Q] = "q",
> +	[IIO_MOD_PPM] = "ppm",
> +	[IIO_MOD_PPB] = "ppb",
>  };
>  
>  /* relies on pairs of these shared then separate */
> diff --git a/include/uapi/linux/iio/types.h b/include/uapi/linux/iio/types.h
> index 2f8b117..dfb8b8c 100644
> --- a/include/uapi/linux/iio/types.h
> +++ b/include/uapi/linux/iio/types.h
> @@ -35,6 +35,7 @@ enum iio_chan_type {
>  	IIO_ENERGY,
>  	IIO_DISTANCE,
>  	IIO_VELOCITY,
> +	IIO_CONCENTRATION,
>  };
>  
>  enum iio_modifier {
> @@ -72,6 +73,8 @@ enum iio_modifier {
>  	IIO_MOD_ROOT_SUM_SQUARED_X_Y_Z,
>  	IIO_MOD_I,
>  	IIO_MOD_Q,
> +	IIO_MOD_PPM,
> +	IIO_MOD_PPB,
>  };
>  
>  enum iio_event_type {
> 

-- 

Peter Meerwald
+43-664-2444418 (mobile)
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[toc] | [prev] | [next] | [standalone]


#1219575 — Re: [RFC v1 1/4] iio: chemical: Add IIO_CONCENTRATION channel type

FromJonathan Cameron <jic23@kernel.org>
Date2015-09-05 18:00 +0200
SubjectRe: [RFC v1 1/4] iio: chemical: Add IIO_CONCENTRATION channel type
Message-ID<q5o2K-4Wa-23@gated-at.bofh.it>
In reply to#1219432
On 05/09/15 06:53, Matt Ranostay wrote:
> There are air quality sensors that report data back in parts per million
> of VOC (Volatile Organic Compounds) which are usually indexed from CO2
> or another common pollutant.
> 
> This patchset adds an IIO_CONCENTRATION type and IIO_MOD_PPM/PPB modifiers
> because no other channels types fit this use case.
Fine with concentration, not with the modifiers. See below.

> 
> Signed-off-by: Matt Ranostay <mranostay@gmail.com>
> ---
>  Documentation/ABI/testing/sysfs-bus-iio | 10 ++++++++++
>  drivers/iio/industrialio-core.c         |  3 +++
>  include/uapi/linux/iio/types.h          |  3 +++
>  3 files changed, 16 insertions(+)
> 
> diff --git a/Documentation/ABI/testing/sysfs-bus-iio b/Documentation/ABI/testing/sysfs-bus-iio
> index 42d360f..a3803a1 100644
> --- a/Documentation/ABI/testing/sysfs-bus-iio
> +++ b/Documentation/ABI/testing/sysfs-bus-iio
> @@ -1459,3 +1459,13 @@ Description:
>  		measurements and return the average value as output data. Each
>  		value resulted from <type>[_name]_oversampling_ratio measurements
>  		is considered as one sample for <type>[_name]_sampling_frequency.
> +
> +What:		/sys/bus/iio/devices/iio:deviceX/in_concentrationX_raw
> +What:		/sys/bus/iio/devices/iio:deviceX/in_concentrationX_ppm_raw
> +What:		/sys/bus/iio/devices/iio:deviceX/in_concentrationX_ppb_raw
> +KernelVersion:	4.3
> +Contact:	linux-iio@vger.kernel.org
> +Description:
> +		Raw (unscaled no offset etc.) concentration reading of data like
> +		CO2 or VOC (Volatile Organic Compounds) substances with or without
> +		ppm (Part Per Million) or ppb (Parts Per Billion) channel modifiers.
See below.  ppm  / ppb should not be modifiers. That's not what they are for.

> diff --git a/drivers/iio/industrialio-core.c b/drivers/iio/industrialio-core.c
> index b3fcc2c..ea9e31a 100644
> --- a/drivers/iio/industrialio-core.c
> +++ b/drivers/iio/industrialio-core.c
> @@ -75,6 +75,7 @@ static const char * const iio_chan_type_name_spec[] = {
>  	[IIO_ENERGY] = "energy",
>  	[IIO_DISTANCE] = "distance",
>  	[IIO_VELOCITY] = "velocity",
> +	[IIO_CONCENTRATION] = "concentration",
>  };
>  
>  static const char * const iio_modifier_names[] = {
> @@ -111,6 +112,8 @@ static const char * const iio_modifier_names[] = {
>  	[IIO_MOD_ROOT_SUM_SQUARED_X_Y_Z] = "sqrt(x^2+y^2+z^2)",
>  	[IIO_MOD_I] = "i",
>  	[IIO_MOD_Q] = "q",
> +	[IIO_MOD_PPM] = "ppm",
> +	[IIO_MOD_PPB] = "ppb",
>  };
>  
>  /* relies on pairs of these shared then separate */
> diff --git a/include/uapi/linux/iio/types.h b/include/uapi/linux/iio/types.h
> index 2f8b117..dfb8b8c 100644
> --- a/include/uapi/linux/iio/types.h
> +++ b/include/uapi/linux/iio/types.h
> @@ -35,6 +35,7 @@ enum iio_chan_type {
>  	IIO_ENERGY,
>  	IIO_DISTANCE,
>  	IIO_VELOCITY,
> +	IIO_CONCENTRATION,
>  };
>  
>  enum iio_modifier {
> @@ -72,6 +73,8 @@ enum iio_modifier {
>  	IIO_MOD_ROOT_SUM_SQUARED_X_Y_Z,
>  	IIO_MOD_I,
>  	IIO_MOD_Q,
> +	IIO_MOD_PPM,
The use of modifiers is not about units.  Those should be well specified
in the ABI docs for the given channel type.  Hence I'd expect modifiers
for the type of chemical being detected not the unit.
PPB can be handled by PPM and a different return type
IIO_INT_PLUS_NANO etc.  If there isn't an appropriate return type for
the scale needed, then we can easily add more of those ;)

> +	IIO_MOD_PPB,
>  };
>  
>  enum iio_event_type {
> 

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[toc] | [prev] | [next] | [standalone]


#1219461

FromDaniel Baluta <daniel.baluta@gmail.com>
Date2015-09-05 10:30 +0200
Message-ID<q5h1f-3pE-1@gated-at.bofh.it>
In reply to#1219431
On Sat, Sep 5, 2015 at 8:53 AM, Matt Ranostay <mranostay@gmail.com> wrote:
> Initial RFC for new chemical sensor framework, IIO_CONCENTRATION,
> and IIO_RESISTANCE channel types.
>
> Important notes:
> * Not been tested on real hardware yet but that isn't the main RFC reason and
>   once hardware is in hand it will be verified
> * Reason the IIO_CONCENTRATION type isn't in percent but has modifiers for ppm
>   and ppb is the scale value for the latter would cause a integer overflow
>   using IIO_VAL_FRACTIONAL

Please add this details also in the commit message introducing
IIO_CONCENTRATION. Readers
will faster find commit messages than cover letter.

Interesting patches Matt! :)

thanks,
Daniel.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[toc] | [prev] | [next] | [standalone]


#1219574

FromJonathan Cameron <jic23@kernel.org>
Date2015-09-05 18:00 +0200
Message-ID<q5o2K-4Wa-19@gated-at.bofh.it>
In reply to#1219461
On 05/09/15 09:20, Daniel Baluta wrote:
> On Sat, Sep 5, 2015 at 8:53 AM, Matt Ranostay <mranostay@gmail.com> wrote:
>> Initial RFC for new chemical sensor framework, IIO_CONCENTRATION,
>> and IIO_RESISTANCE channel types.
>>
>> Important notes:
>> * Not been tested on real hardware yet but that isn't the main RFC reason and
>>   once hardware is in hand it will be verified
>> * Reason the IIO_CONCENTRATION type isn't in percent but has modifiers for ppm
>>   and ppb is the scale value for the latter would cause a integer overflow
>>   using IIO_VAL_FRACTIONAL
Then add a a return type that deals with that issue.
Perhaps IIO_VAL_FRACTIONAL_DIVMILLION or
something like that.  Will just do the normal calculation but when outputting
append a load of leading zeros.  So val/(val2 * 1000000) = (val/val2) / 1000000
so decimal shift right 6 digits.
> 
> Please add this details also in the commit message introducing
> IIO_CONCENTRATION. Readers
> will faster find commit messages than cover letter.
Indeed, I wouldn't even have read the cover letter (tend to like jumping in the
deep end ;) except that I wondered what Daniel was commenting on!
> 
> Interesting patches Matt! :)
Indeed!
> 
> thanks,
> Daniel.
> --
> 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
> 

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[toc] | [prev] | [standalone]


Back to top | Article view | linux.kernel


csiph-web