Message ID | 20190320081943.11800-1-m.szyprowski@samsung.com |
---|---|
State | New |
Headers | show |
Series | [v2] ARM: exynos: Set MCPM as mandatory for Exynos542x/5800 SoCs | expand |
On Wed, Mar 20, 2019 at 09:19:43AM +0100, Marek Szyprowski wrote: > 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> > --- > v2: rebased on top of the current exynos-next > --- > arch/arm/mach-exynos/Kconfig | 12 +++--------- > arch/arm/mach-exynos/Makefile | 2 +- > arch/arm/mach-exynos/suspend.c | 12 ++++-------- > 3 files changed, 8 insertions(+), 18 deletions(-) > > diff --git a/arch/arm/mach-exynos/Kconfig b/arch/arm/mach-exynos/Kconfig > index b40963cf91c7..62b734a8092b 100644 > --- a/arch/arm/mach-exynos/Kconfig > +++ b/arch/arm/mach-exynos/Kconfig > @@ -106,21 +106,15 @@ config SOC_EXYNOS5420 > bool "SAMSUNG EXYNOS5420" > default y > depends on ARCH_EXYNOS5 > + select MCPM > + select ARM_CCI400_PORT_CTRL > + select ARM_CPU_SUSPEND > > config SOC_EXYNOS5800 > bool "SAMSUNG EXYNOS5800" > default y > depends on SOC_EXYNOS5420 > > -config EXYNOS5420_MCPM While applying I noticed that it still leaves CONFIG_EXYNOS5420_MCPM in defconfigs. Please clean them as well in this patch. Best regards, Krzysztof > - 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 > diff --git a/arch/arm/mach-exynos/Makefile b/arch/arm/mach-exynos/Makefile > index cd00c82a1add..fb381d69f8d1 100644 > --- a/arch/arm/mach-exynos/Makefile > +++ b/arch/arm/mach-exynos/Makefile > @@ -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_SOC_EXYNOS5420) += mcpm-exynos.o > CFLAGS_mcpm-exynos.o += -march=armv7-a > diff --git a/arch/arm/mach-exynos/suspend.c b/arch/arm/mach-exynos/suspend.c > index 6975feeae2be..63996b3b5014 100644 > --- a/arch/arm/mach-exynos/suspend.c > +++ b/arch/arm/mach-exynos/suspend.c > @@ -269,10 +269,8 @@ 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)) { > - mcpm_set_entry_vector(cpu, cluster, exynos_cpu_resume); > - mcpm_cpu_suspend(); > - } > + mcpm_set_entry_vector(cpu, cluster, exynos_cpu_resume); > + mcpm_cpu_suspend(); > > pr_info("Failed to suspend the system\n"); > > @@ -352,8 +350,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)) > - pmu_raw_writel(__pa_symbol(mcpm_entry_point), S5P_INFORM0); > + pmu_raw_writel(__pa_symbol(mcpm_entry_point), S5P_INFORM0); > > tmp = pmu_raw_readl(EXYNOS_L2_OPTION(0)); > tmp &= ~EXYNOS_L2_USE_RETENTION; > @@ -456,8 +453,7 @@ static void exynos5420_prepare_pm_resume(void) > mpidr = read_cpuid_mpidr(); > cluster = MPIDR_AFFINITY_LEVEL(mpidr, 1); > > - if (IS_ENABLED(CONFIG_EXYNOS5420_MCPM)) > - WARN_ON(mcpm_cpu_powered_up()); > + WARN_ON(mcpm_cpu_powered_up()); > > if (IS_ENABLED(CONFIG_HW_PERF_EVENTS) && cluster != 0) { > /* > -- > 2.17.1 >
diff --git a/arch/arm/mach-exynos/Kconfig b/arch/arm/mach-exynos/Kconfig index b40963cf91c7..62b734a8092b 100644 --- a/arch/arm/mach-exynos/Kconfig +++ b/arch/arm/mach-exynos/Kconfig @@ -106,21 +106,15 @@ config SOC_EXYNOS5420 bool "SAMSUNG EXYNOS5420" default y depends on ARCH_EXYNOS5 + select MCPM + 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 diff --git a/arch/arm/mach-exynos/Makefile b/arch/arm/mach-exynos/Makefile index cd00c82a1add..fb381d69f8d1 100644 --- a/arch/arm/mach-exynos/Makefile +++ b/arch/arm/mach-exynos/Makefile @@ -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_SOC_EXYNOS5420) += mcpm-exynos.o CFLAGS_mcpm-exynos.o += -march=armv7-a diff --git a/arch/arm/mach-exynos/suspend.c b/arch/arm/mach-exynos/suspend.c index 6975feeae2be..63996b3b5014 100644 --- a/arch/arm/mach-exynos/suspend.c +++ b/arch/arm/mach-exynos/suspend.c @@ -269,10 +269,8 @@ 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)) { - mcpm_set_entry_vector(cpu, cluster, exynos_cpu_resume); - mcpm_cpu_suspend(); - } + mcpm_set_entry_vector(cpu, cluster, exynos_cpu_resume); + mcpm_cpu_suspend(); pr_info("Failed to suspend the system\n"); @@ -352,8 +350,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)) - pmu_raw_writel(__pa_symbol(mcpm_entry_point), S5P_INFORM0); + pmu_raw_writel(__pa_symbol(mcpm_entry_point), S5P_INFORM0); tmp = pmu_raw_readl(EXYNOS_L2_OPTION(0)); tmp &= ~EXYNOS_L2_USE_RETENTION; @@ -456,8 +453,7 @@ static void exynos5420_prepare_pm_resume(void) mpidr = read_cpuid_mpidr(); cluster = MPIDR_AFFINITY_LEVEL(mpidr, 1); - if (IS_ENABLED(CONFIG_EXYNOS5420_MCPM)) - WARN_ON(mcpm_cpu_powered_up()); + WARN_ON(mcpm_cpu_powered_up()); if (IS_ENABLED(CONFIG_HW_PERF_EVENTS) && cluster != 0) { /*
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> --- v2: rebased on top of the current exynos-next --- arch/arm/mach-exynos/Kconfig | 12 +++--------- arch/arm/mach-exynos/Makefile | 2 +- arch/arm/mach-exynos/suspend.c | 12 ++++-------- 3 files changed, 8 insertions(+), 18 deletions(-) -- 2.17.1