[PATCH v2] iio: adc: ti-ads7924: Use guard(mutex) in ADC read helper

Giorgi Tchankvetadze
2026-04-20T11:35:30Z

Replace mutex_lock()/mutex_unlock() pair with guard(mutex)()
and move the lock into ads7924_get_adc_result(). Keeping the guard
in the helper makes the locking scope match the operation being protected.

Suggested-by: Jonathan Cameron <jic23@kernel.org>
Signed-off-by: Giorgi Tchankvetadze <giorgitchankvetadze1997@gmail.com>
---
Changes in v2:
- Move guard(mutex)() into ads7924_get_adc_result().
- Drop the extra scope from ads7924_read_raw().

drivers/iio/adc/ti-ads7924.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/drivers/iio/adc/ti-ads7924.c b/drivers/iio/adc/ti-ads7924.c
index bbcc4fc22b6e..5f294595a415 100644
--- a/drivers/iio/adc/ti-ads7924.c
+++ b/drivers/iio/adc/ti-ads7924.c
@@ -12,6 +12,7 @@
*/

#include <linux/bitfield.h>
+#include <linux/cleanup.h>
#include <linux/delay.h>
#include <linux/gpio/consumer.h>
#include <linux/init.h>
@@ -198,6 +199,8 @@ static int ads7924_get_adc_result(struct ads7924_data *data,
if (chan->channel < 0 || chan->channel >= ADS7924_CHANNELS)
return -EINVAL;

+ guard(mutex)(&data->lock);
+
if (data->conv_invalid) {
int conv_time;

@@ -227,9 +230,7 @@ static int ads7924_read_raw(struct iio_dev *indio_dev,

switch (mask) {
case IIO_CHAN_INFO_RAW:
- mutex_lock(&data->lock);
ret = ads7924_get_adc_result(data, chan, val);
- mutex_unlock(&data->lock);
if (ret < 0)
return ret;

--
2.52.0