# i.MX RT series

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

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

config SOC_MIMXRT1011
	bool "SOC_MIMXRT1011"
	select SOC_SERIES_IMX_RT10XX
	select HAS_MCUX
	select HAS_MCUX_CACHE
	select HAS_MCUX_12B1MSPS_SAR
	select HAS_MCUX_CCM
	select HAS_MCUX_FLEXSPI
	select HAS_MCUX_IGPIO
	select HAS_MCUX_LPI2C
	select HAS_MCUX_LPSPI
	select HAS_MCUX_LPUART
	select HAS_MCUX_GPT
	select HAS_MCUX_TRNG
	select CPU_HAS_ARM_MPU
	select INIT_ENET_PLL
	select HAS_MCUX_USB_EHCI
	select HAS_MCUX_EDMA
	select HAS_MCUX_GPC
	select HAS_MCUX_DCDC
	select HAS_MCUX_PMU
	select HAS_MCUX_IOMUXC
	select HAS_SWO

config SOC_MIMXRT1015
	bool "SOC_MIMXRT1015"
	select SOC_SERIES_IMX_RT10XX
	select HAS_MCUX
	select HAS_MCUX_CACHE
	select HAS_MCUX_12B1MSPS_SAR
	select HAS_MCUX_CCM
	select HAS_MCUX_FLEXSPI
	select HAS_MCUX_IGPIO
	select HAS_MCUX_LPI2C
	select HAS_MCUX_LPSPI
	select HAS_MCUX_LPUART
	select HAS_MCUX_GPT
	select HAS_MCUX_TRNG
	select CPU_HAS_FPU_DOUBLE_PRECISION
	select CPU_HAS_ARM_MPU
	select INIT_ENET_PLL
	select HAS_MCUX_USB_EHCI
	select HAS_MCUX_EDMA
	select HAS_MCUX_GPC
	select HAS_MCUX_DCDC
	select HAS_MCUX_PMU
	select HAS_MCUX_IOMUXC
	select HAS_SWO

config SOC_MIMXRT1021
	bool "SOC_MIMXRT1021"
	select SOC_SERIES_IMX_RT10XX
	select HAS_MCUX
	select HAS_MCUX_CACHE
	select HAS_MCUX_12B1MSPS_SAR
	select HAS_MCUX_CCM
	select HAS_MCUX_ENET
	select HAS_MCUX_FLEXSPI
	select HAS_MCUX_IGPIO
	select HAS_MCUX_LPI2C
	select HAS_MCUX_LPSPI
	select HAS_MCUX_LPUART
	select HAS_MCUX_GPT
	select HAS_MCUX_SEMC
	select HAS_MCUX_TRNG
	select CPU_HAS_FPU_DOUBLE_PRECISION
	select CPU_HAS_ARM_MPU
	select INIT_ENET_PLL
	select HAS_MCUX_USB_EHCI
	select HAS_MCUX_USDHC1
	select HAS_MCUX_USDHC2
	select HAS_MCUX_EDMA
	select HAS_MCUX_FLEXCAN
	select HAS_MCUX_PWM
	select HAS_MCUX_GPC
	select HAS_MCUX_DCDC
	select HAS_MCUX_PMU
	select HAS_MCUX_IOMUXC
	select HAS_SWO

config SOC_MIMXRT1024
	bool "SOC_MIMXRT1024"
	select SOC_SERIES_IMX_RT10XX
	select HAS_MCUX
	select HAS_MCUX_CACHE
	select HAS_MCUX_12B1MSPS_SAR
	select HAS_MCUX_CCM
	select HAS_MCUX_ENET
	select HAS_MCUX_FLEXSPI
	select HAS_MCUX_IGPIO
	select HAS_MCUX_LPI2C
	select HAS_MCUX_LPSPI
	select HAS_MCUX_LPUART
	select HAS_MCUX_GPT
	select HAS_MCUX_SEMC
	select HAS_MCUX_TRNG
	select CPU_HAS_FPU_DOUBLE_PRECISION
	select CPU_HAS_ARM_MPU
	select INIT_ENET_PLL
	select HAS_MCUX_USB_EHCI
	select HAS_MCUX_USDHC1
	select HAS_MCUX_USDHC2
	select HAS_MCUX_EDMA
	select HAS_MCUX_FLEXCAN
	select HAS_MCUX_SRC
	select HAS_MCUX_GPC
	select HAS_MCUX_DCDC
	select HAS_MCUX_PMU
	select HAS_MCUX_IOMUXC
	select HAS_SWO

