| # SPDX-License-Identifier: GPL-2.0-only |
| menuconfig SND_SOC_SOF_TOPLEVEL |
| bool "Sound Open Firmware Support" |
| help |
| This adds support for Sound Open Firmware (SOF). SOF is free and |
| generic open source audio DSP firmware for multiple devices. |
| Say Y if you have such a device that is supported by SOF. |
| If unsure select "N". |
| |
| if SND_SOC_SOF_TOPLEVEL |
| |
| config SND_SOC_SOF_PCI_DEV |
| tristate |
| |
| config SND_SOC_SOF_PCI |
| tristate "SOF PCI enumeration support" |
| depends on PCI |
| help |
| This adds support for PCI enumeration. This option is |
| required to enable Intel Skylake+ devices. |
| For backwards-compatibility with previous configurations the selection will |
| be used as default for platform-specific drivers. |
| Say Y if you need this option. |
| If unsure select "N". |
| |
| config SND_SOC_SOF_ACPI |
| tristate "SOF ACPI enumeration support" |
| depends on ACPI || COMPILE_TEST |
| help |
| This adds support for ACPI enumeration. This option is required |
| to enable Intel Broadwell/Baytrail/Cherrytrail devices. |
| For backwards-compatibility with previous configurations the selection will |
| be used as default for platform-specific drivers. |
| Say Y if you need this option. |
| If unsure select "N". |
| |
| config SND_SOC_SOF_ACPI_DEV |
| tristate |
| |
| config SND_SOC_SOF_OF |
| tristate "SOF OF enumeration support" |
| depends on OF |
| help |
| This adds support for Device Tree enumeration. This option is |
| required to enable i.MX8 or Mediatek devices. |
| Say Y if you need this option. If unsure select "N". |
| |
| config SND_SOC_SOF_OF_DEV |
| tristate |
| |
| config SND_SOC_SOF_COMPRESS |
| bool |
| select SND_SOC_COMPRESS |
| |
| config SND_SOC_SOF_DEBUG_PROBES |
| tristate |
| select SND_SOC_SOF_CLIENT |
| select SND_SOC_COMPRESS |
| help |
| This option enables the data probing feature that can be used to |
| gather data directly from specific points of the audio pipeline. |
| This option is not user-selectable but automagically handled by |
| 'select' statements at a higher level. |
| |
| config SND_SOC_SOF_CLIENT |
| tristate |
| select AUXILIARY_BUS |
| help |
| This option is not user-selectable but automagically handled by |
| 'select' statements at a higher level. |
| |
| config SND_SOC_SOF_DEVELOPER_SUPPORT |
| bool "SOF developer options support" |
| depends on EXPERT && SND_SOC_SOF |
| help |
| This option unlocks SOF developer options for debug/performance/ |
| code hardening. |
| Distributions should not select this option, only SOF development |
| teams should select it. |
| Say Y if you are involved in SOF development and need this option. |
| If not, select N. |
| |
| if SND_SOC_SOF_DEVELOPER_SUPPORT |
| |
| config SND_SOC_SOF_FORCE_PROBE_WORKQUEUE |
| bool "SOF force probe workqueue" |
| select SND_SOC_SOF_PROBE_WORK_QUEUE |
| help |
| This option forces the use of a probe workqueue, which is only used |
| when HDaudio is enabled due to module dependencies. Forcing this |
| option is intended for debug only, but this should not add any |
| functional issues in nominal cases. |
| Say Y if you are involved in SOF development and need this option. |
| If not, select N. |
| |
| config SND_SOC_SOF_NOCODEC |
| tristate |
| |
| config SND_SOC_SOF_NOCODEC_SUPPORT |
| bool "SOF nocodec static mode support" |
| help |
| This adds support for a dummy/nocodec machine driver fallback |
| option if no known codec is detected. This is typically only |
| enabled for developers or devices where the sound card is |
| controlled externally. |
| This option is mutually exclusive at build time with the Intel HDAudio support. |
| Selecting it may have negative impacts and prevent e.g. microphone |
| functionality from being enabled on Intel CoffeeLake and later |
| platforms. |
| Distributions should not select this option! |
| Say Y if you need this nocodec fallback option. |
| If unsure select "N". |
| |
| config SND_SOC_SOF_STRICT_ABI_CHECKS |
| bool "SOF strict ABI checks" |
| help |
| This option enables strict ABI checks for firmware and topology |
| files. |
| When these files are more recent than the kernel, the kernel |
| will handle the functionality it supports and may report errors |
| during topology creation or run-time usage if new functionality |
| is invoked. |
| This option will stop topology creation and firmware load upfront. |
| It is intended for SOF CI/releases and not for users or distros. |
| Say Y if you want strict ABI checks for an SOF release. |
| If you are not involved in SOF releases and CI development, |
| select "N". |
| |
| config SND_SOC_SOF_ALLOW_FALLBACK_TO_NEWER_IPC_VERSION |
| bool "SOF allow fallback to newer IPC version" |
| help |
| This option will allow the kernel to try to 'fallback' to a newer IPC |
| version if there are missing firmware files to satisfy the default IPC |
| version. |
| IPC version fallback to older versions is not affected by this option, |
| it is always available. |
| Say Y if you are involved in SOF development and need this option. |
| If not, select N. |
| |
| config SND_SOC_SOF_DEBUG |
| bool "SOF debugging features" |
| help |
| This option can be used to enable or disable individual SOF firmware |
| and driver debugging options. |
| Say Y if you are debugging SOF FW or drivers. |
| If unsure select "N". |
| |
| if SND_SOC_SOF_DEBUG |
| |
| config SND_SOC_SOF_NOCODEC_DEBUG_SUPPORT |
| bool "SOF nocodec debug mode support" |
| depends on !SND_SOC_SOF_NOCODEC_SUPPORT |
| help |
| This adds support for a dummy/nocodec machine driver fallback |
| option. |
| Unlike the SND_SOC_SOF_NOCODEC_SUPPORT, this option is NOT |
| mutually exclusive at build with the Intel HDAudio support. The |
| selection will be done depending on command line or modprobe.d settings |
| Distributions should not select this option! |
| Say Y if you need this nocodec debug fallback option. |
| If unsure select "N". |
| |
| config SND_SOC_SOF_FORCE_NOCODEC_MODE |
| bool "SOF force nocodec Mode" |
| depends on SND_SOC_SOF_NOCODEC_SUPPORT |
| help |
| This forces SOF to use dummy/nocodec as machine driver, even |
| though there is a codec detected on the real platform. This is |
| typically only enabled for developers for debug purposes, before |
| codec/machine driver is ready, or to exclude the impact of those |
| drivers. |
| Say Y if you need this force nocodec mode option. |
| If unsure select "N". |
| |
| config SND_SOC_SOF_DEBUG_XRUN_STOP |
| bool "SOF stop on XRUN" |
| help |
| This option forces PCMs to stop on any XRUN event. This is useful to |
| preserve any trace data and pipeline status prior to the XRUN. |
| Say Y if you are debugging SOF FW pipeline XRUNs. |
| If unsure select "N". |
| |
| config SND_SOC_SOF_DEBUG_VERBOSE_IPC |
| bool "SOF verbose IPC logs" |
| help |
| This option enables more verbose IPC logs, with command types in |
| human-readable form instead of just 32-bit hex dumps. This is useful |
| if you are trying to debug IPC with the DSP firmware. |
| If unsure select "N". |
| |
| config SND_SOC_SOF_DEBUG_FORCE_IPC_POSITION |
| bool "SOF force to use IPC for position update on SKL+" |
| help |
| This option forces to handle stream position update IPCs and run PCM |
| elapse to inform ALSA about that, on platforms (e.g. Intel SKL+) that |
| with other approach (e.g. HDAC DPIB/posbuf) to elapse PCM. |
| On platforms (e.g. Intel SKL-) where position update IPC is the only |
| one choice, this setting won't impact anything. |
| If you are trying to debug pointer update with position IPCs or where |
| DPIB/posbuf is not ready, select "Y". |
| If unsure select "N". |
| |
| config SND_SOC_SOF_DEBUG_ENABLE_DEBUGFS_CACHE |
| bool "SOF enable debugfs caching" |
| help |
| This option enables caching of debugfs |
| memory -> DSP resource (memory, register, etc) |
| before the audio DSP is suspended. This will increase the suspend |
| latency and therefore should be used for debug purposes only. |
| Say Y if you want to enable caching the memory windows. |
| If unsure, select "N". |
| |
| config SND_SOC_SOF_DEBUG_ENABLE_FIRMWARE_TRACE |
| bool "SOF enable firmware trace" |
| help |
| The firmware trace can be enabled either at build-time with |
| this option, or dynamically by setting flags in the SOF core |
| module parameter (similar to dynamic debug). |
| If unsure, select "N". |
| |
| config SND_SOC_SOF_DEBUG_IPC_FLOOD_TEST |
| tristate "SOF enable IPC flood test" |
| depends on SND_SOC_SOF |
| select SND_SOC_SOF_CLIENT |
| help |
| This option enables a separate client device for IPC flood test |
| which can be used to flood the DSP with test IPCs and gather stats |
| about response times. |
| Say Y if you want to enable IPC flood test. |
| If unsure, select "N". |
| |
| config SND_SOC_SOF_DEBUG_IPC_FLOOD_TEST_NUM |
| int "Number of IPC flood test clients" |
| range 1 32 |
| default 2 |
| depends on SND_SOC_SOF_DEBUG_IPC_FLOOD_TEST |
| help |
| Select the number of IPC flood test clients to be created. |
| |
| config SND_SOC_SOF_DEBUG_IPC_MSG_INJECTOR |
| tristate "SOF enable IPC message injector" |
| depends on SND_SOC_SOF |
| select SND_SOC_SOF_CLIENT |
| help |
| This option enables the IPC message injector which can be used to send |
| crafted IPC messages to the DSP to test its robustness. |
| Say Y if you want to enable the IPC message injector. |
| If unsure, select "N". |
| |
| config SND_SOC_SOF_DEBUG_IPC_KERNEL_INJECTOR |
| tristate "SOF enable IPC kernel injector" |
| depends on SND_SOC_SOF |
| select SND_SOC_SOF_CLIENT |
| help |
| This option enables the IPC kernel injector which can be used to send |
| crafted IPC messages to the kernel to test its robustness against |
| DSP messages. |
| Say Y if you want to enable the IPC kernel injector. |
| If unsure, select "N". |
| |
| config SND_SOC_SOF_DEBUG_RETAIN_DSP_CONTEXT |
| bool "SOF retain DSP context on any FW exceptions" |
| help |
| This option keeps the DSP in D0 state so that firmware debug |
| information can be retained and dumped to userspace. |
| Say Y if you want to retain DSP context for FW exceptions. |
| If unsure, select "N". |
| |
| endif ## SND_SOC_SOF_DEBUG |
| |
| endif ## SND_SOC_SOF_DEVELOPER_SUPPORT |
| |
| config SND_SOC_SOF |
| tristate |
| select SND_SOC_TOPOLOGY |
| select SND_SOC_SOF_NOCODEC if SND_SOC_SOF_NOCODEC_SUPPORT |
| select SND_SOC_SOF_NOCODEC if SND_SOC_SOF_NOCODEC_DEBUG_SUPPORT |
| help |
| This option is not user-selectable but automagically handled by |
| 'select' statements at a higher level. |
| The selection is made at the top level and does not exactly follow |
| module dependencies but since the module or built-in type is decided |
| at the top level it doesn't matter. |
| |
| config SND_SOC_SOF_PROBE_WORK_QUEUE |
| bool |
| help |
| This option is not user-selectable but automagically handled by |
| 'select' statements at a higher level. |
| When selected, the probe is handled in two steps, for example to |
| avoid lockdeps if request_module is used in the probe. |
| |
| # Supported IPC versions |
| config SND_SOC_SOF_IPC3 |
| bool |
| |
| config SND_SOC_SOF_IPC4 |
| bool |
| |
| source "sound/soc/sof/amd/Kconfig" |
| source "sound/soc/sof/imx/Kconfig" |
| source "sound/soc/sof/intel/Kconfig" |
| source "sound/soc/sof/mediatek/Kconfig" |
| source "sound/soc/sof/xtensa/Kconfig" |
| |
| endif |