# 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
	default "mk64f12"

if ADC

config ADC_MCUX_ADC16
	default y

endif # ADC

if CAN

config CAN_MCUX_FLEXCAN
	default y

endif # CAN

if CLOCK_CONTROL

config CLOCK_CONTROL_MCUX_SIM
	default y

config CLOCK_CONTROL_MCUX_MCG
	default y

endif # CLOCK_CONTROL

if PINMUX

config PINMUX_MCUX
	default y

endif # PINMUX

config GPIO
	default y

if GPIO

config GPIO_MCUX
	default y

endif # GPIO

if I2C

config I2C_MCUX
	default y

endif # I2C

if PWM

config PWM_MCUX_FTM
	default y

endif # PWM

config SPI
	default n

if SPI

config SPI_MCUX_DSPI
	default y

endif # SPI

if NET_L2_ETHERNET

config ETH_MCUX
	default y

endif # NET_L2_ETHERNET

if ENTROPY_GENERATOR

config ENTROPY_MCUX_RNGA
	default y

endif # ENTROPY_GENERATOR

if FLASH

config SOC_FLASH_MCUX
	default y

endif # FLASH

if SERIAL

config UART_MCUX
	default y

endif # SERIAL

if USB

config USB_KINETIS
	default y

endif # USB

if WATCHDOG

config WDT_MCUX_WDOG
	default y

endif # WATCHDOG

if COUNTER

config COUNTER_MCUX_RTC
	default y

endif # COUNTER

endif # SOC_MK64F12
