# Copyright (c) 2021 Arm Limited (or its affiliates). All rights reserved.
# SPDX-License-Identifier: Apache-2.0

config SOC_SERIES_FVP_AEMV8R
	bool
	help
	  Enable support for ARM FVP AEMv8R AArch64 Series

config SOC_FVP_AEMV8R_AARCH64
	bool
	select SOC_SERIES_FVP_AEMV8R
	select SOC_FAMILY_ARM64

config SOC_FVP_AEMV8R_AARCH32
	bool
	select SOC_SERIES_FVP_AEMV8R
	select SOC_FAMILY_ARM

config SOC_FVP_AEMV8R_SIMULATE_CPU_PM
	bool "Simulate CPU Power Management for FVP_BaseR_AEMv8R"
	depends on SOC_FVP_AEMV8R_AARCH64
	help
	  It simulates the cpu power management function for
	  FVP_BaseR_AEMv8R. When zephyr kernel try to bring up secondary
	  core through pm_cpu_on(), it always succeeds because
	  it indeed bring up secondary core successfully.

config SOC_SERIES
	default "fvp_aemv8r" if SOC_SERIES_FVP_AEMV8R

config SOC
	default "fvp_aemv8r_aarch64" if SOC_FVP_AEMV8R_AARCH64
	default "fvp_aemv8r_aarch32" if SOC_FVP_AEMV8R_AARCH32
