96 lines
2.8 KiB
Diff
96 lines
2.8 KiB
Diff
|
From c8055614385c90accdea4e7a046c5560bccc84cf Mon Sep 17 00:00:00 2001
|
||
|
From: Leonard Crestez <leonard.crestez@nxp.com>
|
||
|
Date: Mon, 13 May 2019 15:06:37 +0300
|
||
|
Subject: [PATCH] imx busfreq: Add API header file
|
||
|
|
||
|
Add sufficient enough definitions so that drivers which call
|
||
|
request_bus_freq and release_bus_freq can compile even if
|
||
|
CONFIG_HAVE_IMX_BUSFREQ is missing.
|
||
|
|
||
|
Signed-off-by: Leonard Crestez <leonard.crestez@nxp.com>
|
||
|
---
|
||
|
include/linux/busfreq-imx.h | 77 +++++++++++++++++++++++++++++++++++++++++++++
|
||
|
1 file changed, 77 insertions(+)
|
||
|
create mode 100644 include/linux/busfreq-imx.h
|
||
|
|
||
|
--- /dev/null
|
||
|
+++ b/include/linux/busfreq-imx.h
|
||
|
@@ -0,0 +1,77 @@
|
||
|
+/*
|
||
|
+ * Copyright 2012-2016 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>
|
||
|
+#include <linux/regulator/consumer.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,
|
||
|
+};
|
||
|
+
|
||
|
+#if defined(CONFIG_HAVE_IMX_BUSFREQ) && !defined(CONFIG_ARM64)
|
||
|
+extern struct regulator *arm_reg;
|
||
|
+extern struct regulator *soc_reg;
|
||
|
+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);
|
||
|
+#elif defined(CONFIG_HAVE_IMX_BUSFREQ)
|
||
|
+void request_bus_freq(enum bus_freq_mode mode);
|
||
|
+void release_bus_freq(enum bus_freq_mode mode);
|
||
|
+int get_bus_freq_mode(void);
|
||
|
+#else
|
||
|
+static inline void request_bus_freq(enum bus_freq_mode mode)
|
||
|
+{
|
||
|
+}
|
||
|
+static inline void release_bus_freq(enum bus_freq_mode mode)
|
||
|
+{
|
||
|
+}
|
||
|
+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
|