mirror of
https://github.com/ARM-software/arm-trusted-firmware.git
synced 2025-08-18 21:11:11 +02:00
There are a number or ARMv7 Rockchip SoCs that are very similar in their bringup routines to the existing arm64 SoCs, so there is quite a high commonality possible here. Things like virtualization also need psci and hyp-mode and instead of trying to cram this into bootloaders like u-boot, barebox or coreboot (all used in the field), re-use the existing infrastructure in TF-A for this (both Rockchip plat support and armv7 support in general). So add core support for aarch32 Rockchip SoCs, with actual soc support following in a separate patch. Signed-off-by: Heiko Stuebner <heiko@sntech.de> Change-Id: I298453985b5d8434934fc0c742fda719e994ba0b
57 lines
1003 B
ArmAsm
57 lines
1003 B
ArmAsm
/*
|
|
* Copyright (c) 2019, ARM Limited and Contributors. All rights reserved.
|
|
*
|
|
* SPDX-License-Identifier: BSD-3-Clause
|
|
*/
|
|
|
|
#include <arch.h>
|
|
#include <asm_macros.S>
|
|
#include <platform_def.h>
|
|
|
|
.globl pmu_cpuson_entrypoint
|
|
.macro pmusram_entry_func _name
|
|
.section .pmusram.entry, "ax"
|
|
.type \_name, %function
|
|
.cfi_startproc
|
|
\_name:
|
|
.endm
|
|
|
|
pmusram_entry_func pmu_cpuson_entrypoint
|
|
|
|
#if PSRAM_CHECK_WAKEUP_CPU
|
|
check_wake_cpus:
|
|
ldcopr r0, MPIDR
|
|
and r1, r0, #MPIDR_CPU_MASK
|
|
#ifdef PLAT_RK_MPIDR_CLUSTER_MASK
|
|
and r0, r0, #PLAT_RK_MPIDR_CLUSTER_MASK
|
|
#else
|
|
and r0, r0, #MPIDR_CLUSTER_MASK
|
|
#endif
|
|
orr r0, r0, r1
|
|
|
|
/* primary_cpu */
|
|
ldr r1, boot_mpidr
|
|
cmp r0, r1
|
|
beq sys_wakeup
|
|
|
|
/*
|
|
* If the core is not the primary cpu,
|
|
* force the core into wfe.
|
|
*/
|
|
wfe_loop:
|
|
wfe
|
|
b wfe_loop
|
|
sys_wakeup:
|
|
#endif
|
|
|
|
#if PSRAM_DO_DDR_RESUME
|
|
ddr_resume:
|
|
ldr r2, =__bl32_sram_stack_end
|
|
mov sp, r2
|
|
bl dmc_resume
|
|
#endif
|
|
bl sram_restore
|
|
sys_resume:
|
|
bl sp_min_warm_entrypoint
|
|
endfunc pmu_cpuson_entrypoint
|