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

config SOC_FAMILY_IMX
	bool
	select HAS_SEGGER_RTT

if SOC_FAMILY_IMX

config SOC_FAMILY
	string
	default "nxp_imx"

source "soc/arm/nxp_imx/*/Kconfig.soc"

config SOC_PART_NUMBER
	string
	default SOC_PART_NUMBER_IMX_RT if SOC_SERIES_IMX_RT
	default SOC_PART_NUMBER_IMX_6X_M4 if SOC_SERIES_IMX_6X_M4
	default SOC_PART_NUMBER_IMX7_M4 if SOC_SERIES_IMX7_M4
	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_FAMILY_IMX
