All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Kurt Borja" <kuurtb@gmail.com>
To: "Nuno Sá" <noname.nuno@gmail.com>,
	"Kurt Borja" <kuurtb@gmail.com>,
	"Andy Shevchenko" <andriy.shevchenko@intel.com>,
	"Lars-Peter Clausen" <lars@metafoo.de>,
	"Michael Hennerich" <Michael.Hennerich@analog.com>,
	"Jonathan Cameron" <jic23@kernel.org>,
	"Benson Leung" <bleung@chromium.org>,
	"Antoniu Miclaus" <antoniu.miclaus@analog.com>,
	"Gwendal Grignou" <gwendal@chromium.org>,
	"Shrikant Raskar" <raskar.shree97@gmail.com>,
	"Per-Daniel Olsson" <perdaniel.olsson@axis.com>
Cc: "David Lechner" <dlechner@baylibre.com>,
	"Nuno Sá" <nuno.sa@analog.com>,
	"Andy Shevchenko" <andy@kernel.org>,
	"Guenter Roeck" <groeck@chromium.org>,
	"Jonathan Cameron" <Jonathan.Cameron@huawei.com>,
	linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org,
	chrome-platform@lists.linux.dev
Subject: Re: [PATCH RFC 6/6] iio: light: opt4060: Use cleanup.h for IIO locks
Date: Thu, 04 Dec 2025 12:31:02 -0500	[thread overview]
Message-ID: <DEPM0E265UO3.7LAESKGRLBO9@gmail.com> (raw)
In-Reply-To: <17ac2fa9033104c3bf9260fbecc1c9a5b42fcbba.camel@gmail.com>

