# Intel CAVS SoC family default configuration options
#
# Copyright (c) 2020 Intel Corporation
# SPDX-License-Identifier: Apache-2.0

if SOC_FAMILY_INTEL_ADSP
source "soc/xtensa/intel_adsp/*/Kconfig.defconfig.series"


config XTENSA_RPO_CACHE
	def_bool y

# console can't handle the amount of data coming from many tests, so introduce
# a delay beween testcases.
if ZTEST
config ZTEST_TEST_DELAY_MS
	default 100
endif

if XTENSA_RPO_CACHE
config XTENSA_CACHED_REGION
	default 5

config XTENSA_UNCACHED_REGION
	default 4

endif # XTENSA_RPO_CACHE

config CONSOLE
	def_bool y

if CONSOLE
config WINSTREAM_CONSOLE
	def_bool y
endif

endif # SOC_FAMILY_INTEL_ADSP
