/* SPDX-License-Identifier: BSD-2-Clause */
/*
 * Copyright 2017-2019 NXP
 *
 * Peng Fan  <peng.fan@nxp.com>
 */

/*
 * Entry points for the A7 init.
 * It is assume no stack is available when these routines are called.
 * It is assume each routine is called with return address in LR
 * and with ARM registers R0, R1, R2, R3 being scratchable.
 */

#include <arm.h>
#include <arm32.h>
#include <arm32_macros.S>
#include <asm.S>
#include <kernel/unwind.h>
#include <platform_config.h>

.section .text
.balign 4
.code 32

/*
 * Cortex A7 configuration early configuration
 *
 * Use scratables registers R0-R3.
 * No stack usage.
 * LR store return address.
 * Trap CPU in case of error.
 */
FUNC plat_cpu_reset_early , :
UNWIND(	.fnstart)

	/*
	 * DDI: Disable dual issue [bit28=0]
	 * DDVM: Disable Distributed Virtual Memory transactions [bit15=0]
	 * L1PCTL: L1 Data prefetch control [bit14:13=2b11]
	 * L1RADIS: L1 Data Cache read-allocate mode disable [bit12=0]
	 * L2RADIS: L2 Data Cache read-allocate mode disable [bit11=0]
	 * DODMBS: Disable optimized data memory barrier behavior [bit10=0]
	 * SMP: Enables coherent requests to the processor [bit6=0]
	 */
	mov_imm r0, 0x00006040
	write_actlr r0

	mov_imm r0, 0x00040C00
	write_nsacr r0

	bx	lr
UNWIND(	.fnend)
END_FUNC plat_cpu_reset_early

FUNC get_core_pos_mpidr , :
UNWIND(	.fnstart)
	/* Drop ClusterId. There is no SoCs with more than 4 A7 Cores. */
	and	r0, r0, #MPIDR_CPU_MASK
	bx	lr
UNWIND(	.fnend)
END_FUNC get_core_pos_mpidr
