On Thu, 25 Apr 2019 at 16:27, Mika Westerberg <mika.westerberg@xxxxxxxxxxxxxxx> wrote: > > On Thu, Apr 25, 2019 at 03:23:53PM +0200, Linus Walleij wrote: > > > - return ret; > > > + if (mb86s70_gpio_have_acpi(pdev)) > > > + acpi_gpiochip_request_interrupts(&gchip->gc); > > > + > > > + return 0; > > > > I guess this is right... > > > > > struct mb86s70_gpio_chip *gchip = platform_get_drvdata(pdev); > > > > > > + if (gchip->gc.irq.domain) { > > > + acpi_gpiochip_free_interrupts(&gchip->gc); > > > + irq_domain_remove(gchip->gc.irq.domain); > > > + } > > > > Mika can possibly comment on the right way to do ACPI bring-up > > and take-down. > > Only comment I have is that normally you don't need to call > acpi_gpiochip_request_interrupts() and acpi_gpiochip_free_interrupts() > in GPIO chip drivers itself. The core should take care of this if the > device ACPI description has an _AEI method. Thanks Mika. The core only takes care of this for nested/cascaded domains. In this case, the calls are needed, or the ACPI event interrupt don't get registered.