# SPDX-License-Identifier: GPL-2.0-only
config SND_SOC_SOF_INTEL_TOPLEVEL
	bool "SOF support for Intel audio DSPs"
	depends on X86 || COMPILE_TEST
	help
	  This adds support for Sound Open Firmware for Intel(R) platforms.
	  Say Y if you have such a device.
	  If unsure select "N".

if SND_SOC_SOF_INTEL_TOPLEVEL

config SND_SOC_SOF_INTEL_HIFI_EP_IPC
	tristate
	help
	  This option is not user-selectable but automagically handled by
	  'select' statements at a higher level.

config SND_SOC_SOF_INTEL_ATOM_HIFI_EP
	tristate
	select SND_SOC_SOF_INTEL_COMMON
	select SND_SOC_SOF_INTEL_HIFI_EP_IPC
	help
	  This option is not user-selectable but automagically handled by
	  'select' statements at a higher level.

config SND_SOC_SOF_INTEL_COMMON
	tristate
	select SND_SOC_SOF
	select SND_SOC_ACPI_INTEL_MATCH
	select SND_SOC_SOF_XTENSA
	select SND_SOC_INTEL_MACH
	select SND_SOC_ACPI if ACPI
	select SND_INTEL_DSP_CONFIG
	help
	  This option is not user-selectable but automagically handled by
	  'select' statements at a higher level.

if SND_SOC_SOF_ACPI

config SND_SOC_SOF_BAYTRAIL
	tristate "SOF support for Baytrail, Braswell and Cherrytrail"
	default SND_SOC_SOF_ACPI
	select SND_SOC_SOF_IPC3
	select SND_SOC_SOF_INTEL_COMMON
	select SND_SOC_SOF_INTEL_ATOM_HIFI_EP
	select SND_SOC_SOF_ACPI_DEV
	select IOSF_MBI if X86 && PCI
	help
	  This adds support for Sound Open Firmware for Intel(R) platforms
	  using the Baytrail, Braswell or Cherrytrail processors.
	  This option can coexist in the same build with the Atom legacy
	  drivers, currently the default but which will be deprecated
	  at some point.
	  Existing firmware/topology binaries and UCM configurations
	  typically located in the root file system are already
	  compatible with both SOF or Atom/SST legacy drivers.
	  This is a recommended option for distributions.
	  Say Y if you want to enable SOF on Baytrail/Cherrytrail.
	  If unsure select "N".

config SND_SOC_SOF_BROADWELL
	tristate "SOF support for Broadwell"
	default SND_SOC_SOF_ACPI
	select SND_SOC_SOF_IPC3
	select SND_SOC_SOF_INTEL_COMMON
	select SND_SOC_SOF_INTEL_HIFI_EP_IPC
	select SND_SOC_SOF_ACPI_DEV
	help
	  This adds support for Sound Open Firmware for Intel(R) platforms
	  using the Broadwell processors.
	  This option can coexist in the same build with the default 'catpt'
	  driver.
	  Existing firmware/topology binaries and UCM configurations typically
	  located in the root file system are already compatible with both SOF
	  or catpt drivers.
	  SOF does not fully support Broadwell and has limitations related to
	  DMA and suspend-resume, this is not a recommended option for
	  distributions.
	  Say Y if you want to enable SOF on Broadwell.
	  If unsure select "N".

endif ## SND_SOC_SOF_ACPI

if SND_SOC_SOF_PCI

config SND_SOC_SOF_MERRIFIELD
	tristate "SOF support for Tangier/Merrifield"
	default SND_SOC_SOF_PCI
	select SND_SOC_SOF_PCI_DEV
	select SND_SOC_SOF_IPC3
	select SND_SOC_SOF_INTEL_ATOM_HIFI_EP
	help
	  This adds support for Sound Open Firmware for Intel(R) platforms
	  using the Tangier/Merrifield processors.
	  Say Y if you have such a device.
	  If unsure select "N".

config SND_SOC_SOF_INTEL_SKL
	tristate
	select SND_SOC_SOF_HDA_COMMON
	select SND_SOC_SOF_INTEL_IPC4

config SND_SOC_SOF_SKYLAKE
	tristate "SOF support for SkyLake"
	default SND_SOC_SOF_PCI
	select SND_SOC_SOF_INTEL_SKL
	help
	  This adds support for the Intel(R) platforms using the SkyLake processors.
	  Say Y if you have such a device.
	  If unsure select "N".
	  This is intended only for developers and not a recommend option for distros.

config SND_SOC_SOF_KABYLAKE
	tristate "SOF support for KabyLake"
	default SND_SOC_SOF_PCI
	select SND_SOC_SOF_INTEL_SKL
	help
	  This adds support for the Intel(R) platforms using the KabyLake processors.
	  Say Y if you have such a device.
	  If unsure select "N".
	  This is intended only for developers and not a recommend option for distros.

