All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jonathan Cameron <jic23@kernel.org>
To: Denis Ciocca <denis.ciocca@st.com>
Cc: <linux-iio@vger.kernel.org>
Subject: Re: [PATCH v2 01/11] iio:common:st_sensors: add st_sensors_get_settings_index() helper function
Date: Sun, 21 Jul 2019 18:48:05 +0100	[thread overview]
Message-ID: <20190721184805.57cd0687@archlinux> (raw)
In-Reply-To: <20190718225353.2078-2-denis.ciocca@st.com>

On Thu, 18 Jul 2019 15:53:43 -0700
Denis Ciocca <denis.ciocca@st.com> wrote:

> Extract from st_sensors_check_device_support() function the code that
> is used to get the specific settings for a device. This will be used
> as generic extractor by each ST driver.
> 
> Signed-off-by: Denis Ciocca <denis.ciocca@st.com>
Applied to the togreg branch of iio.git and pushed out as testing for
the autobuilders to play with it.

Thanks,

Jonathan

> ---
> Changes in v2:
>  return immediately in st_sensors_settings_index after device name is found
>  remove err initialization inside st_sensors_check_device_support
>  
>  .../iio/common/st_sensors/st_sensors_core.c   | 49 +++++++++++++------
>  include/linux/iio/common/st_sensors.h         |  4 ++
>  2 files changed, 38 insertions(+), 15 deletions(-)
> 
> diff --git a/drivers/iio/common/st_sensors/st_sensors_core.c b/drivers/iio/common/st_sensors/st_sensors_core.c
> index 8b22dc241482..3610ca9eaa87 100644
> --- a/drivers/iio/common/st_sensors/st_sensors_core.c
> +++ b/drivers/iio/common/st_sensors/st_sensors_core.c
> @@ -633,28 +633,47 @@ static int st_sensors_init_interface_mode(struct iio_dev *indio_dev,
>  	return 0;
>  }
>  
> +/*
> + * st_sensors_get_settings_index() - get index of the sensor settings for a
> + *				     specific device from list of settings
> + * @name: device name buffer reference.
> + * @list: sensor settings list.
> + * @list_length: length of sensor settings list.
> + *
> + * Return: non negative number on success (valid index),
> + *	   negative error code otherwise.
> + */
> +int st_sensors_get_settings_index(const char *name,
> +				  const struct st_sensor_settings *list,
> +				  const int list_length)
> +{
> +	int i, n;
> +
> +	for (i = 0; i < list_length; i++) {
> +		for (n = 0; n < ST_SENSORS_MAX_4WAI; n++) {
> +			if (strcmp(name, list[i].sensors_supported[n]) == 0)
> +				return i;
> +		}
> +	}
> +
> +	return -ENODEV;
> +}
> +EXPORT_SYMBOL(st_sensors_get_settings_index);
> +
>  int st_sensors_check_device_support(struct iio_dev *indio_dev,
>  			int num_sensors_list,
>  			const struct st_sensor_settings *sensor_settings)
>  {
> -	int i, n, err = 0;
> -	u8 wai;
>  	struct st_sensor_data *sdata = iio_priv(indio_dev);
> +	int i, err;
> +	u8 wai;
>  
> -	for (i = 0; i < num_sensors_list; i++) {
> -		for (n = 0; n < ST_SENSORS_MAX_4WAI; n++) {
> -			if (strcmp(indio_dev->name,
> -				sensor_settings[i].sensors_supported[n]) == 0) {
> -				break;
> -			}
> -		}
> -		if (n < ST_SENSORS_MAX_4WAI)
> -			break;
> -	}
> -	if (i == num_sensors_list) {
> +	i = st_sensors_get_settings_index(indio_dev->name,
> +					  sensor_settings, num_sensors_list);
> +	if (i < 0) {
>  		dev_err(&indio_dev->dev, "device name %s not recognized.\n",
> -							indio_dev->name);
> -		return -ENODEV;
> +			indio_dev->name);
> +		return i;
>  	}
>  
>  	err = st_sensors_init_interface_mode(indio_dev, &sensor_settings[i]);
> diff --git a/include/linux/iio/common/st_sensors.h b/include/linux/iio/common/st_sensors.h
> index 2948ac99e2da..17fbf3e9b013 100644
> --- a/include/linux/iio/common/st_sensors.h
> +++ b/include/linux/iio/common/st_sensors.h
> @@ -334,6 +334,10 @@ int st_sensors_set_fullscale_by_gain(struct iio_dev *indio_dev, int scale);
>  int st_sensors_read_info_raw(struct iio_dev *indio_dev,
>  				struct iio_chan_spec const *ch, int *val);
>  
> +int st_sensors_get_settings_index(const char *name,
> +				  const struct st_sensor_settings *list,
> +				  const int list_length);
> +
>  int st_sensors_check_device_support(struct iio_dev *indio_dev,
>  	int num_sensors_list, const struct st_sensor_settings *sensor_settings);
>  


  reply	other threads:[~2019-07-21 17:48 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-07-18 22:53 [PATCH v2 00/11] iio:st_sensors: make use of regmap API Denis Ciocca
2019-07-18 22:53 ` [PATCH v2 01/11] iio:common:st_sensors: add st_sensors_get_settings_index() helper function Denis Ciocca
2019-07-21 17:48   ` Jonathan Cameron [this message]
2019-07-18 22:53 ` [PATCH v2 02/11] iio:accel: introduce st_accel_get_settings() function Denis Ciocca
2019-07-21 17:48   ` Jonathan Cameron
2019-07-18 22:53 ` [PATCH v2 03/11] iio:gyro: introduce st_gyro_get_settings() function Denis Ciocca
2019-07-21 17:50   ` Jonathan Cameron
2019-07-18 22:53 ` [PATCH v2 04/11] iio:magn: introduce st_magn_get_settings() function Denis Ciocca
2019-07-21 17:51   ` Jonathan Cameron
2019-07-18 22:53 ` [PATCH v2 05/11] iio:pressure: introduce st_press_get_settings() function Denis Ciocca
2019-07-21 17:52   ` Jonathan Cameron
2019-07-18 22:53 ` [PATCH v2 06/11] iio:accel: device settings are set immediately during probe Denis Ciocca
2019-07-21 17:54   ` Jonathan Cameron
2019-07-18 22:53 ` [PATCH v2 07/11] iio:gyro: " Denis Ciocca
2019-07-21 17:55   ` Jonathan Cameron
2019-07-18 22:53 ` [PATCH v2 08/11] iio:magn: " Denis Ciocca
2019-07-21 17:56   ` Jonathan Cameron
2019-07-18 22:53 ` [PATCH v2 09/11] iio:pressure: " Denis Ciocca
2019-07-18 22:53 ` [PATCH v2 10/11] iio: move 3-wire spi initialization to st_sensors_spi Denis Ciocca
2019-07-21 17:58   ` Jonathan Cameron
2019-07-21 18:03     ` Jonathan Cameron
2019-07-22 19:53       ` Denis CIOCCA
2019-07-18 22:53 ` [PATCH v2 11/11] iio: make st_sensors drivers use regmap Denis Ciocca
2019-07-21 18:05   ` Jonathan Cameron
2019-07-22 19:53     ` Denis CIOCCA

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=20190721184805.57cd0687@archlinux \
    --to=jic23@kernel.org \
    --cc=denis.ciocca@st.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 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.