# Kconfig - Hexiwear KW40Z board
#
# Copyright (c) 2017, NXP
#
# SPDX-License-Identifier: Apache-2.0
#

if BOARD_HEXIWEAR_KW40Z

config BOARD
	default "hexiwear_kw40z"

config OSC_XTAL0_FREQ
	default 32000000

config MCG_FRDIV
	default 5

config MCG_FCRDIV
	default 0

if PINMUX_MCUX

config PINMUX_MCUX_PORTA
	def_bool y

config PINMUX_MCUX_PORTB
	def_bool y if ADC_0

config PINMUX_MCUX_PORTC
	def_bool y if UART_MCUX_LPUART_0 || I2C_1

endif # PINMUX_MCUX

if GPIO_MCUX

config GPIO_MCUX_PORTA
	def_bool y

config GPIO_MCUX_PORTB
	def_bool n

config GPIO_MCUX_PORTC
	def_bool y if UART_MCUX_LPUART_0 || I2C_1

endif # GPIO_MCUX

if UART_MCUX_LPUART

config UART_MCUX_LPUART_0
	def_bool y

endif # UART_MCUX

if I2C

config I2C_1
	def_bool y

endif # I2C

if ADC

config ADC_0
	def_bool y

endif # ADC

endif # BOARD_HEXIWEAR_KW40Z
