summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChenhui Zhao <chenhui.zhao@freescale.com>2014-03-14 09:19:57 (GMT)
committerJose Rivera <German.Rivera@freescale.com>2014-04-05 21:58:31 (GMT)
commitb2a6dc92cfb3624939cf271b8052fbac0e026def (patch)
tree155f69c54f2c714496d8d0dff72fae6a74a4b92f
parent668852784491c11ad222a97d2ba64784cd97272a (diff)
downloadlinux-fsl-qoriq-b2a6dc92cfb3624939cf271b8052fbac0e026def.tar.xz
powerpc/t104x: enable wakeup sources
Set the register IPPDEXPCR (IP Powerdown Exception Control Register) to enable IP blocks which work as wakeup source when sleep/deep sleep. Change-Id: Id95cb920cab90e12851995d039bd866e6388f8ae Signed-off-by: Chenhui Zhao <chenhui.zhao@freescale.com> Reviewed-on: http://git.am.freescale.net:8181/10711 Tested-by: Review Code-CDREVIEW <CDREVIEW@freescale.com> Reviewed-by: Yang Li <LeoLi@freescale.com> Reviewed-by: Jose Rivera <German.Rivera@freescale.com>
-rw-r--r--arch/powerpc/boot/dts/fsl/t1040si-post.dtsi6
-rw-r--r--arch/powerpc/boot/dts/t1040rdb.dts5
-rw-r--r--arch/powerpc/boot/dts/t1042rdb_pi.dts2
-rw-r--r--arch/powerpc/boot/dts/t104xqds.dtsi5
-rw-r--r--arch/powerpc/platforms/85xx/qoriq_pm.c18
5 files changed, 36 insertions, 0 deletions
diff --git a/arch/powerpc/boot/dts/fsl/t1040si-post.dtsi b/arch/powerpc/boot/dts/fsl/t1040si-post.dtsi
index eccb100..696e30b 100644
--- a/arch/powerpc/boot/dts/fsl/t1040si-post.dtsi
+++ b/arch/powerpc/boot/dts/fsl/t1040si-post.dtsi
@@ -531,12 +531,16 @@
fsl,iommu-parent = <&pamu0>;
fsl,liodn-reg = <&guts 0x530>; /* eSDHCLIODNR */
sdhci,auto-cmd12;
+ sleep = <&rcpm 0x00000080>;
};
/include/ "qoriq-i2c-0.dtsi"
/include/ "qoriq-i2c-1.dtsi"
/include/ "qoriq-duart-0.dtsi"
/include/ "qoriq-duart-1.dtsi"
/include/ "qoriq-gpio-0.dtsi"
+ gpio@130000 {
+ sleep = <&rcpm 0x00000040>;
+ };
/include/ "qoriq-gpio-1.dtsi"
/include/ "qoriq-gpio-2.dtsi"
/include/ "qoriq-gpio-3.dtsi"
@@ -546,6 +550,7 @@
fsl,iommu-parent = <&pamu0>;
fsl,liodn-reg = <&guts 0x520>; /* USB1LIODNR */
phy_type = "utmi";
+ sleep = <&rcpm 0x00000020>;
port0;
};
/include/ "qoriq-usb2-dr-0.dtsi"
@@ -555,6 +560,7 @@
fsl,liodn-reg = <&guts 0x524>; /* USB2LIODNR */
dr_mode = "host";
phy_type = "utmi";
+ sleep = <&rcpm 0x00000010>;
};
display:display@180000 {
diff --git a/arch/powerpc/boot/dts/t1040rdb.dts b/arch/powerpc/boot/dts/t1040rdb.dts
index 04b5005..dcb5a93 100644
--- a/arch/powerpc/boot/dts/t1040rdb.dts
+++ b/arch/powerpc/boot/dts/t1040rdb.dts
@@ -309,22 +309,27 @@
ethernet@0 {
compatible = "fsl,t1040-dpa-ethernet", "fsl,dpa-ethernet";
fsl,fman-mac = <&enet0>;
+ sleep = <&rcpm 0x80000008>;
};
ethernet@1 {
compatible = "fsl,t1040-dpa-ethernet", "fsl,dpa-ethernet";
fsl,fman-mac = <&enet1>;
+ sleep = <&rcpm 0x40000008>;
};
ethernet@2 {
compatible = "fsl,t1040-dpa-ethernet", "fsl,dpa-ethernet";
fsl,fman-mac = <&enet2>;
+ sleep = <&rcpm 0x20000008>;
};
ethernet@3 {
compatible = "fsl,t1040-dpa-ethernet", "fsl,dpa-ethernet";
fsl,fman-mac = <&enet3>;
+ sleep = <&rcpm 0x10000008>;
};
ethernet@4 {
compatible = "fsl,t1040-dpa-ethernet", "fsl,dpa-ethernet";
fsl,fman-mac = <&enet4>;
+ sleep = <&rcpm 0x08000008>;
};
};
diff --git a/arch/powerpc/boot/dts/t1042rdb_pi.dts b/arch/powerpc/boot/dts/t1042rdb_pi.dts
index f0940f6..f89fee9 100644
--- a/arch/powerpc/boot/dts/t1042rdb_pi.dts
+++ b/arch/powerpc/boot/dts/t1042rdb_pi.dts
@@ -267,10 +267,12 @@
ethernet@3 {
compatible = "fsl,t1042-dpa-ethernet", "fsl,dpa-ethernet";
fsl,fman-mac = <&enet3>;
+ sleep = <&rcpm 0x10000008>;
};
ethernet@4 {
compatible = "fsl,t1042-dpa-ethernet", "fsl,dpa-ethernet";
fsl,fman-mac = <&enet4>;
+ sleep = <&rcpm 0x08000008>;
};
};
};
diff --git a/arch/powerpc/boot/dts/t104xqds.dtsi b/arch/powerpc/boot/dts/t104xqds.dtsi
index d54f7d6..079a4cd 100644
--- a/arch/powerpc/boot/dts/t104xqds.dtsi
+++ b/arch/powerpc/boot/dts/t104xqds.dtsi
@@ -335,22 +335,27 @@
ethernet@0 {
compatible = "fsl,t1040-dpa-ethernet", "fsl,dpa-ethernet";
fsl,fman-mac = <&enet0>;
+ sleep = <&rcpm 0x80000008>;
};
ethernet@1 {
compatible = "fsl,t1040-dpa-ethernet", "fsl,dpa-ethernet";
fsl,fman-mac = <&enet1>;
+ sleep = <&rcpm 0x40000008>;
};
ethernet@2 {
compatible = "fsl,t1040-dpa-ethernet", "fsl,dpa-ethernet";
fsl,fman-mac = <&enet2>;
+ sleep = <&rcpm 0x20000008>;
};
ethernet@3 {
compatible = "fsl,t1040-dpa-ethernet", "fsl,dpa-ethernet";
fsl,fman-mac = <&enet3>;
+ sleep = <&rcpm 0x10000008>;
};
ethernet@4 {
compatible = "fsl,t1040-dpa-ethernet", "fsl,dpa-ethernet";
fsl,fman-mac = <&enet4>;
+ sleep = <&rcpm 0x08000008>;
};
};
diff --git a/arch/powerpc/platforms/85xx/qoriq_pm.c b/arch/powerpc/platforms/85xx/qoriq_pm.c
index b6718f0..4578a63 100644
--- a/arch/powerpc/platforms/85xx/qoriq_pm.c
+++ b/arch/powerpc/platforms/85xx/qoriq_pm.c
@@ -27,6 +27,22 @@ unsigned int sleep_pm_state;
/* supported sleep modes by the present platform */
static unsigned int sleep_modes;
+void qoriq_enable_wakeup_source(struct device *dev, void *data)
+{
+ u32 value[2];
+ u32 pw_mask;
+
+ if (!device_may_wakeup(dev))
+ return;
+
+ if (of_property_read_u32_array(dev->of_node, "sleep", value, 2))
+ return;
+
+ /* get the second value, it is a mask */
+ pw_mask = value[1];
+ qoriq_pm_ops->set_ip_power(1, pw_mask);
+}
+
static int qoriq_suspend_enter(suspend_state_t state)
{
int ret = 0;
@@ -74,6 +90,8 @@ static int qoriq_suspend_valid(suspend_state_t state)
static int qoriq_suspend_begin(suspend_state_t state)
{
+ dpm_for_each_dev(NULL, qoriq_enable_wakeup_source);
+
if (state == PM_SUSPEND_MEM)
return fsl_dp_iomap();