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