| From 7afde3c3cc889fed813fd62159eae19078b799d9 Mon Sep 17 00:00:00 2001 |
| From: Geert Uytterhoeven <geert+renesas@glider.be> |
| Date: Tue, 4 Aug 2015 14:28:15 +0200 |
| Subject: [PATCH 318/326] drivers: sh: Disable PM runtime for multi-platform |
| ARM with genpd |
| |
| If the default PM Domain using PM_CLK is used for PM runtime, the real |
| Clock Domain cannot be registered from DT later. |
| |
| Hence do not enable it when running a multi-platform kernel with genpd |
| support on R-Car or RZ. The CPG/MSTP Clock Domain driver will take care |
| of PM runtime management of the module clocks. |
| |
| Now most multi-platform ARM shmobile platforms (SH-Mobile, R-Mobile, |
| R-Car, RZ) use DT-based PM Domains to take care of PM runtime management |
| of the module clocks, simplify the platform logic by replacing the |
| explicit SoC checks by a single check for the presence of MSTP clocks in |
| DT. |
| |
| Backwards-compatiblity with old DTs (mainly for R-Car Gen2) is provided |
| by checking for the presence of a "#power-domain-cells" property in DT. |
| |
| The default PM Domain is still needed for: |
| - backwards-compatibility with old DTs that lack PM Domain properties, |
| - the CONFIG_PM=n case, |
| - legacy (non-DT) ARM/shmobile platforms without genpd support |
| (r8a7778, r8a7779), |
| - legacy SuperH. |
| |
| Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be> |
| Reviewed-by: Ulf Hansson <ulf.hansson@linaro.org> |
| Signed-off-by: Simon Horman <horms+renesas@verge.net.au> |
| (cherry picked from commit cbc41d0a761bffb3166a413a3c77100a737c0cd7) |
| Signed-off-by: Simon Horman <horms+renesas@verge.net.au> |
| --- |
| drivers/sh/pm_runtime.c | 18 +++++------------- |
| 1 file changed, 5 insertions(+), 13 deletions(-) |
| |
| diff --git a/drivers/sh/pm_runtime.c b/drivers/sh/pm_runtime.c |
| index c1e7f26c143f..4612b73ba321 100644 |
| --- a/drivers/sh/pm_runtime.c |
| +++ b/drivers/sh/pm_runtime.c |
| @@ -78,19 +78,11 @@ static struct pm_clk_notifier_block platform_bus_notifier = { |
| static int __init sh_pm_runtime_init(void) |
| { |
| if (IS_ENABLED(CONFIG_ARCH_SHMOBILE_MULTI)) { |
| - if (!of_machine_is_compatible("renesas,r7s72100") && |
| -#ifndef CONFIG_PM_GENERIC_DOMAINS_OF |
| - !of_machine_is_compatible("renesas,r8a73a4") && |
| - !of_machine_is_compatible("renesas,r8a7740") && |
| - !of_machine_is_compatible("renesas,sh73a0") && |
| -#endif |
| - !of_machine_is_compatible("renesas,r8a7778") && |
| - !of_machine_is_compatible("renesas,r8a7779") && |
| - !of_machine_is_compatible("renesas,r8a7790") && |
| - !of_machine_is_compatible("renesas,r8a7791") && |
| - !of_machine_is_compatible("renesas,r8a7792") && |
| - !of_machine_is_compatible("renesas,r8a7793") && |
| - !of_machine_is_compatible("renesas,r8a7794")) |
| + if (!of_find_compatible_node(NULL, NULL, |
| + "renesas,cpg-mstp-clocks")) |
| + return 0; |
| + if (IS_ENABLED(CONFIG_PM_GENERIC_DOMAINS_OF) && |
| + of_find_node_with_property(NULL, "#power-domain-cells")) |
| return 0; |
| } |
| |
| -- |
| 2.6.2 |
| |