@@ -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
@@ -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:
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(-)