[PATCH 1/3] Powerpc/4xx: Add suspend and idle support

Josh Boyer jwboyer at linux.vnet.ibm.com
Sat Oct 9 00:35:11 EST 2010


On Thu, Oct 07, 2010 at 12:07:16PM -0700, Victor Gallardo wrote:
>Add suspend/resume support for all 4xx compatible CPUs.
>See /sys/power/state for available power states configured in.
>
>Add two different idle states (idle-wait and idle-doze)
>controlled via sysfs. Default is idle-wait.
>	cat /sys/devices/system/cpu/cpu0/idle
>	[wait] doze
>
>To save additional power, use idle-doze.
>	echo doze > /sys/devices/system/cpu/cpu0/idle
>	cat /sys/devices/system/cpu/cpu0/idle
>	wait [doze]
>
>Signed-off-by: Victor Gallardo <vgallardo at apm.com>
>---
> Documentation/powerpc/dts-bindings/4xx/cpm.txt |   43 +++
> arch/powerpc/Kconfig                           |   13 +-
> arch/powerpc/platforms/44x/Makefile            |    5 +-
> arch/powerpc/sysdev/Makefile                   |    1 +
> arch/powerpc/sysdev/ppc4xx_cpm.c               |  339 ++++++++++++++++++++++++
> 5 files changed, 397 insertions(+), 4 deletions(-)
> create mode 100644 Documentation/powerpc/dts-bindings/4xx/cpm.txt
> create mode 100644 arch/powerpc/sysdev/ppc4xx_cpm.c
>
>diff --git a/Documentation/powerpc/dts-bindings/4xx/cpm.txt b/Documentation/powerpc/dts-bindings/4xx/cpm.txt
>new file mode 100644
>index 0000000..9635df8
>--- /dev/null
>+++ b/Documentation/powerpc/dts-bindings/4xx/cpm.txt
>@@ -0,0 +1,43 @@
>+PPC4xx Clock Power Management (CPM) node
>+
>+Required properties:
>+	- compatible		: compatible list, currently only "ibm,cpm"
>+	- dcr-access-method	: "native"
>+	- dcr-reg		: < DCR register range >
>+
>+Optional properties:
>+	- er-offset		: All 4xx SoCs with a CPM controller have
>+				  one of two different order for the CPM
>+				  registers. Some have the CPM registers
>+				  in the following order (ER,FR,SR). The
>+				  others have them in the following order
>+				  (SR,ER,FR). For the second case set
>+				  er-offset = <1>.
>+	- unused-units		: specifier consist of one cell. For each
>+				  bit in the cell, the corresponding bit
>+				  in CPM will be set to turn off unused
>+				  devices.
>+	- idle-doze		: specifier consist of one cell. For each
>+				  bit in the cell, the corresponding bit
>+				  in CPM will be set to turn off unused
>+				  devices. This is usually just CPM[CPU].
>+	- standby		: specifier consist of one cell. For each
>+				  bit in the cell, the corresponding bit
>+				  in CPM will be set on standby and
>+				  restored on resume.
>+	- suspend		: specifier consist of one cell. For each
>+				  bit in the cell, the corresponding bit
>+				  in CPM will be set on suspend (mem) and
>+				  restored on resume.

So the difference, from what I can tell, between standby and suspend is
really only what devices are turned off.  I don't see any code to put
the DRAM into self-refresh mode, etc.  If that is the case, perhaps we
could add a bit of description as to the different kinds of devices that
may be disabled in one mode but not the other.

>+
>+Example:
>+        CPM0: cpm {
>+                compatible = "ibm,cpm";
>+                dcr-access-method = "native";
>+                dcr-reg = <0x160 0x003>;
>+		er-offset = <0>;
>+                unused-units = <0x00000100>;
>+                idle-doze = <0x02000000>;
>+                standby = <0xfeff0000>;
>+                standby = <0xfeff791d>;

One of these two should be illustrating suspend.

josh


More information about the Linuxppc-dev mailing list