On Thu Dec 4, 2025 at 9:42 AM -05, Nuno Sá wrote:
> On Wed, 2025-12-03 at 14:18 -0500, Kurt Borja wrote:
>> Simplify and drop "hacky" busy-waiting code in
>> opt4060_set_driver_state() by using guard().
>> 
>> Signed-off-by: Kurt Borja <kuurtb@gmail.com>
>> ---
>>  drivers/iio/light/opt4060.c | 52 +++++++++++++++------------------------------
>>  1 file changed, 17 insertions(+), 35 deletions(-)
>> 
>> diff --git a/drivers/iio/light/opt4060.c b/drivers/iio/light/opt4060.c
>> index 500899d7bd62..903963606143 100644
>> --- a/drivers/iio/light/opt4060.c
>> +++ b/drivers/iio/light/opt4060.c
>> @@ -22,6 +22,7 @@
>>  #include <linux/iio/trigger.h>
>>  #include <linux/iio/trigger_consumer.h>
>>  #include <linux/iio/triggered_buffer.h>
>> +#include <linux/cleanup.h>
>>  
>>  /* OPT4060 register set */
>>  #define OPT4060_RED_MSB				0x00
>> @@ -302,41 +303,22 @@ static int opt4060_set_driver_state(struct iio_dev *indio_dev,
>>  				    bool continuous_irq)
>>  {
>>  	struct opt4060_chip *chip = iio_priv(indio_dev);
>> -	int ret = 0;
>> -any_mode_retry:
>> -	if (!iio_device_claim_buffer(indio_dev)) {
>> -		/*
>> -		 * This one is a *bit* hacky. If we cannot claim buffer mode,
>> -		 * then try direct mode so that we make sure things cannot
>> -		 * concurrently change. And we just keep trying until we get one
>> -		 * of the modes...
>> -		 */
>> -		if (!iio_device_claim_direct(indio_dev))
>> -			goto any_mode_retry;
>> -		/*
>> -		 * This path means that we managed to claim direct mode. In
>> -		 * this case the buffer isn't enabled and it's okay to leave
>> -		 * continuous mode for sampling and/or irq.
>> -		 */
>> -		ret = opt4060_set_state_common(chip, continuous_sampling,
>> -					       continuous_irq);
>> -		iio_device_release_direct(indio_dev);
>> -		return ret;
>> -	} else {
>> -		/*
>> -		 * This path means that we managed to claim buffer mode. In
>> -		 * this case the buffer is enabled and irq and sampling must go
>> -		 * to or remain continuous, but only if the trigger is from this
>> -		 * device.
>> -		 */
>> -		if (!iio_trigger_validate_own_device(indio_dev->trig, indio_dev))
>> -			ret = opt4060_set_state_common(chip, true, true);
>> -		else
>> -			ret = opt4060_set_state_common(chip, continuous_sampling,
>> -						       continuous_irq);
>> -		iio_device_release_buffer(indio_dev);
>> -	}
>> -	return ret;
>> +
>> +	guard(iio_device_claim)(indio_dev);
>> +
>> +	/*
>> +	 * If we manage to claim buffer mode and we are using our own trigger,
>> +	 * IRQ and sampling must go to or remain continuous.
>> +	 */
>> +	if (iio_buffer_enabled(indio_dev) && iio_trigger_using_own(indio_dev))
>> +		return opt4060_set_state_common(chip, true, true);
>> +
>
> I think that if we are open coding lock(mlock) plus iio_buffer_enabled, then
> iio_device_claim kind of loses it's real meaning. To me
>
> guard(iio_device_claim)(indio_dev);
>
> it's basically iio_dev_lock

It is! That's why I think if we go down this route we should rename the
API as proposed in [1].

[1] https://lore.kernel.org/linux-iio/DEPLQT84HBAO.2GAY5BHP05HNL@gmail.com/


-- 
 ~ Kurt


  reply	other threads:[~2025-12-04 17:31 UTC|newest]

Thread overview: 45+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-12-03 19:18 [PATCH RFC 0/6] iio: core: Introduce cleanup.h support for mode locks Kurt Borja
2025-12-03 19:18 ` [PATCH RFC 1/6] iio: core: Match iio_device_claim_*() return semantics Kurt Borja
2025-12-04 14:23   ` Nuno Sá
2025-12-04 15:05     ` Andy Shevchenko
2025-12-06 18:07       ` Jonathan Cameron
2025-12-04 17:27     ` Kurt Borja
2025-12-06 18:05     ` Jonathan Cameron
2025-12-07 15:59       ` Kurt Borja
2025-12-03 19:18 ` [PATCH RFC 2/6] iio: core: Match iio_device_claim_*() naming Kurt Borja
2025-12-03 21:50   ` David Lechner
2025-12-04 17:35     ` Kurt Borja
2025-12-06 18:11       ` Jonathan Cameron
2025-12-03 19:18 ` [PATCH RFC 3/6] iio: core: Add cleanup.h support for iio_device_claim_*() Kurt Borja
2025-12-03 21:50   ` David Lechner
2025-12-03 22:34     ` David Lechner
2025-12-04 17:18       ` Kurt Borja
2025-12-04 17:36         ` Andy Shevchenko
2025-12-06 18:43           ` Jonathan Cameron
2025-12-06 20:40             ` Andy Shevchenko
2025-12-07 16:00             ` Kurt Borja
2025-12-06 18:20   ` Jonathan Cameron
2025-12-07 15:59     ` Kurt Borja
2025-12-03 19:18 ` [PATCH RFC 4/6] iio: light: vcnl4000: Use cleanup.h for IIO locks Kurt Borja
2025-12-03 22:19   ` David Lechner
2025-12-03 19:18 ` [PATCH RFC 5/6] iio: health: max30102: " Kurt Borja
2025-12-03 21:52   ` David Lechner
2025-12-04 17:07     ` Kurt Borja
2025-12-04 17:35       ` David Lechner
2025-12-04 17:47         ` Kurt Borja
2025-12-06 18:17           ` Jonathan Cameron
2025-12-07 15:59             ` Kurt Borja
2025-12-03 19:18 ` [PATCH RFC 6/6] iio: light: opt4060: " Kurt Borja
2025-12-03 22:40   ` David Lechner
2025-12-04 17:23     ` Kurt Borja
2025-12-04 14:42   ` Nuno Sá
2025-12-04 17:31     ` Kurt Borja [this message]
2025-12-04 14:36 ` [PATCH RFC 0/6] iio: core: Introduce cleanup.h support for mode locks Nuno Sá
2025-12-04 15:07   ` Andy Shevchenko
2025-12-06 18:46     ` Jonathan Cameron
2025-12-07 16:00       ` Kurt Borja
2025-12-09 10:34       ` Nuno Sá
2025-12-09 17:05         ` David Lechner
2025-12-10  9:17           ` Nuno Sá
2025-12-10 18:04             ` Jonathan Cameron
2025-12-04 17:33   ` Kurt Borja

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=DEPM0E265UO3.7LAESKGRLBO9@gmail.com \
    --to=kuurtb@gmail.com \
    --cc=Jonathan.Cameron@huawei.com \
    --cc=Michael.Hennerich@analog.com \
    --cc=andriy.shevchenko@intel.com \
    --cc=andy@kernel.org \
    --cc=antoniu.miclaus@analog.com \
    --cc=bleung@chromium.org \
    --cc=chrome-platform@lists.linux.dev \
    --cc=dlechner@baylibre.com \
    --cc=groeck@chromium.org \
    --cc=gwendal@chromium.org \
    --cc=jic23@kernel.org \
    --cc=lars@metafoo.de \
    --cc=linux-iio@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=noname.nuno@gmail.com \
    --cc=nuno.sa@analog.com \
    --cc=perdaniel.olsson@axis.com \
    --cc=raskar.shree97@gmail.com \
    /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.