# i.MX RT6XX Series

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

choice
	prompt "i.MX RT6XX Series MCU Selection"
	depends on SOC_SERIES_IMX_RT6XX

config SOC_MIMXRT685S_CM33
	bool "SOC_MIMXRT685S M33"
	select CPU_HAS_ARM_SAU
	select CPU_HAS_ARM_MPU
	select CPU_HAS_FPU
	select ARMV8_M_DSP
	select ARM_TRUSTZONE_M
	select CPU_CORTEX_M_HAS_SYSTICK
	select HAS_MCUX
	select HAS_MCUX_SYSCON
	select HAS_MCUX_FLEXCOMM
	select HAS_MCUX_FLEXSPI
	select HAS_MCUX_CACHE
	select HAS_MCUX_LPC_DMA
	select HAS_MCUX_LPADC
	select HAS_MCUX_OS_TIMER
	select HAS_MCUX_LPC_RTC
	select HAS_MCUX_TRNG
	select HAS_MCUX_SCTIMER
	select HAS_MCUX_USDHC1
	select HAS_MCUX_USDHC2
	select INIT_SYS_PLL
	select HAS_MCUX_USB_LPCIP3511
	select USB_DEDICATED_MEMORY if USB_DEVICE_DRIVER
	select HAS_MCUX_CTIMER
endchoice

if SOC_SERIES_IMX_RT6XX

config SOC_PART_NUMBER_MIMXRT685SFVKB
	bool

config SOC_PART_NUMBER_MIMXRT685SFFOB
	bool

config SOC_PART_NUMBER_MIMXRT685SFAWBR
	bool

config SOC_PART_NUMBER_IMX_RT6XX
	string
	default "MIMXRT685SFVKB" if SOC_PART_NUMBER_MIMXRT685SFVKB
	default "MIMXRT685SFFOB" if SOC_PART_NUMBER_MIMXRT685SFFOB
	default "MIMXRT685SFAWBR" if SOC_PART_NUMBER_MIMXRT685SFAWBR

	help
	  This string holds the full part number of the SoC. It is a hidden
	  option that you should not set directly. The part number selection
	  choice defines the default value for this string.

config INIT_SYS_PLL
	bool "Initialize SYS PLL"

config INIT_AUDIO_PLL
	bool "Initialize Audio PLL"

config USB_DEDICATED_MEMORY
	bool "Dedicated memory for USB transfer buffer and controller operation buffers"

config XTAL_SYS_CLK_HZ
	int "External oscillator frequency"
	help
	  Set the external oscillator frequency in Hz. This should be set by the
	  board's defconfig.

config SYSOSC_SETTLING_US
	int "System oscillator settling time"
	help
	  Set the board system oscillator settling time in us. This should be set by the
	  board's defconfig.

menuconfig NXP_IMX_RT6XX_BOOT_HEADER
	bool "Boot header"
	depends on !BOOTLOADER_MCUBOOT
	help
	  Enable data structures required by the boot ROM to boot the
	  application from an external flash device.

if NXP_IMX_RT6XX_BOOT_HEADER

choice BOOT_DEVICE
	prompt "Boot device selection"
	default BOOT_FLEXSPI_NOR

config BOOT_FLEXSPI_NOR
	bool "FlexSPI serial NOR"

endchoice

config FLASH_CONFIG_OFFSET
	hex "Flash config data offset"
	default 0x400
	help
	  The flash config offset provides the boot ROM with the on-board
	  flash type and parameters. The boot ROM requires a fixed flash config
	  offset for FlexSPI device.

config IMAGE_VECTOR_TABLE_OFFSET
	hex "Image vector table offset"
	default 0x1000
	help
	  The Image Vector Table (IVT) provides the boot ROM with pointers to
	  the application entry point and device configuration data. The boot
	  ROM requires a fixed IVT offset for each type of boot device.

endif # NXP_IMX_RT6XX_BOOT_HEADER


endif # SOC_SERIES_IMX_RT6XX
