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

config SOC_FAMILY_INTEL_ADSP
	select WINSTREAM
	select ARCH_SUPPORTS_COREDUMP
	bool

if SOC_FAMILY_INTEL_ADSP

config SOC_FAMILY
	string
	default "intel_adsp"

config CAVS_IPC
	bool
	default y if !SOF
	help
	  Driver for the host IPC interrupt delivery mechanism.
	  Currently SOF has its own driver for this hardware.

config INTEL_ADSP_CAVS
	bool
	help
	  Indicates a CAVS SoC

config HP_SRAM_RESERVE
	int "Bytes to reserve at start of HP-SRAM"
	default 65536
	help
	  Bytes to reserve at the start of HP-SRAM.  Zephyr will not
	  place any symbols here, though the host windows have
	  addresses here.  The SOF application also makes direct use
	  of this region, so be very careful changing this value.

config ADSP_WIN0_OFFSET
	int "Byte offset of host window zero"
	default 16384
	help
	  Offset of the first host shared memory window (used for the
	  "firmware status register" at boot) within the reserved
	  region at the start of HP-SRAM.

config ADSP_WIN3_OFFSET
	int "Byte offset of host window three"
	default 40960
	help
	  Offset of the fourth host shared memory window (used for
	  printk/log output) within the reserved region at the start
	  of HP-SRAM.

config IMR_MANIFEST_ADDR
	hex "Address of boot manifest struct within IMR memory"
	default 0xb0032000
	help
	  Address where the rimage manifest struct is placed upon
	  boot.  Must be synchronized between Zephyr's linkage, the
	  hardware, ROM and rimage configuration.  Don't touch except
	  with great care.

config IMR_DATA_ADDR
	hex "Address of bootloader .data section within IMR memory"
	default 0xb0039000
	help
	  Location to place .data contents in IMR memory during
	  bootloader linkage.

config ADSP_TRACE_SIMCALL
	bool "Emit SIMCALL output in addition to window tracing"
	help
	  When true, the trace_out layer will also use a SIMCALL
	  instruction to emit the passed data to the standard output
	  of an enclosing simulator process.  All window contents will
	  remain identical.

# Select SoC Part No. and configuration options
source "soc/xtensa/intel_adsp/*/Kconfig.soc"

endif # SOC_FAMILY_INTEL_ADSP
