]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
gpiolib: Split out gpiochip_irqchip_add_allocated_domain() helper
authorAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Wed, 21 Jun 2023 17:49:42 +0000 (20:49 +0300)
committerBartosz Golaszewski <bartosz.golaszewski@linaro.org>
Mon, 10 Jul 2023 09:29:45 +0000 (11:29 +0200)
The gpiochip_irqchip_add_allocated_domain() can be used
in another place in the code.

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
drivers/gpio/gpiolib.c

index e4300b99bfa59fa68cf37209f74e5f31f56655d3..0179902d3b74c5d9a48bdc320de3cbed0432b997 100644 (file)
@@ -1638,6 +1638,28 @@ static void gpiochip_set_irq_hooks(struct gpio_chip *gc)
        }
 }
 
+static int gpiochip_irqchip_add_allocated_domain(struct gpio_chip *gc,
+                                                struct irq_domain *domain,
+                                                bool allocated_externally)
+{
+       if (!domain)
+               return -EINVAL;
+
+       gc->to_irq = gpiochip_to_irq;
+       gc->irq.domain = domain;
+       gc->irq.domain_is_allocated_externally = allocated_externally;
+
+       /*
+        * Using barrier() here to prevent compiler from reordering
+        * gc->irq.initialized before adding irqdomain.
+        */
+       barrier();
+
+       gc->irq.initialized = true;
+
+       return 0;
+}
+
 /**
  * gpiochip_add_irqchip() - adds an IRQ chip to a GPIO chip
  * @gc: the GPIO chip to add the IRQ chip to
@@ -1791,22 +1813,7 @@ static void gpiochip_irqchip_remove(struct gpio_chip *gc)
 int gpiochip_irqchip_add_domain(struct gpio_chip *gc,
                                struct irq_domain *domain)
 {
-       if (!domain)
-               return -EINVAL;
-
-       gc->to_irq = gpiochip_to_irq;
-       gc->irq.domain = domain;
-       gc->irq.domain_is_allocated_externally = true;
-
-       /*
-        * Using barrier() here to prevent compiler from reordering
-        * gc->irq.initialized before adding irqdomain.
-        */
-       barrier();
-
-       gc->irq.initialized = true;
-
-       return 0;
+       return gpiochip_irqchip_add_allocated_domain(gc, domain, true);
 }
 EXPORT_SYMBOL_GPL(gpiochip_irqchip_add_domain);