ARM: exynos: Only build MCPM support if used
authorArnd Bergmann <arnd@arndb.de>
Wed, 19 Jun 2019 12:55:29 +0000 (14:55 +0200)
committerKrzysztof Kozlowski <krzk@kernel.org>
Fri, 21 Jun 2019 18:09:35 +0000 (20:09 +0200)
We get a link error for configurations that enable an Exynos
SoC that does not require MCPM, but then manually enable
MCPM anyway without also turning on the arm-cci:

arch/arm/mach-exynos/mcpm-exynos.o: In function `exynos_pm_power_up_setup':
mcpm-exynos.c:(.text+0x8): undefined reference to `cci_enable_port_for_self'

Change it back to only build the code we actually need, by
introducing a CONFIG_EXYNOS_MCPM that serves the same purpose
as the older CONFIG_EXYNOS5420_MCPM.

Fixes: 2997520c2d4e ("ARM: exynos: Set MCPM as mandatory for Exynos542x/5800 SoCs")
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org>
arch/arm/mach-exynos/Kconfig
arch/arm/mach-exynos/Makefile
arch/arm/mach-exynos/suspend.c

index 21ad78d..d742223 100644 (file)
@@ -107,7 +107,7 @@ config SOC_EXYNOS5420
        bool "SAMSUNG EXYNOS5420"
        default y
        depends on ARCH_EXYNOS5
-       select MCPM if SMP
+       select EXYNOS_MCPM if SMP
        select ARM_CCI400_PORT_CTRL
        select ARM_CPU_SUSPEND
 
@@ -116,6 +116,10 @@ config SOC_EXYNOS5800
        default y
        depends on SOC_EXYNOS5420
 
+config EXYNOS_MCPM
+       bool
+       select MCPM
+
 config EXYNOS_CPU_SUSPEND
        bool
        select ARM_CPU_SUSPEND
index 264dbaa..5abf3db 100644 (file)
@@ -18,5 +18,5 @@ plus_sec := $(call as-instr,.arch_extension sec,+sec)
 AFLAGS_exynos-smc.o            :=-Wa,-march=armv7-a$(plus_sec)
 AFLAGS_sleep.o                 :=-Wa,-march=armv7-a$(plus_sec)
 
-obj-$(CONFIG_MCPM)             += mcpm-exynos.o
+obj-$(CONFIG_EXYNOS_MCPM)      += mcpm-exynos.o
 CFLAGS_mcpm-exynos.o           += -march=armv7-a
index be122af..8b1e6ab 100644 (file)
@@ -268,7 +268,7 @@ static int exynos5420_cpu_suspend(unsigned long arg)
        unsigned int cluster = MPIDR_AFFINITY_LEVEL(mpidr, 1);
        unsigned int cpu = MPIDR_AFFINITY_LEVEL(mpidr, 0);
 
-       if (IS_ENABLED(CONFIG_MCPM)) {
+       if (IS_ENABLED(CONFIG_EXYNOS_MCPM)) {
                mcpm_set_entry_vector(cpu, cluster, exynos_cpu_resume);
                mcpm_cpu_suspend();
        }
@@ -351,7 +351,7 @@ static void exynos5420_pm_prepare(void)
        exynos_pm_enter_sleep_mode();
 
        /* ensure at least INFORM0 has the resume address */
-       if (IS_ENABLED(CONFIG_MCPM))
+       if (IS_ENABLED(CONFIG_EXYNOS_MCPM))
                pmu_raw_writel(__pa_symbol(mcpm_entry_point), S5P_INFORM0);
 
        tmp = pmu_raw_readl(EXYNOS_L2_OPTION(0));
@@ -455,7 +455,7 @@ static void exynos5420_prepare_pm_resume(void)
        mpidr = read_cpuid_mpidr();
        cluster = MPIDR_AFFINITY_LEVEL(mpidr, 1);
 
-       if (IS_ENABLED(CONFIG_MCPM))
+       if (IS_ENABLED(CONFIG_EXYNOS_MCPM))
                WARN_ON(mcpm_cpu_powered_up());
 
        if (IS_ENABLED(CONFIG_HW_PERF_EVENTS) && cluster != 0) {