Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ieee1394...
[pandora-kernel.git] / arch / arm / mach-omap1 / pm.c
index 06b7e54..742f79e 100644 (file)
@@ -57,7 +57,6 @@
 #include <asm/arch/pm.h>
 #include <asm/arch/mux.h>
 #include <asm/arch/dma.h>
-#include <asm/arch/dsp_common.h>
 #include <asm/arch/dmtimer.h>
 
 static unsigned int arm_sleep_save[ARM_SLEEP_SAVE_SIZE];
@@ -67,6 +66,8 @@ static unsigned int mpui730_sleep_save[MPUI730_SLEEP_SAVE_SIZE];
 static unsigned int mpui1510_sleep_save[MPUI1510_SLEEP_SAVE_SIZE];
 static unsigned int mpui1610_sleep_save[MPUI1610_SLEEP_SAVE_SIZE];
 
+#ifdef CONFIG_OMAP_32K_TIMER
+
 static unsigned short enable_dyn_sleep = 1;
 
 static ssize_t idle_show(struct kobject *kobj, struct kobj_attribute *attr,
@@ -91,7 +92,8 @@ static ssize_t idle_store(struct kobject *kobj, struct kobj_attribute *attr,
 static struct kobj_attribute sleep_while_idle_attr =
        __ATTR(sleep_while_idle, 0644, idle_show, idle_store);
 
-static void (*omap_sram_idle)(void) = NULL;
+#endif
+
 static void (*omap_sram_suspend)(unsigned long r0, unsigned long r1) = NULL;
 
 /*
@@ -104,9 +106,7 @@ void omap_pm_idle(void)
 {
        extern __u32 arm_idlect1_mask;
        __u32 use_idlect1 = arm_idlect1_mask;
-#ifndef CONFIG_OMAP_MPU_TIMER
-       int do_sleep;
-#endif
+       int do_sleep = 0;
 
        local_irq_disable();
        local_fiq_disable();
@@ -116,19 +116,11 @@ void omap_pm_idle(void)
                return;
        }
 
-       /*
-        * Since an interrupt may set up a timer, we don't want to
-        * reprogram the hardware timer with interrupts enabled.
-        * Re-enable interrupts only after returning from idle.
-        */
-       timer_dyn_reprogram();
-
 #ifdef CONFIG_OMAP_MPU_TIMER
 #warning Enable 32kHz OS timer in order to allow sleep states in idle
        use_idlect1 = use_idlect1 & ~(1 << 9);
 #else
 
-       do_sleep = 0;
        while (enable_dyn_sleep) {
 
 #ifdef CONFIG_CBUS_TAHVO_USB
@@ -141,6 +133,8 @@ void omap_pm_idle(void)
                break;
        }
 
+#endif
+
 #ifdef CONFIG_OMAP_DM_TIMER
        use_idlect1 = omap_dm_timer_modify_idlect_mask(use_idlect1);
 #endif
@@ -168,7 +162,6 @@ void omap_pm_idle(void)
        }
        omap_sram_suspend(omap_readl(ARM_IDLECT1),
                          omap_readl(ARM_IDLECT2));
-#endif
 
        local_fiq_enable();
        local_irq_enable();
@@ -661,7 +654,10 @@ static struct platform_suspend_ops omap_pm_ops ={
 
 static int __init omap_pm_init(void)
 {
+
+#ifdef CONFIG_OMAP_32K_TIMER
        int error;
+#endif
 
        printk("Power Management for TI OMAP.\n");
 
@@ -671,23 +667,17 @@ static int __init omap_pm_init(void)
         * memory the MPU can see when it wakes up.
         */
        if (cpu_is_omap730()) {
-               omap_sram_idle = omap_sram_push(omap730_idle_loop_suspend,
-                                               omap730_idle_loop_suspend_sz);
                omap_sram_suspend = omap_sram_push(omap730_cpu_suspend,
                                                   omap730_cpu_suspend_sz);
        } else if (cpu_is_omap15xx()) {
-               omap_sram_idle = omap_sram_push(omap1510_idle_loop_suspend,
-                                               omap1510_idle_loop_suspend_sz);
                omap_sram_suspend = omap_sram_push(omap1510_cpu_suspend,
                                                   omap1510_cpu_suspend_sz);
        } else if (cpu_is_omap16xx()) {
-               omap_sram_idle = omap_sram_push(omap1610_idle_loop_suspend,
-                                               omap1610_idle_loop_suspend_sz);
                omap_sram_suspend = omap_sram_push(omap1610_cpu_suspend,
                                                   omap1610_cpu_suspend_sz);
        }
 
-       if (omap_sram_idle == NULL || omap_sram_suspend == NULL) {
+       if (omap_sram_suspend == NULL) {
                printk(KERN_ERR "PM not initialized: Missing SRAM support\n");
                return -ENODEV;
        }
@@ -719,9 +709,11 @@ static int __init omap_pm_init(void)
        omap_pm_init_proc();
 #endif
 
-       error = sysfs_create_file(power_kobj, &sleep_while_idle_attr);
+#ifdef CONFIG_OMAP_32K_TIMER
+       error = sysfs_create_file(power_kobj, &sleep_while_idle_attr.attr);
        if (error)
                printk(KERN_ERR "sysfs_create_file failed: %d\n", error);
+#endif
 
        if (cpu_is_omap16xx()) {
                /* configure LOW_PWR pin */