devicetree.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Jonathan Cameron <jic23@kernel.org>
To: David Lechner <dlechner@baylibre.com>
Cc: linux-iio@vger.kernel.org, devicetree@vger.kernel.org,
	linux-staging@lists.linux.dev,
	"David Lechner" <david@lechnology.com>,
	"Rob Herring" <robh+dt@kernel.org>,
	"Krzysztof Kozlowski" <krzysztof.kozlowski+dt@linaro.org>,
	"Conor Dooley" <conor+dt@kernel.org>,
	"Michael Hennerich" <Michael.Hennerich@analog.com>,
	"Nuno Sá" <nuno.sa@analog.com>,
	"Axel Haslam" <ahaslam@baylibre.com>,
	"Philip Molloy" <pmolloy@baylibre.com>,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH v3 21/27] staging: iio: resolver: ad2s1210: convert LOT threshold attrs to event attrs
Date: Sat, 30 Sep 2023 16:29:17 +0100	[thread overview]
Message-ID: <20230930162917.7e289f77@jic23-huawei> (raw)
In-Reply-To: <20230929-ad2s1210-mainline-v3-21-fa4364281745@baylibre.com>

On Fri, 29 Sep 2023 12:23:26 -0500
David Lechner <dlechner@baylibre.com> wrote:

> From: David Lechner <david@lechnology.com>
> 
> From: David Lechner <dlechner@baylibre.com>
> 
> The AD2S1210 monitors the internal error signal (difference between
> estimated angle and measured angle) to determine a loss of position
> tracking (LOT) condition. When the error value exceeds a threshold, a
> fault is triggered. This threshold is user-configurable.
> 
> This patch converts the custom lot_high_thrd and lot_low_thrd attributes
> in the ad2s1210 driver to standard event attributes. This will allow
> tooling to be able to expose these in a generic way.
> 
> Since the low threshold determines the hysteresis, it requires some
> special handling to expose the difference between the high and low
> register values as the hysteresis instead of exposing the low register
> value directly.
> 
> The attributes also return the values in radians now as required by the
> ABI.
> 
> Actually emitting the fault event will be done in a later patch.
> 
> Signed-off-by: David Lechner <dlechner@baylibre.com>
> ---

A style comment inline. Otherwise this an any patches before it I skipped
commenting on look fine to me.


> +
> +static int ad2s1210_get_lot_low_threshold(struct ad2s1210_state *st,
> +					  int *val, int *val2)
> +{
> +	unsigned int high_reg_val, low_reg_val;
> +	int ret;
> +
> +	mutex_lock(&st->lock);
> +	ret = regmap_read(st->regmap, AD2S1210_REG_LOT_HIGH_THRD, &high_reg_val);
> +	if (ret < 0)
> +		goto error_ret;
> +
> +	ret = regmap_read(st->regmap, AD2S1210_REG_LOT_LOW_THRD, &low_reg_val);
> +
A separate error path is going to be easier to read.

	return IIO_VAL_INT_PLUS_MICRO;

error_ret:
	mutex_unlock(&st->lock);

	return ret;

Of make use of the new stuff in cleanup.h etc.  something like.

	scoped_guard(mutex)(&st->lock) {
		ret = regmap_read(st->regmap, ...)
		if (ret)
			return ret;

		ret = regmap_read(...)
		if (ret)
			return ret;
	}
	
	/* sysfs value is hysteresis rather than actual low value */

In general you could make could use o
guard(mutex)(&st->lock);
in the other functions where  you hold the lock to the end of the function.

Could do that as a follow on patch though and as that stuff is all
very new, I'm not going to mind if you don't want to use it at all and
just use the approach above.

> +error_ret:
> +	mutex_unlock(&st->lock);
> +
> +	if (ret < 0)
> +		return ret;
> +
> +	/* sysfs value is hysteresis rather than actual low value */
> +	*val = 0;
> +	*val2 = (high_reg_val - low_reg_val) *
> +		ad2s1210_lot_threshold_urad_per_lsb[st->resolution];
> +	return IIO_VAL_INT_PLUS_MICRO;
> +}
> +
> +static int ad2s1210_set_lot_low_threshold(struct ad2s1210_state *st,
> +					  int val, int val2)
> +{
> +	unsigned int reg_val, hysteresis;
> +	int ret;
> +
> +	/* all valid values are between 0 and pi/4 radians */
> +	if (val != 0)
> +		return -EINVAL;
> +
> +	hysteresis = val2 / ad2s1210_lot_threshold_urad_per_lsb[st->resolution];
> +
> +	mutex_lock(&st->lock);
> +	ret = regmap_read(st->regmap, AD2S1210_REG_LOT_HIGH_THRD, &reg_val);
> +	if (ret < 0)
> +		goto error_ret;
> +
> +	ret = regmap_write(st->regmap, AD2S1210_REG_LOT_LOW_THRD,
> +			   reg_val - hysteresis);
> +
> +error_ret:
> +	mutex_unlock(&st->lock);
> +
> +	return ret;
> +}
>


  reply	other threads:[~2023-09-30 15:29 UTC|newest]

