# ATOM SoC configuration options

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

if SOC_ATOM

config SOC
	default "atom"

config SYS_CLOCK_HW_CYCLES_PER_SEC
	default 150000000 if LOAPIC_TIMER
	default 25000000  if HPET_TIMER

config CLFLUSH_DETECT
	default y if CACHE_FLUSHING

if UART_NS16550

config UART_NS16550_PORT_0
	default y

if UART_NS16550_PORT_0

config UART_NS16550_PORT_0_OPTIONS
	default 0

endif # UART_NS16550_PORT_0

config UART_NS16550_PORT_1
	default y

if UART_NS16550_PORT_1

config UART_NS16550_PORT_1_OPTIONS
	default 0

endif # UART_NS16550_PORT_1

endif # UART_NS16550

if BT_UART

if UART_PIPE

config UART_PIPE_ON_DEV_NAME
	default "UART_1"

endif

config BT_MONITOR_ON_DEV_NAME
	default "UART_1" if BT_DEBUG_MONITOR
endif

endif
