# Kconfig - Kinetis KL2x SoC configuration options
#
# Copyright (c) 2017, NXP
#
# SPDX-License-Identifier: Apache-2.0
#

if SOC_MKL25Z4

config SOC
	string
	default "mkl25z4"

config NUM_IRQS
	int
	default 32

if ADC

config ADC_MCUX_ADC16
	default y

endif # ADC

if CLOCK_CONTROL

config CLOCK_CONTROL_MCUX_SIM
	default y

endif # CLOCK_CONTROL

if PINMUX

config PINMUX_MCUX
	default y

endif # PINMUX

if GPIO

config GPIO_MCUX
	default y

endif # GPIO

if SERIAL

config UART_MCUX_LPSCI
	default y

endif # SERIAL

if I2C

config I2C_MCUX
	default y

endif # I2C

if FLASH

config SOC_FLASH_MCUX
	default y

endif # FLASH

if USB

config USB_KINETIS
	default y

endif # USB

endif # SOC_MKL25Z
