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

if BOARD_MIMXRT1050_EVK || BOARD_MIMXRT1050_EVK_QSPI

config BOARD
	default "mimxrt1050_evk"

choice CODE_LOCATION
	default CODE_FLEXSPI
endchoice

choice DATA_LOCATION
	default DATA_SEMC
endchoice

if GPIO_MCUX_IGPIO

config GPIO_MCUX_IGPIO_1
	default y

config GPIO_MCUX_IGPIO_2
	default n

config GPIO_MCUX_IGPIO_3
	default n

config GPIO_MCUX_IGPIO_4
	default n

config GPIO_MCUX_IGPIO_5
	default y

endif # GPIO_MCUX_IGPIO

if I2C_MCUX_LPI2C

config I2C_1
	default y

endif # I2C_MCUX_LPI2C

if SPI_MCUX_LPSPI

config SPI_3
	default y

endif # SPI_MCUX_LPSPI

if UART_MCUX_LPUART

config UART_MCUX_LPUART_1
	default y

config UART_MCUX_LPUART_3
	default y if BT_UART

endif # UART_MCUX_LPUART

if NETWORKING

config NET_L2_ETHERNET
	def_bool y

config ETH_MCUX_0
	def_bool y if NET_L2_ETHERNET

endif # NETWORKING

if LVGL

config LVGL_DISPLAY_DEV_NAME
	default "ELCDIF_1"

config LVGL_HOR_RES
	default 480

config LVGL_VER_RES
	default 272

config LVGL_VDB_SIZE
	default 16

config LVGL_DPI
	default 128

config LVGL_BITS_PER_PIXEL
	default 0

choice LVGL_COLOR_DEPTH
	default LVGL_COLOR_DEPTH_16
endchoice

endif # LVGL

endif # BOARD_MIMXRT1050_EVK || BOARD_MIMXRT1050_EVK_QSPI
