# Copyright (c) 2014 Wind River Systems, Inc.
# Copyright (c) 2018 Synopsys, Inc. All rights reserved.
# SPDX-License-Identifier: Apache-2.0

if SOC_ARC_IOT

config SOC
	default "snps_arc_iot"

config CPU_EM4_FPUS
	default y

config NUM_IRQ_PRIO_LEVELS
	# This processor supports 4 priority levels:
	# 0 for Fast Interrupts (FIRQs) and 1-3 for Regular Interrupts (IRQs).
	default 4

config ARC_MPU_VER
	default 2

config NUM_IRQS
	# must be > the highest interrupt number used
	default 95

config RGF_NUM_BANKS
	default 2

config SYS_CLOCK_HW_CYCLES_PER_SEC
	default 144000000

config HARVARD
	default y

config ARC_FIRQ
	default y

if SERIAL

config UART_NS16550
	default y

endif # SERIAL

if UART_CONSOLE

config UART_NS16550_PORT_0
	default y

endif # UART_CONSOLE

endif # ARC_IOT