config SND_SOC_SOF_INTEL_APL
	tristate
	select SND_SOC_SOF_HDA_COMMON
	select SND_SOC_SOF_IPC3
	select SND_SOC_SOF_INTEL_IPC4

config SND_SOC_SOF_APOLLOLAKE
	tristate "SOF support for Apollolake"
	default SND_SOC_SOF_PCI
	select SND_SOC_SOF_INTEL_APL
	help
	  This adds support for Sound Open Firmware for Intel(R) platforms
	  using the Apollolake processors.
	  Say Y if you have such a device.
	  If unsure select "N".

config SND_SOC_SOF_GEMINILAKE
	tristate "SOF support for GeminiLake"
	default SND_SOC_SOF_PCI
	select SND_SOC_SOF_INTEL_APL
	help
	  This adds support for Sound Open Firmware for Intel(R) platforms
	  using the Geminilake processors.
	  Say Y if you have such a device.
	  If unsure select "N".

config SND_SOC_SOF_INTEL_CNL
	tristate
	select SND_SOC_SOF_HDA_COMMON
	select SND_SOC_SOF_INTEL_SOUNDWIRE_LINK_BASELINE
	select SND_SOC_SOF_IPC3
	select SND_SOC_SOF_INTEL_IPC4

config SND_SOC_SOF_CANNONLAKE
	tristate "SOF support for Cannonlake"
	default SND_SOC_SOF_PCI
	select SND_SOC_SOF_INTEL_CNL
	help
	  This adds support for Sound Open Firmware for Intel(R) platforms
	  using the Cannonlake processors.
	  Say Y if you have such a device.
	  If unsure select "N".

config SND_SOC_SOF_COFFEELAKE
	tristate "SOF support for CoffeeLake"
	default SND_SOC_SOF_PCI
	select SND_SOC_SOF_INTEL_CNL
	help
	  This adds support for Sound Open Firmware for Intel(R) platforms
	  using the Coffeelake processors.
	  Say Y if you have such a device.
	  If unsure select "N".

config SND_SOC_SOF_COMETLAKE
	tristate "SOF support for CometLake"
	default SND_SOC_SOF_PCI
	select SND_SOC_SOF_INTEL_CNL
	help
	  This adds support for Sound Open Firmware for Intel(R) platforms
	  using the Cometlake processors.
	  If unsure select "N".

config SND_SOC_SOF_INTEL_ICL
	tristate
	select SND_SOC_SOF_HDA_COMMON
	select SND_SOC_SOF_INTEL_SOUNDWIRE_LINK_BASELINE
	select SND_SOC_SOF_IPC3
	select SND_SOC_SOF_INTEL_IPC4

config SND_SOC_SOF_ICELAKE
	tristate "SOF support for Icelake"
	default SND_SOC_SOF_PCI
	select SND_SOC_SOF_INTEL_ICL
	help
	  This adds support for Sound Open Firmware for Intel(R) platforms
	  using the Icelake processors.
	  Say Y if you have such a device.
	  If unsure select "N".

config SND_SOC_SOF_JASPERLAKE
	tristate "SOF support for JasperLake"
	default SND_SOC_SOF_PCI
	select SND_SOC_SOF_INTEL_ICL
	help
	  This adds support for Sound Open Firmware for Intel(R) platforms
	  using the JasperLake processors.
	  Say Y if you have such a device.
	  If unsure select "N".

config SND_SOC_SOF_INTEL_TGL
	tristate
	select SND_SOC_SOF_HDA_COMMON
	select SND_SOC_SOF_INTEL_SOUNDWIRE_LINK_BASELINE
	select SND_SOC_SOF_IPC3
	select SND_SOC_SOF_INTEL_IPC4

config SND_SOC_SOF_TIGERLAKE
	tristate "SOF support for Tigerlake"
	default SND_SOC_SOF_PCI
	select SND_SOC_SOF_INTEL_TGL
	help
	  This adds support for Sound Open Firmware for Intel(R) platforms
	  using the Tigerlake processors.
	  Say Y if you have such a device.
	  If unsure select "N".

config SND_SOC_SOF_ELKHARTLAKE
	tristate "SOF support for ElkhartLake"
	default SND_SOC_SOF_PCI
	select SND_SOC_SOF_INTEL_TGL
	help
	  This adds support for Sound Open Firmware for Intel(R) platforms
	  using the ElkhartLake processors.
	  Say Y if you have such a device.
	  If unsure select "N".

config SND_SOC_SOF_ALDERLAKE
	tristate "SOF support for Alderlake"
	default SND_SOC_SOF_PCI
	select SND_SOC_SOF_INTEL_TGL
	help
	  This adds support for Sound Open Firmware for Intel(R) platforms
	  using the Alderlake processors.
	  Say Y if you have such a device.
	  If unsure select "N".

