# Apollo Lake SoC configuration options

# Copyright (c) 2018-2019 Intel Corporation
# Copyright (c) 2014-2015 Wind River Systems, Inc.
# SPDX-License-Identifier: Apache-2.0

if SOC_APOLLO_LAKE

config SOC
	default "apollo_lake"

config SYS_CLOCK_HW_CYCLES_PER_SEC
	default 19200000

if APIC_TIMER

config APIC_TIMER_IRQ
	default 24

config APIC_TIMER_TSC
	default y

if APIC_TIMER_TSC

config APIC_TIMER_TSC_M
	default 3

config APIC_TIMER_TSC_N
	default 249

endif # APIC_TIMER_TSC

endif # APIC_TIMER

config CLFLUSH_DETECT
	default y if CACHE_FLUSHING

if DYNAMIC_INTERRUPTS

config X86_DYNAMIC_IRQ_STUBS
	default 16

endif # DYNAMIC_INTERRUPTS

if I2C

config I2C_DW
	default y

endif # I2C

if GPIO

config GPIO_INTEL_APL
	default y

endif # GPIO

endif # SOC_APOLLO_LAKE
