# Nordic Semiconductor nRF5340 Application MCU

# Copyright (c) 2019 Nordic Semiconductor ASA
# SPDX-License-Identifier: Apache-2.0

if SOC_NRF5340_CPUAPP_QKAA

config SOC
	default "nRF5340_CPUAPP_QKAA"

config NUM_IRQS
	default 69

config IEEE802154_NRF5
	default IEEE802154

config HEAP_MEM_POOL_SIZE
	default 4096 if NRF_802154_SER_HOST

if IPC_SERVICE_BACKEND_ICMSG_ME_INITIATOR || IPC_SERVICE_BACKEND_ICMSG_ME_FOLLOWER

config IPC_SERVICE_BACKEND_ICMSG_ME_SHMEM_RESET
	default y

endif # IPC_SERVICE_BACKEND_ICMSG_ME_INITIATOR || IPC_SERVICE_BACKEND_ICMSG_ME_FOLLOWER

if IPC_SERVICE_BACKEND_RPMSG

config IPC_SERVICE_BACKEND_RPMSG_SHMEM_RESET
	default y

endif # IPC_SERVICE_BACKEND_RPMSG

endif # SOC_NRF5340_CPUAPP_QKAA