config SND_SOC_SOF_INTEL_MTL
	tristate
	select SND_SOC_SOF_HDA_COMMON
	select SND_SOC_SOF_INTEL_SOUNDWIRE_LINK_BASELINE
	select SND_SOC_SOF_INTEL_IPC4

config SND_SOC_SOF_METEORLAKE
	tristate "SOF support for Meteorlake"
	default SND_SOC_SOF_PCI
	select SND_SOC_SOF_INTEL_MTL
	help
	  This adds support for Sound Open Firmware for Intel(R) platforms
	  using the Meteorlake processors.
	  Say Y if you have such a device.
	  If unsure select "N".

config SND_SOC_SOF_INTEL_LNL
	tristate
	select SND_SOC_SOF_HDA_COMMON
	select SND_SOC_SOF_INTEL_SOUNDWIRE_LINK_BASELINE
	select SND_SOC_SOF_INTEL_IPC4

config SND_SOC_SOF_LUNARLAKE
	tristate "SOF support for Lunarlake"
	default SND_SOC_SOF_PCI
	select SND_SOC_SOF_INTEL_LNL
	help
	  This adds support for Sound Open Firmware for Intel(R) platforms
	  using the Lunarlake processors.
	  Say Y if you have such a device.
	  If unsure select "N".

config SND_SOC_SOF_HDA_COMMON
	tristate
	select SND_SOC_SOF_INTEL_COMMON
	select SND_SOC_SOF_PCI_DEV
	select SND_INTEL_DSP_CONFIG
	select SND_SOC_SOF_HDA_LINK_BASELINE
	select SND_SOC_SOF_HDA_PROBES
	select SND_SOC_SOF_HDA_MLINK if SND_SOC_SOF_HDA_LINK
	help
	  This option is not user-selectable but automagically handled by
	  'select' statements at a higher level.

config SND_SOC_SOF_HDA_MLINK
	tristate
	help
	  This option is not user-selectable but automagically handled by
	  'select' statements at a higher level.

if SND_SOC_SOF_HDA_COMMON

config SND_SOC_SOF_HDA_LINK
	bool "SOF support for HDA Links(HDA/HDMI)"
	help
	  This adds support for HDA links(HDA/HDMI) with Sound Open Firmware
	  for Intel(R) platforms.
	  Say Y if you want to enable HDA links with SOF.
	  If unsure select "N".

config SND_SOC_SOF_HDA_AUDIO_CODEC
	bool "SOF support for HDAudio codecs"
	depends on SND_SOC_SOF_HDA_LINK
	select SND_SOC_SOF_PROBE_WORK_QUEUE
	help
	  This adds support for HDAudio codecs with Sound Open Firmware
	  for Intel(R) platforms.
	  Say Y if you want to enable HDAudio codecs with SOF.
	  If unsure select "N".

endif ## SND_SOC_SOF_HDA_COMMON

config SND_SOC_SOF_HDA_LINK_BASELINE
	tristate
	select SND_SOC_SOF_HDA if SND_SOC_SOF_HDA_LINK
	help
	  This option is not user-selectable but automagically handled by
	  'select' statements at a higher level.

config SND_SOC_SOF_HDA
	tristate
	select SND_HDA_EXT_CORE if SND_SOC_SOF_HDA_LINK
	select SND_SOC_HDAC_HDA if SND_SOC_SOF_HDA_AUDIO_CODEC
	help
	  This option is not user-selectable but automagically handled by
	  'select' statements at a higher level.

config SND_SOC_SOF_HDA_PROBES
	tristate
	select SND_SOC_SOF_DEBUG_PROBES
	help
	  The option enables the data probing for Intel(R) Skylake and newer
	  (HDA) platforms.
	  This option is not user-selectable but automagically handled by
	  'select' statements at a higher level.

config SND_SOC_SOF_INTEL_SOUNDWIRE_LINK_BASELINE
	tristate
	select SOUNDWIRE_INTEL if SND_SOC_SOF_INTEL_SOUNDWIRE != n
	select SND_INTEL_SOUNDWIRE_ACPI if SND_SOC_SOF_INTEL_SOUNDWIRE != n

config SND_SOC_SOF_INTEL_SOUNDWIRE
	tristate "SOF support for SoundWire"
	default SND_SOC_SOF_INTEL_SOUNDWIRE_LINK_BASELINE
	depends on SND_SOC_SOF_INTEL_SOUNDWIRE_LINK_BASELINE
	depends on ACPI && SOUNDWIRE
	depends on !(SOUNDWIRE=m && SND_SOC_SOF_INTEL_SOUNDWIRE_LINK_BASELINE=y)
	help
	  This adds support for SoundWire with Sound Open Firmware
	  for Intel(R) platforms.
	  Say Y if you want to enable SoundWire links with SOF.
	  If unsure select "N".

endif ## SND_SOC_SOF_PCI

endif ## SND_SOC_SOF_INTEL_TOPLEVEL