# 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

if !HAS_DTS

config FLASH_SIZE
	default 1024

config SRAM_SIZE
	default 192

endif # !HAS_DTS

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 n

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 n

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