# Kconfig - i.MX RT series
#
# Copyright (c) 2017, NXP
#
# SPDX-License-Identifier: Apache-2.0
#

choice
prompt "i.MX RT Selection"
depends on SOC_SERIES_IMX_RT

config SOC_MIMXRT1051
	bool "SOC_MIMXRT1051"
	select HAS_MCUX
	select HAS_MCUX_CCM
	select HAS_MCUX_IGPIO
	select HAS_MCUX_LPUART
	select CPU_HAS_FPU
	select CPU_HAS_MPU
	select INIT_ARM_PLL
	select INIT_SYS_PLL
	select INIT_USB1_PLL

config SOC_MIMXRT1052
	bool "SOC_MIMXRT1052"
	select HAS_MCUX
	select HAS_MCUX_CCM
	select HAS_MCUX_IGPIO
	select HAS_MCUX_LPUART
	select CPU_HAS_FPU
	select CPU_HAS_MPU
	select INIT_ARM_PLL
	select INIT_SYS_PLL
	select INIT_USB1_PLL

endchoice

if SOC_SERIES_IMX_RT

config ARM_MPU_IMX_RT
	bool "Enable MPU on i.MX RT"
	depends on CPU_HAS_MPU
	select ARM_MPU
	help
	  Enable MPU support on NXP i.MX RT series SoCs.

config SOC_PART_NUMBER_MIMXRT1051CVL5A
	bool

config SOC_PART_NUMBER_MIMXRT1051DVL6A
	bool

config SOC_PART_NUMBER_MIMXRT1052CVL5A
	bool

config SOC_PART_NUMBER_MIMXRT1052DVL6A
	bool

config SOC_PART_NUMBER_IMX_RT
	string
	default "MIMXRT1051CVL5A" if SOC_PART_NUMBER_MIMXRT1051CVL5A
	default "MIMXRT1051DVL6A" if SOC_PART_NUMBER_MIMXRT1051DVL6A
	default "MIMXRT1052CVL5A" if SOC_PART_NUMBER_MIMXRT1052CVL5A
	default "MIMXRT1052DVL6A" if SOC_PART_NUMBER_MIMXRT1052DVL6A
	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_ARM_PLL
	bool "Initialize ARM PLL"

config INIT_SYS_PLL
	bool "Initialize SYS PLL"

config INIT_USB1_PLL
	bool "Initialize USB1 PLL"

config ARM_DIV
	int "ARM clock divider"
	range 0 7

config AHB_DIV
	int "AHB clock divider"
	range 0 7

config IPG_DIV
	int "IPG clock divider"
	range 0 3

endif # SOC_SERIES_IMX_RT
