diff options
author | Andy Shevchenko <andriy.shevchenko@linux.intel.com> | 2024-05-30 21:12:29 +0200 |
---|---|---|
committer | Bartosz Golaszewski <bartosz.golaszewski@linaro.org> | 2024-06-04 10:17:24 +0200 |
commit | 5a646e03e956f45e74c0a606f51e1ebc13880309 (patch) | |
tree | 31601ffe1865406e39b73b8e51f6665ffc5e4d2b /drivers/gpio | |
parent | gpiolib: make gpiochip_set_desc_names() return void (diff) | |
download | linux-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.c | 12 |
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; } |