# 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 DISK_ACCESS_USDHC

config DISK_ACCESS_USDHC1
	default y

endif # DISK_ACCESS_USDHC

if GPIO_MCUX_IGPIO

config GPIO_MCUX_IGPIO_1
	default y

config GPIO_MCUX_IGPIO_2
	default y if DISK_ACCESS_USDHC1

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

config ETH_MCUX_0
	default 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

choice LVGL_COLOR_DEPTH
	default LVGL_COLOR_DEPTH_16
endchoice

endif # LVGL

endif # BOARD_MIMXRT1050_EVK || BOARD_MIMXRT1050_EVK_QSPI
