gflt110: more power saving tweaks
* try to mask interrupts before WFI
* enable /proc/mv_pm/* for testing
Change-Id: I72908c9ba32e2525974f876aeeef51544a8613e8
diff --git a/arch/arm/mach-feroceon-kw2/core.c b/arch/arm/mach-feroceon-kw2/core.c
index a26fdaa..7abeb6b 100755
--- a/arch/arm/mach-feroceon-kw2/core.c
+++ b/arch/arm/mach-feroceon-kw2/core.c
@@ -92,7 +92,7 @@
#include <mach/uncompress.h>
static char arr[256];
-extern void mv_kw2_cpu_idle_enter(void);
+extern void mv_kw2_cpu_idle_enter_wfi(void);
#ifdef MV_INCLUDE_EARLY_PRINTK
extern void putstr(const char *ptr);
@@ -642,10 +642,10 @@
/* CPU idle driver */
boardId = mvBoardIdGet();
- if (boardId == DB_88F6535_BP_ID || boardId == RD_88F6560_GW_ID)
+ //if (boardId == DB_88F6535_BP_ID || boardId == RD_88F6560_GW_ID)
platform_device_register_simple("kw_cpuidle", 0, NULL, 0);
- pm_power_off = mv_kw2_cpu_idle_enter;
+ pm_power_off = mv_kw2_cpu_idle_enter_wfi;
}
MACHINE_START(FEROCEON_KW2 ,"Feroceon-KW2")
diff --git a/arch/arm/mach-feroceon-kw2/cpufreq.c b/arch/arm/mach-feroceon-kw2/cpufreq.c
index e9a8750..f72fcdb 100755
--- a/arch/arm/mach-feroceon-kw2/cpufreq.c
+++ b/arch/arm/mach-feroceon-kw2/cpufreq.c
@@ -214,8 +214,10 @@
struct proc_dir_entry *cpu_freq_proc;
#endif /* CONFIG_MV_PMU_PROC */
+ /*
if (MV_6601_DEV_ID == mvCtrlModelGet())
return 0;
+ */
printk(KERN_INFO "cpufreq: Init kirkwood cpufreq driver\n");
diff --git a/arch/arm/mach-feroceon-kw2/cpuidle.c b/arch/arm/mach-feroceon-kw2/cpuidle.c
index 6a49111..4a36607 100755
--- a/arch/arm/mach-feroceon-kw2/cpuidle.c
+++ b/arch/arm/mach-feroceon-kw2/cpuidle.c
@@ -264,8 +264,10 @@
static int __init kw_cpuidle_drv_init(void)
{
+ /*
if (MV_6601_DEV_ID == mvCtrlModelGet())
return 0;
+ */
device_registered = 0;
return platform_driver_register(&kw_cpuidle_driver);
diff --git a/arch/arm/mach-feroceon-kw2/pm.c b/arch/arm/mach-feroceon-kw2/pm.c
index c9b7158..dda4156 100755
--- a/arch/arm/mach-feroceon-kw2/pm.c
+++ b/arch/arm/mach-feroceon-kw2/pm.c
@@ -60,6 +60,14 @@
return;
}
+void mv_kw2_cpu_idle_enter_wfi(void)
+{
+ /* Disable all interrupts . */
+ MV_REG_WRITE(MV_IRQ_MASK_LOW_REG, 0x0);
+ MV_REG_WRITE(MV_IRQ_MASK_HIGH_REG, 0x0);
+ MV_REG_WRITE(MV_IRQ_MASK_ERROR_REG, 0x0);
+ cpu_do_idle();
+}
static void save_kw2_cpu_win_state(void)
{
@@ -186,8 +194,10 @@
int __init mv_pm_init(void)
{
+ /*
if (MV_6601_DEV_ID == mvCtrlModelGet())
return 0;
+ */
printk(KERN_INFO "Marvell Kirkwood2 Power Management Initializing\n");