# SPDX-License-Identifier: GPL-2.0-only
config SND_SOC_AMD_ACP
	tristate "AMD Audio Coprocessor support"
	help
	 This option enables ACP DMA support on AMD platform.

config SND_SOC_AMD_CZ_DA7219MX98357_MACH
	tristate "AMD CZ support for DA7219, RT5682 and MAX9835"
	select CLK_FIXED_FCH
	select SND_SOC_DA7219
	select SND_SOC_RT5682_I2C
	select SND_SOC_MAX98357A
	select SND_SOC_ADAU7002
	select REGULATOR
	depends on SND_SOC_AMD_ACP && I2C && GPIOLIB && ACPI
	help
	 This option enables machine driver for DA7219, RT5682 and MAX9835.

config SND_SOC_AMD_CZ_RT5645_MACH
	tristate "AMD CZ support for RT5645"
	select SND_SOC_RT5645
	depends on SND_SOC_AMD_ACP && I2C
	help
	 This option enables machine driver for rt5645.

config SND_SOC_AMD_ST_ES8336_MACH
	tristate "AMD ST support for ES8336"
	select SND_SOC_ACPI if ACPI
	select SND_SOC_ES8316
	depends on SND_SOC_AMD_ACP && ACPI
	depends on I2C
	help
	 This option enables machine driver for Jadeite platform
	 using es8336 codec.
	 Say m if you have such a device.
	 If unsure select "N".

config SND_SOC_AMD_ACP3x
	tristate "AMD Audio Coprocessor-v3.x support"
	depends on X86 && PCI
	help
	 This option enables ACP v3.x I2S support on AMD platform

config SND_SOC_AMD_RV_RT5682_MACH
	tristate "AMD RV support for RT5682"
	select CLK_FIXED_FCH
	select SND_SOC_RT5682_I2C
	select SND_SOC_MAX98357A
	select SND_SOC_CROS_EC_CODEC
	select I2C_CROS_EC_TUNNEL
	select SND_SOC_RT1015
	select SND_SOC_RT1015P
	depends on SND_SOC_AMD_ACP3x && I2C && CROS_EC && GPIOLIB
	help
	 This option enables machine driver for RT5682 and MAX9835.

config SND_SOC_AMD_RENOIR
	tristate "AMD Audio Coprocessor - Renoir support"
	select SND_AMD_ACP_CONFIG
	depends on X86 && PCI
	help
	 This option enables ACP support for Renoir platform

config SND_SOC_AMD_RENOIR_MACH
	tristate "AMD Renoir support for DMIC"
	select SND_SOC_DMIC
	depends on SND_SOC_AMD_RENOIR && GPIOLIB
	help
	 This option enables machine driver for DMIC

config SND_SOC_AMD_ACP5x
	tristate "AMD Audio Coprocessor-v5.x I2S support"
	depends on X86 && PCI
	help
	 This option enables ACP v5.x support on AMD platform

	 By enabling this flag build will trigger for ACP PCI driver,
	 ACP DMA driver, CPU DAI driver.

config SND_SOC_AMD_VANGOGH_MACH
	tristate "AMD Vangogh support for NAU8821 CS35L41"
	select SND_SOC_NAU8821
	select SND_SOC_CS35L41_SPI
	depends on SND_SOC_AMD_ACP5x && I2C && SPI_MASTER
	help
	  This option enables machine driver for Vangogh platform
	  using NAU8821 and CS35L41 codecs.
	  Say m if you have such a device.
	  If unsure select "N".

config SND_SOC_AMD_ACP6x
	tristate "AMD Audio Coprocessor-v6.x Yellow Carp support"
	depends on X86 && PCI
	help
	  This option enables Audio Coprocessor i.e ACP v6.x support on
	  AMD Yellow Carp platform. By enabling this flag build will be
	  triggered for ACP PCI driver, ACP PDM DMA driver.
	  Say m if you have such a device.
	  If unsure select "N".

config SND_SOC_AMD_YC_MACH
	tristate "AMD YC support for DMIC"
	select SND_SOC_DMIC
	depends on SND_SOC_AMD_ACP6x
	help
	  This option enables machine driver for Yellow Carp platform
	  using dmic. ACP IP has PDM Decoder block with DMA controller.
	  DMIC can be connected directly to ACP IP.
	  Say m if you have such a device.
	  If unsure select "N".

config SND_AMD_ACP_CONFIG
	tristate "AMD ACP configuration selection"
	select SND_SOC_ACPI if ACPI
	help
	 This option adds an auto detection to determine which ACP
	 driver modules to use

source "sound/soc/amd/acp/Kconfig"

config SND_SOC_AMD_RPL_ACP6x
        tristate "AMD Audio Coprocessor-v6.2 RPL support"
        depends on X86 && PCI
        help
          This option enables Audio Coprocessor i.e. ACP v6.2 support on
          AMD RPL platform. By enabling this flag build will be
          triggered for ACP PCI driver.
          Say m if you have such a device.
          If unsure select "N".

config SND_SOC_AMD_PS
        tristate "AMD Audio Coprocessor-v6.2 Pink Sardine support"
        depends on X86 && PCI && ACPI
        help
          This option enables Audio Coprocessor i.e ACP v6.2 support on
          AMD Pink sardine platform. By enabling this flag build will be
          triggered for ACP PCI driver, ACP PDM DMA driver.
          Say m if you have such a device.
          If unsure select "N".

config SND_SOC_AMD_PS_MACH
        tristate "AMD PINK SARDINE support for DMIC"
        select SND_SOC_DMIC
        depends on SND_SOC_AMD_PS
        help
          This option enables machine driver for Pink Sardine platform
          using dmic. ACP IP has PDM Decoder block with DMA controller.
          DMIC can be connected directly to ACP IP.
          Say m if you have such a device.
          If unsure select "N".