config SOC_MIMXRT1042
	bool "SOC_MIMXRT1042"
	select SOC_SERIES_IMX_RT10XX
	select HAS_MCUX
	select HAS_MCUX_CACHE
	select HAS_MCUX_FLEXSPI
	select HAS_MCUX_SEMC
	select HAS_MCUX_IGPIO
	select CPU_HAS_FPU_DOUBLE_PRECISION
	select CPU_HAS_ARM_MPU
	select INIT_ARM_PLL
	select HAS_MCUX_EDMA
	select HAS_MCUX_GPC
	select HAS_MCUX_DCDC
	select HAS_MCUX_PMU
	select HAS_MCUX_IOMUXC
	select HAS_SWO

config SOC_MIMXRT1051
	bool "SOC_MIMXRT1051"
	select SOC_SERIES_IMX_RT10XX
	select HAS_MCUX
	select HAS_MCUX_CACHE
	select HAS_MCUX_12B1MSPS_SAR
	select HAS_MCUX_CCM
	select HAS_MCUX_ENET
	select HAS_MCUX_FLEXSPI
	select HAS_MCUX_IGPIO
	select HAS_MCUX_LPI2C
	select HAS_MCUX_LPSPI
	select HAS_MCUX_LPUART
	select HAS_MCUX_GPT
	select HAS_MCUX_SEMC
	select HAS_MCUX_TRNG
	select CPU_HAS_FPU_DOUBLE_PRECISION
	select CPU_HAS_ARM_MPU
	select INIT_ARM_PLL
	select HAS_MCUX_USB_EHCI
	select HAS_MCUX_USDHC1
	select HAS_MCUX_USDHC2
	select HAS_MCUX_CSI
	select HAS_MCUX_EDMA
	select HAS_MCUX_FLEXCAN
	select HAS_MCUX_GPC
	select HAS_MCUX_DCDC
	select HAS_MCUX_PMU
	select HAS_MCUX_IOMUXC
	select HAS_SWO

config SOC_MIMXRT1052
	bool "SOC_MIMXRT1052"
	select SOC_SERIES_IMX_RT10XX
	select HAS_MCUX
	select HAS_MCUX_CACHE
	select HAS_MCUX_12B1MSPS_SAR
	select HAS_MCUX_CCM
	select HAS_MCUX_ELCDIF
	select HAS_MCUX_ENET
	select HAS_MCUX_FLEXSPI
	select HAS_MCUX_IGPIO
	select HAS_MCUX_LPI2C
	select HAS_MCUX_LPSPI
	select HAS_MCUX_LPUART
	select HAS_MCUX_GPT
	select HAS_MCUX_SEMC
	select HAS_MCUX_TRNG
	select CPU_HAS_FPU_DOUBLE_PRECISION
	select CPU_HAS_ARM_MPU
	select INIT_ARM_PLL
	select INIT_VIDEO_PLL if DISPLAY_MCUX_ELCDIF
	select INIT_ENET_PLL if NET_L2_ETHERNET && ETH_DRIVER
	select HAS_MCUX_USB_EHCI
	select HAS_MCUX_USDHC1
	select HAS_MCUX_USDHC2
	select HAS_MCUX_CSI
	select HAS_MCUX_EDMA
	select HAS_MCUX_FLEXCAN
	select HAS_MCUX_PWM
	select HAS_MCUX_GPC
	select HAS_MCUX_DCDC
	select HAS_MCUX_PMU
	select HAS_MCUX_IOMUXC
	select HAS_MCUX_SRC
	select HAS_SWO
	select HAS_MCUX_XBARA

