A second thought:
On Fri, Jun 8, 2018 at 1:59 PM, Linus Walleij <[email protected]> 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.
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
_______________________________________________
devel mailing list
[email protected]
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel