|
@@ -0,0 +1,84 @@
|
|
|
+/*
|
|
|
+ * linux/arch/arm/mach-omap1/pm.c
|
|
|
+ *
|
|
|
+ * OMAP Power Management Routines
|
|
|
+ *
|
|
|
+ * Original code for the SA11x0:
|
|
|
+ * Copyright (c) 2001 Cliff Brake <cbrake@accelent.com>
|
|
|
+ *
|
|
|
+ * Modified for the PXA250 by Nicolas Pitre:
|
|
|
+ * Copyright (c) 2002 Monta Vista Software, Inc.
|
|
|
+ *
|
|
|
+ * Modified for the OMAP1510 by David Singleton:
|
|
|
+ * Copyright (c) 2002 Monta Vista Software, Inc.
|
|
|
+ *
|
|
|
+ * Cleanup 2004 for OMAP1510/1610 by Dirk Behme <dirk.behme@de.bosch.com>
|
|
|
+ *
|
|
|
+ * This program is free software; you can redistribute it and/or modify it
|
|
|
+ * under the terms of the GNU General Public License as published by the
|
|
|
+ * Free Software Foundation; either version 2 of the License, or (at your
|
|
|
+ * option) any later version.
|
|
|
+ *
|
|
|
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
|
|
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
|
|
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
|
|
|
+ * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
|
|
|
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
|
|
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
|
|
|
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
|
|
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
|
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
|
|
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
|
+ *
|
|
|
+ * You should have received a copy of the GNU General Public License along
|
|
|
+ * with this program; if not, write to the Free Software Foundation, Inc.,
|
|
|
+ * 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
|
+ */
|
|
|
+
|
|
|
+#include <linux/suspend.h>
|
|
|
+#include <linux/sched.h>
|
|
|
+#include <linux/proc_fs.h>
|
|
|
+#include <linux/interrupt.h>
|
|
|
+#include <linux/sysfs.h>
|
|
|
+#include <linux/module.h>
|
|
|
+#include <linux/io.h>
|
|
|
+#include <linux/atomic.h>
|
|
|
+
|
|
|
+#include <asm/fncpy.h>
|
|
|
+#include <asm/system_misc.h>
|
|
|
+#include <asm/irq.h>
|
|
|
+#include <asm/mach/time.h>
|
|
|
+#include <asm/mach/irq.h>
|
|
|
+
|
|
|
+#include <mach/tc.h>
|
|
|
+#include <mach/mux.h>
|
|
|
+#include <linux/omap-dma.h>
|
|
|
+#include <plat/dmtimer.h>
|
|
|
+
|
|
|
+#include <mach/irqs.h>
|
|
|
+
|
|
|
+#include "iomap.h"
|
|
|
+#include "clock.h"
|
|
|
+#include "pm.h"
|
|
|
+#include "sram.h"
|
|
|
+
|
|
|
+static unsigned int arm_sleep_save[ARM_SLEEP_SAVE_SIZE];
|
|
|
+static unsigned short dsp_sleep_save[DSP_SLEEP_SAVE_SIZE];
|
|
|
+static unsigned short ulpd_sleep_save[ULPD_SLEEP_SAVE_SIZE];
|
|
|
+static unsigned int mpui7xx_sleep_save[MPUI7XX_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,
|
|
|
+ char *buf)
|
|
|
+{
|
|
|
+ return sprintf(buf, "%hu\n", enable_dyn_sleep);
|
|
|
+}
|
|
|
+
|
|
|
+static ssize_t idle_store(struct kobject *kobj, struct kobj_attribute *attr,
|
|
|
+ const char * buf, size_t n)
|
|
|
+{
|