config SOC_MIMXRT1061
	bool "SOC_MIMXRT1061"
	select SOC_SERIES_IMX_RT10XX
	select HAS_MCUX
	select HAS_MCUX_CACHE
	select HAS_MCUX_12B1MSPS_SAR
	select HAS_MCUX_CCM
	select HAS_MCUX_ENET
	select HAS_MCUX_FLEXSPI
	select HAS_MCUX_IGPIO
	select HAS_MCUX_LPI2C
	select HAS_MCUX_LPSPI
	select HAS_MCUX_LPUART
	select HAS_MCUX_GPT
	select HAS_MCUX_SEMC
	select HAS_MCUX_TRNG
	select CPU_HAS_FPU_DOUBLE_PRECISION
	select CPU_HAS_ARM_MPU
	select INIT_ARM_PLL
	select HAS_MCUX_USB_EHCI
	select HAS_MCUX_USDHC1
	select HAS_MCUX_USDHC2
	select HAS_MCUX_CSI
	select HAS_MCUX_EDMA
	select HAS_MCUX_FLEXCAN
	select HAS_MCUX_GPC
	select HAS_MCUX_DCDC
	select HAS_MCUX_PMU
	select HAS_MCUX_IOMUXC
	select HAS_SWO

config SOC_MIMXRT1062
	bool "SOC_MIMXRT1062"
	select SOC_SERIES_IMX_RT10XX
	select HAS_MCUX
	select HAS_MCUX_CACHE
	select HAS_MCUX_12B1MSPS_SAR
	select HAS_MCUX_CCM
	select HAS_MCUX_ELCDIF
	select HAS_MCUX_ENET
	select HAS_MCUX_FLEXSPI
	select HAS_MCUX_PWM
	select HAS_MCUX_IGPIO
	select HAS_MCUX_LPI2C
	select HAS_MCUX_LPSPI
	select HAS_MCUX_LPUART
	select HAS_MCUX_GPT
	select HAS_MCUX_QTMR
	select HAS_MCUX_SEMC
	select HAS_MCUX_SNVS
	select HAS_MCUX_TRNG
	select CPU_HAS_FPU_DOUBLE_PRECISION
	select CPU_HAS_ARM_MPU
	select INIT_ARM_PLL
	select INIT_VIDEO_PLL if DISPLAY_MCUX_ELCDIF
	select INIT_ENET_PLL if NET_L2_ETHERNET && ETH_DRIVER
	select HAS_MCUX_USB_EHCI
	select HAS_MCUX_USDHC1
	select HAS_MCUX_USDHC2
	select HAS_MCUX_CSI
	select HAS_MCUX_EDMA
	select HAS_MCUX_FLEXCAN
	select HAS_MCUX_I2S
	select HAS_MCUX_GPC
	select HAS_MCUX_DCDC
	select HAS_MCUX_PMU
	select HAS_MCUX_IOMUXC
	select HAS_MCUX_ADC_ETC
	select HAS_MCUX_SRC
	select HAS_SWO
	select HAS_MCUX_XBARA

config SOC_MIMXRT1064
	bool "SOC_MIMXRT1064"
	select SOC_SERIES_IMX_RT10XX
	select HAS_MCUX
	select HAS_MCUX_CACHE
	select HAS_MCUX_12B1MSPS_SAR
	select HAS_MCUX_CCM
	select HAS_MCUX_ELCDIF
	select HAS_MCUX_ENET
	select HAS_MCUX_FLEXSPI
	select HAS_MCUX_PWM
	select HAS_MCUX_IGPIO
	select HAS_MCUX_LPI2C
	select HAS_MCUX_LPSPI
	select HAS_MCUX_LPUART
	select HAS_MCUX_GPT
	select HAS_MCUX_QTMR
	select HAS_MCUX_SEMC
	select HAS_MCUX_SNVS
	select HAS_MCUX_SRC
	select HAS_MCUX_TRNG
	select CPU_HAS_FPU_DOUBLE_PRECISION
	select CPU_HAS_ARM_MPU
	select INIT_ARM_PLL
	select INIT_VIDEO_PLL if DISPLAY_MCUX_ELCDIF
	select INIT_ENET_PLL if NET_L2_ETHERNET && ETH_DRIVER
	select HAS_MCUX_USB_EHCI
	select HAS_MCUX_USDHC1
	select HAS_MCUX_USDHC2
	select HAS_MCUX_CSI
	select HAS_MCUX_EDMA
	select HAS_MCUX_FLEXCAN
	select HAS_MCUX_GPC
	select HAS_MCUX_DCDC
	select HAS_MCUX_PMU
	select HAS_MCUX_IOMUXC
	select HAS_SWO

