# SPDX-License-Identifier: (GPL-2.0-only OR BSD-3-Clause)
# This file is provided under a dual BSD/GPLv2 license. When using or
# redistributing this file, you may do so under either license.
#
# Copyright(c) 2021 Advanced Micro Devices, Inc. All rights reserved.

config SND_SOC_SOF_AMD_TOPLEVEL
	tristate "SOF support for AMD audio DSPs"
	depends on X86 || COMPILE_TEST
	help
	  This adds support for Sound Open Firmware for AMD platforms.
	  Say Y if you have such a device.
	  If unsure select "N".

if SND_SOC_SOF_AMD_TOPLEVEL

config SND_SOC_SOF_AMD_COMMON
	tristate
	select SND_SOC_SOF
	select SND_SOC_SOF_PCI_DEV
	select SND_AMD_ACP_CONFIG
	select SND_SOC_ACPI if ACPI
	help
	  This option is not user-selectable but automatically handled by
	  'select' statements at a higher level

config SND_SOC_SOF_AMD_RENOIR
	tristate "SOF support for RENOIR"
	depends on SND_SOC_SOF_PCI
	select SND_SOC_SOF_AMD_COMMON
	help
	  Select this option for SOF support on AMD Renoir platform
endif
