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

config UART_MCUX_4
	def_bool y if BLUETOOTH_UART

endif # UART_MCUX

config BLUETOOTH_UART_ON_DEV_NAME
	default "UART_4" if BLUETOOTH_UART

config PINMUX
	def_bool y

if PINMUX_MCUX

config PINMUX_MCUX_PORTA
	def_bool y if MAX30101

config PINMUX_MCUX_PORTB
	def_bool y if UART_MCUX_0

config PINMUX_MCUX_PORTC
	def_bool y

config PINMUX_MCUX_PORTD
	def_bool y

config PINMUX_MCUX_PORTE
	def_bool y if UART_MCUX_4

endif # PINMUX_MCUX

if GPIO_MCUX

config GPIO_MCUX_PORTA
	def_bool y if MAX30101

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 y

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_1_NAME

config FXOS8700_I2C_ADDRESS
	default 0x1e

config FXOS8700_GPIO_NAME
	default GPIO_MCUX_PORTD_NAME

config FXOS8700_GPIO_PIN
	default 13

endif # FXOS8700

if FXAS21002

config FXAS21002_I2C_NAME
	default I2C_1_NAME

config FXAS21002_I2C_ADDRESS
	default 0x20

config FXAS21002_GPIO_NAME
	default GPIO_MCUX_PORTC_NAME

config FXAS21002_GPIO_PIN
	default 18

endif # FXAS21002

if MAX30101

config MAX30101_I2C_NAME
	default I2C_0_NAME

endif # MAX30101

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 ETHERNET

config ETH_MCUX_0
	def_bool y

endif # ETHERNET

endif # BOARD_HEXIWEAR_K64