config SOC_MIMXRT1176_CM7
	bool "SOC_MIMXRT1176_CM7"
	select CPU_CORTEX_M7
	select CPU_CORTEX_M_HAS_DWT
	select SOC_SERIES_IMX_RT11XX
	select HAS_MCUX_CACHE
	select HAS_MCUX
	select HAS_MCUX_SEMC
	select HAS_MCUX_CCM_REV2
	select HAS_MCUX_IGPIO
	select HAS_MCUX_LPI2C
	select HAS_MCUX_LPSPI
	select HAS_MCUX_LPADC
	select HAS_MCUX_LPUART
	select HAS_MCUX_ELCDIF
	select HAS_MCUX_MIPI_DSI
	select HAS_MCUX_GPT
	select HAS_MCUX_FLEXSPI
	select HAS_MCUX_FLEXCAN
	select CPU_HAS_ARM_MPU
	select INIT_ARM_PLL
	select INIT_ENET_PLL if NET_L2_ETHERNET && ETH_DRIVER
	select INIT_VIDEO_PLL
	select HAS_MCUX_EDMA
	select CPU_HAS_FPU_DOUBLE_PRECISION
	select ADJUST_DCDC
	select BYPASS_LDO_LPSR
	select ADJUST_LDO
	select HAS_MCUX_PWM
	select HAS_MCUX_USDHC1
	select HAS_MCUX_USDHC2
	select HAS_MCUX_ENET
	select HAS_MCUX_GPC
	select HAS_MCUX_I2S
	select HAS_MCUX_USB_EHCI
	select HAS_MCUX_ACMP
	select HAS_MCUX_SRC_V2
	select HAS_MCUX_IOMUXC
	select HAS_MCUX_XBARA
	select HAS_SWO

config SOC_MIMXRT1176_CM4
	bool "SOC_MIMXRT1176_CM4"
	select CPU_CORTEX_M4
	select SOC_SERIES_IMX_RT11XX
	select HAS_MCUX_CACHE
	select HAS_MCUX
	select HAS_MCUX_SEMC
	select HAS_MCUX_CCM_REV2
	select HAS_MCUX_IGPIO
	select HAS_MCUX_LPI2C
	select HAS_MCUX_LPSPI
	select HAS_MCUX_FLEXSPI
	select HAS_MCUX_LPUART
	select HAS_MCUX_GPT
	select CPU_HAS_ARM_MPU
	select INIT_ARM_PLL
	select INIT_ENET_PLL if NET_L2_ETHERNET && ETH_DRIVER
	select INIT_VIDEO_PLL
	select HAS_MCUX_EDMA
	select HAS_MCUX_PWM
	select HAS_MCUX_USDHC1
	select HAS_MCUX_USDHC2
	select HAS_MCUX_ENET
	select HAS_MCUX_GPC
	select HAS_MCUX_I2S
	select HAS_MCUX_ACMP
	select HAS_MCUX_SRC_V2
	select HAS_MCUX_IOMUXC
	select HAS_SWO

config SOC_MIMXRT1166_CM7
	bool "SOC_MIMXRT1166_CM7"
	select CPU_CORTEX_M7
	select CPU_CORTEX_M_HAS_DWT
	select SOC_SERIES_IMX_RT11XX
	select HAS_MCUX_CACHE
	select HAS_MCUX
	select HAS_MCUX_SEMC
	select HAS_MCUX_CCM_REV2
	select HAS_MCUX_IGPIO
	select HAS_MCUX_LPI2C
	select HAS_MCUX_LPSPI
	select HAS_MCUX_LPADC
	select HAS_MCUX_LPUART
	select HAS_MCUX_FLEXSPI
	select HAS_MCUX_GPT
	select HAS_MCUX_FLEXCAN
	select CPU_HAS_ARM_MPU
	select INIT_ARM_PLL
	select INIT_ENET_PLL if NET_L2_ETHERNET && ETH_DRIVER
	select INIT_VIDEO_PLL
	select HAS_MCUX_EDMA
	select CPU_HAS_FPU_DOUBLE_PRECISION
	select ADJUST_DCDC
	select BYPASS_LDO_LPSR
	select ADJUST_LDO
	select HAS_MCUX_PWM
	select HAS_MCUX_USDHC1
	select HAS_MCUX_USDHC2
	select HAS_MCUX_ENET
	select HAS_MCUX_GPC
	select HAS_MCUX_USB_EHCI
	select HAS_MCUX_SRC_V2
	select HAS_MCUX_IOMUXC
	select HAS_SWO


