# MIMXRT1170-EVK board

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

if BOARD_MIMXRT1170_EVK_CM7 || BOARD_MIMXRT1170_EVK_CM4

config BOARD
	default "mimxrt1170_evk_cm7" if BOARD_MIMXRT1170_EVK_CM7
	default "mimxrt1170_evk_cm4" if BOARD_MIMXRT1170_EVK_CM4

choice CODE_LOCATION
	default CODE_FLEXSPI if BOARD_MIMXRT1170_EVK_CM7
	default CODE_SRAM0 if BOARD_MIMXRT1170_EVK_CM4
endchoice

if DISK_DRIVERS

config DISK_DRIVER_SDMMC
	default y

config IMX_USDHC_DAT3_PWR_TOGGLE
	default y

endif # DISK_DRIVERS

if FLASH

config FLASH_MCUX_FLEXSPI_NOR
	default y

choice FLASH_MCUX_FLEXSPI_XIP_MEM_TARGET
	default FLASH_MCUX_FLEXSPI_XIP_MEM_ITCM if CPU_CORTEX_M7
	default FLASH_MCUX_FLEXSPI_XIP_MEM_SRAM if CPU_CORTEX_M4
endchoice

endif #FLASH

config I2C
	default y if SENSOR

if NETWORKING

config NET_L2_ETHERNET
	default y if CPU_CORTEX_M7 # No cache memory support is required for driver

config ETH_MCUX_PHY_RESET
	default y

endif # NETWORKING

if DISPLAY

config MIPI_DSI
	default y

config REGULATOR
	default y

endif # DISPLAY

endif # BOARD_MIMXRT1170_EVK_CM7 || BOARD_MIMXRT1170_EVK_CM4
