]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
gpiolib: reuse macro code in GPIO descriptor printk helpers
authorBartosz Golaszewski <bartosz.golaszewski@linaro.org>
Mon, 22 Sep 2025 09:54:04 +0000 (11:54 +0200)
committerBartosz Golaszewski <bartosz.golaszewski@linaro.org>
Mon, 13 Oct 2025 07:56:05 +0000 (09:56 +0200)
A lot of code in gpiod_$level() macros is duplicated across all
definitions. Create an intermediate macro which allows us to reuse the
low-level code.

Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
drivers/gpio/gpiolib.h

index 6ee29d0222393dfff84608c79d21f4022cdd9cc1..dd96b2c2e16ed1cad2a573e0dfec3ab7260da1a8 100644 (file)
@@ -283,29 +283,17 @@ static inline int gpio_chip_hwgpio(const struct gpio_desc *desc)
 
 /* With descriptor prefix */
 
-#define gpiod_err(desc, fmt, ...) \
+#define __gpiod_pr(level, desc, fmt, ...) \
 do { \
        scoped_guard(srcu, &desc->gdev->desc_srcu) { \
-               pr_err("gpio-%d (%s): " fmt, desc_to_gpio(desc), \
-                      gpiod_get_label(desc) ? : "?", ##__VA_ARGS__); \
+               pr_##level("gpio-%d (%s): " fmt, desc_to_gpio(desc), \
+                          gpiod_get_label(desc) ?: "?", ##__VA_ARGS__); \
        } \
 } while (0)
 
-#define gpiod_warn(desc, fmt, ...) \
-do { \
-       scoped_guard(srcu, &desc->gdev->desc_srcu) { \
-               pr_warn("gpio-%d (%s): " fmt, desc_to_gpio(desc), \
-                       gpiod_get_label(desc) ? : "?", ##__VA_ARGS__); \
-       } \
-} while (0)
-
-#define gpiod_dbg(desc, fmt, ...) \
-do { \
-       scoped_guard(srcu, &desc->gdev->desc_srcu) { \
-               pr_debug("gpio-%d (%s): " fmt, desc_to_gpio(desc), \
-                        gpiod_get_label(desc) ? : "?", ##__VA_ARGS__); \
-       } \
-} while (0)
+#define gpiod_err(desc, fmt, ...) __gpiod_pr(err, desc, fmt, ##__VA_ARGS__)
+#define gpiod_warn(desc, fmt, ...) __gpiod_pr(warn, desc, fmt, ##__VA_ARGS__)
+#define gpiod_dbg(desc, fmt, ...) __gpiod_pr(debug, desc, fmt, ##__VA_ARGS__)
 
 /* With chip prefix */