All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jonathan Cameron <jic23@jic23.retrosnub.co.uk>
To: Andrea Merello <andrea.merello@gmail.com>
Cc: Hartmut Knaack <knaack.h@gmx.de>,
	Lars-Peter Clausen <lars@metafoo.de>,
	Peter Meerwald-Stadler <pmeerw@pmeerw.net>,
	Colin Ian King <colin.king@canonical.com>,
	Patrick Havelange <patrick.havelange@essensium.com>,
	Matt Weber <matthew.weber@rockwellcollins.com>,
	Matt Ranostay <matt.ranostay@konsulko.com>,
	Chuhong Yuan <hslester96@gmail.com>,
	Daniel Gomez <dagmcr@gmail.com>,
	linux-iio@vger.kernel.org
Subject: Re: [v3 7/9] iio: max31856: add support for runtime-configuring the thermocouple type
Date: Sat, 23 Nov 2019 12:41:35 +0000	[thread overview]
Message-ID: <20191123124135.32ddd243@archlinux> (raw)
In-Reply-To: <20191123124019.33908147@archlinux>

On Sat, 23 Nov 2019 12:40:19 +0000
Jonathan Cameron <jic23@kernel.org> wrote:

> On Wed, 20 Nov 2019 15:47:54 +0100
> Andrea Merello <andrea.merello@gmail.com> wrote:
> 
> > The sensor support various thermocouple types (e.g. J, K, N, ...). The
> > driver allows to configure this parameter using a DT property.
> > 
> > This is useful when i.e. the thermocouple is physically tied to the sensor
> > and it is usually not removed, or when it is at least known in advance
> > which sensor will be connected to the circuit.
> > 
> > However, if the user can randomly connect any kind of thermocouples (i.e.
> > the device exposes a connector, and the user is free to connect its own
> > sensors), it would be more appropriate to provide a mechanism to
> > dynamically switch from one thermocouple type to another. This can be i.e.
> > handled in userspace by a GUI, a configuration file or a program that
> > detects the thermocouple type by reading a GPIO, or a eeprom on the probe,
> > or whatever.
> > 
> > This patch adds a IIO attribute that can be used to override, at run-time,
> > the DT-provided setting (which serves as default).
> > 
> > Cc: Hartmut Knaack <knaack.h@gmx.de>
> > Cc: Lars-Peter Clausen <lars@metafoo.de>
> > Cc: Peter Meerwald-Stadler <pmeerw@pmeerw.net>
> > Cc: Colin Ian King <colin.king@canonical.com>
> > Cc: Patrick Havelange <patrick.havelange@essensium.com>
> > Cc: Matt Weber <matthew.weber@rockwellcollins.com>
> > Cc: Matt Ranostay <matt.ranostay@konsulko.com>
> > Cc: Chuhong Yuan <hslester96@gmail.com>
> > Cc: Daniel Gomez <dagmcr@gmail.com>
> > Cc: linux-iio@vger.kernel.org
> > Signed-off-by: Andrea Merello <andrea.merello@gmail.com>  
> Applied to the togreg branch of iio.git and pushed out as testing for
> the autobuilders to play with it.
> 
One immediate tweak from my own build tests.  Missing static on the 
types array. I've fixed up.

Jonathan

