# Kconfig - 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
	int
	# must be >= the highest interrupt number used
	default 106

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
