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


config BUILD_OUTPUT_STRIPPED
	default y

config MP_MAX_NUM_CPUS
	default 2

if BOARD_INTEL_EHL_CRB_ELKHART_LAKE_SBL
config SHELL_BACKEND_SERIAL_INTERRUPT_DRIVEN
	depends on SHELL_BACKEND_SERIAL
	default n
endif

config HEAP_MEM_POOL_ADD_SIZE_ACPI
	default 2097152
	depends on ACPI

# TSC on this board is 1.9 GHz, HPET and APIC are 19.2 MHz
config SYS_CLOCK_HW_CYCLES_PER_SEC
	default 1900000000 if APIC_TSC_DEADLINE_TIMER
	default 1900000000 if APIC_TIMER_TSC
	default 19200000

if APIC_TIMER
config APIC_TIMER_IRQ
	default 24
endif
if APIC_TIMER_TSC
config APIC_TIMER_TSC_M
	default 3
config APIC_TIMER_TSC_N
	default 249
endif

if BOARD_INTEL_EHL_CRB_ELKHART_LAKE
	config HAS_COVERAGE_SUPPORT
		default y
endif