> thanks,
> 
> Jonathan
> 
> > ---
> >  drivers/iio/temperature/max31856.c | 41 +++++++++++++++++++++++++++++-
> >  1 file changed, 40 insertions(+), 1 deletion(-)
> > 
> > diff --git a/drivers/iio/temperature/max31856.c b/drivers/iio/temperature/max31856.c
> > index 8457ca9ae326..4952e89c00bb 100644
> > --- a/drivers/iio/temperature/max31856.c
> > +++ b/drivers/iio/temperature/max31856.c
> > @@ -6,6 +6,7 @@
> >   * Copyright (C) 2018-2019 Rockwell Collins
> >   */
> >  
> > +#include <linux/ctype.h>
> >  #include <linux/module.h>
> >  #include <linux/init.h>
> >  #include <linux/err.h>
> > @@ -53,7 +54,8 @@ static const struct iio_chan_spec max31856_channels[] = {
> >  	{	/* Thermocouple Temperature */
> >  		.type = IIO_TEMP,
> >  		.info_mask_separate =
> > -			BIT(IIO_CHAN_INFO_RAW) | BIT(IIO_CHAN_INFO_SCALE),
> > +			BIT(IIO_CHAN_INFO_RAW) | BIT(IIO_CHAN_INFO_SCALE) |
> > +			BIT(IIO_CHAN_INFO_THERMOCOUPLE_TYPE),
> >  		.info_mask_shared_by_type =
> >  			BIT(IIO_CHAN_INFO_OVERSAMPLING_RATIO)
> >  	},
> > @@ -75,6 +77,10 @@ struct max31856_data {
> >  	int averaging;
> >  };
> >  
> > +const char max31856_tc_types[] = {
> > +	'B', 'E', 'J', 'K', 'N', 'R', 'S', 'T'
> > +};
> > +
> >  static int max31856_read(struct max31856_data *data, u8 reg,
> >  			 u8 val[], unsigned int read_size)
> >  {
> > @@ -232,6 +238,9 @@ static int max31856_read_raw(struct iio_dev *indio_dev,
> >  	case IIO_CHAN_INFO_OVERSAMPLING_RATIO:
> >  		*val = 1 << data->averaging;
> >  		return IIO_VAL_INT;
> > +	case IIO_CHAN_INFO_THERMOCOUPLE_TYPE:
> > +		*val = max31856_tc_types[data->thermocouple_type];
> > +		return IIO_VAL_CHAR;
> >  	default:
> >  		ret = -EINVAL;
> >  		break;
> > @@ -240,6 +249,18 @@ static int max31856_read_raw(struct iio_dev *indio_dev,
> >  	return ret;
> >  }
> >  
> > +static int max31856_write_raw_get_fmt(struct iio_dev *indio_dev,
> > +				      struct iio_chan_spec const *chan,
> > +				      long mask)
> > +{
> > +	switch (mask) {
> > +	case IIO_CHAN_INFO_THERMOCOUPLE_TYPE:
> > +		return IIO_VAL_CHAR;
> > +	default:
> > +		return IIO_VAL_INT;
> > +	}
> > +}
> > +
> >  static int max31856_write_raw(struct iio_dev *indio_dev,
> >  			      struct iio_chan_spec const *chan,
> >  			      int val, int val2, long mask)
> > @@ -259,7 +280,24 @@ static int max31856_write_raw(struct iio_dev *indio_dev,
> >  		data->averaging = msb;
> >  		max31856_init(data);
> >  		break;
> > +	case IIO_CHAN_INFO_THERMOCOUPLE_TYPE:
> > +	{
> > +		int tc_type = -1;
> > +		int i;
> > +
> > +		for (i = 0; i < ARRAY_SIZE(max31856_tc_types); i++) {
> > +			if (max31856_tc_types[i] == toupper(val)) {
> > +				tc_type = i;
> > +				break;
> > +			}
> > +		}
> > +		if (tc_type < 0)
> > +			return -EINVAL;
> >  
> > +		data->thermocouple_type = tc_type;
> > +		max31856_init(data);
> > +		break;
> > +	}
> >  	default:
> >  		return -EINVAL;
> >  	}
> > @@ -356,6 +394,7 @@ static const struct attribute_group max31856_group = {
> >  static const struct iio_info max31856_info = {
> >  	.read_raw = max31856_read_raw,
> >  	.write_raw = max31856_write_raw,
> > +	.write_raw_get_fmt = max31856_write_raw_get_fmt,
> >  	.attrs = &max31856_group,
> >  };
> >    
> 


  reply	other threads:[~2019-11-23 12:50 UTC|newest]

Thread overview: 60+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-09-23 12:17 [PATCH 0/3] iio: max31856: provide more configuration options Andrea Merello
2019-09-23 12:17 ` [PATCH 1/3] iio: max31856: add option for setting mains filter rejection frequency Andrea Merello
2019-10-06  7:54   ` Jonathan Cameron
2019-10-16 13:14     ` Andrea Merello
2019-10-17 12:32       ` Jonathan Cameron
2019-10-18 13:46         ` Andrea Merello
2019-10-22  9:34           ` Jonathan Cameron
2019-10-23  8:29             ` Andrea Merello
2019-10-27  9:22               ` Jonathan Cameron
2019-10-28  7:32                 ` Andrea Merello
2019-11-02 14:17                   ` Jonathan Cameron
2019-11-04 13:51                     ` Andrea Merello
2019-09-23 12:17 ` [PATCH 2/3] iio: max31856: add support for configuring the HW averaging Andrea Merello
2019-10-06  7:55   ` Jonathan Cameron
2019-10-16 13:33     ` Andrea Merello
2019-10-17 12:34       ` Jonathan Cameron
2019-10-18 13:47         ` Andrea Merello
2019-09-23 12:17 ` [PATCH 3/3] iio: max31856: add support for runtime-configuring the thermocouple type Andrea Merello
2019-10-06  7:58   ` Jonathan Cameron
2019-10-16 13:43     ` Andrea Merello
2019-10-17 12:35       ` Jonathan Cameron
2019-10-18 13:48         ` Andrea Merello
2019-11-11 15:35 ` [v2 0/9] iio: max31856: provide more configuration options Andrea Merello
2019-11-11 15:35   ` [v2 1/9] iio: max31856: add option for setting mains filter rejection frequency Andrea Merello
2019-11-11 22:59     ` Matt Ranostay
2019-11-16 14:29       ` Jonathan Cameron
2019-11-11 15:35   ` [v2 2/9] Documentation: ABI: document IIO in_temp_filter_notch_center_frequency file Andrea Merello
2019-11-11 15:35   ` [v2 3/9] iio: max31856: add support for configuring the HW averaging Andrea Merello
2019-11-11 23:01     ` Matt Ranostay
2019-11-11 15:35   ` [v2 4/9] RFC: iio: core: add char type for sysfs attributes Andrea Merello
2019-11-16 14:45     ` Jonathan Cameron
2019-11-11 15:35   ` [v2 5/9] iio: core: add thermocouple_type standard attribute Andrea Merello
2019-11-11 15:35   ` [v2 6/9] Documentation: ABI: document IIO thermocouple_type file Andrea Merello
2019-11-16 14:47     ` Jonathan Cameron
2019-11-11 15:35   ` [v2 7/9] iio: max31856: add support for runtime-configuring the thermocouple type Andrea Merello
2019-11-16 14:49     ` Jonathan Cameron
2019-11-11 15:35   ` [v2 8/9] RFC/RFT: iio: maxim_thermocouple: add thermocouple_type sysfs attribute Andrea Merello
2019-11-16 14:51     ` Jonathan Cameron
2019-11-11 15:35   ` [v2 9/9] dt-bindings: iio: maxim_thermocouple: document new 'compatible' strings Andrea Merello
2019-11-14 22:12     ` Rob Herring
2019-11-20 14:47   ` [v3 0/9] iio: max31856: provide more configuration options Andrea Merello
2019-11-20 14:47     ` [v3 1/9] iio: max31856: add option for setting mains filter rejection frequency Andrea Merello
2019-11-23 12:30       ` Jonathan Cameron
2019-11-20 14:47     ` [v3 2/9] Documentation: ABI: document IIO in_temp_filter_notch_center_frequency file Andrea Merello
2019-11-23 12:31       ` Jonathan Cameron
2019-11-20 14:47     ` [v3 3/9] iio: max31856: add support for configuring the HW averaging Andrea Merello
2019-11-23 12:32       ` Jonathan Cameron
2019-11-20 14:47     ` [v3 4/9] RFC: iio: core: add char type for sysfs attributes Andrea Merello
2019-11-23 12:33       ` Jonathan Cameron
2019-11-20 14:47     ` [v3 5/9] iio: core: add thermocouple_type standard attribute Andrea Merello
2019-11-23 12:36       ` Jonathan Cameron
2019-11-20 14:47     ` [v3 6/9] Documentation: ABI: document IIO thermocouple_type file Andrea Merello
2019-11-23 12:37       ` Jonathan Cameron
2019-11-20 14:47     ` [v3 7/9] iio: max31856: add support for runtime-configuring the thermocouple type Andrea Merello
2019-11-23 12:40       ` Jonathan Cameron
2019-11-23 12:41         ` Jonathan Cameron [this message]
2019-11-20 14:47     ` [v3 8/9] RFC/RFT: iio: maxim_thermocouple: add thermocouple_type sysfs attribute Andrea Merello
2019-11-23 12:46       ` Jonathan Cameron
2019-11-20 14:47     ` [v3 9/9] dt-bindings: iio: maxim_thermocouple: document new 'compatible' strings Andrea Merello
2019-11-23 12:46       ` Jonathan Cameron

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=20191123124135.32ddd243@archlinux \
    --to=jic23@jic23.retrosnub.co.uk \
    --cc=andrea.merello@gmail.com \
    --cc=colin.king@canonical.com \
    --cc=dagmcr@gmail.com \
    --cc=hslester96@gmail.com \
    --cc=knaack.h@gmx.de \
    --cc=lars@metafoo.de \
    --cc=linux-iio@vger.kernel.org \
    --cc=matt.ranostay@konsulko.com \
    --cc=matthew.weber@rockwellcollins.com \
    --cc=patrick.havelange@essensium.com \
    --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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.