2021-03-04 15:17:16

by Álvaro Fernández Rojas

[permalink] [raw]
Subject: [PATCH] gpio: regmap: disable IRQ domain without GPIOLIB_IRQCHIP

The current code doesn't check if GPIOLIB_IRQCHIP is enabled, which results in
a compilation error when trying to build gpio-regmap without having selected
CONFIG_GPIOLIB_IRQCHIP.

Fixes: ebe363197e52 ("gpio: add a reusable generic gpio_chip using regmap")
Signed-off-by: Álvaro Fernández Rojas <[email protected]>
---
drivers/gpio/gpio-regmap.c | 4 ++++
1 file changed, 4 insertions(+)

diff --git a/drivers/gpio/gpio-regmap.c b/drivers/gpio/gpio-regmap.c
index 5412cb3b0b2a..fed1e269c42a 100644
--- a/drivers/gpio/gpio-regmap.c
+++ b/drivers/gpio/gpio-regmap.c
@@ -279,16 +279,20 @@ struct gpio_regmap *gpio_regmap_register(const struct gpio_regmap_config *config
if (ret < 0)
goto err_free_gpio;

+#ifdef CONFIG_GPIOLIB_IRQCHIP
if (config->irq_domain) {
ret = gpiochip_irqchip_add_domain(chip, config->irq_domain);
if (ret)
goto err_remove_gpiochip;
}
+#endif /* CONFIG_GPIOLIB_IRQCHIP */

return gpio;

+#ifdef CONFIG_GPIOLIB_IRQCHIP
err_remove_gpiochip:
gpiochip_remove(chip);
+#endif /* CONFIG_GPIOLIB_IRQCHIP */
err_free_gpio:
kfree(gpio);
return ERR_PTR(ret);
--
2.20.1


2021-03-04 15:36:37

by Michael Walle

[permalink] [raw]
Subject: Re: [PATCH] gpio: regmap: disable IRQ domain without GPIOLIB_IRQCHIP

Am 2021-03-04 08:05, schrieb Álvaro Fernández Rojas:
> The current code doesn't check if GPIOLIB_IRQCHIP is enabled, which
> results in
> a compilation error when trying to build gpio-regmap without having
> selected
> CONFIG_GPIOLIB_IRQCHIP.
>
> Fixes: ebe363197e52 ("gpio: add a reusable generic gpio_chip using
> regmap")
> Signed-off-by: Álvaro Fernández Rojas <[email protected]>

Nice catch.

However, instead of having that ifdef, commit 6a45b0e2589f ("gpiolib:
Introduce gpiochip_irqchip_add_domain()") could be fixed. That one is
missing a stub if CONFIG_GPIOLIB_IRQCHIP is not defined.

--- a/include/linux/gpio/driver.h
+++ b/include/linux/gpio/driver.h
@@ -624,8 +624,16 @@ void gpiochip_irq_domain_deactivate(struct
irq_domain *domain,
bool gpiochip_irqchip_irq_valid(const struct gpio_chip *gc,
unsigned int offset);

+#ifdef CONFIG_GPIOLIB_IRQCHIP
int gpiochip_irqchip_add_domain(struct gpio_chip *gc,
struct irq_domain *domain);
+#else
+static inline int gpiochip_irqchip_add_domain(struct gpio_chip *gc,
+ struct irq_domain *domain)
+{
+ return 0;
+}
+#endif /* CONFIG_GPIOLIB_IRQCHIP */

Linus, do you agree?

-michael

2021-03-05 00:07:32

by Linus Walleij

[permalink] [raw]
Subject: Re: [PATCH] gpio: regmap: disable IRQ domain without GPIOLIB_IRQCHIP

On Thu, Mar 4, 2021 at 9:29 AM Michael Walle <[email protected]> wrote:
> Am 2021-03-04 08:05, schrieb Álvaro Fernández Rojas:

> > The current code doesn't check if GPIOLIB_IRQCHIP is enabled, which
> > results in
> > a compilation error when trying to build gpio-regmap without having
> > selected
> > CONFIG_GPIOLIB_IRQCHIP.
> >
> > Fixes: ebe363197e52 ("gpio: add a reusable generic gpio_chip using
> > regmap")
> > Signed-off-by: Álvaro Fernández Rojas <[email protected]>
>
> Nice catch.
>
> However, instead of having that ifdef, commit 6a45b0e2589f ("gpiolib:
> Introduce gpiochip_irqchip_add_domain()") could be fixed. That one is
> missing a stub if CONFIG_GPIOLIB_IRQCHIP is not defined.
>
> --- a/include/linux/gpio/driver.h
> +++ b/include/linux/gpio/driver.h
> @@ -624,8 +624,16 @@ void gpiochip_irq_domain_deactivate(struct
> irq_domain *domain,
> bool gpiochip_irqchip_irq_valid(const struct gpio_chip *gc,
> unsigned int offset);
>
> +#ifdef CONFIG_GPIOLIB_IRQCHIP
> int gpiochip_irqchip_add_domain(struct gpio_chip *gc,
> struct irq_domain *domain);
> +#else
> +static inline int gpiochip_irqchip_add_domain(struct gpio_chip *gc,
> + struct irq_domain *domain)
> +{
> + return 0;
> +}
> +#endif /* CONFIG_GPIOLIB_IRQCHIP */
>
> Linus, do you agree?

Oh that is a better fix. Please go with this Álvaro!

Yours,
Linus Walleij