# Kconfig - 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 PHYS_LOAD_ADDR
	default 0x00100000

config PHYS_RAM_ADDR
	default 0x00400000

config RAM_SIZE
	default 128 if XIP
	default 192

config ROM_SIZE
	default 72 if XIP

config SYS_CLOCK_HW_CYCLES_PER_SEC
	default 150000000 if LOAPIC_TIMER
	default 25000000  if HPET_TIMER

config CLFLUSH_DETECT
	def_bool y if CACHE_FLUSHING

if UART_NS16550

config UART_NS16550_PCI
	def_bool n

config UART_NS16550_PORT_0
	def_bool y

if UART_NS16550_PORT_0

config UART_NS16550_PORT_0_NAME
	default "UART_0"
config UART_NS16550_PORT_0_IRQ_PRI
	default 3
config UART_NS16550_PORT_0_BAUD_RATE
	default 115200
config UART_NS16550_PORT_0_OPTIONS
	default 0

endif # UART_NS16550_PORT_0

config UART_NS16550_PORT_1
	def_bool y

if UART_NS16550_PORT_1

config UART_NS16550_PORT_1_NAME
	default "UART_1"
config UART_NS16550_PORT_1_IRQ_PRI
	default 3
config UART_NS16550_PORT_1_BAUD_RATE
	default 115200
config UART_NS16550_PORT_1_OPTIONS
	default 0

endif # UART_NS16550_PORT_1

endif # UART_NS16550

if BLUETOOTH_UART

config BLUETOOTH_UART_ON_DEV_NAME
	default "UART_1"

endif

if UART_PIPE

config UART_PIPE_ON_DEV_NAME
	default "UART_1"

endif

config BLUETOOTH_MONITOR_ON_DEV_NAME
	default "UART_1" if BLUETOOTH_DEBUG_MONITOR

endif
