[PATCH] ARM: shmobile: R-Mobile: Enable module clocks if !CONFIG_PM_RUNTIME

From: Geert Uytterhoeven
Date: Wed Oct 01 2014 - 14:05:53 EST


ARM: shmobile: R-Mobile: Enable module clocks if !CONFIG_PM_RUNTIME

If CONFIG_PM_RUNTIME is not set, the clocks must be enabled before the
devices can be used. Also add missing pm_clk_create()/pm_clk_destroy()
calls.

Currently these clocks are enabled by the !CONFIG_PM_RUNTIME version of
pm_clk_notify, activated by the hack in drivers/sh/pm_runtime.c, but
this will go away soon (at least for DT, cfr. "[PATCH] drivers: sh:
Disable PM runtime for multi-platform r8a7740 with genpd").

On detach, disabling the clocks is already handled by pm_clk_destroy().
On system suspend/resume, disabling/enabling clocks is already handled
from the genpd->dev_ops.{start,stop}() callbacks.

Signed-off-by: Geert Uytterhoeven <geert+renesas@xxxxxxxxx>
---
This depends on "PM / clock_ops: Fix crash in clocks management code if
!CONFIG_PM_RUNTIME".

arch/arm/mach-shmobile/pm-rmobile.c | 16 +++++++++++++---
1 file changed, 13 insertions(+), 3 deletions(-)

diff --git a/arch/arm/mach-shmobile/pm-rmobile.c b/arch/arm/mach-shmobile/pm-rmobile.c
index 80be5848adc8f15c..e5a2c568d96cdd6b 100644
--- a/arch/arm/mach-shmobile/pm-rmobile.c
+++ b/arch/arm/mach-shmobile/pm-rmobile.c
@@ -121,13 +121,23 @@ static bool rmobile_pd_active_wakeup(struct device *dev)

static void rmobile_pd_attach_dev(struct device *dev)
{
- if (pm_clk_no_clocks(dev))
- pm_clk_add(dev, NULL);
+ int error;
+
+ error = pm_clk_create(dev);
+ if (error) {
+ dev_err(dev, "pm_clk_create failed %d\n", error);
+ return;
+ }
+
+ pm_clk_add(dev, NULL);
+
+ if (!IS_ENABLED(CONFIG_PM_RUNTIME))
+ pm_clk_resume(dev);
}

static void rmobile_pd_detach_dev(struct device *dev)
{
- pm_clk_remove(dev, NULL);
+ pm_clk_destroy(dev);
}

static void rmobile_init_pm_domain(struct rmobile_pm_domain *rmobile_pd)
--
1.9.1

Gr{oetje,eeting}s,

Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@xxxxxxxxxxxxxx

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/