summaryrefslogtreecommitdiff
path: root/arch/arm/mach-imx/cpuidle-imx6sl.c
diff options
context:
space:
mode:
authorRanjani Vaidyanathan <Ranjani.Vaidyanathan@freescale.com>2015-04-09 15:50:07 -0500
committerJason Liu <r64343@freescale.com>2015-05-08 16:35:10 +0800
commit1aec93deffde305b4c193e597020bfa6e2e387b6 (patch)
treec352f92ef3a1d46b6ee78441190ad9209adf12c4 /arch/arm/mach-imx/cpuidle-imx6sl.c
parent4fa1d0f9b597296a892eb40f3427c5aab6af5bbc (diff)
MLK-10643 ARM:imx:Fix kernel build break when CPU_FREQ or CPU_IDLE is not defined.
Kernel build fails when CPU_FREQ or CPU_IDLE is disabled in the kernel config. This patch fixes the problem. When CPU_FREQ is disabled the system will run at the frequency setup by uboot. Signed-off-by: Ranjani Vaidyanathan <Ranjani.Vaidyanathan@freescale.com>
Diffstat (limited to 'arch/arm/mach-imx/cpuidle-imx6sl.c')
-rw-r--r--arch/arm/mach-imx/cpuidle-imx6sl.c15
1 files changed, 10 insertions, 5 deletions
diff --git a/arch/arm/mach-imx/cpuidle-imx6sl.c b/arch/arm/mach-imx/cpuidle-imx6sl.c
index ee1550060948..38d98d12cf78 100644
--- a/arch/arm/mach-imx/cpuidle-imx6sl.c
+++ b/arch/arm/mach-imx/cpuidle-imx6sl.c
@@ -6,6 +6,7 @@
* published by the Free Software Foundation.
*/
+#include <linux/busfreq-imx6.h>
#include <linux/cpuidle.h>
#include <linux/module.h>
#include <linux/platform_device.h>
@@ -24,10 +25,11 @@
static void __iomem *wfi_iram_base;
extern unsigned long iram_tlb_base_addr;
-extern int ultra_low_bus_freq_mode;
-extern int audio_bus_freq_mode;
+
+#ifdef CONFIG_CPU_FREQ
extern unsigned long mx6sl_lpm_wfi_start asm("mx6sl_lpm_wfi_start");
extern unsigned long mx6sl_lpm_wfi_end asm("mx6sl_lpm_wfi_end");
+#endif
struct imx6_cpuidle_pm_info {
u32 pm_info_size; /* Size of pm_info */
@@ -64,9 +66,11 @@ static void (*imx6sl_wfi_in_iram_fn)(void __iomem *iram_vbase,
static int imx6sl_enter_wait(struct cpuidle_device *dev,
struct cpuidle_driver *drv, int index)
{
+ int mode = get_bus_freq_mode();
+
imx6q_set_lpm(WAIT_UNCLOCKED);
- if (audio_bus_freq_mode || ultra_low_bus_freq_mode) {
- imx6sl_wfi_in_iram_fn(wfi_iram_base, audio_bus_freq_mode,
+ if ((mode == BUS_FREQ_AUDIO) || (mode == BUS_FREQ_ULTRA_LOW)) {
+ imx6sl_wfi_in_iram_fn(wfi_iram_base, (mode == BUS_FREQ_AUDIO) ? 1 : 0 ,
regulator_is_enabled(vbus_ldo));
} else {
/*
@@ -105,6 +109,7 @@ static struct cpuidle_driver imx6sl_cpuidle_driver = {
int __init imx6sl_cpuidle_init(void)
{
+#ifdef CONFIG_CPU_FREQ
struct imx6_cpuidle_pm_info *pm_info;
int i;
const u32 *mmdc_offset_array;
@@ -139,7 +144,7 @@ int __init imx6sl_cpuidle_init(void)
imx6sl_wfi_in_iram_fn = (void *)fncpy(wfi_iram_base + sizeof(*pm_info),
&imx6sl_low_power_wfi, wfi_code_size);
-
+#endif
return cpuidle_register(&imx6sl_cpuidle_driver, NULL);
}