Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 989ff3fd authored by Kyungmin Park's avatar Kyungmin Park Committed by Kukjin Kim
Browse files

ARM: EXYNOS: fix the secondary CPU boot of exynos4212



This patch fixes the offset of CPU boot address and changes
the parameter of smc call for SMC_CMD_CPU1BOOT command on
exynos4212.

Signed-off-by: default avatarKyungmin Park <kyungmin.park@samsung.com>
Signed-off-by: default avatarChanwoo Choi <cw00.choi@samsung.com>
Reviewed-by: default avatarTomasz Figa <t.figa@samsung.com>
Signed-off-by: default avatarKukjin Kim <kgene.kim@samsung.com>
parent 89ca3b88
Loading
Loading
Loading
Loading
+14 −1
Original line number Original line Diff line number Diff line
@@ -18,6 +18,8 @@


#include <mach/map.h>
#include <mach/map.h>


#include <plat/cpu.h>

#include "smc.h"
#include "smc.h"


static int exynos_do_idle(void)
static int exynos_do_idle(void)
@@ -28,13 +30,24 @@ static int exynos_do_idle(void)


static int exynos_cpu_boot(int cpu)
static int exynos_cpu_boot(int cpu)
{
{
	/*
	 * The second parameter of SMC_CMD_CPU1BOOT command means CPU id.
	 * But, Exynos4212 has only one secondary CPU so second parameter
	 * isn't used for informing secure firmware about CPU id.
	 */
	if (soc_is_exynos4212())
		cpu = 0;

	exynos_smc(SMC_CMD_CPU1BOOT, cpu, 0, 0);
	exynos_smc(SMC_CMD_CPU1BOOT, cpu, 0, 0);
	return 0;
	return 0;
}
}


static int exynos_set_cpu_boot_addr(int cpu, unsigned long boot_addr)
static int exynos_set_cpu_boot_addr(int cpu, unsigned long boot_addr)
{
{
	void __iomem *boot_reg = S5P_VA_SYSRAM_NS + 0x1c + 4*cpu;
	void __iomem *boot_reg = S5P_VA_SYSRAM_NS + 0x1c;

	if (!soc_is_exynos4212())
		boot_reg += 4*cpu;


	__raw_writel(boot_addr, boot_reg);
	__raw_writel(boot_addr, boot_reg);
	return 0;
	return 0;