diff options
author | rrs <rrs@FreeBSD.org> | 2013-10-19 06:47:02 +0000 |
---|---|---|
committer | rrs <rrs@FreeBSD.org> | 2013-10-19 06:47:02 +0000 |
commit | fa957a569b51703a1b35abaabfeab9c428b5be5e (patch) | |
tree | 98015789594b61500b3afcfd6dd1a4a396d4a718 | |
parent | e9f2d20a41200f33ff178e2687b502896959d169 (diff) | |
download | FreeBSD-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.c | 17 | ||||
-rw-r--r-- | sys/arm/mv/mvreg.h | 4 |
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 |