Message ID | 20210304070501.30942-1-noltari@gmail.com |
---|---|
State | New |
Headers | show |
Series | gpio: regmap: disable IRQ domain without GPIOLIB_IRQCHIP | expand |
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 <noltari@gmail.com> 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
On Thu, Mar 4, 2021 at 9:29 AM Michael Walle <michael@walle.cc> 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 <noltari@gmail.com> > > 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
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);
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 <noltari@gmail.com> --- drivers/gpio/gpio-regmap.c | 4 ++++ 1 file changed, 4 insertions(+)