# Kinetis KE1xF series configuration options

# Copyright (c) 2019-2021 Vestas Wind Systems A/S
# SPDX-License-Identifier: Apache-2.0

if SOC_SERIES_KINETIS_KE1XF

config SOC_SERIES
	default "ke1xf"

config MCUX_LPTMR_TIMER
	default y if PM

config CORTEX_M_SYSTICK
	default n if MCUX_LPTMR_TIMER

config SYS_CLOCK_HW_CYCLES_PER_SEC
	default $(dt_node_int_prop_int,/cpus/cpu@0,clock-frequency) if CORTEX_M_SYSTICK
	default $(dt_node_int_prop_int,/soc/lptmr@40040000,clock-frequency) if MCUX_LPTMR_TIMER

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

config CPU_HAS_CUSTOM_FIXED_SOC_MPU_REGIONS
	default y

config KINETIS_FLASH_CONFIG_FOPT
	default 0x7d
	depends on KINETIS_FLASH_CONFIG

if CLOCK_CONTROL

config CLOCK_CONTROL_MCUX_SCG
	default y

config CLOCK_CONTROL_MCUX_SIM
	default y

config CLOCK_CONTROL_MCUX_PCC
	default y

endif # CLOCK_CONTROL

config WDT_MCUX_WDOG32
	default y
	depends on WATCHDOG

if COUNTER

config COUNTER_MCUX_RTC
	default y

config COUNTER_MCUX_LPTMR
	default y

endif # COUNTER

config PWM_MCUX_FTM
	default y
	depends on PWM

config PWM_MCUX_PWT
	default y
	depends on PWM_CAPTURE

config GPIO
	default y

config GPIO_MCUX
	default y
	depends on GPIO

config SOC_FLASH_MCUX
	default y
	depends on FLASH

config UART_MCUX_LPUART
	default y
	depends on SERIAL

config I2C_MCUX_LPI2C
	default y
	depends on I2C

config SPI_MCUX_LPSPI
	default y
	depends on SPI

config ADC_MCUX_ADC12
	default y
	depends on ADC

config DAC_MCUX_DAC32
	default y
	depends on DAC

config DMA_MCUX_EDMA
	default y
	depends on DMA

source "soc/arm/nxp_kinetis/ke1xf/Kconfig.defconfig.mke*"

endif # SOC_SERIES_KINETIS_KE1XF
