Re: [PATCH v2] ARM: exynos: Set MCPM as mandatory for Exynos542x/5800 SoCs

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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@xxxxxxxxxxx>
> ---
> 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
> 



[Index of Archives]     [Linux SoC Development]     [Linux Rockchip Development]     [Linux for Synopsys ARC Processors]    
  • [Linux on Unisoc (RDA Micro) SoCs]     [Linux Actions SoC]     [Linux USB Development]     [Video for Linux]     [Linux Audio Users]     [Linux SCSI]     [Yosemite News]

  •   Powered by Linux