summaryrefslogtreecommitdiff
path: root/include/linux/busfreq-imx.h
diff options
context:
space:
mode:
authorAnson Huang <b20788@freescale.com>2015-04-13 14:13:17 +0800
committerNitin Garg <nitin.garg@freescale.com>2015-09-17 09:22:54 -0500
commit4771713d25c93b8a3c66b51c2e01ceffc63672e1 (patch)
treed5fa1ddda4b481bc03a50f090c19703458a3e634 /include/linux/busfreq-imx.h
parent32aa8b97331c4717640c1e7bb693ce386b2b2249 (diff)
MLK-10788-2 ARM: imx: rename busfreq from imx6 to imx
As busfreq need to cover both i.MX6 and i.MX7 and maybe later SoCs, so better to change the name to support common imx SoC. Signed-off-by: Anson Huang <b20788@freescale.com>
Diffstat (limited to 'include/linux/busfreq-imx.h')
-rw-r--r--include/linux/busfreq-imx.h71
1 files changed, 71 insertions, 0 deletions
diff --git a/include/linux/busfreq-imx.h b/include/linux/busfreq-imx.h
new file mode 100644
index 000000000000..85b8b3844dba
--- /dev/null
+++ b/include/linux/busfreq-imx.h
@@ -0,0 +1,71 @@
+/*
+ * Copyright 2012-2015 Freescale Semiconductor, Inc. All Rights Reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+#ifndef __ASM_ARCH_MXC_BUSFREQ_H__
+#define __ASM_ARCH_MXC_BUSFREQ_H__
+
+#include <linux/notifier.h>
+
+/*
+ * This enumerates busfreq low power mode entry and exit.
+ */
+enum busfreq_event {
+ LOW_BUSFREQ_ENTER,
+ LOW_BUSFREQ_EXIT,
+};
+
+/*
+ * This enumerates the system bus and ddr frequencies in various modes.
+ * BUS_FREQ_HIGH - DDR @ 528MHz, AHB @ 132MHz.
+ * BUS_FREQ_MED - DDR @ 400MHz, AHB @ 132MHz
+ * BUS_FREQ_AUDIO - DDR @ 50MHz/100MHz, AHB @ 24MHz.
+ * BUS_FREQ_LOW - DDR @ 24MHz, AHB @ 24MHz.
+ * BUS_FREQ_ULTRA_LOW - DDR @ 1MHz, AHB - 3MHz.
+ *
+ * Drivers need to request/release the bus/ddr frequencies based on their performance
+ * requirements. Drivers cannot request/release BUS_FREQ_ULTRA_LOW mode as
+ * this mode is automatically entered from either BUS_FREQ_AUDIO or BUS_FREQ_LOW
+ * modes.
+ */
+enum bus_freq_mode {
+ BUS_FREQ_HIGH,
+ BUS_FREQ_MED,
+ BUS_FREQ_AUDIO,
+ BUS_FREQ_LOW,
+ BUS_FREQ_ULTRA_LOW,
+};
+
+#ifdef CONFIG_CPU_FREQ
+void request_bus_freq(enum bus_freq_mode mode);
+void release_bus_freq(enum bus_freq_mode mode);
+int register_busfreq_notifier(struct notifier_block *nb);
+int unregister_busfreq_notifier(struct notifier_block *nb);
+int get_bus_freq_mode(void);
+#else
+static inline void request_bus_freq(enum bus_freq_mode mode)
+{
+ return;
+}
+static inline void release_bus_freq(enum bus_freq_mode mode)
+{
+ return;
+}
+static inline int register_busfreq_notifier(struct notifier_block *nb)
+{
+ return 0;
+}
+static inline int unregister_busfreq_notifier(struct notifier_block *nb)
+{
+ return 0;
+}
+static inline int get_bus_freq_mode(void)
+{
+ return BUS_FREQ_HIGH;
+}
+#endif
+#endif