]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
gpio: 74x164: Simplify code with cleanup helpers
authorAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Fri, 7 Feb 2025 15:17:09 +0000 (17:17 +0200)
committerBartosz Golaszewski <bartosz.golaszewski@linaro.org>
Tue, 11 Feb 2025 08:40:03 +0000 (09:40 +0100)
Use macros defined in linux/cleanup.h to automate resource lifetime
control in the driver.

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
Link: https://lore.kernel.org/r/20250207151825.2122419-3-andriy.shevchenko@linux.intel.com
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
drivers/gpio/gpio-74x164.c

index fca6cd2eb1ddacb3c330111343ebecf9b7c9234d..70c662bbca7b41c7f110cafe8ff8b509cc5ad0ec 100644 (file)
@@ -7,6 +7,7 @@
  */
 
 #include <linux/bitops.h>
+#include <linux/cleanup.h>
 #include <linux/gpio/consumer.h>
 #include <linux/gpio/driver.h>
 #include <linux/module.h>
@@ -43,13 +44,10 @@ static int gen_74x164_get_value(struct gpio_chip *gc, unsigned offset)
        struct gen_74x164_chip *chip = gpiochip_get_data(gc);
        u8 bank = chip->registers - 1 - offset / 8;
        u8 pin = offset % 8;
-       int ret;
 
-       mutex_lock(&chip->lock);
-       ret = (chip->buffer[bank] >> pin) & 0x1;
-       mutex_unlock(&chip->lock);
+       guard(mutex)(&chip->lock);
 
-       return ret;
+       return (chip->buffer[bank] >> pin) & 0x1;
 }
 
 static void gen_74x164_set_value(struct gpio_chip *gc,
@@ -59,14 +57,14 @@ static void gen_74x164_set_value(struct gpio_chip *gc,
        u8 bank = chip->registers - 1 - offset / 8;
        u8 pin = offset % 8;
 
-       mutex_lock(&chip->lock);
+       guard(mutex)(&chip->lock);
+
        if (val)
                chip->buffer[bank] |= (1 << pin);
        else
                chip->buffer[bank] &= ~(1 << pin);
 
        __gen_74x164_write_config(chip);
-       mutex_unlock(&chip->lock);
 }
 
 static void gen_74x164_set_multiple(struct gpio_chip *gc, unsigned long *mask,
@@ -78,7 +76,8 @@ static void gen_74x164_set_multiple(struct gpio_chip *gc, unsigned long *mask,
        size_t bank;
        unsigned long bitmask;
 
-       mutex_lock(&chip->lock);
+       guard(mutex)(&chip->lock);
+
        for_each_set_clump8(offset, bankmask, mask, chip->registers * 8) {
                bank = chip->registers - 1 - offset / 8;
                bitmask = bitmap_get_value8(bits, offset) & bankmask;
@@ -87,7 +86,6 @@ static void gen_74x164_set_multiple(struct gpio_chip *gc, unsigned long *mask,
                chip->buffer[bank] |= bitmask;
        }
        __gen_74x164_write_config(chip);
-       mutex_unlock(&chip->lock);
 }
 
 static int gen_74x164_direction_output(struct gpio_chip *gc,