summaryrefslogtreecommitdiff
path: root/arch/arm/plat-mxc/include/mach/cpuidle.h
diff options
context:
space:
mode:
Diffstat (limited to 'arch/arm/plat-mxc/include/mach/cpuidle.h')
-rw-r--r--arch/arm/plat-mxc/include/mach/cpuidle.h56
1 files changed, 56 insertions, 0 deletions
diff --git a/arch/arm/plat-mxc/include/mach/cpuidle.h b/arch/arm/plat-mxc/include/mach/cpuidle.h
new file mode 100644
index 00000000000..2bb109e243b
--- /dev/null
+++ b/arch/arm/plat-mxc/include/mach/cpuidle.h
@@ -0,0 +1,56 @@
+/*
+ * Copyright 2011 Freescale Semiconductor, Inc.
+ * Copyright 2011 Linaro Ltd.
+ *
+ * The code contained herein is licensed under the GNU General Public
+ * License. You may obtain a copy of the GNU General Public License
+ * Version 2 or later at the following locations:
+ *
+ * http://www.opensource.org/licenses/gpl-license.html
+ * http://www.gnu.org/copyleft/gpl.html
+ */
+
+#ifndef __ARCH_ARM_PLAT_MXC_CPUIDLE_H__
+#define __ARCH_ARM_PLAT_MXC_CPUIDLE_H__
+
+#include <linux/cpuidle.h>
+#include <mach/hardware.h>
+
+/* for passing cpuidle state info to the cpuidle driver. */
+struct imx_cpuidle_state_data {
+ enum mxc_cpu_pwr_mode mach_cpu_pwr_state;
+ char *name;
+ char *desc;
+ /* time in uS to exit this idle state */
+ unsigned int exit_latency;
+ /* OPTIONAL - power usage of this idle state in mW */
+ unsigned int power_usage;
+ /* OPTIONAL - in uS. See drivers/cpuidle/governors/menu.c for usage */
+ unsigned int target_residency;
+};
+
+struct imx_cpuidle_data {
+ unsigned int num_states;
+ struct cpuidle_driver *imx_cpuidle_driver;
+ struct imx_cpuidle_state_data *state_data;
+ int (*mach_cpuidle)(struct cpuidle_device *dev,
+ struct cpuidle_state *state);
+
+ /* OPTIONAL - parameter of mach_cpuidle_init func below */
+ void *mach_init_data;
+ /* OPTIONAL - callback for mach level cpuidle initialization */
+ int (*mach_cpuidle_init)(void *mach_init_data);
+ /* OPTIONAL - Search drivers/cpuidle/cpuidle.c for usage */
+ int (*prepare)(struct cpuidle_device *dev);
+};
+
+#ifdef CONFIG_CPU_IDLE
+int imx_cpuidle_init(struct imx_cpuidle_data *cpuidle_data);
+#else
+static inline int imx_cpuidle_init(struct imx_cpuidle_data *cpuidle_data)
+{
+ return -EINVAL;
+}
+#endif /* CONFIG_CPU_IDLE */
+
+#endif /* __ARCH_ARM_PLAT_MXC_CPUIDLE_H__ */