Message ID | 20221012192348.2234478-1-linus.walleij@linaro.org |
---|---|
State | New |
Headers | show |
Series | bcma: gpio: Convert to immutable gpio irqchip | expand |
On Wed, 12 Oct 2022 20:23:48 +0100, Linus Walleij <linus.walleij@linaro.org> wrote: > > This switches the BCMA gpio irqchip to be immutable. > > Tested on the D-Link DWL-6810AP. > > Cc: Marc Zyngier <maz@kernel.org> > Cc: Bartosz Golaszewski <brgl@bgdev.pl> > Cc: Rafał Miłecki <zajec5@gmail.com> > Signed-off-by: Linus Walleij <linus.walleij@linaro.org> Acked-by: Marc Zyngier <maz@kernel.org> M.
On Wed, Oct 12, 2022 at 9:25 PM Linus Walleij <linus.walleij@linaro.org> wrote: > > This switches the BCMA gpio irqchip to be immutable. > > Tested on the D-Link DWL-6810AP. > > Cc: Marc Zyngier <maz@kernel.org> > Cc: Bartosz Golaszewski <brgl@bgdev.pl> > Cc: Rafał Miłecki <zajec5@gmail.com> > Signed-off-by: Linus Walleij <linus.walleij@linaro.org> > --- Reviewed-by: Bartosz Golaszewski <brgl@bgdev.pl> Why is this here and not in drivers/gpio/? Bart
On Fri, Oct 14, 2022 at 11:05 AM Bartosz Golaszewski <brgl@bgdev.pl> wrote: > On Wed, Oct 12, 2022 at 9:25 PM Linus Walleij <linus.walleij@linaro.org> wrote: > > > > This switches the BCMA gpio irqchip to be immutable. > > > > Tested on the D-Link DWL-6810AP. > > > > Cc: Marc Zyngier <maz@kernel.org> > > Cc: Bartosz Golaszewski <brgl@bgdev.pl> > > Cc: Rafał Miłecki <zajec5@gmail.com> > > Signed-off-by: Linus Walleij <linus.walleij@linaro.org> > > --- > > Reviewed-by: Bartosz Golaszewski <brgl@bgdev.pl> > > Why is this here and not in drivers/gpio/? I don't remember exactly but I think it was that it would needlessly expose all of the gory BCMA details into a global header so it was the lesser evil. Yours, Linus Walleij
Linus Walleij <linus.walleij@linaro.org> writes: > This switches the BCMA gpio irqchip to be immutable. > > Tested on the D-Link DWL-6810AP. I'm not familiar with the gpio system, what's the benefit from this? I can add that to the commit log.
On Sat, 15 Oct 2022 05:51:01 +0100, Kalle Valo <kvalo@kernel.org> wrote: > > Linus Walleij <linus.walleij@linaro.org> writes: > > > This switches the BCMA gpio irqchip to be immutable. > > > > Tested on the D-Link DWL-6810AP. > > I'm not familiar with the gpio system, what's the benefit from this? I > can add that to the commit log. TL;DR: the GPIO subsystem plays dirty tricks on the irqchip structures, and we're fixing it one driver at a time. See merge commit 4bde53ab3370 for all the details. Thanks, M.
Linus Walleij <linus.walleij@linaro.org> wrote: > This switches the BCMA gpio irqchip to be immutable. The GPIO subsystem plays > tricks on the irqchip structures, and we're fixing it one driver at a time. See > merge commit 4bde53ab3370 ("Merge branch irq/gpio-immutable into > irq/irqchip-next") for all the details. > > Tested on the D-Link DWL-6810AP. > > Cc: Marc Zyngier <maz@kernel.org> > Cc: Bartosz Golaszewski <brgl@bgdev.pl> > Cc: Rafał Miłecki <zajec5@gmail.com> > Signed-off-by: Linus Walleij <linus.walleij@linaro.org> > Acked-by: Marc Zyngier <maz@kernel.org> > Reviewed-by: Bartosz Golaszewski <brgl@bgdev.pl> Patch applied to wireless-next.git, thanks. 55549d6a3052 bcma: gpio: Convert to immutable gpio irqchip
Marc Zyngier <maz@kernel.org> writes: > On Sat, 15 Oct 2022 05:51:01 +0100, > Kalle Valo <kvalo@kernel.org> wrote: >> >> Linus Walleij <linus.walleij@linaro.org> writes: >> >> > This switches the BCMA gpio irqchip to be immutable. >> > >> > Tested on the D-Link DWL-6810AP. >> >> I'm not familiar with the gpio system, what's the benefit from this? I >> can add that to the commit log. > > TL;DR: the GPIO subsystem plays dirty tricks on the irqchip > structures, and we're fixing it one driver at a time. > > See merge commit 4bde53ab3370 for all the details. Thanks, I included this to the commit log.
diff --git a/drivers/bcma/driver_gpio.c b/drivers/bcma/driver_gpio.c index fac8ff983aec..eff6fc330632 100644 --- a/drivers/bcma/driver_gpio.c +++ b/drivers/bcma/driver_gpio.c @@ -82,6 +82,7 @@ static void bcma_gpio_irq_unmask(struct irq_data *d) int gpio = irqd_to_hwirq(d); u32 val = bcma_chipco_gpio_in(cc, BIT(gpio)); + gpiochip_enable_irq(gc, gpio); bcma_chipco_gpio_polarity(cc, BIT(gpio), val); bcma_chipco_gpio_intmask(cc, BIT(gpio), BIT(gpio)); } @@ -93,12 +94,15 @@ static void bcma_gpio_irq_mask(struct irq_data *d) int gpio = irqd_to_hwirq(d); bcma_chipco_gpio_intmask(cc, BIT(gpio), 0); + gpiochip_disable_irq(gc, gpio); } -static struct irq_chip bcma_gpio_irq_chip = { +static const struct irq_chip bcma_gpio_irq_chip = { .name = "BCMA-GPIO", .irq_mask = bcma_gpio_irq_mask, .irq_unmask = bcma_gpio_irq_unmask, + .flags = IRQCHIP_IMMUTABLE, + GPIOCHIP_IRQ_RESOURCE_HELPERS, }; static irqreturn_t bcma_gpio_irq_handler(int irq, void *dev_id) @@ -139,7 +143,7 @@ static int bcma_gpio_irq_init(struct bcma_drv_cc *cc) bcma_chipco_gpio_intmask(cc, ~0, 0); bcma_cc_set32(cc, BCMA_CC_IRQMASK, BCMA_CC_IRQ_GPIO); - girq->chip = &bcma_gpio_irq_chip; + gpio_irq_chip_set_chip(girq, &bcma_gpio_irq_chip); /* This will let us handle the parent IRQ in the driver */ girq->parent_handler = NULL; girq->num_parents = 0;
This switches the BCMA gpio irqchip to be immutable. Tested on the D-Link DWL-6810AP. Cc: Marc Zyngier <maz@kernel.org> Cc: Bartosz Golaszewski <brgl@bgdev.pl> Cc: Rafał Miłecki <zajec5@gmail.com> Signed-off-by: Linus Walleij <linus.walleij@linaro.org> --- drivers/bcma/driver_gpio.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-)