linux/arch/arm/mach-tegra
Joseph Lo 1d328606c6 ARM: tegra20: cpuidle: apply coupled cpuidle for powered-down mode
The "powered-down" cpuidle mode of Tegra20 needs the CPU0 be the last one
core to go into this mode before other core. The coupled cpuidle framework
can help to sync the MPCore to coupled state then go into "powered-down"
idle mode together. The driver can just assume the MPCore come into
"powered-down" mode at the same time. No need to take care if the CPU_0
goes into this mode along and only can put it into safe idle mode (WFI).

The powered-down state of Tegra20 requires power gating both CPU cores.
When the secondary CPU requests to enter powered-down state, it saves
its own contexts and then enters WFI for waiting CPU0 in the same state.
When the CPU0 requests powered-down state, it attempts to put the secondary
CPU into reset to prevent it from waking up. Then power down both CPUs
together and power off the cpu rail.

Be aware of that, you may see the legacy power state "LP2" in the code
which is exactly the same meaning of "CPU power down".

Based on the work by:
Colin Cross <ccross@android.com>
Gary King <gking@nvidia.com>

Signed-off-by: Joseph Lo <josephl@nvidia.com>
Acked-by: Colin Cross <ccross@android.com>
Signed-off-by: Stephen Warren <swarren@nvidia.com>
2013-01-28 11:20:38 -07:00
..
include/mach ARM: tegra: remove legacy clock code 2013-01-28 11:19:33 -07:00
apbio.c ARM: tegra: Make variables static 2013-01-28 10:21:28 -07:00
apbio.h ARM: tegra: apbio access using dma for tegra20 only 2012-07-06 11:48:56 -06:00
board-dt-tegra20.c ARM: tegra: remove USB address related macros from iomap.h 2013-01-28 11:20:04 -07:00
board-dt-tegra30.c ARM: tegra30: remove auxdata 2013-01-28 11:19:34 -07:00
board-harmony-pcie.c ARM: dt: tegra: harmony: add regulators 2012-09-14 11:31:37 -06:00
board-paz00.c Merge branch 'multiplatform/platform-data' into next/multiplatform 2012-09-22 01:07:21 -07:00
board-paz00.h ARM: tegra: remove board (but not DT) support for Paz00 2012-09-14 11:31:36 -06:00
board.h ARM: tegra: move timer.c to drivers/clocksource/ 2013-01-28 10:21:21 -07:00
common.c ARM: tegra: migrate to new clock code 2013-01-28 11:19:07 -07:00
common.h ARM: tegra: moving the clock gating procedure to tegra_cpu_kill 2013-01-28 10:21:48 -07:00
cpu-tegra.c ARM: tegra: migrate to new clock code 2013-01-28 11:19:07 -07:00
cpuidle-tegra20.c ARM: tegra20: cpuidle: apply coupled cpuidle for powered-down mode 2013-01-28 11:20:38 -07:00
cpuidle-tegra30.c ARM: tegra: move tegra_cpu_car.h to linux/clk/tegra.h 2013-01-28 11:19:06 -07:00
cpuidle.c ARM: tegra: cpuidle: separate cpuidle driver for different chips 2012-11-15 15:09:20 -07:00
cpuidle.h ARM: tegra: cpuidle: separate cpuidle driver for different chips 2012-11-15 15:09:20 -07:00
flowctrl.c ARM: tegra20: flowctrl: add support for cpu_suspend_enter/exit 2013-01-28 11:20:38 -07:00
flowctrl.h ARM: tegra20: flowctrl: add support for cpu_suspend_enter/exit 2013-01-28 11:20:38 -07:00
fuse.c ARM: tegra: add function to read chipid 2013-01-28 11:19:06 -07:00
fuse.h ARM: tegra: Tegra30 speedo-based process identification 2012-11-15 14:36:59 -07:00
gpio-names.h
headsmp.S ARM: tegra: make device can run on UP 2013-01-28 11:14:06 -07:00
hotplug.c ARM: tegra: move tegra_cpu_car.h to linux/clk/tegra.h 2013-01-28 11:19:06 -07:00
io.c ARM: tegra: don't include iomap.h from debug-macro.S 2012-11-16 12:22:17 -07:00
iomap.h ARM: tegra: remove USB address related macros from iomap.h 2013-01-28 11:20:04 -07:00
irammap.h ARM: tegra: decouple uncompress.h and debug-macro.S 2012-11-16 12:22:17 -07:00
irq.c ARM: tegra: add pending SGI checking API 2013-01-28 11:20:38 -07:00
irq.h ARM: tegra: add pending SGI checking API 2013-01-28 11:20:38 -07:00
Kconfig ARM: tegra20: cpuidle: apply coupled cpuidle for powered-down mode 2013-01-28 11:20:38 -07:00
Makefile ARM: tegra: remove legacy clock code 2013-01-28 11:19:33 -07:00
Makefile.boot ARM: tegra: Add Avionic Design Tamonten Evaluation Carrier support 2012-09-20 09:34:01 -06:00
pcie.c ARM: tegra: migrate to new clock code 2013-01-28 11:19:07 -07:00
platsmp.c ARM: tegra: move tegra_cpu_car.h to linux/clk/tegra.h 2013-01-28 11:19:06 -07:00
pm.c ARM: tegra20: cpuidle: add powered-down state for secondary CPU 2013-01-28 11:20:38 -07:00
pm.h ARM: tegra: retain L2 content over CPU suspend/resume 2012-11-15 15:09:22 -07:00
pmc.c ARM: tegra: move iomap.h to mach-tegra 2012-11-05 11:36:06 -07:00
pmc.h ARM: tegra: Add a simple PMC driver 2012-02-06 18:25:01 -08:00
powergate.c ARM: tegra: migrate to new clock code 2013-01-28 11:19:07 -07:00
reset-handler.S ARM: tegra: make device can run on UP 2013-01-28 11:14:06 -07:00
reset.c ARM: tegra: make device can run on UP 2013-01-28 11:14:06 -07:00
reset.h ARM: tegra30: cpuidle: add powered-down state for secondary CPUs 2012-11-15 15:09:21 -07:00
sleep-tegra20.S ARM: tegra20: cpuidle: apply coupled cpuidle for powered-down mode 2013-01-28 11:20:38 -07:00
sleep-tegra30.S ARM: tegra: update the cache maintenance order for CPU shutdown 2013-01-28 10:21:44 -07:00
sleep.h ARM: tegra20: cpuidle: apply coupled cpuidle for powered-down mode 2013-01-28 11:20:38 -07:00
sleep.S ARM: tegra20: cpuidle: apply coupled cpuidle for powered-down mode 2013-01-28 11:20:38 -07:00
tegra2_emc.c ARM: drivers: remove __dev* attributes. 2013-01-03 15:57:04 -08:00
tegra2_emc.h ARM: tegra: emc: convert tegra2_emc to a platform driver 2012-02-06 18:24:59 -08:00
tegra20_speedo.c ARM: tegra: Add speedo-based process identification 2012-11-15 14:34:20 -07:00
tegra30_speedo.c ARM: tegra: Tegra30 speedo-based process identification 2012-11-15 14:36:59 -07:00