# 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 CLOCK_CONTROL_MCHP_XEC
	default y

config MCHP_ECIA_XEC
	default y
	help
	  Enable support for Microchip XEC ECIA driver

endif # SOC_SERIES_MEC172X
