summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorrrs <rrs@FreeBSD.org>2013-10-19 06:47:02 +0000
committerrrs <rrs@FreeBSD.org>2013-10-19 06:47:02 +0000
commitfa957a569b51703a1b35abaabfeab9c428b5be5e (patch)
tree98015789594b61500b3afcfd6dd1a4a396d4a718
parente9f2d20a41200f33ff178e2687b502896959d169 (diff)
downloadFreeBSD-src-fa957a569b51703a1b35abaabfeab9c428b5be5e.zip
FreeBSD-src-fa957a569b51703a1b35abaabfeab9c428b5be5e.tar.gz
Corrects the Kirkwood dreamplug to use
the right register for power managment. It was incorrectly using the clock register which also caused the status to be the opposite of what it is supposed to be. 1 - its disabled 0 - its enabled Per kirkwood spec FSS_88F6180_9x_6281_OpenSource.pdf
-rw-r--r--sys/arm/mv/common.c17
-rw-r--r--sys/arm/mv/mvreg.h4
2 files changed, 19 insertions, 2 deletions
diff --git a/sys/arm/mv/common.c b/sys/arm/mv/common.c
index d4bee64..2fafc65 100644
--- a/sys/arm/mv/common.c
+++ b/sys/arm/mv/common.c
@@ -153,8 +153,11 @@ struct fdt_pm_mask_entry fdt_pm_mask_table[] = {
static __inline int
pm_is_disabled(uint32_t mask)
{
-
+#if defined(SOC_MV_KIRKWOOD)
+ return (soc_power_ctrl_get(mask) == mask);
+#else
return (soc_power_ctrl_get(mask) == mask ? 0 : 1);
+#endif
}
/*
@@ -221,7 +224,16 @@ fdt_pm(phandle_t node)
continue;
compat = fdt_is_compatible(node, fdt_pm_mask_table[i].compat);
-
+#if defined(SOC_MV_KIRKWOOD)
+ if (compat && (cpu_pm_ctrl & fdt_pm_mask_table[i].mask)) {
+ dev_mask |= (1 << i);
+ ena = 0;
+ break;
+ } else if (compat) {
+ dev_mask |= (1 << i);
+ break;
+ }
+#else
if (compat && (~cpu_pm_ctrl & fdt_pm_mask_table[i].mask)) {
dev_mask |= (1 << i);
ena = 0;
@@ -230,6 +242,7 @@ fdt_pm(phandle_t node)
dev_mask |= (1 << i);
break;
}
+#endif
}
return (ena);
diff --git a/sys/arm/mv/mvreg.h b/sys/arm/mv/mvreg.h
index 79398d9..1d6efed 100644
--- a/sys/arm/mv/mvreg.h
+++ b/sys/arm/mv/mvreg.h
@@ -142,7 +142,11 @@
/*
* Power Control
*/
+#if defined(SOC_MV_KIRKWOOD)
+#define CPU_PM_CTRL 0x18
+#else
#define CPU_PM_CTRL 0x1C
+#endif
#define CPU_PM_CTRL_NONE 0
#define CPU_PM_CTRL_ALL ~0x0
OpenPOWER on IntegriCloud