Message ID | 20200423174543.17161-10-michael@walle.cc (mailing list archive) |
---|---|
State | Not Applicable |
Headers | show |
Series | Add support for Kontron sl28cpld | expand |
Michael Walle <michael@walle.cc> writes: > This connects an IRQ domain to a gpiochip and reuses > gpiochip_to_irq(). A little bit more context and explanation why this function is useful would be appreciated. > Signed-off-by: Michael Walle <michael@walle.cc> > --- > drivers/gpio/gpiolib.c | 20 ++++++++++++++++++++ > include/linux/gpio/driver.h | 3 +++ > 2 files changed, 23 insertions(+) > > diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c > index 40f2d7f69be2..7b3d7f496b9a 100644 > --- a/drivers/gpio/gpiolib.c > +++ b/drivers/gpio/gpiolib.c > @@ -2722,6 +2722,26 @@ int gpiochip_irqchip_add_key(struct gpio_chip *gc, > } > EXPORT_SYMBOL_GPL(gpiochip_irqchip_add_key); > > +/** > + * gpiochip_irqchip_add_key() - adds an irqdomain to a gpiochip Copy & paste is wonderful > + * @gc: the gpiochip to add the irqchip to > + * @domain: the irqdomain to add to the gpiochip > + * > + * This function adds an IRQ domain to the gpiochip. > + */ > +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; > + > + return 0; > +} Thanks, tglx
Am 2020-04-27 13:42, schrieb Thomas Gleixner: > Michael Walle <michael@walle.cc> writes: >> This connects an IRQ domain to a gpiochip and reuses >> gpiochip_to_irq(). > > A little bit more context and explanation why this function is useful > would be appreciated. Ok I'll try to be a bit more elaborate the in the next version, (if this function is still there). For now: gpiochip_irqchip_add_domain() allows to use reqmap-irq, which exports an irqdomain, with gpiolib while reusing gpiochip_to_irq(). Both gpiochip_irqchip_* and regmap_irq partially provides the same functionality. The new function will help to connect just the minimal functionality of the gpiochip_irqchip which is needed to work together with regmap-irq. > >> Signed-off-by: Michael Walle <michael@walle.cc> >> --- >> drivers/gpio/gpiolib.c | 20 ++++++++++++++++++++ >> include/linux/gpio/driver.h | 3 +++ >> 2 files changed, 23 insertions(+) >> >> diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c >> index 40f2d7f69be2..7b3d7f496b9a 100644 >> --- a/drivers/gpio/gpiolib.c >> +++ b/drivers/gpio/gpiolib.c >> @@ -2722,6 +2722,26 @@ int gpiochip_irqchip_add_key(struct gpio_chip >> *gc, >> } >> EXPORT_SYMBOL_GPL(gpiochip_irqchip_add_key); >> >> +/** >> + * gpiochip_irqchip_add_key() - adds an irqdomain to a gpiochip > > Copy & paste is wonderful whoops. -michael > >> + * @gc: the gpiochip to add the irqchip to >> + * @domain: the irqdomain to add to the gpiochip >> + * >> + * This function adds an IRQ domain to the gpiochip. >> + */ >> +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; >> + >> + return 0; >> +} > > Thanks, > > tglx
diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c index 40f2d7f69be2..7b3d7f496b9a 100644 --- a/drivers/gpio/gpiolib.c +++ b/drivers/gpio/gpiolib.c @@ -2722,6 +2722,26 @@ int gpiochip_irqchip_add_key(struct gpio_chip *gc, } EXPORT_SYMBOL_GPL(gpiochip_irqchip_add_key); +/** + * gpiochip_irqchip_add_key() - adds an irqdomain to a gpiochip + * @gc: the gpiochip to add the irqchip to + * @domain: the irqdomain to add to the gpiochip + * + * This function adds an IRQ domain to the gpiochip. + */ +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; + + return 0; +} +EXPORT_SYMBOL_GPL(gpiochip_irqchip_add_domain); + #else /* CONFIG_GPIOLIB_IRQCHIP */ static inline int gpiochip_add_irqchip(struct gpio_chip *gc, diff --git a/include/linux/gpio/driver.h b/include/linux/gpio/driver.h index b8fc92c177eb..dfb1aa0ad4dc 100644 --- a/include/linux/gpio/driver.h +++ b/include/linux/gpio/driver.h @@ -599,6 +599,9 @@ int gpiochip_irqchip_add_key(struct gpio_chip *gc, bool gpiochip_irqchip_irq_valid(const struct gpio_chip *gc, unsigned int offset); +int gpiochip_irqchip_add_domain(struct gpio_chip *gc, + struct irq_domain *domain); + #ifdef CONFIG_LOCKDEP /*
This connects an IRQ domain to a gpiochip and reuses gpiochip_to_irq(). Signed-off-by: Michael Walle <michael@walle.cc> --- drivers/gpio/gpiolib.c | 20 ++++++++++++++++++++ include/linux/gpio/driver.h | 3 +++ 2 files changed, 23 insertions(+)