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

if SOC_MKW41Z4

config SOC
	string
	default mkw41z4

config NUM_IRQS
	int
	default 32

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 SERIAL

config UART_MCUX_LPUART
	def_bool y

endif # SERIAL

if I2C

config I2C_MCUX
	def_bool y

endif # I2C

if RANDOM_GENERATOR

config RANDOM_MCUX_TRNG
	def_bool y

endif # RANDOM_GENERATOR

if FLASH

config SOC_FLASH_MCUX
	def_bool y

endif # FLASH

if NETWORKING

config NET_L2_IEEE802154
        def_bool y

config IEEE802154_KW41Z
        def_bool y

config NET_APP_IEEE802154_DEV_NAME
        default IEEE802154_KW41Z_DRV_NAME

endif # NETWORKING

endif # SOC_MKW41Z4
