On Fri, Jun 16, 2023 at 4:50 PM Arnd Bergmann <arnd@xxxxxxxxxx> wrote: > > From: Arnd Bergmann <arnd@xxxxxxxx> > > The driver now uses the generic request/release callbacks, so the custom > ones are no longer called. When building with -Woverride-init, gcc produces > a warning about the duplicate entries: > > In file included from drivers/gpio/gpio-zynq.c:10: > include/linux/gpio/driver.h:621:43: error: initialized field overwritten [-Werror=override-init] > 621 | .irq_request_resources = gpiochip_irq_reqres, \ > | ^~~~~~~~~~~~~~~~~~~ > drivers/gpio/gpio-zynq.c:611:9: note: in expansion of macro 'GPIOCHIP_IRQ_RESOURCE_HELPERS' > 611 | GPIOCHIP_IRQ_RESOURCE_HELPERS, > | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > include/linux/gpio/driver.h:621:43: note: (near initialization for 'zynq_gpio_level_irqchip.irq_request_resources') > 621 | .irq_request_resources = gpiochip_irq_reqres, \ > | ^~~~~~~~~~~~~~~~~~~ > drivers/gpio/gpio-zynq.c:625:9: note: in expansion of macro 'GPIOCHIP_IRQ_RESOURCE_HELPERS' > 625 | GPIOCHIP_IRQ_RESOURCE_HELPERS, > | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > include/linux/gpio/driver.h:622:43: error: initialized field overwritten [-Werror=override-init] > 622 | .irq_release_resources = gpiochip_irq_relres > | ^~~~~~~~~~~~~~~~~~~ > > Removing the old ones has no effect on the driver but avoids the warnings. > > Fixes: f569143935378 ("gpio: zynq: fix zynqmp_gpio not an immutable chip warning") > Signed-off-by: Arnd Bergmann <arnd@xxxxxxxx> > --- > drivers/gpio/gpio-zynq.c | 24 ------------------------ > 1 file changed, 24 deletions(-) > > diff --git a/drivers/gpio/gpio-zynq.c b/drivers/gpio/gpio-zynq.c > index c334e46033bae..0a7264aabe488 100644 > --- a/drivers/gpio/gpio-zynq.c > +++ b/drivers/gpio/gpio-zynq.c > @@ -575,26 +575,6 @@ static int zynq_gpio_set_wake(struct irq_data *data, unsigned int on) > return 0; > } > > -static int zynq_gpio_irq_reqres(struct irq_data *d) > -{ > - struct gpio_chip *chip = irq_data_get_irq_chip_data(d); > - int ret; > - > - ret = pm_runtime_resume_and_get(chip->parent); > - if (ret < 0) > - return ret; > - > - return gpiochip_reqres_irq(chip, d->hwirq); > -} > - > -static void zynq_gpio_irq_relres(struct irq_data *d) > -{ > - struct gpio_chip *chip = irq_data_get_irq_chip_data(d); > - > - gpiochip_relres_irq(chip, d->hwirq); > - pm_runtime_put(chip->parent); > -} > - > /* irq chip descriptor */ > static const struct irq_chip zynq_gpio_level_irqchip = { > .name = DRIVER_NAME, > @@ -604,8 +584,6 @@ static const struct irq_chip zynq_gpio_level_irqchip = { > .irq_unmask = zynq_gpio_irq_unmask, > .irq_set_type = zynq_gpio_set_irq_type, > .irq_set_wake = zynq_gpio_set_wake, > - .irq_request_resources = zynq_gpio_irq_reqres, > - .irq_release_resources = zynq_gpio_irq_relres, > .flags = IRQCHIP_EOI_THREADED | IRQCHIP_EOI_IF_HANDLED | > IRQCHIP_MASK_ON_SUSPEND | IRQCHIP_IMMUTABLE, > GPIOCHIP_IRQ_RESOURCE_HELPERS, > @@ -619,8 +597,6 @@ static const struct irq_chip zynq_gpio_edge_irqchip = { > .irq_unmask = zynq_gpio_irq_unmask, > .irq_set_type = zynq_gpio_set_irq_type, > .irq_set_wake = zynq_gpio_set_wake, > - .irq_request_resources = zynq_gpio_irq_reqres, > - .irq_release_resources = zynq_gpio_irq_relres, > .flags = IRQCHIP_MASK_ON_SUSPEND | IRQCHIP_IMMUTABLE, > GPIOCHIP_IRQ_RESOURCE_HELPERS, > }; > -- > 2.39.2 > Applied, thanks! Bart