# Copyright (c) 2022-2024 Intel Corporation
#
# SPDX-License-Identifier: Apache-2.0

config SOC_SERIES_INTEL_ADSP_ACE
	bool
	select SOC_FAMILY_INTEL_ADSP
	help
	  Intel ADSP ACE

config SOC_INTEL_ACE15_MTPM
	bool
	select SOC_SERIES_INTEL_ADSP_ACE
	help
	  ACE 1.5 Meteor Lake PCH M

config SOC_INTEL_ACE20_LNL
	bool
	select SOC_SERIES_INTEL_ADSP_ACE
	help
	  ACE 2.0 Lunar Lake PCH

config SOC_SERIES
	default "intel_adsp_ace" if SOC_SERIES_INTEL_ADSP_ACE

config SOC_TOOLCHAIN_NAME
	default "intel_ace15_mtpm" if SOC_SERIES_INTEL_ADSP_ACE

config SOC
	default "ace15_mtpm" if SOC_INTEL_ACE15_MTPM
	default "ace20_lnl" if SOC_INTEL_ACE20_LNL
