# Kinetis K8x series configuration options

# Copyright (c) 2019 SEAL AG
# SPDX-License-Identifier: Apache-2.0

if SOC_SERIES_KINETIS_K8X

config SOC_SERIES
	default "k8x"

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

config CPU_HAS_CUSTOM_FIXED_SOC_MPU_REGIONS
	default y

if KINETIS_FLASH_CONFIG

config KINETIS_FLASH_CONFIG_FOPT
	default 0x3f

endif # KINETIS_FLASH_CONFIG

if ADC

config ADC_MCUX_ADC16
	default y

endif # ADC

if CLOCK_CONTROL

config CLOCK_CONTROL_MCUX_MCG
	default y

config CLOCK_CONTROL_MCUX_SIM
	default y

endif # CLOCK_CONTROL

if ENTROPY_GENERATOR

config ENTROPY_MCUX_TRNG
	default y

endif # ENTROPY_GENERATOR

if FLASH

config SOC_FLASH_MCUX
	default y

endif # FLASH

config GPIO
	default y

if GPIO

config GPIO_MCUX
	default y

endif # GPIO

if I2C

config I2C_MCUX
	default y

endif # I2C

if PINMUX

config PINMUX_MCUX
	default y

endif # PINMUX

if PWM

config PWM_MCUX_FTM
	default y

endif # PWM

if SERIAL

config UART_MCUX_LPUART
	default y

endif # SERIAL

if SPI

config SPI_MCUX_DSPI
	default y

endif # SPI

if USB

config USB_KINETIS
	default y

endif # USB

if WATCHDOG

config WDT_MCUX_WDOG
	default y

endif # WATCHDOG

source "soc/arm/nxp_kinetis/k8x/Kconfig.defconfig.mk*"

endif # SOC_SERIES_KINETIS_K8X
