# MIMXRT1060-EVK board

# Copyright (c) 2018, NXP
# SPDX-License-Identifier: Apache-2.0

if BOARD_MIMXRT1060_EVK || BOARD_MIMXRT1060_EVK_HYPERFLASH || BOARD_MIMXRT1060_EVKB

config BOARD
	default "mimxrt1060_evk" if BOARD_MIMXRT1060_EVK
	default "mimxrt1060_evk_hyperflash" if BOARD_MIMXRT1060_EVK_HYPERFLASH
	default "mimxrt1060_evkb" if BOARD_MIMXRT1060_EVKB

choice CODE_LOCATION
	default CODE_FLEXSPI
endchoice

config DISK_DRIVER_SDMMC
	default y if DISK_DRIVERS

if FLASH

config FLASH_MCUX_FLEXSPI_NOR
	default y if BOARD_MIMXRT1060_EVK
	default y if BOARD_MIMXRT1060_EVKB
	default n if BOARD_MIMXRT1060_EVK_HYPERFLASH

config FLASH_MCUX_FLEXSPI_HYPERFLASH
	default y if BOARD_MIMXRT1060_EVK_HYPERFLASH
	default n if BOARD_MIMXRT1060_EVK
	default n if BOARD_MIMXRT1060_EVKB

endif #FLASH

config KSCAN
	default y if LVGL

if KSCAN

config KSCAN_FT5336_INTERRUPT
	default y

endif # KSCAN

if NETWORKING

config NET_L2_ETHERNET
	default y

config ETH_MCUX_PHY_RESET
	default y

endif # NETWORKING

if LVGL

config LV_Z_POINTER_KSCAN
	default y

config LV_Z_VDB_SIZE
	default 16

config LV_Z_DPI
	default 128

choice LV_COLOR_DEPTH
	default LV_COLOR_DEPTH_16
endchoice

endif # LVGL

endif # BOARD_MIMXRT1060_EVK || BOARD_MIMXRT1060_EVK_HYPERFLASH || BOARD_MIMXRT1060_EVKB
