summaryrefslogtreecommitdiffstats
path: root/drivers/gpio
diff options
context:
space:
mode:
authorAndy Shevchenko <andriy.shevchenko@linux.intel.com>2024-05-30 21:12:29 +0200
committerBartosz Golaszewski <bartosz.golaszewski@linaro.org>2024-06-04 10:17:24 +0200
commit5a646e03e956f45e74c0a606f51e1ebc13880309 (patch)
tree31601ffe1865406e39b73b8e51f6665ffc5e4d2b /drivers/gpio
parentgpiolib: make gpiochip_set_desc_names() return void (diff)
downloadlinux-5a646e03e956f45e74c0a606f51e1ebc13880309.tar.xz
linux-5a646e03e956f45e74c0a606f51e1ebc13880309.zip
gpiolib: Return label, if set, for IRQ only line
If line has been locked as IRQ without requesting, still check its label and return it, if not NULL. Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> Link: https://lore.kernel.org/r/20240530191418.1138003-2-andriy.shevchenko@linux.intel.com Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
Diffstat (limited to 'drivers/gpio')
-rw-r--r--drivers/gpio/gpiolib.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c
index ea723cf1c87f..3f578d674b53 100644
--- a/drivers/gpio/gpiolib.c
+++ b/drivers/gpio/gpiolib.c
@@ -106,16 +106,16 @@ const char *gpiod_get_label(struct gpio_desc *desc)
unsigned long flags;
flags = READ_ONCE(desc->flags);
- if (test_bit(FLAG_USED_AS_IRQ, &flags) &&
- !test_bit(FLAG_REQUESTED, &flags))
- return "interrupt";
-
- if (!test_bit(FLAG_REQUESTED, &flags))
- return NULL;
label = srcu_dereference_check(desc->label, &desc->gdev->desc_srcu,
srcu_read_lock_held(&desc->gdev->desc_srcu));
+ if (test_bit(FLAG_USED_AS_IRQ, &flags))
+ return label->str ?: "interrupt";
+
+ if (!test_bit(FLAG_REQUESTED, &flags))
+ return NULL;
+
return label->str;
}