Thread overview: 88+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-09-29 17:23 [PATCH v3 00/27] iio: resolver: move ad2s1210 out of staging David Lechner
2023-09-29 17:23 ` [PATCH v3 01/27] dt-bindings: iio: resolver: add devicetree bindings for ad2s1210 David Lechner
2023-09-30 14:34   ` Jonathan Cameron
2023-10-04 10:41     ` Hennerich, Michael
2023-10-02  8:02   ` Dan Carpenter
2023-10-02  9:03     ` Jonathan Cameron
2023-10-02 15:18   ` Rob Herring
2023-10-05 14:13     ` Jonathan Cameron
2023-09-29 17:23 ` [PATCH v3 02/27] staging: iio: resolver: ad2s1210: fix use before initialization David Lechner
2023-09-30 14:28   ` Jonathan Cameron
2023-10-02  8:07   ` Dan Carpenter
2023-10-02  9:17     ` Jonathan Cameron
2023-10-06 14:48       ` Vincent Whitchurch
2023-10-10  9:29         ` Jonathan Cameron
2023-09-29 17:23 ` [PATCH v3 03/27] staging: iio: resolver: ad2s1210: remove call to spi_setup() David Lechner
2023-09-30 14:35   ` Jonathan Cameron
2023-09-29 17:23 ` [PATCH v3 04/27] staging: iio: resolver: ad2s1210: check return of ad2s1210_initial() David Lechner
2023-09-30 14:37   ` Jonathan Cameron
2023-09-29 17:23 ` [PATCH v3 05/27] staging: iio: resolver: ad2s1210: remove spi_set_drvdata() David Lechner
2023-09-30 14:38   ` Jonathan Cameron
2023-09-29 17:23 ` [PATCH v3 06/27] staging: iio: resolver: ad2s1210: sort imports David Lechner
2023-09-30 14:39   ` Jonathan Cameron
2023-09-29 17:23 ` [PATCH v3 07/27] staging: iio: resolver: ad2s1210: always use 16-bit value for raw read David Lechner
2023-09-30 14:41   ` Jonathan Cameron
2023-09-29 17:23 ` [PATCH v3 08/27] staging: iio: resolver: ad2s1210: implement IIO_CHAN_INFO_SCALE David Lechner
2023-09-30 14:43   ` Jonathan Cameron
2023-09-29 17:23 ` [PATCH v3 09/27] staging: iio: resolver: ad2s1210: use devicetree to get CLKIN rate David Lechner
2023-09-30 14:44   ` Jonathan Cameron
2023-09-29 17:23 ` [PATCH v3 10/27] staging: iio: resolver: ad2s1210: use regmap for config registers David Lechner
2023-09-30 14:51   ` Jonathan Cameron
2023-09-29 17:23 ` [PATCH v3 11/27] staging: iio: resolver: ad2s1210: add debugfs reg access David Lechner
2023-09-30 14:52   ` Jonathan Cameron
2023-09-29 17:23 ` [PATCH v3 12/27] staging: iio: resolver: ad2s1210: remove config attribute David Lechner
2023-09-30 14:53   ` Jonathan Cameron
2023-09-29 17:23 ` [PATCH v3 13/27] staging: iio: resolver: ad2s1210: rework gpios David Lechner
2023-09-30 14:55   ` Jonathan Cameron
2023-10-05 13:38     ` Jonathan Cameron
2023-09-29 17:23 ` [PATCH v3 14/27] staging: iio: resolver: ad2s1210: implement hysteresis as channel attr David Lechner
2023-09-29 17:53   ` David Lechner
2023-09-30 15:00     ` Jonathan Cameron
2023-09-30 21:23       ` David Lechner
2023-09-30 15:03   ` Jonathan Cameron
2023-09-29 17:23 ` [PATCH v3 15/27] staging: iio: resolver: ad2s1210: refactor setting excitation frequency David Lechner
2023-09-30 15:06   ` Jonathan Cameron
2023-09-29 17:23 ` [PATCH v3 16/27] staging: iio: resolver: ad2s1210: read excitation frequency from control register David Lechner
2023-09-30 15:08   ` Jonathan Cameron
2023-09-29 17:23 ` [PATCH v3 17/27] staging: iio: resolver: ad2s1210: convert fexcit to channel attribute David Lechner
2023-09-30 15:12   ` Jonathan Cameron
2023-09-29 17:23 ` [PATCH v3 18/27] staging: iio: resolver: ad2s1210: convert resolution to devicetree property David Lechner
2023-09-30 15:15   ` Jonathan Cameron
2023-09-29 17:23 ` [PATCH v3 19/27] staging: iio: resolver: ad2s1210: add phase lock range support David Lechner
2023-09-30 15:18   ` Jonathan Cameron
2023-10-03  8:03   ` kernel test robot
2023-09-29 17:23 ` [PATCH v3 20/27] staging: iio: resolver: ad2s1210: add triggered buffer support David Lechner
2023-09-29 17:23 ` [PATCH v3 21/27] staging: iio: resolver: ad2s1210: convert LOT threshold attrs to event attrs David Lechner
2023-09-30 15:29   ` Jonathan Cameron [this message]
2023-10-03 11:11   ` kernel test robot
2023-09-29 17:23 ` [PATCH v3 22/27] staging: iio: resolver: ad2s1210: convert LOS threshold to event attr David Lechner
2023-09-30 15:32   ` Jonathan Cameron
2023-10-04 11:01     ` Hennerich, Michael
2023-10-05 14:16       ` Jonathan Cameron
2023-09-30 15:42   ` Jonathan Cameron
2023-09-30 15:46     ` Jonathan Cameron
2023-10-02 16:09     ` David Lechner
2023-10-05 14:37       ` Jonathan Cameron
2023-10-05 19:25         ` David Lechner
2023-10-03 14:21   ` kernel test robot
2023-09-29 17:23 ` [PATCH v3 23/27] staging: iio: resolver: ad2s1210: convert DOS overrange " David Lechner
2023-09-30 15:33   ` Jonathan Cameron
2023-10-03 17:21   ` kernel test robot
2023-09-29 17:23 ` [PATCH v3 24/27] staging: iio: resolver: ad2s1210: convert DOS mismatch " David Lechner
2023-10-03 20:08   ` kernel test robot
2023-09-29 17:23 ` [PATCH v3 25/27] staging: iio: resolver: ad2s1210: rename DOS reset min/max attrs David Lechner
2023-09-30 15:47   ` Jonathan Cameron
2023-10-02 17:06     ` David Lechner
2023-10-03 23:23   ` kernel test robot
2023-09-29 17:23 ` [PATCH v3 26/27] staging: iio: resolver: ad2s1210: implement fault events David Lechner
2023-09-30  3:55   ` kernel test robot
2023-09-30 16:00   ` Jonathan Cameron
2023-10-02 16:43     ` David Lechner
2023-10-02 16:58     ` David Lechner
2023-10-02 18:49       ` David Lechner
2023-10-05 14:52       ` Jonathan Cameron
2023-10-03 10:53   ` Dan Carpenter
2023-09-29 17:23 ` [PATCH v3 27/27] staging: iio: resolver: ad2s1210: add label attribute support David Lechner
2023-09-29 17:49 ` [PATCH v3 00/27] iio: resolver: move ad2s1210 out of staging David Lechner
2023-09-30 14:26   ` Jonathan Cameron
2023-09-29 22:02 ` David Lechner

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=20230930162917.7e289f77@jic23-huawei \
    --to=jic23@kernel.org \
    --cc=Michael.Hennerich@analog.com \
    --cc=ahaslam@baylibre.com \
    --cc=conor+dt@kernel.org \
    --cc=david@lechnology.com \
    --cc=devicetree@vger.kernel.org \
    --cc=dlechner@baylibre.com \
    --cc=krzysztof.kozlowski+dt@linaro.org \
    --cc=linux-iio@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-staging@lists.linux.dev \
    --cc=nuno.sa@analog.com \
    --cc=pmolloy@baylibre.com \
    --cc=robh+dt@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).