config SOC_MIMXRT1166_CM4
	bool "SOC_MIMXRT1166_CM4"
	select CPU_CORTEX_M4
	select SOC_SERIES_IMX_RT11XX
	select HAS_MCUX_CACHE
	select HAS_MCUX
	select HAS_MCUX_SEMC
	select HAS_MCUX_CCM_REV2
	select HAS_MCUX_IGPIO
	select HAS_MCUX_LPI2C
	select HAS_MCUX_LPSPI
	select HAS_MCUX_LPUART
	select HAS_MCUX_FLEXSPI
	select HAS_MCUX_GPT
	select CPU_HAS_ARM_MPU
	select INIT_ARM_PLL
	select INIT_ENET_PLL if NET_L2_ETHERNET && ETH_DRIVER
	select INIT_VIDEO_PLL
	select HAS_MCUX_EDMA
	select HAS_MCUX_PWM
	select HAS_MCUX_USDHC1
	select HAS_MCUX_USDHC2
	select HAS_MCUX_ENET
	select HAS_MCUX_GPC
	select HAS_MCUX_SRC_V2
	select HAS_MCUX_IOMUXC
	select HAS_SWO

endchoice

if SOC_SERIES_IMX_RT

config SOC_PART_NUMBER_MIMXRT1011CAE4A
	bool

config SOC_PART_NUMBER_MIMXRT1011DAE5A
	bool

config SOC_PART_NUMBER_MIMXRT1015CAF4A
	bool

config SOC_PART_NUMBER_MIMXRT1015DAF5A
	bool

config SOC_PART_NUMBER_MIMXRT1021CAF4A
	bool

config SOC_PART_NUMBER_MIMXRT1021CAG4A
	bool

config SOC_PART_NUMBER_MIMXRT1021DAF5A
	bool

config SOC_PART_NUMBER_MIMXRT1021DAG5A
	bool

config SOC_PART_NUMBER_MIMXRT1024CAG4A
	bool

config SOC_PART_NUMBER_MIMXRT1024DAG5A
	bool

config SOC_PART_NUMBER_MIMXRT1041DFP6B
	bool

config SOC_PART_NUMBER_MIMXRT1041DJM6B
	bool

config SOC_PART_NUMBER_MIMXRT1041XFP5B
	bool

config SOC_PART_NUMBER_MIMXRT1041XJM5B
	bool

config SOC_PART_NUMBER_MIMXRT1042DFP6B
	bool

config SOC_PART_NUMBER_MIMXRT1042DJM6B
	bool

config SOC_PART_NUMBER_MIMXRT1042XFP5B
	bool

config SOC_PART_NUMBER_MIMXRT1042XJM5B
	bool

config SOC_PART_NUMBER_MIMXRT1051CVL5A
	bool

config SOC_PART_NUMBER_MIMXRT1051DVL6A
	bool

config SOC_PART_NUMBER_MIMXRT1052CVJ5B
	bool

config SOC_PART_NUMBER_MIMXRT1052CVL5A
	bool

config SOC_PART_NUMBER_MIMXRT1052CVL5B
	bool

config SOC_PART_NUMBER_MIMXRT1052DVJ6B
	bool

config SOC_PART_NUMBER_MIMXRT1052DVL6A
	bool

config SOC_PART_NUMBER_MIMXRT1052DVL6B
	bool

config SOC_PART_NUMBER_MIMXRT1061CVL5A
	bool

config SOC_PART_NUMBER_MIMXRT1061DVL6A
	bool

config SOC_PART_NUMBER_MIMXRT1062CVJ5A
	bool

config SOC_PART_NUMBER_MIMXRT1062CVJ5B
	bool

config SOC_PART_NUMBER_MIMXRT1062CVL5A
	bool

config SOC_PART_NUMBER_MIMXRT1062DVJ6A
	bool

config SOC_PART_NUMBER_MIMXRT1062DVL6A
	bool

config SOC_PART_NUMBER_MIMXRT1064CVL5A
	bool

config SOC_PART_NUMBER_MIMXRT1064DVL6A
	bool

config SOC_PART_NUMBER_MIMXRT1166DVM6A
	bool

config SOC_PART_NUMBER_MIMXRT1176AVM8A
	bool

config SOC_PART_NUMBER_MIMXRT1176CVM8A
	bool

