162306a36Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0-only
262306a36Sopenharmony_cimenuconfig SND_SOC_SOF_TOPLEVEL
362306a36Sopenharmony_ci	bool "Sound Open Firmware Support"
462306a36Sopenharmony_ci	help
562306a36Sopenharmony_ci	  This adds support for Sound Open Firmware (SOF). SOF is free and
662306a36Sopenharmony_ci	  generic open source audio DSP firmware for multiple devices.
762306a36Sopenharmony_ci	  Say Y if you have such a device that is supported by SOF.
862306a36Sopenharmony_ci	  If unsure select "N".
962306a36Sopenharmony_ci
1062306a36Sopenharmony_ciif SND_SOC_SOF_TOPLEVEL
1162306a36Sopenharmony_ci
1262306a36Sopenharmony_ciconfig SND_SOC_SOF_PCI_DEV
1362306a36Sopenharmony_ci	tristate
1462306a36Sopenharmony_ci
1562306a36Sopenharmony_ciconfig SND_SOC_SOF_PCI
1662306a36Sopenharmony_ci	tristate "SOF PCI enumeration support"
1762306a36Sopenharmony_ci	depends on PCI
1862306a36Sopenharmony_ci	help
1962306a36Sopenharmony_ci	  This adds support for PCI enumeration. This option is
2062306a36Sopenharmony_ci	  required to enable Intel Skylake+ devices.
2162306a36Sopenharmony_ci	  For backwards-compatibility with previous configurations the selection will
2262306a36Sopenharmony_ci	  be used as default for platform-specific drivers.
2362306a36Sopenharmony_ci	  Say Y if you need this option.
2462306a36Sopenharmony_ci	  If unsure select "N".
2562306a36Sopenharmony_ci
2662306a36Sopenharmony_ciconfig SND_SOC_SOF_ACPI
2762306a36Sopenharmony_ci	tristate "SOF ACPI enumeration support"
2862306a36Sopenharmony_ci	depends on ACPI || COMPILE_TEST
2962306a36Sopenharmony_ci	help
3062306a36Sopenharmony_ci	  This adds support for ACPI enumeration. This option is required
3162306a36Sopenharmony_ci	  to enable Intel Broadwell/Baytrail/Cherrytrail devices.
3262306a36Sopenharmony_ci	  For backwards-compatibility with previous configurations the selection will
3362306a36Sopenharmony_ci	  be used as default for platform-specific drivers.
3462306a36Sopenharmony_ci	  Say Y if you need this option.
3562306a36Sopenharmony_ci	  If unsure select "N".
3662306a36Sopenharmony_ci
3762306a36Sopenharmony_ciconfig SND_SOC_SOF_ACPI_DEV
3862306a36Sopenharmony_ci	tristate
3962306a36Sopenharmony_ci
4062306a36Sopenharmony_ciconfig SND_SOC_SOF_OF
4162306a36Sopenharmony_ci	tristate "SOF OF enumeration support"
4262306a36Sopenharmony_ci	depends on OF
4362306a36Sopenharmony_ci	help
4462306a36Sopenharmony_ci	  This adds support for Device Tree enumeration. This option is
4562306a36Sopenharmony_ci	  required to enable i.MX8 or Mediatek devices.
4662306a36Sopenharmony_ci	  Say Y if you need this option. If unsure select "N".
4762306a36Sopenharmony_ci
4862306a36Sopenharmony_ciconfig SND_SOC_SOF_OF_DEV
4962306a36Sopenharmony_ci	tristate
5062306a36Sopenharmony_ci
5162306a36Sopenharmony_ciconfig SND_SOC_SOF_COMPRESS
5262306a36Sopenharmony_ci	bool
5362306a36Sopenharmony_ci	select SND_SOC_COMPRESS
5462306a36Sopenharmony_ci
5562306a36Sopenharmony_ciconfig SND_SOC_SOF_DEBUG_PROBES
5662306a36Sopenharmony_ci	tristate
5762306a36Sopenharmony_ci	select SND_SOC_SOF_CLIENT
5862306a36Sopenharmony_ci	select SND_SOC_COMPRESS
5962306a36Sopenharmony_ci	help
6062306a36Sopenharmony_ci	  This option enables the data probing feature that can be used to
6162306a36Sopenharmony_ci	  gather data directly from specific points of the audio pipeline.
6262306a36Sopenharmony_ci	  This option is not user-selectable but automagically handled by
6362306a36Sopenharmony_ci	  'select' statements at a higher level.
6462306a36Sopenharmony_ci
6562306a36Sopenharmony_ciconfig SND_SOC_SOF_CLIENT
6662306a36Sopenharmony_ci	tristate
6762306a36Sopenharmony_ci	select AUXILIARY_BUS
6862306a36Sopenharmony_ci	help
6962306a36Sopenharmony_ci	  This option is not user-selectable but automagically handled by
7062306a36Sopenharmony_ci	  'select' statements at a higher level.
7162306a36Sopenharmony_ci
7262306a36Sopenharmony_ciconfig SND_SOC_SOF_DEVELOPER_SUPPORT
7362306a36Sopenharmony_ci	bool "SOF developer options support"
7462306a36Sopenharmony_ci	depends on EXPERT && SND_SOC_SOF
7562306a36Sopenharmony_ci	help
7662306a36Sopenharmony_ci	  This option unlocks SOF developer options for debug/performance/
7762306a36Sopenharmony_ci	  code hardening.
7862306a36Sopenharmony_ci	  Distributions should not select this option, only SOF development
7962306a36Sopenharmony_ci	  teams should select it.
8062306a36Sopenharmony_ci	  Say Y if you are involved in SOF development and need this option.
8162306a36Sopenharmony_ci	  If not, select N.
8262306a36Sopenharmony_ci
8362306a36Sopenharmony_ciif SND_SOC_SOF_DEVELOPER_SUPPORT
8462306a36Sopenharmony_ci
8562306a36Sopenharmony_ciconfig SND_SOC_SOF_FORCE_PROBE_WORKQUEUE
8662306a36Sopenharmony_ci	bool "SOF force probe workqueue"
8762306a36Sopenharmony_ci	select SND_SOC_SOF_PROBE_WORK_QUEUE
8862306a36Sopenharmony_ci	help
8962306a36Sopenharmony_ci	  This option forces the use of a probe workqueue, which is only used
9062306a36Sopenharmony_ci	  when HDaudio is enabled due to module dependencies. Forcing this
9162306a36Sopenharmony_ci	  option is intended for debug only, but this should not add any
9262306a36Sopenharmony_ci	  functional issues in nominal cases.
9362306a36Sopenharmony_ci	  Say Y if you are involved in SOF development and need this option.
9462306a36Sopenharmony_ci	  If not, select N.
9562306a36Sopenharmony_ci
9662306a36Sopenharmony_ciconfig SND_SOC_SOF_NOCODEC
9762306a36Sopenharmony_ci	tristate
9862306a36Sopenharmony_ci
9962306a36Sopenharmony_ciconfig SND_SOC_SOF_NOCODEC_SUPPORT
10062306a36Sopenharmony_ci	bool "SOF nocodec static mode support"
10162306a36Sopenharmony_ci	help
10262306a36Sopenharmony_ci	  This adds support for a dummy/nocodec machine driver fallback
10362306a36Sopenharmony_ci	  option if no known codec is detected. This is typically only
10462306a36Sopenharmony_ci	  enabled for developers or devices where the sound card is
10562306a36Sopenharmony_ci	  controlled externally.
10662306a36Sopenharmony_ci	  This option is mutually exclusive at build time with the Intel HDAudio support.
10762306a36Sopenharmony_ci	  Selecting it may have negative impacts and prevent e.g. microphone
10862306a36Sopenharmony_ci	  functionality from being enabled on Intel CoffeeLake and later
10962306a36Sopenharmony_ci	  platforms.
11062306a36Sopenharmony_ci	  Distributions should not select this option!
11162306a36Sopenharmony_ci	  Say Y if you need this nocodec fallback option.
11262306a36Sopenharmony_ci	  If unsure select "N".
11362306a36Sopenharmony_ci
11462306a36Sopenharmony_ciconfig SND_SOC_SOF_STRICT_ABI_CHECKS
11562306a36Sopenharmony_ci	bool "SOF strict ABI checks"
11662306a36Sopenharmony_ci	help
11762306a36Sopenharmony_ci	  This option enables strict ABI checks for firmware and topology
11862306a36Sopenharmony_ci	  files.
11962306a36Sopenharmony_ci	  When these files are more recent than the kernel, the kernel
12062306a36Sopenharmony_ci	  will handle the functionality it supports and may report errors
12162306a36Sopenharmony_ci	  during topology creation or run-time usage if new functionality
12262306a36Sopenharmony_ci	  is invoked.
12362306a36Sopenharmony_ci	  This option will stop topology creation and firmware load upfront.
12462306a36Sopenharmony_ci	  It is intended for SOF CI/releases and not for users or distros.
12562306a36Sopenharmony_ci	  Say Y if you want strict ABI checks for an SOF release.
12662306a36Sopenharmony_ci	  If you are not involved in SOF releases and CI development,
12762306a36Sopenharmony_ci	  select "N".
12862306a36Sopenharmony_ci
12962306a36Sopenharmony_ciconfig SND_SOC_SOF_DEBUG
13062306a36Sopenharmony_ci	bool "SOF debugging features"
13162306a36Sopenharmony_ci	help
13262306a36Sopenharmony_ci	  This option can be used to enable or disable individual SOF firmware
13362306a36Sopenharmony_ci	  and driver debugging options.
13462306a36Sopenharmony_ci	  Say Y if you are debugging SOF FW or drivers.
13562306a36Sopenharmony_ci	  If unsure select "N".
13662306a36Sopenharmony_ci
13762306a36Sopenharmony_ciif SND_SOC_SOF_DEBUG
13862306a36Sopenharmony_ci
13962306a36Sopenharmony_ciconfig SND_SOC_SOF_NOCODEC_DEBUG_SUPPORT
14062306a36Sopenharmony_ci	bool "SOF nocodec debug mode support"
14162306a36Sopenharmony_ci	depends on !SND_SOC_SOF_NOCODEC_SUPPORT
14262306a36Sopenharmony_ci	help
14362306a36Sopenharmony_ci	  This adds support for a dummy/nocodec machine driver fallback
14462306a36Sopenharmony_ci	  option.
14562306a36Sopenharmony_ci	  Unlike the SND_SOC_SOF_NOCODEC_SUPPORT, this option is NOT
14662306a36Sopenharmony_ci	  mutually exclusive at build with the Intel HDAudio support. The
14762306a36Sopenharmony_ci	  selection will be done depending on command line or modprobe.d settings
14862306a36Sopenharmony_ci	  Distributions should not select this option!
14962306a36Sopenharmony_ci	  Say Y if you need this nocodec debug fallback option.
15062306a36Sopenharmony_ci	  If unsure select "N".
15162306a36Sopenharmony_ci
15262306a36Sopenharmony_ciconfig SND_SOC_SOF_FORCE_NOCODEC_MODE
15362306a36Sopenharmony_ci	bool "SOF force nocodec Mode"
15462306a36Sopenharmony_ci	depends on SND_SOC_SOF_NOCODEC_SUPPORT
15562306a36Sopenharmony_ci	help
15662306a36Sopenharmony_ci	  This forces SOF to use dummy/nocodec as machine driver, even
15762306a36Sopenharmony_ci	  though there is a codec detected on the real platform. This is
15862306a36Sopenharmony_ci	  typically only enabled for developers for debug purposes, before
15962306a36Sopenharmony_ci	  codec/machine driver is ready, or to exclude the impact of those
16062306a36Sopenharmony_ci	  drivers.
16162306a36Sopenharmony_ci	  Say Y if you need this force nocodec mode option.
16262306a36Sopenharmony_ci	  If unsure select "N".
16362306a36Sopenharmony_ci
16462306a36Sopenharmony_ciconfig SND_SOC_SOF_DEBUG_XRUN_STOP
16562306a36Sopenharmony_ci	bool "SOF stop on XRUN"
16662306a36Sopenharmony_ci	help
16762306a36Sopenharmony_ci	  This option forces PCMs to stop on any XRUN event. This is useful to
16862306a36Sopenharmony_ci	  preserve any trace data and pipeline status prior to the XRUN.
16962306a36Sopenharmony_ci	  Say Y if you are debugging SOF FW pipeline XRUNs.
17062306a36Sopenharmony_ci	  If unsure select "N".
17162306a36Sopenharmony_ci
17262306a36Sopenharmony_ciconfig SND_SOC_SOF_DEBUG_VERBOSE_IPC
17362306a36Sopenharmony_ci	bool "SOF verbose IPC logs"
17462306a36Sopenharmony_ci	help
17562306a36Sopenharmony_ci	  This option enables more verbose IPC logs, with command types in
17662306a36Sopenharmony_ci	  human-readable form instead of just 32-bit hex dumps. This is useful
17762306a36Sopenharmony_ci	  if you are trying to debug IPC with the DSP firmware.
17862306a36Sopenharmony_ci	  If unsure select "N".
17962306a36Sopenharmony_ci
18062306a36Sopenharmony_ciconfig SND_SOC_SOF_DEBUG_FORCE_IPC_POSITION
18162306a36Sopenharmony_ci	bool "SOF force to use IPC for position update on SKL+"
18262306a36Sopenharmony_ci	help
18362306a36Sopenharmony_ci	  This option forces to handle stream position update IPCs and run PCM
18462306a36Sopenharmony_ci	  elapse to inform ALSA about that, on platforms (e.g. Intel SKL+) that
18562306a36Sopenharmony_ci	  with other approach (e.g. HDAC DPIB/posbuf) to elapse PCM.
18662306a36Sopenharmony_ci	  On platforms (e.g. Intel SKL-) where position update IPC is the only
18762306a36Sopenharmony_ci	  one choice, this setting won't impact anything.
18862306a36Sopenharmony_ci	  If you are trying to debug pointer update with position IPCs or where
18962306a36Sopenharmony_ci	  DPIB/posbuf is not ready, select "Y".
19062306a36Sopenharmony_ci	  If unsure select "N".
19162306a36Sopenharmony_ci
19262306a36Sopenharmony_ciconfig SND_SOC_SOF_DEBUG_ENABLE_DEBUGFS_CACHE
19362306a36Sopenharmony_ci	bool "SOF enable debugfs caching"
19462306a36Sopenharmony_ci	help
19562306a36Sopenharmony_ci	  This option enables caching of debugfs
19662306a36Sopenharmony_ci	  memory -> DSP resource (memory, register, etc)
19762306a36Sopenharmony_ci	  before the audio DSP is suspended. This will increase the suspend
19862306a36Sopenharmony_ci	  latency and therefore should be used for debug purposes only.
19962306a36Sopenharmony_ci	  Say Y if you want to enable caching the memory windows.
20062306a36Sopenharmony_ci	  If unsure, select "N".
20162306a36Sopenharmony_ci
20262306a36Sopenharmony_ciconfig SND_SOC_SOF_DEBUG_ENABLE_FIRMWARE_TRACE
20362306a36Sopenharmony_ci	bool "SOF enable firmware trace"
20462306a36Sopenharmony_ci	help
20562306a36Sopenharmony_ci	  The firmware trace can be enabled either at build-time with
20662306a36Sopenharmony_ci	  this option, or dynamically by setting flags in the SOF core
20762306a36Sopenharmony_ci	  module parameter (similar to dynamic debug).
20862306a36Sopenharmony_ci	  If unsure, select "N".
20962306a36Sopenharmony_ci
21062306a36Sopenharmony_ciconfig SND_SOC_SOF_DEBUG_IPC_FLOOD_TEST
21162306a36Sopenharmony_ci	tristate "SOF enable IPC flood test"
21262306a36Sopenharmony_ci	depends on SND_SOC_SOF
21362306a36Sopenharmony_ci	select SND_SOC_SOF_CLIENT
21462306a36Sopenharmony_ci	help
21562306a36Sopenharmony_ci	  This option enables a separate client device for IPC flood test
21662306a36Sopenharmony_ci	  which can be used to flood the DSP with test IPCs and gather stats
21762306a36Sopenharmony_ci	  about response times.
21862306a36Sopenharmony_ci	  Say Y if you want to enable IPC flood test.
21962306a36Sopenharmony_ci	  If unsure, select "N".
22062306a36Sopenharmony_ci
22162306a36Sopenharmony_ciconfig SND_SOC_SOF_DEBUG_IPC_FLOOD_TEST_NUM
22262306a36Sopenharmony_ci	int "Number of IPC flood test clients"
22362306a36Sopenharmony_ci	range 1 32
22462306a36Sopenharmony_ci	default 2
22562306a36Sopenharmony_ci	depends on SND_SOC_SOF_DEBUG_IPC_FLOOD_TEST
22662306a36Sopenharmony_ci	help
22762306a36Sopenharmony_ci	  Select the number of IPC flood test clients to be created.
22862306a36Sopenharmony_ci
22962306a36Sopenharmony_ciconfig SND_SOC_SOF_DEBUG_IPC_MSG_INJECTOR
23062306a36Sopenharmony_ci	tristate "SOF enable IPC message injector"
23162306a36Sopenharmony_ci	depends on SND_SOC_SOF
23262306a36Sopenharmony_ci	select SND_SOC_SOF_CLIENT
23362306a36Sopenharmony_ci	help
23462306a36Sopenharmony_ci	  This option enables the IPC message injector which can be used to send
23562306a36Sopenharmony_ci	  crafted IPC messages to the DSP to test its robustness.
23662306a36Sopenharmony_ci	  Say Y if you want to enable the IPC message injector.
23762306a36Sopenharmony_ci	  If unsure, select "N".
23862306a36Sopenharmony_ci
23962306a36Sopenharmony_ciconfig SND_SOC_SOF_DEBUG_IPC_KERNEL_INJECTOR
24062306a36Sopenharmony_ci	tristate "SOF enable IPC kernel injector"
24162306a36Sopenharmony_ci	depends on SND_SOC_SOF
24262306a36Sopenharmony_ci	select SND_SOC_SOF_CLIENT
24362306a36Sopenharmony_ci	help
24462306a36Sopenharmony_ci	  This option enables the IPC kernel injector which can be used to send
24562306a36Sopenharmony_ci	  crafted IPC messages to the kernel to test its robustness against
24662306a36Sopenharmony_ci	  DSP messages.
24762306a36Sopenharmony_ci	  Say Y if you want to enable the IPC kernel injector.
24862306a36Sopenharmony_ci	  If unsure, select "N".
24962306a36Sopenharmony_ci
25062306a36Sopenharmony_ciconfig SND_SOC_SOF_DEBUG_RETAIN_DSP_CONTEXT
25162306a36Sopenharmony_ci	bool "SOF retain DSP context on any FW exceptions"
25262306a36Sopenharmony_ci	help
25362306a36Sopenharmony_ci	  This option keeps the DSP in D0 state so that firmware debug
25462306a36Sopenharmony_ci	  information can be retained and dumped to userspace.
25562306a36Sopenharmony_ci	  Say Y if you want to retain DSP context for FW exceptions.
25662306a36Sopenharmony_ci	  If unsure, select "N".
25762306a36Sopenharmony_ci
25862306a36Sopenharmony_ciendif ## SND_SOC_SOF_DEBUG
25962306a36Sopenharmony_ci
26062306a36Sopenharmony_ciendif ## SND_SOC_SOF_DEVELOPER_SUPPORT
26162306a36Sopenharmony_ci
26262306a36Sopenharmony_ciconfig SND_SOC_SOF
26362306a36Sopenharmony_ci	tristate
26462306a36Sopenharmony_ci	select SND_SOC_TOPOLOGY
26562306a36Sopenharmony_ci	select SND_SOC_SOF_NOCODEC if SND_SOC_SOF_NOCODEC_SUPPORT
26662306a36Sopenharmony_ci	select SND_SOC_SOF_NOCODEC if SND_SOC_SOF_NOCODEC_DEBUG_SUPPORT
26762306a36Sopenharmony_ci	help
26862306a36Sopenharmony_ci	  This option is not user-selectable but automagically handled by
26962306a36Sopenharmony_ci	  'select' statements at a higher level.
27062306a36Sopenharmony_ci	  The selection is made at the top level and does not exactly follow
27162306a36Sopenharmony_ci	  module dependencies but since the module or built-in type is decided
27262306a36Sopenharmony_ci	  at the top level it doesn't matter.
27362306a36Sopenharmony_ci
27462306a36Sopenharmony_ciconfig SND_SOC_SOF_PROBE_WORK_QUEUE
27562306a36Sopenharmony_ci	bool
27662306a36Sopenharmony_ci	help
27762306a36Sopenharmony_ci	  This option is not user-selectable but automagically handled by
27862306a36Sopenharmony_ci	  'select' statements at a higher level.
27962306a36Sopenharmony_ci	  When selected, the probe is handled in two steps, for example to
28062306a36Sopenharmony_ci	  avoid lockdeps if request_module is used in the probe.
28162306a36Sopenharmony_ci
28262306a36Sopenharmony_ci# Supported IPC versions
28362306a36Sopenharmony_ciconfig SND_SOC_SOF_IPC3
28462306a36Sopenharmony_ci	bool
28562306a36Sopenharmony_ci
28662306a36Sopenharmony_ciconfig SND_SOC_SOF_INTEL_IPC4
28762306a36Sopenharmony_ci	bool
28862306a36Sopenharmony_ci
28962306a36Sopenharmony_cisource "sound/soc/sof/amd/Kconfig"
29062306a36Sopenharmony_cisource "sound/soc/sof/imx/Kconfig"
29162306a36Sopenharmony_cisource "sound/soc/sof/intel/Kconfig"
29262306a36Sopenharmony_cisource "sound/soc/sof/mediatek/Kconfig"
29362306a36Sopenharmony_cisource "sound/soc/sof/xtensa/Kconfig"
29462306a36Sopenharmony_ci
29562306a36Sopenharmony_ciendif
296