# Copyright 2024 NXP
# SPDX-License-Identifier: Apache-2.0

config SOC_MIMX8MM6_A53
	select ARM64
	select CPU_CORTEX_A53
	select ARM_ARCH_TIMER if SYS_CLOCK_EXISTS
	select HAS_MCUX if CLOCK_CONTROL
	select HAS_MCUX_CCM if CLOCK_CONTROL
	select HAS_MCUX_IOMUXC if PINCTRL

config SOC_MIMX8MM6_M4
	select ARM
	select CPU_CORTEX_M4
	select CPU_HAS_FPU
	select CPU_HAS_ARM_MPU
	select HAS_MCUX
	select HAS_MCUX_CCM
	select HAS_MCUX_RDC
	select HAS_MCUX_IGPIO
	select HAS_MCUX_IOMUXC

config SOC_MIMX8ML8_A53
	select ARM64
	select CPU_CORTEX_A53
	select ARM_ARCH_TIMER if SYS_CLOCK_EXISTS
	select HAS_MCUX if CLOCK_CONTROL
	select HAS_MCUX_CCM if CLOCK_CONTROL
	select HAS_MCUX_IOMUXC if PINCTRL

config SOC_MIMX8MN6_A53
	select ARM64
	select CPU_CORTEX_A53
	select ARM_ARCH_TIMER if SYS_CLOCK_EXISTS
	select HAS_MCUX if CLOCK_CONTROL
	select HAS_MCUX_CCM if CLOCK_CONTROL
	select HAS_MCUX_IOMUXC if PINCTRL

config SOC_MIMX8MP_ADSP
	select XTENSA
	select XTENSA_HAL if ("$(ZEPHYR_TOOLCHAIN_VARIANT)" != "xcc" && "$(ZEPHYR_TOOLCHAIN_VARIANT)" != "xt-clang")
	select XTENSA_RESET_VECTOR
	select XTENSA_USE_CORE_CRT1
	select ATOMIC_OPERATIONS_BUILTIN
	select GEN_ISR_TABLES
	select XTENSA_SMALL_VECTOR_TABLE_ENTRY
	select HAS_MCUX if CLOCK_CONTROL
	select HAS_MCUX_CCM if CLOCK_CONTROL
	select HAS_MCUX_IOMUXC if PINCTRL
	select PINCTRL_IMX if HAS_MCUX_IOMUXC
	select CPU_HAS_DCACHE

config SOC_MIMX8MP_M7
	select ARM
	select CPU_CORTEX_M7
	select CPU_HAS_FPU
	select CPU_HAS_ICACHE
	select CPU_HAS_DCACHE
	select INIT_VIDEO_PLL
	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

config SOC_MIMX8MQ6_M4
	select ARM
	select CPU_CORTEX_M4
	select CPU_HAS_FPU
	select CPU_HAS_ARM_MPU
	select HAS_MCUX
	select HAS_MCUX_CCM
	select HAS_MCUX_RDC
	select HAS_MCUX_IOMUXC

config MCUX_CORE_SUFFIX
	default "_ca53" if SOC_MIMX8MM6_A53 || SOC_MIMX8MN6_A53 || SOC_MIMX8ML8_A53
	default "_dsp" if SOC_MIMX8MP_ADSP

if SOC_MIMX8MP_M7

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_MIMX8MP_M7