config SOC_PART_NUMBER_MIMXRT1176DVMAA
	bool

config SOC_PART_NUMBER_MIMXRT1175AVM8A
	bool

config SOC_PART_NUMBER_MIMXRT1175CVM8A
	bool

config SOC_PART_NUMBER_MIMXRT1175DVMAA
	bool

config SOC_PART_NUMBER_MIMXRT1173CVM8A
	bool

config SOC_PART_NUMBER_MIMXRT1172AVM8A
	bool

config SOC_PART_NUMBER_MIMXRT1172CVM8A
	bool

config SOC_PART_NUMBER_MIMXRT1172DVMAA
	bool

config SOC_PART_NUMBER_MIMXRT1171AVM8A
	bool

config SOC_PART_NUMBER_MIMXRT1171CVM8A
	bool

config SOC_PART_NUMBER_MIMXRT1171DVMAA
	bool

config SOC_PART_NUMBER_IMX_RT
	string
	default "MIMXRT1011CAE4A" if SOC_PART_NUMBER_MIMXRT1011CAE4A
	default "MIMXRT1011DAE5A" if SOC_PART_NUMBER_MIMXRT1011DAE5A
	default "MIMXRT1015CAF4A" if SOC_PART_NUMBER_MIMXRT1015CAF4A
	default "MIMXRT1015DAF5A" if SOC_PART_NUMBER_MIMXRT1015DAF5A
	default "MIMXRT1021CAF4A" if SOC_PART_NUMBER_MIMXRT1021CAF4A
	default "MIMXRT1021CAG4A" if SOC_PART_NUMBER_MIMXRT1021CAG4A
	default "MIMXRT1021DAF5A" if SOC_PART_NUMBER_MIMXRT1021DAF5A
	default "MIMXRT1021DAG5A" if SOC_PART_NUMBER_MIMXRT1021DAG5A
	default "MIMXRT1024CAG4A" if SOC_PART_NUMBER_MIMXRT1024CAG4A
	default "MIMXRT1024DAG5A" if SOC_PART_NUMBER_MIMXRT1024DAG5A
	default "MIMXRT1041DFP6B" if SOC_PART_NUMBER_MIMXRT1041DFP6B
	default "MIMXRT1041DJM6B" if SOC_PART_NUMBER_MIMXRT1041DJM6B
	default "MIMXRT1041XFP5B" if SOC_PART_NUMBER_MIMXRT1041XFP5B
	default "MIMXRT1041XJM5B" if SOC_PART_NUMBER_MIMXRT1041XJM5B
	default "MIMXRT1042DFP6B" if SOC_PART_NUMBER_MIMXRT1042DFP6B
	default "MIMXRT1042DJM6B" if SOC_PART_NUMBER_MIMXRT1042DJM6B
	default "MIMXRT1042XFP5B" if SOC_PART_NUMBER_MIMXRT1042XFP5B
	default "MIMXRT1042XJM5B" if SOC_PART_NUMBER_MIMXRT1042XJM5B
	default "MIMXRT1051CVL5A" if SOC_PART_NUMBER_MIMXRT1051CVL5A
	default "MIMXRT1051DVL6A" if SOC_PART_NUMBER_MIMXRT1051DVL6A
	default "MIMXRT1052CVJ5B" if SOC_PART_NUMBER_MIMXRT1052CVJ5B
	default "MIMXRT1052CVL5A" if SOC_PART_NUMBER_MIMXRT1052CVL5A
	default "MIMXRT1052CVL5B" if SOC_PART_NUMBER_MIMXRT1052CVL5B
	default "MIMXRT1052DVJ6B" if SOC_PART_NUMBER_MIMXRT1052DVJ6B
	default "MIMXRT1052DVL6A" if SOC_PART_NUMBER_MIMXRT1052DVL6A
	default "MIMXRT1052DVL6B" if SOC_PART_NUMBER_MIMXRT1052DVL6B
	default "MIMXRT1061CVL5A" if SOC_PART_NUMBER_MIMXRT1061CVL5A
	default "MIMXRT1061DVL6A" if SOC_PART_NUMBER_MIMXRT1061DVL6A
	default "MIMXRT1062CVJ5A" if SOC_PART_NUMBER_MIMXRT1062CVJ5A
	default "MIMXRT1062CVJ5B" if SOC_PART_NUMBER_MIMXRT1062CVJ5B
	default "MIMXRT1062CVL5A" if SOC_PART_NUMBER_MIMXRT1062CVL5A
	default "MIMXRT1062DVJ6A" if SOC_PART_NUMBER_MIMXRT1062DVJ6A
	default "MIMXRT1062DVL6A" if SOC_PART_NUMBER_MIMXRT1062DVL6A
	default "MIMXRT1064CVL5A" if SOC_PART_NUMBER_MIMXRT1064CVL5A
	default "MIMXRT1064DVL6A" if SOC_PART_NUMBER_MIMXRT1064DVL6A
	default "MIMXRT1176AVM8A" if SOC_PART_NUMBER_MIMXRT1176AVM8A
	default "MIMXRT1176CVM8A" if SOC_PART_NUMBER_MIMXRT1176CVM8A
	default "MIMXRT1176DVMAA" if SOC_PART_NUMBER_MIMXRT1176DVMAA
	default "MIMXRT1166DVM6A" if SOC_PART_NUMBER_MIMXRT1166DVM6A
	default "MIMXRT1175AVM8A" if SOC_PART_NUMBER_MIMXRT1175AVM8A
	default "MIMXRT1175CVM8A" if SOC_PART_NUMBER_MIMXRT1175CVM8A
	default "MIMXRT1175DVMAA" if SOC_PART_NUMBER_MIMXRT1175DVMAA
	default "MIMXRT1173CVM8A" if SOC_PART_NUMBER_MIMXRT1173CVM8A
	default "MIMXRT1172AVM8A" if SOC_PART_NUMBER_MIMXRT1172AVM8A
	default "MIMXRT1172CVM8A" if SOC_PART_NUMBER_MIMXRT1172CVM8A
	default "MIMXRT1172DVMAA" if SOC_PART_NUMBER_MIMXRT1172DVMAA
	default "MIMXRT1171AVM8A" if SOC_PART_NUMBER_MIMXRT1171AVM8A
	default "MIMXRT1171CVM8A" if SOC_PART_NUMBER_MIMXRT1171CVM8A
	default "MIMXRT1171DVMAA" if SOC_PART_NUMBER_MIMXRT1171DVMAA
	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 SOC_SERIES_IMX_RT10XX
	bool "i.MX RT 10XX Series"
	select CPU_CORTEX_M7
	select CPU_CORTEX_M_HAS_DWT
	select PLATFORM_SPECIFIC_INIT

