Message ID | 1398388572-30239-3-git-send-email-cw00.choi@samsung.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Hi, On 25.04.2014 03:16, Chanwoo Choi wrote: > From: Kyungmin Park <kyungmin.park@samsung.com> > > This patch fix the offset of CPU boot address and change parameter of smc call > of SMC_CMD_CPU1BOOT command for Exynos4212. > > Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com> > Signed-off-by: Chanwoo Choi <cw00.choi@samsung.com> > --- > arch/arm/mach-exynos/firmware.c | 15 ++++++++++++++- > 1 file changed, 14 insertions(+), 1 deletion(-) > > diff --git a/arch/arm/mach-exynos/firmware.c b/arch/arm/mach-exynos/firmware.c > index 932129e..aa01c42 100644 > --- a/arch/arm/mach-exynos/firmware.c > +++ b/arch/arm/mach-exynos/firmware.c > @@ -18,6 +18,8 @@ > > #include <mach/map.h> > > +#include <plat/cpu.h> > + > #include "smc.h" > > static int exynos_do_idle(void) > @@ -28,13 +30,24 @@ static int exynos_do_idle(void) > > 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); > return 0; > } > > 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); > return 0; > This patch should be applied independently of Exynos3250 support. Kukjin, what do you think? Anyway, Reviewed-by: Tomasz Figa <t.figa@samsung.com> Best regards, Tomasz
Tomasz Figa wrote: > > Hi, > Hi, > On 25.04.2014 03:16, Chanwoo Choi wrote: > > From: Kyungmin Park <kyungmin.park@samsung.com> > > > > This patch fix the offset of CPU boot address and change parameter of > smc call > > of SMC_CMD_CPU1BOOT command for Exynos4212. > > > > Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com> > > Signed-off-by: Chanwoo Choi <cw00.choi@samsung.com> > > --- > > arch/arm/mach-exynos/firmware.c | 15 ++++++++++++++- > > 1 file changed, 14 insertions(+), 1 deletion(-) > > > > diff --git a/arch/arm/mach-exynos/firmware.c b/arch/arm/mach- > exynos/firmware.c > > index 932129e..aa01c42 100644 > > --- a/arch/arm/mach-exynos/firmware.c > > +++ b/arch/arm/mach-exynos/firmware.c > > @@ -18,6 +18,8 @@ > > > > #include <mach/map.h> > > > > +#include <plat/cpu.h> > > + > > #include "smc.h" > > > > static int exynos_do_idle(void) > > @@ -28,13 +30,24 @@ static int exynos_do_idle(void) > > > > 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); > > return 0; > > } > > > > 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); > > return 0; > > > > This patch should be applied independently of Exynos3250 support. > Kukjin, what do you think? > Yes, this should be separated. I will pick this into fixes. > Anyway, > > Reviewed-by: Tomasz Figa <t.figa@samsung.com> > Thanks, Kukjin
diff --git a/arch/arm/mach-exynos/firmware.c b/arch/arm/mach-exynos/firmware.c index 932129e..aa01c42 100644 --- a/arch/arm/mach-exynos/firmware.c +++ b/arch/arm/mach-exynos/firmware.c @@ -18,6 +18,8 @@ #include <mach/map.h> +#include <plat/cpu.h> + #include "smc.h" static int exynos_do_idle(void) @@ -28,13 +30,24 @@ static int exynos_do_idle(void) 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); return 0; } 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); return 0;