# 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 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
	depends on !RTOS_TIMER

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
