# Copyright (c) 2014-2015 Wind River Systems, Inc.
# Copyright (c) 2016 Cadence Design Systems, Inc.
# Copyright (c) 2019 Intel Corp.
# SPDX-License-Identifier: Apache-2.0

DT_COMPAT_ARM_V6M_SYSTICK := arm,armv6m-systick
DT_COMPAT_ARM_V7M_SYSTICK := arm,armv7m-systick
DT_COMPAT_ARM_V8M_SYSTICK := arm,armv8m-systick
DT_COMPAT_ARM_V8_1M_SYSTICK := arm,armv8.1m-systick

config CORTEX_M_SYSTICK
	bool "Cortex-M SYSTICK timer"
	depends on CPU_CORTEX_M_HAS_SYSTICK
	default $(dt_compat_enabled,$(DT_COMPAT_ARM_V6M_SYSTICK)) || \
		$(dt_compat_enabled,$(DT_COMPAT_ARM_V7M_SYSTICK)) || \
		$(dt_compat_enabled,$(DT_COMPAT_ARM_V8M_SYSTICK)) || \
		$(dt_compat_enabled,$(DT_COMPAT_ARM_V8_1M_SYSTICK))
	select TICKLESS_CAPABLE
	select SYSTEM_TIMER_HAS_DISABLE_SUPPORT
	select CORTEX_M_SYSTICK_INSTALL_ISR
	help
	  This module implements a kernel device driver for the Cortex-M processor
	  SYSTICK timer and provides the standard "system clock driver" interfaces.

config CORTEX_M_SYSTICK_INSTALL_ISR
	bool
	depends on CPU_CORTEX_M_HAS_SYSTICK
	help
	  This option should be selected by SysTick-based drivers so that the
	  sys_clock_isr() function is installed.
