diff options
author | Ranjani Vaidyanathan <Ranjani.Vaidyanathan@freescale.com> | 2015-04-09 15:50:07 -0500 |
---|---|---|
committer | Jason Liu <r64343@freescale.com> | 2015-05-08 16:35:10 +0800 |
commit | 1aec93deffde305b4c193e597020bfa6e2e387b6 (patch) | |
tree | c352f92ef3a1d46b6ee78441190ad9209adf12c4 /arch/arm/mach-imx/cpuidle-imx6sl.c | |
parent | 4fa1d0f9b597296a892eb40f3427c5aab6af5bbc (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.c | 15 |
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); } |