# Copyright (c) 2017-2021, 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
	default SOC_PART_NUMBER_IMX_RT5XX if SOC_SERIES_IMX_RT5XX
	default SOC_PART_NUMBER_IMX_RT6XX if SOC_SERIES_IMX_RT6XX
	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
	default SOC_PART_NUMBER_IMX8MM_M4 if SOC_SERIES_IMX8MM_M4
	default SOC_PART_NUMBER_IMX8ML_M7 if SOC_SERIES_IMX8ML_M7
	default SOC_PART_NUMBER_IMX8MQ_M4 if SOC_SERIES_IMX8MQ_M4

endif # SOC_FAMILY_IMX
