# i.MX8ML M7 SoC series

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

choice
prompt "i.MX8ML M7 Selection"
depends on SOC_SERIES_IMX8ML_M7

config SOC_MIMX8ML8
	bool "SOC_MIMX8ML8"
	select HAS_MCUX
	select HAS_MCUX_CCM
	select HAS_MCUX_RDC
	select CPU_HAS_ARM_MPU
	select CPU_HAS_CUSTOM_FIXED_SOC_MPU_REGIONS
	select ARM_MPU
	select HAS_MCUX_IGPIO
	select HAS_MCUX_IOMUXC

endchoice

if SOC_SERIES_IMX8ML_M7

config SOC_PART_NUMBER_MIMX8ML8DVNLZ
	bool

config SOC_PART_NUMBER_IMX8ML_M7
	string
	default "MIMX8ML8DVNLZ" if SOC_PART_NUMBER_MIMX8ML8DVNLZ
	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.

choice CODE_LOCATION
	prompt "Code location selection"

config CODE_ITCM
	bool "Link code into internal instruction tightly coupled memory (ITCM)"

config CODE_DDR
	bool "Link code into DDR memory"

endchoice

config INIT_VIDEO_PLL
	bool "Initialize Video PLL"

endif # SOC_SERIES_IMX8ML_M7
