# i.MX8MQ M4 SoC series

# Copyright (c) 2021, Kwon Tae-young <tykwon@m2i.co.kr>
# SPDX-License-Identifier: Apache-2.0

choice
prompt "i.MX8MQ M4 Selection"
	depends on SOC_SERIES_IMX8MQ_M4

config SOC_MIMX8MQ6
	bool "SOC_MIMX8MQ6"
	select HAS_MCUX
	select HAS_MCUX_CCM
	select HAS_MCUX_RDC
	select HAS_MCUX_IOMUXC

endchoice

if SOC_SERIES_IMX8MQ_M4

config SOC_PART_NUMBER_MIMX8MQ6DVAJZ
	bool

config SOC_PART_NUMBER_IMX8MQ_M4
	string
	default "MIMX8MQ6DVAJZ" if SOC_PART_NUMBER_MIMX8MQ6DVAJZ
	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.

endif # SOC_SERIES_IMX8MQ_M4
