# Kconfig - Kinetis KW2xD SoC configuration options
#
# Copyright (c) 2017, Phytec Messtechnik GmbH
#
# SPDX-License-Identifier: Apache-2.0
#

if SOC_MKW22D5 || SOC_MKW24D5

if SOC_MKW22D5

config SOC
	string
	default mkw22d5

endif # SOC_MKW22D5

if SOC_MKW24D5

config SOC
	string
	default mkw24d5

endif # SOC_MKW24D5

config NUM_IRQS
	int
	default 65

if ADC

config ADC_MCUX_ADC16
	def_bool y

endif # ADC

config CLOCK_CONTROL
	def_bool y

if CLOCK_CONTROL

config CLOCK_CONTROL_MCUX_SIM
	def_bool y

endif # CLOCK_CONTROL

if PINMUX

config PINMUX_MCUX
	def_bool y

endif # PINMUX

if GPIO

config GPIO_MCUX
	def_bool y

endif # GPIO

if I2C

config I2C_MCUX
	def_bool y

endif # I2C

config SPI
	def_bool y

if PWM

config PWM_MCUX_FTM
	def_bool y

endif # PWM

if SPI

config SPI_MCUX_DSPI
	def_bool y

endif # SPI

if RANDOM_GENERATOR

config RANDOM_MCUX_RNGA
	def_bool y

endif # RANDOM_GENERATOR

if FLASH

config SOC_FLASH_MCUX
	def_bool y

endif # FLASH

if SERIAL

config UART_MCUX
	def_bool y

endif # SERIAL

endif # SOC_MKW2xD512
