# Copyright (c) 2018-2019 Linaro Limited
# SPDX-License-Identifier: Apache-2.0

if BOARD_MPS2_AN521

# MPU-based null-pointer dereferencing detection cannot
# be applied as the (0x0 - 0x400) is unmapped but QEMU
# will still permit bus access.
choice NULL_POINTER_EXCEPTION_DETECTION
	bool
	default NULL_POINTER_EXCEPTION_DETECTION_NONE if QEMU_TARGET
endchoice

config BOARD
	default "mps2_an521_nonsecure" if TRUSTED_EXECUTION_NONSECURE
	default "mps2_an521"

# By default, if we build for a Non-Secure version of the board,
# force building with TF-M as the Secure Execution Environment.
config BUILD_WITH_TFM
	default y if TRUSTED_EXECUTION_NONSECURE


if GPIO

config GPIO_CMSDK_AHB
	default y

endif # GPIO

if SERIAL

config UART_CMSDK_APB
	default y

config UART_INTERRUPT_DRIVEN
	default y

endif # SERIAL

config WDOG_CMSDK_APB
	default y
	depends on WATCHDOG

config I2C_SBCON
	default y
	depends on I2C

if IPM

config IPM_MHU
	default y

endif # IPM

endif
