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

if BOARD_LPCXPRESSO54114

config BOARD
	default lpcxpresso54114

if USART_MCUX_LPC

config USART_MCUX_LPC_0
	def_bool y if UART_CONSOLE

endif # USART_MCUX_LPC

if PINMUX_MCUX_LPC

config PINMUX_MCUX_LPC_PORT0
	def_bool y

config PINMUX_MCUX_LPC_PORT1
	def_bool y

endif # PINMUX_MCUX_LPC

if GPIO_MCUX_LPC

config GPIO_MCUX_LPC_PORT0
	def_bool y

config GPIO_MCUX_LPC_PORT1
	def_bool y

endif # GPIO_MCUX_LPC

endif # BOARD_LPCXPRESSO54114
