# Microchip MEC MCU series configuration options

# Copyright (c) 2021 Microchip Technology Inc.
# SPDX-License-Identifier: Apache-2.0

if SOC_SERIES_MEC172X

config SOC_SERIES
	default "mec172x"

config NUM_IRQS
	# must be >= the highest interrupt number used
	# - include the UART interrupts
	# All NVIC external sources.
	default 181

source "soc/arm/microchip_mec/mec172x/Kconfig.defconfig.mec172x*"

if RTOS_TIMER

config MCHP_XEC_RTOS_TIMER
	default y

config SOC_HAS_TIMING_FUNCTIONS
	default y if !CORTEX_M_DWT

config ARCH_HAS_CUSTOM_BUSY_WAIT
	default y

endif # RTOS_TIMER

config CORTEX_M_SYSTICK
	default y
	depends on !RTOS_TIMER

config MCHP_ECIA_XEC
	default y

config PS2_XEC
	default y
	depends on PS2

config PM
	default y if SYS_CLOCK_EXISTS

config PM_DEVICE
	default n

endif # SOC_SERIES_MEC172X
