Commit cfdda353 authored by Bartlomiej Zolnierkiewicz's avatar Bartlomiej Zolnierkiewicz Committed by Kukjin Kim

ARM: EXYNOS: Fix build breakage cpuidle on !SMP

The Exynos cpuidle driver has coupled cpuidle built-in so it cannot be
built without SMP:

arch/arm/mach-exynos/pm.c: In function 'exynos_cpu0_enter_aftr':
arch/arm/mach-exynos/pm.c:246:4: error: implicit declaration of function 'arch_send_wakeup_ipi_mask' [-Werror=implicit-function-declaration]
arch/arm/mach-exynos/built-in.o: In function 'exynos_pre_enter_aftr':
../arch/arm/mach-exynos/pm.c:300: undefined reference to 'cpu_boot_reg_base'
arch/arm/mach-exynos/built-in.o: In function 'exynos_cpu1_powerdown':
../arch/arm/mach-exynos/pm.c:282: undefined reference to 'exynos_cpu_power_down'

Fix it by adding missing checks for SMP.
Reported-by: default avatarKrzysztof Kozlowski <k.kozlowski@samsung.com>
Signed-off-by: default avatarBartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
Signed-off-by: default avatarKukjin Kim <kgene@kernel.org>
parent 435c3454
...@@ -211,7 +211,7 @@ static void __init exynos_dt_machine_init(void) ...@@ -211,7 +211,7 @@ static void __init exynos_dt_machine_init(void)
if (!IS_ENABLED(CONFIG_SMP)) if (!IS_ENABLED(CONFIG_SMP))
exynos_sysram_init(); exynos_sysram_init();
#ifdef CONFIG_ARM_EXYNOS_CPUIDLE #if defined(CONFIG_SMP) && defined(CONFIG_ARM_EXYNOS_CPUIDLE)
if (of_machine_is_compatible("samsung,exynos4210")) if (of_machine_is_compatible("samsung,exynos4210"))
exynos_cpuidle.dev.platform_data = &cpuidle_coupled_exynos_data; exynos_cpuidle.dev.platform_data = &cpuidle_coupled_exynos_data;
#endif #endif
......
...@@ -181,6 +181,7 @@ void exynos_enter_aftr(void) ...@@ -181,6 +181,7 @@ void exynos_enter_aftr(void)
cpu_pm_exit(); cpu_pm_exit();
} }
#if defined(CONFIG_SMP) && defined(CONFIG_ARM_EXYNOS_CPUIDLE)
static atomic_t cpu1_wakeup = ATOMIC_INIT(0); static atomic_t cpu1_wakeup = ATOMIC_INIT(0);
static int exynos_cpu0_enter_aftr(void) static int exynos_cpu0_enter_aftr(void)
...@@ -302,3 +303,4 @@ struct cpuidle_exynos_data cpuidle_coupled_exynos_data = { ...@@ -302,3 +303,4 @@ struct cpuidle_exynos_data cpuidle_coupled_exynos_data = {
.pre_enter_aftr = exynos_pre_enter_aftr, .pre_enter_aftr = exynos_pre_enter_aftr,
.post_enter_aftr = exynos_post_enter_aftr, .post_enter_aftr = exynos_post_enter_aftr,
}; };
#endif /* CONFIG_SMP && CONFIG_ARM_EXYNOS_CPUIDLE */
...@@ -117,7 +117,8 @@ static int exynos_cpuidle_probe(struct platform_device *pdev) ...@@ -117,7 +117,8 @@ static int exynos_cpuidle_probe(struct platform_device *pdev)
{ {
int ret; int ret;
if (of_machine_is_compatible("samsung,exynos4210")) { if (IS_ENABLED(CONFIG_SMP) &&
of_machine_is_compatible("samsung,exynos4210")) {
exynos_cpuidle_pdata = pdev->dev.platform_data; exynos_cpuidle_pdata = pdev->dev.platform_data;
ret = cpuidle_register(&exynos_coupled_idle_driver, ret = cpuidle_register(&exynos_coupled_idle_driver,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment