# 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
