# Kconfig - FSL FRDM K64F platform configuration options

#
# Copyright (c) 2014-2016 Wind River Systems, Inc.
#
# SPDX-License-Identifier: Apache-2.0
#

if SOC_MK64F12

config SOC
	string
	default mk64f12

if PINMUX

config PINMUX_MCUX
	def_bool y

endif # PINMUX

config GPIO
	def_bool y

if GPIO

config GPIO_MCUX
	def_bool y

endif # GPIO

if I2C

config I2C_MCUX
	def_bool y

endif # I2C

if PWM

config PWM_K64_FTM
	def_bool y

endif # PWM

config SPI
	def_bool n

if SPI

config SPI_MCUX
	def_bool y

endif # SPI

if NET_L2_ETHERNET

config ETH_MCUX
	def_bool y

endif # NET_L2_ETHERNET

if RANDOM_GENERATOR

config RANDOM_MCUX
	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_MK64F12
