# Kinetis KE1xF series configuration options

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

if SOC_SERIES_KINETIS_KE1XF

config SOC_SERIES
	default "ke1xf"

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

config COUNTER_MCUX_RTC
	default y
	depends on COUNTER

config PWM_MCUX_FTM
	default y
	depends on PWM

config PINMUX_MCUX
	default y
	depends on PINMUX

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

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

endif # SOC_SERIES_KINETIS_KE1XF