config SOC_SERIES_IMX_RT11XX
	bool "i.MX RT 11XX Series"
	select PLATFORM_SPECIFIC_INIT

config INIT_ARM_PLL
	bool "Initialize ARM PLL"

config INIT_VIDEO_PLL
	bool "Initialize Video PLL"

config INIT_ENET_PLL
	bool
	help
	  If y, the Ethernet PLL is initialized. Always enabled on e.g.
	  MIMXRT1021 - see commit 17f4d6bec7 ("soc: nxp_imx: fix ENET_PLL selection
	  for MIMXRT1021").

config DCDC_VALUE
	hex "DCDC value for VDD_SOC"
	default 0x13

config ADJUST_DCDC
	bool "Adjust internal DCDC output"

config BYPASS_LDO_LPSR
	bool "Bypass LDO lpsr"

config ADJUST_LDO
	bool "Adjust LDO setting"

config PM_MCUX_GPC
	bool "MCUX general power controller driver"

config PM_MCUX_DCDC
	bool "MCUX dcdc converter module driver"

config PM_MCUX_PMU
	bool "MCUX power management unit driver"

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

if NXP_IMX_RT_BOOT_HEADER

choice BOOT_DEVICE
	prompt "Boot device selection"
	default BOOT_FLEXSPI_NOR

config BOOT_FLEXSPI_NOR
	bool "FlexSPI serial NOR"

config BOOT_FLEXSPI_NAND
	bool "FlexSPI serial NAND"

config BOOT_SEMC_NOR
	bool "SEMC parallel NOR"

config BOOT_SEMC_NAND
	bool "SEMC parallel NAND"

endchoice

config FLEXSPI_CONFIG_BLOCK_OFFSET
	hex "FlexSPI config block offset"
	default 0x0 if BOOT_FLEXSPI_NOR
	help
	  FlexSPI configuration block consists of parameters regarding specific
	  flash devices including read command sequence, quad mode enablement
	  sequence (optional), etc. The boot ROM expects FlexSPI configuration
	  parameter to be presented in serial nor flash.

config IMAGE_VECTOR_TABLE_OFFSET
	hex "Image vector table offset"
	default 0x1000 if BOOT_FLEXSPI_NOR || BOOT_SEMC_NOR
	default 0x400 if BOOT_FLEXSPI_NAND || BOOT_SEMC_NAND
	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.

config DEVICE_CONFIGURATION_DATA
	bool "Device configuration data"
	help
	  Device configuration data (DCD) provides a sequence of commands to
	  the boot ROM to initialize components such as an SDRAM. This is
	  useful if your application expects components like SDRAM to be
	  initialized at boot time.

endif # NXP_IMX_RT_BOOT_HEADER

choice CODE_LOCATION
	prompt "Code location selection"
	default CODE_ITCM

config CODE_SEMC
	bool "Link code into external SEMC-controlled memory"
	imply NXP_IMX_RT_BOOT_HEADER if !BOOTLOADER_MCUBOOT

config CODE_ITCM
	bool "Link code into internal instruction tightly coupled memory (ITCM)"
	imply NXP_IMX_RT_BOOT_HEADER if !BOOTLOADER_MCUBOOT

config CODE_FLEXSPI
	bool "Link code into external FlexSPI-controlled memory"
	imply NXP_IMX_RT_BOOT_HEADER if !BOOTLOADER_MCUBOOT

config CODE_FLEXSPI2
	bool "Link code into internal FlexSPI-controlled memory"
	imply NXP_IMX_RT_BOOT_HEADER if !BOOTLOADER_MCUBOOT

config CODE_SRAM0
	bool "Link code into RAM_L memory (RAM_L)"
	imply NXP_IMX_RT_BOOT_HEADER if !BOOTLOADER_MCUBOOT

config CODE_OCRAM
	bool "Link code into OCRAM memory (OCRAM-M4)"
	imply NXP_IMX_RT_BOOT_HEADER if !BOOTLOADER_MCUBOOT

endchoice

config NXP_IMX_EXTERNAL_SDRAM
	bool "Allow access to external SDRAM region"
	help
	  Enable access to external SDRAM region managed by the SEMC. This
	  setting should be enabled when the application uses SDRAM, or
	  an MPU region will be defined to disable cached access to the
	  SDRAM memory space.

config NXP_IMX_RT_ROM_RAMLOADER
	depends on !FLASH_MCUX_FLEXSPI_XIP && NXP_IMX_RT_BOOT_HEADER
	# Required so that debugger will load image to correct offset
	select BUILD_OUTPUT_HEX
	bool "Create output image that IMX RT ROM can load from FlexSPI to ram"
	help
	  Builds an output image that the IMX RT BootROM can load from the
	  FlexSPI boot device into RAM region. The image will be loaded
	  from FLEXSPI into the region specified by `zephyr,flash` node.

# Setup LMA adjustment if using the RAMLOADER feature of ROM
FLASH_CHOSEN := zephyr,flash
FLASH_BASE := $(dt_chosen_reg_addr_hex,$(FLASH_CHOSEN))
FLEXSPI_BASE := $(dt_node_reg_addr_hex,/soc/spi@402a8000,1)
config BUILD_OUTPUT_ADJUST_LMA
	default "$(FLEXSPI_BASE) - $(FLASH_BASE)" if NXP_IMX_RT_ROM_RAMLOADER

config SECOND_CORE_MCUX
	bool "Dual core operation on the RT11xx series"
	depends on SOC_SERIES_IMX_RT11XX
	help
	  Indicates the second core will be enabled, and the part will run
	  in dual core mode. Enables dual core operation on the RT11xx series,
	  by booting an image targeting the Cortex-M4 from the Cortex-M7 CPU.
	  The M4 image will be loaded from flash into RAM based off a
	  generated header specifying the VMA and LMA of each memory section
	  to load

config IMXRT1XXX_CODE_CACHE
	bool "Code cache"
	default y
	help
	  Enable Code cache at boot for IMXRT1xxx series

config IMXRT1XXX_DATA_CACHE
	bool "Data cache"
	default y
	help
	  Enable Data cache at boot for IMXRT1xxx series

endif # SOC_SERIES_IMX_RT
