gpio: rcar: Fine-grained Runtime PM support
authorGeert Uytterhoeven <geert+renesas@glider.be>
Thu, 25 Jun 2015 14:45:57 +0000 (16:45 +0200)
committerLinus Walleij <linus.walleij@linaro.org>
Thu, 16 Jul 2015 08:42:44 +0000 (10:42 +0200)
commit65194cb174b873448b208eb6e04ecb72237af76e
treecbc46ca87d5751390d89618f328e4ac9a9bfc919
parent527b397a7a3647b8ba2eae2e7a12b237bf411476
gpio: rcar: Fine-grained Runtime PM support

Currently gpio modules are runtime-resumed at probe time. This means the
gpio module will be active all the time (except during system suspend,
if not configured as a wake-up source).

While an R-Car Gen2 gpio module retains pins configured for output at
the requested level while put in standby mode, gpio registercannot be
accessed while suspended.  Unfortunately pm_runtime_get_sync() cannot be
called from all contexts where gpio register access is needed. Hence
move the Runtime PM handling from probe/remove time to gpio request/free
time, which is probably the best we can do.

On r8a7791/koelsch, gpio modules 0, 1, 3, and 4 are now suspended during
normal use (gpio2 is used for LEDs and regulators, gpio5 for keys, gpio6
for SD-Card CD & WP, gpio7 for keys and regulators).

Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
drivers/gpio/gpio-rcar.c