Re: [PATCH] gpio: zynq: properly support runtime PM for GPIO used as interrupts

From: Linus Walleij
Date: Wed Feb 13 2019 - 04:38:11 EST


On Fri, Feb 8, 2019 at 11:40 AM Thomas Petazzoni
<thomas.petazzoni@xxxxxxxxxxx> wrote:

> The Zynq GPIO driver currently implements runtime PM by:
>
> - Enabling runtime PM support in ->probe() and letting the runtime PM
> reference counter drop to zero at the end of ->probe().
>
> - Increasing the runtime PM reference counter in ->request() and
> decreasing it in ->free().
>
> However, the latter is not sufficient: when a GPIO is used as an
> interrupt, ->request() and ->free() are not called. Due to this, the
> runtime PM counter remains to zero when the only GPIOs in use are used
> as interrupts, causing them to simply not work.
>
> To address this problem, this commit implement the
> ->irq_request_resources() and ->irq_release_resources() hooks,
> ensuring that the runtime PM counter is properly
> incremented/decremented. Since we override the default hooks, we keep
> the existing behavior by making sure they call gpiochip_reqres_irq() /
> gpiochip_relres_irq() respectively.
>
> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@xxxxxxxxxxx>

Patch applied with Shubhrajyoti's review tag.

Yours,
Linus Walleij