# Kconfig - 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
	def_bool y if UART_CONSOLE

config UART_MCUX_3
	def_bool y if BLUETOOTH_UART

endif # UART_MCUX

config BLUETOOTH_UART_ON_DEV_NAME
	default "UART_3" if BLUETOOTH_UART

config PINMUX
	def_bool y

if PINMUX_MCUX

config PINMUX_MCUX_PORTA
	def_bool y

config PINMUX_MCUX_PORTB
	def_bool y

config PINMUX_MCUX_PORTC
	def_bool y

config PINMUX_MCUX_PORTD
	def_bool y if SPI_0

config PINMUX_MCUX_PORTE
	def_bool y

endif # PINMUX_MCUX

if GPIO_MCUX

config GPIO_MCUX_PORTA
	def_bool y

config GPIO_MCUX_PORTB
	def_bool y

config GPIO_MCUX_PORTC
	def_bool y

config GPIO_MCUX_PORTD
	def_bool y

config GPIO_MCUX_PORTE
	def_bool y

endif # GPIO_MCUX

if I2C

config I2C_0
	def_bool y

if I2C_0

config I2C_0_DEFAULT_CFG
	default 0x12

config I2C_0_IRQ_PRI
	default 0

endif # I2C_0

config I2C_1
	def_bool n

if I2C_1

config I2C_1_DEFAULT_CFG
	default 0x12

config I2C_1_IRQ_PRI
	default 0

endif # I2C_1

endif # I2C

if FXOS8700

config FXOS8700_I2C_NAME
	default I2C_0_NAME

config FXOS8700_I2C_ADDRESS
	default 0x1d

config FXOS8700_GPIO_NAME
	default GPIO_MCUX_PORTC_NAME

config FXOS8700_GPIO_PIN
	default 13

endif # FXOS8700

if PWM_K64_FTM

config PWM_K64_FTM_0
	def_bool y

endif # PWM_K64_FTM

if SPI

config SPI_0
	def_bool y

config SPI_0_IRQ_PRI
	default 3

config SPI_1
	def_bool n

config SPI_1_IRQ_PRI
	default 3

config SPI_2
	def_bool n

config SPI_2_IRQ_PRI
	default 3

endif # SPI

if NET_L2_ETHERNET

config ETH_MCUX_0
	def_bool y

endif # NET_L2_ETHERNET

endif # BOARD_FRDM_K64F
