xref: /openbmc/linux/sound/soc/sof/Kconfig (revision d87c25e8)
1# SPDX-License-Identifier: GPL-2.0-only
2menuconfig SND_SOC_SOF_TOPLEVEL
3	bool "Sound Open Firmware Support"
4	help
5	  This adds support for Sound Open Firmware (SOF). SOF is free and
6	  generic open source audio DSP firmware for multiple devices.
7	  Say Y if you have such a device that is supported by SOF.
8	  If unsure select "N".
9
10if SND_SOC_SOF_TOPLEVEL
11
12config SND_SOC_SOF_PCI_DEV
13	tristate
14
15config SND_SOC_SOF_PCI
16	tristate "SOF PCI enumeration support"
17	depends on PCI
18	help
19	  This adds support for PCI enumeration. This option is
20	  required to enable Intel Skylake+ devices.
21	  For backwards-compatibility with previous configurations the selection will
22	  be used as default for platform-specific drivers.
23	  Say Y if you need this option.
24	  If unsure select "N".
25
26config SND_SOC_SOF_ACPI
27	tristate "SOF ACPI enumeration support"
28	depends on ACPI || COMPILE_TEST
29	help
30	  This adds support for ACPI enumeration. This option is required
31	  to enable Intel Broadwell/Baytrail/Cherrytrail devices.
32	  For backwards-compatibility with previous configurations the selection will
33	  be used as default for platform-specific drivers.
34	  Say Y if you need this option.
35	  If unsure select "N".
36
37config SND_SOC_SOF_ACPI_DEV
38	tristate
39
40config SND_SOC_SOF_OF
41	tristate "SOF OF enumeration support"
42	depends on OF || COMPILE_TEST
43	help
44	  This adds support for Device Tree enumeration. This option is
45	  required to enable i.MX8 or Mediatek devices.
46	  Say Y if you need this option. If unsure select "N".
47
48config SND_SOC_SOF_OF_DEV
49	tristate
50
51config SND_SOC_SOF_COMPRESS
52	bool
53	select SND_SOC_COMPRESS
54
55config SND_SOC_SOF_DEBUG_PROBES
56	bool "SOF enable data probing"
57	select SND_SOC_COMPRESS
58	help
59	  This option enables the data probing feature that can be used to
60	  gather data directly from specific points of the audio pipeline.
61	  Say Y if you want to enable probes.
62	  If unsure, select "N".
63
64config SND_SOC_SOF_DEVELOPER_SUPPORT
65	bool "SOF developer options support"
66	depends on EXPERT && SND_SOC_SOF
67	help
68	  This option unlocks SOF developer options for debug/performance/
69	  code hardening.
70	  Distributions should not select this option, only SOF development
71	  teams should select it.
72	  Say Y if you are involved in SOF development and need this option.
73	  If not, select N.
74
75if SND_SOC_SOF_DEVELOPER_SUPPORT
76
77config SND_SOC_SOF_FORCE_PROBE_WORKQUEUE
78	bool "SOF force probe workqueue"
79	select SND_SOC_SOF_PROBE_WORK_QUEUE
80	help
81	  This option forces the use of a probe workqueue, which is only used
82	  when HDaudio is enabled due to module dependencies. Forcing this
83	  option is intended for debug only, but this should not add any
84	  functional issues in nominal cases.
85	  Say Y if you are involved in SOF development and need this option.
86	  If not, select N.
87
88config SND_SOC_SOF_NOCODEC
89	tristate
90
91config SND_SOC_SOF_NOCODEC_SUPPORT
92	bool "SOF nocodec mode support"
93	help
94	  This adds support for a dummy/nocodec machine driver fallback
95	  option if no known codec is detected. This is typically only
96	  enabled for developers or devices where the sound card is
97	  controlled externally.
98	  This option is mutually exclusive with the Intel HDAudio support.
99	  Selecting it may have negative impacts and prevent e.g. microphone
100	  functionality from being enabled on Intel CoffeeLake and later
101	  platforms.
102	  Distributions should not select this option!
103	  Say Y if you need this nocodec fallback option.
104	  If unsure select "N".
105
106config SND_SOC_SOF_STRICT_ABI_CHECKS
107	bool "SOF strict ABI checks"
108	help
109	  This option enables strict ABI checks for firmware and topology
110	  files.
111	  When these files are more recent than the kernel, the kernel
112	  will handle the functionality it supports and may report errors
113	  during topology creation or run-time usage if new functionality
114	  is invoked.
115	  This option will stop topology creation and firmware load upfront.
116	  It is intended for SOF CI/releases and not for users or distros.
117	  Say Y if you want strict ABI checks for an SOF release.
118	  If you are not involved in SOF releases and CI development,
119	  select "N".
120
121config SND_SOC_SOF_DEBUG
122	bool "SOF debugging features"
123	help
124	  This option can be used to enable or disable individual SOF firmware
125	  and driver debugging options.
126	  Say Y if you are debugging SOF FW or drivers.
127	  If unsure select "N".
128
129if SND_SOC_SOF_DEBUG
130
131config SND_SOC_SOF_FORCE_NOCODEC_MODE
132	bool "SOF force nocodec Mode"
133	depends on SND_SOC_SOF_NOCODEC_SUPPORT
134	help
135	  This forces SOF to use dummy/nocodec as machine driver, even
136	  though there is a codec detected on the real platform. This is
137	  typically only enabled for developers for debug purposes, before
138	  codec/machine driver is ready, or to exclude the impact of those
139	  drivers.
140	  Say Y if you need this force nocodec mode option.
141	  If unsure select "N".
142
143config SND_SOC_SOF_DEBUG_XRUN_STOP
144	bool "SOF stop on XRUN"
145	help
146	  This option forces PCMs to stop on any XRUN event. This is useful to
147	  preserve any trace data and pipeline status prior to the XRUN.
148	  Say Y if you are debugging SOF FW pipeline XRUNs.
149	  If unsure select "N".
150
151config SND_SOC_SOF_DEBUG_VERBOSE_IPC
152	bool "SOF verbose IPC logs"
153	help
154	  This option enables more verbose IPC logs, with command types in
155	  human-readable form instead of just 32-bit hex dumps. This is useful
156	  if you are trying to debug IPC with the DSP firmware.
157	  If unsure select "N".
158
159config SND_SOC_SOF_DEBUG_FORCE_IPC_POSITION
160	bool "SOF force to use IPC for position update on SKL+"
161	help
162	  This option forces to handle stream position update IPCs and run PCM
163	  elapse to inform ALSA about that, on platforms (e.g. Intel SKL+) that
164	  with other approach (e.g. HDAC DPIB/posbuf) to elapse PCM.
165	  On platforms (e.g. Intel SKL-) where position update IPC is the only
166	  one choice, this setting won't impact anything.
167	  If you are trying to debug pointer update with position IPCs or where
168	  DPIB/posbuf is not ready, select "Y".
169	  If unsure select "N".
170
171config SND_SOC_SOF_DEBUG_ENABLE_DEBUGFS_CACHE
172	bool "SOF enable debugfs caching"
173	help
174	  This option enables caching of debugfs
175	  memory -> DSP resource (memory, register, etc)
176	  before the audio DSP is suspended. This will increase the suspend
177	  latency and therefore should be used for debug purposes only.
178	  Say Y if you want to enable caching the memory windows.
179	  If unsure, select "N".
180
181config SND_SOC_SOF_DEBUG_ENABLE_FIRMWARE_TRACE
182	bool "SOF enable firmware trace"
183	help
184	  The firmware trace can be enabled either at build-time with
185	  this option, or dynamically by setting flags in the SOF core
186	  module parameter (similar to dynamic debug).
187	  If unsure, select "N".
188
189config SND_SOC_SOF_DEBUG_IPC_FLOOD_TEST
190	bool "SOF enable IPC flood test"
191	help
192	  This option enables the IPC flood test which can be used to flood
193	  the DSP with test IPCs and gather stats about response times.
194	  Say Y if you want to enable IPC flood test.
195	  If unsure, select "N".
196
197config SND_SOC_SOF_DEBUG_IPC_MSG_INJECTOR
198	bool "SOF enable IPC message injector"
199	help
200	  This option enables the IPC message injector which can be used to send
201	  crafted IPC messages to the DSP to test its robustness.
202	  Say Y if you want to enable the IPC message injector.
203	  If unsure, select "N".
204
205config SND_SOC_SOF_DEBUG_RETAIN_DSP_CONTEXT
206	bool "SOF retain DSP context on any FW exceptions"
207	help
208	  This option keeps the DSP in D0 state so that firmware debug
209	  information can be retained and dumped to userspace.
210	  Say Y if you want to retain DSP context for FW exceptions.
211	  If unsure, select "N".
212
213endif ## SND_SOC_SOF_DEBUG
214
215endif ## SND_SOC_SOF_DEVELOPER_SUPPORT
216
217config SND_SOC_SOF
218	tristate
219	select SND_SOC_TOPOLOGY
220	select SND_SOC_SOF_NOCODEC if SND_SOC_SOF_NOCODEC_SUPPORT
221	help
222	  This option is not user-selectable but automagically handled by
223	  'select' statements at a higher level.
224	  The selection is made at the top level and does not exactly follow
225	  module dependencies but since the module or built-in type is decided
226	  at the top level it doesn't matter.
227
228config SND_SOC_SOF_PROBE_WORK_QUEUE
229	bool
230	help
231	  This option is not user-selectable but automagically handled by
232	  'select' statements at a higher level.
233	  When selected, the probe is handled in two steps, for example to
234	  avoid lockdeps if request_module is used in the probe.
235
236source "sound/soc/sof/amd/Kconfig"
237source "sound/soc/sof/imx/Kconfig"
238source "sound/soc/sof/intel/Kconfig"
239source "sound/soc/sof/mediatek/Kconfig"
240source "sound/soc/sof/xtensa/Kconfig"
241
242endif
243