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

config ADC_MCUX_ADC16
	default y
	depends on ADC

config DAC_MCUX_DAC
	default y
	depends on DAC

config CAN_MCUX_FLEXCAN
	default y
	depends on CAN

if CLOCK_CONTROL

config CLOCK_CONTROL_MCUX_SIM
	default y

config CLOCK_CONTROL_MCUX_MCG
	default y

endif # CLOCK_CONTROL

config PINMUX_MCUX
	default y
	depends on PINMUX

config GPIO
	default y

config GPIO_MCUX
	default y
	depends on GPIO

config I2C_MCUX
	default y
	depends on I2C

config PWM_MCUX_FTM
	default y
	depends on PWM

config SPI
	default n

config SPI_MCUX_DSPI
	default y
	depends on SPI

config ETH_MCUX
	default y
	depends on NET_L2_ETHERNET

config ENTROPY_MCUX_RNGA
	default y
	depends on ENTROPY_GENERATOR

config SOC_FLASH_MCUX
	default y
	depends on FLASH

config UART_MCUX
	default y
	depends on SERIAL

config USB_KINETIS
	default y
	depends on USB_DEVICE_DRIVER

config WDT_MCUX_WDOG
	default y
	depends on WATCHDOG

config COUNTER_MCUX_RTC
	default y
	depends on COUNTER

endif # SOC_MK64F12
