On Fri, Jun 8, 2018 at 2:17 PM, Linus Walleij <linus.walleij@xxxxxxxxxx> wrote: > A second thought: Second thought is always a good thing :-) > > On Fri, Jun 8, 2018 at 1:59 PM, Linus Walleij <linus.walleij@xxxxxxxxxx> wrote: > >>> + select GPIOLIB_IRQCHIP >> >> You are not using this so I guess remove that line. > (...) >>> +static int >>> +mediatek_gpio_to_irq(struct gpio_chip *chip, unsigned int pin) >>> +{ >>> + struct mtk_data *gpio_data = gpiochip_get_data(chip); >>> + struct mtk_gc *rg = to_mediatek_gpio(chip); >>> + >>> + return irq_create_mapping(gpio_data->gpio_irq_domain, >>> + pin + (rg->bank * MTK_BANK_WIDTH)); >>> +} >> >> So this is the result of a custom IRQdomain because you >> can't use the generic GPIO IRQ lib. Oh well, we have to live >> with it I guess. > > I think maybe you can actually use the generic GPIO IRQCHIP. > > It is OK to call gpiochip_set_chained_irqchip() several times. > If you just mark the line with IRQF_SHARED then the handler > will just loop over all three banks until you find a hit, provided > you code it up properly. Ok, I'll give it a try to use this also. > > There were some problems with removing an irqchip like > that but your driver is anyway a bool so I think it might work > just fine. > > Yours, > Linus Walleij Thanks again. Best regards, Sergio Paracuellos _______________________________________________ devel mailing list devel@xxxxxxxxxxxxxxxxxxxxxx http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel