]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
iio: light: si1133: use guard(mutex)() macro
authorJoshua Crofts <joshua.crofts1@gmail.com>
Tue, 5 May 2026 07:31:33 +0000 (09:31 +0200)
committerJonathan Cameron <jic23@kernel.org>
Sun, 31 May 2026 09:59:35 +0000 (10:59 +0100)
Remove mutex_lock()/mutex_unlock() and goto instances and add
guard(mutex)() macro to modernize driver and improve mutex handling.

Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Signed-off-by: Joshua Crofts <joshua.crofts1@gmail.com>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
drivers/iio/light/si1133.c

index ef5c38e303a6eca219345794dc0a1d7fb2ee769f..655fa778b4a633d4fce64959b6e9fd7e71d1c5aa 100644 (file)
@@ -8,6 +8,7 @@
 
 #include <linux/array_size.h>
 #include <linux/bitops.h>
+#include <linux/cleanup.h>
 #include <linux/completion.h>
 #include <linux/delay.h>
 #include <linux/dev_printk.h>
@@ -396,7 +397,7 @@ static int si1133_command(struct si1133_data *data, u8 cmd)
        int err;
        int expected_seq;
 
-       mutex_lock(&data->mutex);
+       guard(mutex)(&data->mutex);
 
        expected_seq = (data->rsp_seq + 1) & SI1133_MAX_CMD_CTR;
 
@@ -413,7 +414,7 @@ static int si1133_command(struct si1133_data *data, u8 cmd)
        if (err) {
                dev_warn(dev, "Failed to write command 0x%02x, ret=%d\n", cmd,
                         err);
-               goto out;
+               return err;
        }
 
        if (cmd == SI1133_CMD_FORCE) {
@@ -421,12 +422,11 @@ static int si1133_command(struct si1133_data *data, u8 cmd)
                timeout = msecs_to_jiffies(SI1133_COMPLETION_TIMEOUT_MS);
                if (!wait_for_completion_timeout(&data->completion, timeout)) {
                        regmap_write(data->regmap, SI1133_REG_IRQ_ENABLE, 0);
-                       err = -ETIMEDOUT;
-                       goto out;
+                       return -ETIMEDOUT;
                }
                err = regmap_read(data->regmap, SI1133_REG_RESPONSE0, &resp);
                if (err)
-                       goto out;
+                       return err;
        } else {
                err = regmap_read_poll_timeout(data->regmap,
                                               SI1133_REG_RESPONSE0, resp,
@@ -444,7 +444,7 @@ static int si1133_command(struct si1133_data *data, u8 cmd)
                         * counters being out of sync.
                         */
                        si1133_cmd_reset_counter(data);
-                       goto out;
+                       return err;
                }
        }
 
@@ -455,9 +455,6 @@ static int si1133_command(struct si1133_data *data, u8 cmd)
                data->rsp_seq = expected_seq;
        }
 
-out:
-       mutex_unlock(&data->mutex);
-
        return err;
 }