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

if BOARD_INTEL_EHL_CRB || BOARD_INTEL_EHL_CRB_SBL

config BOARD
	default "intel_ehl_crb_sbl" if BOARD_INTEL_EHL_CRB_SBL
	default "intel_ehl_crb"

config BUILD_OUTPUT_STRIPPED
	default y

config MP_MAX_NUM_CPUS
	default 2

if BOARD_INTEL_EHL_CRB_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
config APIC_TIMER_TSC_M
	default 3
config APIC_TIMER_TSC_N
	default 249
endif

endif # BOARD_INTEL_EHL_CRB || BOARD_INTEL_EHL_CRB_SBL
