# Copyright 2025 Arm Limited and/or its affiliates <open-source-office@arm.com>
# SPDX-License-Identifier: Apache-2.0

config SOC_SERIES_MPS4
	select ARM
	select GPIO_MMIO32 if GPIO

config SOC_MPS4_CORSTONE315
	select CPU_CORTEX_M85
	select CPU_HAS_ARM_SAU
	select CPU_HAS_ARM_MPU
	select CPU_HAS_FPU
	select ARMV8_M_DSP
	select ARMV8_1_M_MVEI
	select ARMV8_1_M_MVEF
	select ARMV8_1_M_PMU
	select ARM_MPU_PXN if ARM_MPU

config SOC_MPS4_CORSTONE320
	select CPU_CORTEX_M85
	select CPU_HAS_ARM_SAU
	select CPU_HAS_ARM_MPU
	select CPU_HAS_FPU
	select ARMV8_M_DSP
	select ARMV8_1_M_MVEI
	select ARMV8_1_M_MVEF
	select ARMV8_1_M_PMU
	select ARM_MPU_PXN if ARM_MPU

config ARMV8_1_M_PMU_EVENTCNT
	int
	default 8 if SOC_MPS4_CORSTONE315
	default 8 if SOC_MPS4_CORSTONE320
