Messages in this thread Patch in this message | | | From | Dmitry Osipenko <> | Subject | [PATCH v1 4/6] cpuidle: tegra: Support CPU cluster power-down on Tegra30 | Date | Mon, 8 Jul 2019 02:38:07 +0300 |
| |
The new CPU Idle driver has all necessary features in order to allow the deepest idling state on Tegra30 SoC where the whole CPU cluster is power-gated using the coupled idle state.
Signed-off-by: Dmitry Osipenko <digetx@gmail.com> ---
Please note that outer_disable() has a WARN_ON(num_online_cpus > 1) and it doesn't know that we turned off those secondary CPUs, hence the outer_cache.disable() is now invoked directly.
arch/arm/mach-tegra/pm.c | 4 ++-- drivers/cpuidle/cpuidle-tegra.c | 4 +--- 2 files changed, 3 insertions(+), 5 deletions(-)
diff --git a/arch/arm/mach-tegra/pm.c b/arch/arm/mach-tegra/pm.c index f9c9bce9e15d..cc941b0c97e8 100644 --- a/arch/arm/mach-tegra/pm.c +++ b/arch/arm/mach-tegra/pm.c @@ -146,8 +146,8 @@ static int tegra_sleep_cpu(unsigned long v2p) * if any of secondary CPU's is online and this is the LP2-idle * code-path only for Tegra20/30. */ - if (trusted_foundations_registered()) - outer_disable(); + if (trusted_foundations_registered() && outer_cache.disable) + outer_cache.disable(); /* * Note that besides of setting up CPU reset vector this firmware diff --git a/drivers/cpuidle/cpuidle-tegra.c b/drivers/cpuidle/cpuidle-tegra.c index 3fad4a0cbc78..31eeef22c0ff 100644 --- a/drivers/cpuidle/cpuidle-tegra.c +++ b/drivers/cpuidle/cpuidle-tegra.c @@ -202,10 +202,8 @@ static int tegra_cpuidle_probe(struct platform_device *pdev) switch (tegra_get_chip_id()) { case TEGRA20: tegra_idle_driver.states[1].disabled = true; - tegra_idle_driver.states[3].disabled = true; - break; + /* fall through */ case TEGRA30: - tegra_idle_driver.states[2].disabled = true; tegra_idle_driver.states[3].disabled = true; break; case TEGRA114: -- 2.22.0
| |