@@ -191,6 +191,7 @@ static void lnw_irq_handler(unsigned irq, struct irq_desc *desc)
u32 base, gpio;
void __iomem *gedr;
u32 gedr_v;
+ struct irq_chip *chip;
/* check GPIO controller to check which pin triggered the interrupt */
for (base = 0; base < lnw->chip.ngpio; base += 32) {
@@ -207,8 +208,9 @@ static void lnw_irq_handler(unsigned irq, struct irq_desc *desc)
writel(gedr_v, gedr);
}
- if (desc->chip->irq_eoi)
- desc->chip->irq_eoi(irq_get_irq_data(irq));
+ chip = get_irq_desc_chip(desc);
+ if (chip->irq_eoi)
+ chip->irq_eoi(irq_get_irq_data(irq));
else
dev_warn(lnw->chip.dev, "missing EOI handler for irq %d\n", irq);
When CONFIG_GENERIC_HARDIRQS_NO_DEPRECATED is defined, struct irq_desc no longer contains a ->chip member pointing to the corresponding struct irq_chip, leading to the following build error: drivers/gpio/langwell_gpio.c: In function 'lnw_irq_handler': drivers/gpio/langwell_gpio.c:210: error: 'struct irq_desc' has no member named 'chip' drivers/gpio/langwell_gpio.c:211: error: 'struct irq_desc' has no member named 'chip' Fix this up by using get_irq_desc_chip(desc) to get the irq_chip, instead of trying to get it via desc->chip directly. Reported-by: Stephen Rothwell <sfr@canb.auug.org.au> Signed-off-by: Lennert Buytenhek <buytenh@secretlab.ca> ---