# 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
	select SND_AMD_ACP_CONFIG
	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/MAX98388"
	select SND_SOC_NAU8821
	select SND_SOC_CS35L41_SPI
	select SND_SOC_MAX98388
	select SND_AMD_ACP_CONFIG
	depends on SND_SOC_AMD_ACP5x && I2C && SPI_MASTER
	help
	  This option enables machine driver for Vangogh platform
	  using NAU8821 and either CS35L41 or MAX98388 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"
	select SND_AMD_ACP_CONFIG
	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.3 Pink Sardine support"
	select SND_AMD_ACP_CONFIG
        depends on X86 && PCI && ACPI
        help
          This option enables Audio Coprocessor i.e ACP v6.3 support on
          AMD Pink sardine platform. By enabling this flag build will be
          triggered for ACP PCI driver, ACP PDM DMA driver, ACP SoundWire
          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".
