# FRDM-K64F board

# Copyright (c) 2016, Freescale Semiconductor, Inc.
# SPDX-License-Identifier: Apache-2.0

if BOARD_FRDM_K64F

config BOARD
	default "frdm_k64f"

config OSC_XTAL0_FREQ
	default 50000000

config MCG_PRDIV0
	default 0x13

config MCG_VDIV0
	default 0x18

config MCG_FCRDIV
	default 1

if UART_MCUX

config UART_MCUX_0
	default y if UART_CONSOLE

config UART_MCUX_3
	default y if BT_UART

endif # UART_MCUX

if PINMUX_MCUX

config PINMUX_MCUX_PORTA
	default y

config PINMUX_MCUX_PORTB
	default y

config PINMUX_MCUX_PORTC
	default y

config PINMUX_MCUX_PORTD
	default y if SPI_0 || UART_MCUX_2

config PINMUX_MCUX_PORTE
	default y

endif # PINMUX_MCUX

if GPIO_MCUX

config GPIO_MCUX_PORTA
	default y

config GPIO_MCUX_PORTB
	default y

config GPIO_MCUX_PORTC
	default y

config GPIO_MCUX_PORTD
	default y

config GPIO_MCUX_PORTE
	default y

endif # GPIO_MCUX

if I2C

config I2C_0
	default y

endif # I2C

if ADC

config ADC_1
	default y

endif # ADC

if PWM_MCUX_FTM

config PWM_3
	default y

endif # PWM_MCUX_FTM

if SPI

config SPI_0
	default y

endif # SPI

if NETWORKING

config NET_L2_ETHERNET
	default y if !MODEM

config ETH_MCUX_0
	default y if NET_L2_ETHERNET

endif # NETWORKING

if CAN

config CAN_0
	default y

endif # CAN

endif # BOARD_FRDM_K64F
