# Hexiwear K64 board

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

if BOARD_HEXIWEAR_K64

config BOARD
	default "hexiwear_k64"

config OSC_XTAL0_FREQ
	default 12000000

config MCG_PRDIV0
	default 0x02

config MCG_VDIV0
	default 0x06

config MCG_FCRDIV
	default 1

if UART_MCUX

config UART_MCUX_0
	default y if UART_CONSOLE

config UART_MCUX_4
	default y if BT_UART

endif # UART_MCUX

if PINMUX_MCUX

config PINMUX_MCUX_PORTA
	default y if MAX30101

config PINMUX_MCUX_PORTB
	default y if UART_MCUX_0

config PINMUX_MCUX_PORTC
	default y

config PINMUX_MCUX_PORTD
	default y

config PINMUX_MCUX_PORTE
	default y if UART_MCUX_4

endif # PINMUX_MCUX

if GPIO_MCUX

config GPIO_MCUX_PORTA
	default y if MAX30101

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

config I2C_1
	default y

endif # I2C

if ADC

config ADC_0
	default y

config BATTERY_SENSE
	default y

endif # ADC

if PWM_MCUX_FTM

config PWM_3
	default y

endif # PWM_MCUX_FTM

if SPI

config SPI_0
	default y

config SPI_1
	default n

config SPI_2
	default n

endif # SPI

if NET_L2_ETHERNET

config ETH_MCUX_0
	default y

endif # NET_L2_ETHERNET

endif # BOARD_HEXIWEAR_K64
