# 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
	default y

config PINMUX_MCUX_PORTB
	default y if ADC_0

config PINMUX_MCUX_PORTC
	default y if UART_MCUX_LPUART_0 || I2C_1

endif # PINMUX_MCUX

if GPIO_MCUX

config GPIO_MCUX_PORTA
	default y

config GPIO_MCUX_PORTB
	default n

config GPIO_MCUX_PORTC
	default y if UART_MCUX_LPUART_0 || I2C_1

endif # GPIO_MCUX

if UART_MCUX_LPUART

config UART_MCUX_LPUART_0
	default y

endif # UART_MCUX

if I2C

config I2C_1
	default y

endif # I2C

if ADC

config ADC_0
	default y

endif # ADC

endif # BOARD_HEXIWEAR_KW40Z
