Browse Source

feat(plat/arm/sgi): add CPU specific handler for Neoverse V1

The 'CORE_PWRDN_EN' bit of 'CPUPWRCTLR_EL1' register requires an
explicit write to clear it for hotplug and idle to function correctly.
So add Neoverse V1 CPU specific handler in platform reset handler to
clear the CORE_PWRDN_EN bit.

Signed-off-by: shriram.k <shriram.k@arm.com>
Change-Id: I56084c42a56c401503a751cb518238c83cfca8ac
pull/1981/head
shriram.k 3 years ago
committed by Shriram K
parent
commit
cbee43ebd6
  1. 9
      plat/arm/css/sgi/aarch64/sgi_helper.S

9
plat/arm/css/sgi/aarch64/sgi_helper.S

@ -9,6 +9,7 @@
#include <platform_def.h>
#include <cortex_a75.h>
#include <neoverse_n1.h>
#include <neoverse_v1.h>
#include <cpu_macros.S>
.globl plat_arm_calc_core_pos
@ -66,6 +67,7 @@ endfunc plat_arm_calc_core_pos
func plat_reset_handler
jump_if_cpu_midr CORTEX_A75_MIDR, A75
jump_if_cpu_midr NEOVERSE_N1_MIDR, N1
jump_if_cpu_midr NEOVERSE_V1_MIDR, V1
ret
/* -----------------------------------------------------
@ -85,4 +87,11 @@ N1:
msr NEOVERSE_N1_CPUPWRCTLR_EL1, x0
isb
ret
V1:
mrs x0, NEOVERSE_V1_CPUPWRCTLR_EL1
bic x0, x0, #NEOVERSE_V1_CPUPWRCTLR_EL1_CORE_PWRDN_BIT
msr NEOVERSE_V1_CPUPWRCTLR_EL1, x0
isb
ret
endfunc plat_reset_handler

Loading…
Cancel
Save