ARM: shmobile: Convert file to use cntvoff

Now that a common function is available for CNTVOFF's
initialization, let's convert shmobile-apmu code to use
this function.

Signed-off-by: Mylène Josserand <mylene.josserand@bootlin.com>
Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
Tested-by: Geert Uytterhoeven <geert+renesas@glider.be>
Acked-by: Simon Horman <horms+renesas@verge.net.au>
Signed-off-by: Maxime Ripard <maxime.ripard@bootlin.com>
This commit is contained in:
Mylène Josserand 2018-05-04 21:05:45 +02:00 committed by Maxime Ripard
parent 46ebbfcb9f
commit cad160ed0a
3 changed files with 3 additions and 23 deletions

View File

@ -2,7 +2,6 @@
#ifndef __ARCH_MACH_COMMON_H #ifndef __ARCH_MACH_COMMON_H
#define __ARCH_MACH_COMMON_H #define __ARCH_MACH_COMMON_H
extern void shmobile_init_cntvoff(void);
extern void shmobile_init_delay(void); extern void shmobile_init_delay(void);
extern void shmobile_boot_vector(void); extern void shmobile_boot_vector(void);
extern unsigned long shmobile_boot_fn; extern unsigned long shmobile_boot_fn;

View File

@ -11,29 +11,9 @@
#include <linux/linkage.h> #include <linux/linkage.h>
#include <asm/assembler.h> #include <asm/assembler.h>
ENTRY(shmobile_init_cntvoff)
/*
* CNTVOFF has to be initialized either from non-secure Hypervisor
* mode or secure Monitor mode with SCR.NS==1. If TrustZone is enabled
* then it should be handled by the secure code
*/
cps #MON_MODE
mrc p15, 0, r1, c1, c1, 0 /* Get Secure Config */
orr r0, r1, #1
mcr p15, 0, r0, c1, c1, 0 /* Set Non Secure bit */
instr_sync
mov r0, #0
mcrr p15, 4, r0, r0, c14 /* CNTVOFF = 0 */
instr_sync
mcr p15, 0, r1, c1, c1, 0 /* Set Secure bit */
instr_sync
cps #SVC_MODE
ret lr
ENDPROC(shmobile_init_cntvoff)
#ifdef CONFIG_SMP #ifdef CONFIG_SMP
ENTRY(shmobile_boot_apmu) ENTRY(shmobile_boot_apmu)
bl shmobile_init_cntvoff bl secure_cntvoff_init
b secondary_startup b secondary_startup
ENDPROC(shmobile_boot_apmu) ENDPROC(shmobile_boot_apmu)
#endif #endif

View File

@ -26,6 +26,7 @@
#include <linux/of_fdt.h> #include <linux/of_fdt.h>
#include <linux/of_platform.h> #include <linux/of_platform.h>
#include <asm/mach/arch.h> #include <asm/mach/arch.h>
#include <asm/secure_cntvoff.h>
#include "common.h" #include "common.h"
#include "rcar-gen2.h" #include "rcar-gen2.h"
@ -70,7 +71,7 @@ void __init rcar_gen2_timer_init(void)
void __iomem *base; void __iomem *base;
u32 freq; u32 freq;
shmobile_init_cntvoff(); secure_cntvoff_init();
if (of_machine_is_compatible("renesas,r8a7745") || if (of_machine_is_compatible("renesas,r8a7745") ||
of_machine_is_compatible("renesas,r8a7792") || of_machine_is_compatible("renesas,r8a7792") ||