MIPS: pm-cps: add PM state entry code for CPS systems
authorPaul Burton <paul.burton@imgtec.com>
Mon, 14 Apr 2014 10:00:56 +0000 (11:00 +0100)
committerPaul Burton <paul.burton@imgtec.com>
Wed, 28 May 2014 15:20:31 +0000 (16:20 +0100)
commit3179d37ee1ed602770a8b8ed975bd30faa85b4a3
treea644d061f4153008b4821810b258b9afb93ef956
parentdd9233d0470bb8b02b30982c1de0a2dbffb407d5
MIPS: pm-cps: add PM state entry code for CPS systems

This patch adds code to generate entry & exit code for various low power
states available on systems based around the MIPS Coherent Processing
System architecture (ie. those with a Coherence Manager, Global
Interrupt Controller & for >=CM2 a Cluster Power Controller). States
supported are:

  - Non-coherent wait. This state first leaves the coherent domain and
    then executes a regular MIPS wait instruction. Power savings are
    found from the elimination of coherency interventions between the
    core and any other coherent requestors in the system.

  - Clock gated. This state leaves the coherent domain and then gates
    the clock input to the core. This removes all dynamic power from the
    core but leaves the core at the mercy of another to restart its
    clock. Register state is preserved, but the core can not service
    interrupts whilst its clock is gated.

  - Power gated. This deepest state removes all power input to the core.
    All register state is lost and the core will restart execution from
    its BEV when another core powers it back up. Because register state
    is lost this state requires cooperation with the CONFIG_MIPS_CPS SMP
    implementation in order for the core to exit the state successfully.

The code will detect which states are available on the current system
during boot & generate the entry/exit code for those states. This will
be used by cpuidle & hotplug implementations.

Signed-off-by: Paul Burton <paul.burton@imgtec.com>
arch/mips/Kconfig
arch/mips/include/asm/pm-cps.h [new file with mode: 0644]
arch/mips/include/asm/smp-cps.h
arch/mips/kernel/Makefile
arch/mips/kernel/cps-vec.S
arch/mips/kernel/pm-cps.c [new file with mode: 0644]