[PATCH v2] staging: mt7621-gpio: avoid custom irq_domain for gpio
Sergio Paracuellos
sergio.paracuellos at gmail.com
Mon Jun 11 13:46:33 UTC 2018
On Mon, Jun 11, 2018 at 06:26:09PM +1000, NeilBrown wrote:
> On Mon, Jun 11 2018, Sergio Paracuellos wrote:
>
> > Instead of create a custom irq_domain for this chip, use
> > 'gpiochip_set_chained_irqchip' from GPIOLIB_IRQCHIP. It
> > is ok to call this function several times. You only have to
> > mark the line with 'IRQF_SHARED' and then loop over the
> > three banks until you find a hit. There were some problems
> > with removing an irqchip like that but this driver is a bool
> > so it might work just fine. After this changes the functions
> > 'mediatek_gpio_to_irq' is not needed anymore and also the
> > 'gpio_irq_domain' field from the state container. Instead of
> > use the custom irq domain in the irq handler use the associated
> > domain from the gpio_chip in 'irq_find_mapping' function.
> > Function 'mediatek_gpio_bank_probe' has been moved a it to the
> > botton to have all the irq related functions together and avoid
> > some forward declarations to resolve some symbols along the code.
> >
> > Signed-off-by: Sergio Paracuellos <sergio.paracuellos at gmail.com>
>
> Thanks for this.
> The patch has two problems.
> 1/ it doesn't compile unless CONFIG_GPIOLIB_IRQCHIP is selected.
> So we need "select GPIOLIB_IRQCHIP" in Kconfig
>
> 2/ The interrupt line has not been marked IRQF_SHARED.
> I cannot figure out how to mark it as IRQF_SHARED.
> If I hack the code so that mediatek_gpio_bank_probe()
> is only called for the first bank, then interrupt from
> that bank work fine.
> If I let it be called for all three banks, then on the first interrupt,
> the system starts to hang.
The way to do this seems to mark IRQF_SHARED using devm_request_irq and then
passing out NULL as irq handler in gpiochip_set_chained_irqchip. The prototype
for the irq handler change also from the normal irqreturn_t stuff. I have just sent
a new PATCH (included in the v3 of 'last cleanups' series) following this approach.
Hope this helps and works :-),
>
> Thanks,
> NeilBrown
Best regards,
Sergio Paracuellos
More information about the devel
mailing list