ARM: exynos: Set MCPM as mandatory for Exynos542x/5800 SoCs
authorMarek Szyprowski <m.szyprowski@samsung.com>
Tue, 9 Apr 2019 09:56:02 +0000 (11:56 +0200)
committerKrzysztof Kozlowski <krzk@kernel.org>
Wed, 10 Apr 2019 15:58:22 +0000 (17:58 +0200)
Support for Exynos5420/5422/5800 SoCs requires MCPM to properly boot all
CPU cores on all currectly supported platforms: Peach Pit (Exynos5420),
Odroid XU3/XU3lite/XU4/HC1 (Exynos5422) and Peach Pi (Exynos5800).
Without it some CPU cores fail to come online. Remove then the ability to
disable MCPM and make it mandatory when Exynos542x/5800 support is
enabled.

Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org>
arch/arm/configs/exynos_defconfig
arch/arm/configs/multi_v7_defconfig
arch/arm/mach-exynos/Kconfig
arch/arm/mach-exynos/Makefile
arch/arm/mach-exynos/suspend.c

index d635edf..c95c542 100644 (file)
@@ -9,7 +9,6 @@ CONFIG_MODULE_UNLOAD=y
 CONFIG_PARTITION_ADVANCED=y
 CONFIG_ARCH_EXYNOS=y
 CONFIG_ARCH_EXYNOS3=y
-CONFIG_EXYNOS5420_MCPM=y
 CONFIG_SMP=y
 CONFIG_BIG_LITTLE=y
 CONFIG_NR_CPUS=8
index c75051b..e4b5fd4 100644 (file)
@@ -33,7 +33,6 @@ CONFIG_MACH_BERLIN_BG2CD=y
 CONFIG_MACH_BERLIN_BG2Q=y
 CONFIG_ARCH_DIGICOLOR=y
 CONFIG_ARCH_EXYNOS=y
-CONFIG_EXYNOS5420_MCPM=y
 CONFIG_ARCH_HIGHBANK=y
 CONFIG_ARCH_HISI=y
 CONFIG_ARCH_HI3xxx=y
index b40963c..1c518b8 100644 (file)
@@ -106,21 +106,15 @@ config SOC_EXYNOS5420
        bool "SAMSUNG EXYNOS5420"
        default y
        depends on ARCH_EXYNOS5
+       select MCPM if SMP
+       select ARM_CCI400_PORT_CTRL
+       select ARM_CPU_SUSPEND
 
 config SOC_EXYNOS5800
        bool "SAMSUNG EXYNOS5800"
        default y
        depends on SOC_EXYNOS5420
 
-config EXYNOS5420_MCPM
-       bool "Exynos5420 Multi-Cluster PM support"
-       depends on MCPM && SOC_EXYNOS5420
-       select ARM_CCI400_PORT_CTRL
-       select ARM_CPU_SUSPEND
-       help
-         This is needed to provide CPU and cluster power management
-         on Exynos5420 implementing big.LITTLE.
-
 config EXYNOS_CPU_SUSPEND
        bool
        select ARM_CPU_SUSPEND
index cd00c82..264dbaa 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_EXYNOS5420_MCPM)  += mcpm-exynos.o
+obj-$(CONFIG_MCPM)             += mcpm-exynos.o
 CFLAGS_mcpm-exynos.o           += -march=armv7-a
index 64a57e7..be122af 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_EXYNOS5420_MCPM)) {
+       if (IS_ENABLED(CONFIG_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_EXYNOS5420_MCPM))
+       if (IS_ENABLED(CONFIG_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_EXYNOS5420_MCPM))
+       if (IS_ENABLED(CONFIG_MCPM))
                WARN_ON(mcpm_cpu_powered_up());
 
        if (IS_ENABLED(CONFIG_HW_PERF_EVENTS) && cluster != 0) {