# Copyright (c) 2020 Intel Corporation
# SPDX-License-Identifier: Apache-2.0

if SOC_INTEL_CAVS_V15

config SOC_TOOLCHAIN_NAME
	string
	default "intel_apl_adsp"

config SOC
	default "intel_apl_adsp"

# For backward compatibility, to be removed
config SOC_SERIES_INTEL_CAVS_V15
	def_bool y

config HP_SRAM_RESERVE
	default 32768

config ADSP_WIN0_OFFSET
	default 24576

config ADSP_WIN3_OFFSET
	default 0

config SMP
	default y

config MP_NUM_CPUS
	default 2

config SCHED_IPI_SUPPORTED
	default y

config XTENSA_TIMER
	default n

config INTEL_ADSP_TIMER
	default y

config SYS_CLOCK_HW_CYCLES_PER_SEC
	default 400000000 if XTENSA_TIMER
	default 19200000 if INTEL_ADSP_TIMER

config SYS_CLOCK_TICKS_PER_SEC
	default 50000

config KERNEL_ENTRY
	default "_MainEntry"

config MULTI_LEVEL_INTERRUPTS
	default y

config 2ND_LEVEL_INTERRUPTS
	default y

config DYNAMIC_INTERRUPTS
	default y

if LOG

config LOG_BACKEND_ADSP
	default y

endif # LOG

endif
