Lines Matching +full:audio +full:- +full:codec
2 Dynamic Audio Power Management for Portable Devices
8 Dynamic Audio Power Management (DAPM) is designed to allow portable
9 Linux devices to use the minimum amount of power within the audio
11 management frameworks and, as such, can easily co-exist with them.
16 switching decisions based upon any audio stream (capture/playback)
17 activity and audio mixer settings within the device.
21 * a **widget** is every part of the audio hardware that can be enabled by
27 audio routing graph. This graph is specific to each sound card and spans
29 different components (e.g. the LINE OUT pin of a CODEC and the input pin of
32 The graph for the STM32MP1-DK1 sound card is shown in picture:
34 .. kernel-figure:: dapm-graph.svg
39 `tools/sound/dapm-graph` utility.
46 Codec bias domain
47 VREF, VMID (core codec and audio power)
49 Usually controlled at codec probe/remove and suspend/resume, although
60 audio subsystem signal paths
75 Audio DAPM widgets fall into a number of types:
90 A codec input pin
92 A codec output pin
104 External regulator that supplies power to audio components.
106 External clock that supplies clock to audio components.
108 Audio Interface Input (with TDM slot mask).
110 Audio Interface Output (with TDM slot mask).
114 Digital Audio Interface Input.
116 Digital Audio Interface Output.
124 Inter widget audio data buffer within a DSP.
129 Widget that performs an audio processing effect.
131 Sample Rate Converter within DSP or CODEC
133 Asynchronous Sample Rate Converter within DSP or CODEC
135 Widget that encodes audio data from one format (usually PCM) to another
138 Widget that decodes audio data from a compressed format to an
142 (Widgets are defined in include/sound/soc-dapm.h)
145 There are convenience macros defined in soc-dapm.h that can be used to quickly
153 ---------------------
165 NOTE: the stream name must match the corresponding stream name in your codec
182 -------------------
184 Path domain widgets have a ability to control or affect the audio signal or
185 audio paths within the audio subsystem. They have the following form:
211 ----------------------
213 Machine widgets are different from codec widgets in that they don't have a
214 codec register bit associated with them. A machine widget is assigned to each
215 machine audio component (non codec or DSP) that can be independently
236 Codec (BIAS) Domain
237 -------------------
239 The codec bias power domain has no widgets and is handled by the codec DAPM
240 event handler. This handler is called when the codec powerstate is changed wrt
245 ---------------
247 Sometimes widgets exist in the codec or machine audio graph that don't have any
249 a virtual widget - a widget with no control bits e.g.
260 const struct snd_soc_dapm_widget`` array in a codec driver, and simply
296 separate widgets and routes arrays implementing the case-specific features
301 Codec/DSP Widget Interconnections
304 Widgets are connected to each other within the codec, platform and machine by
305 audio paths (called interconnections). Each interconnection must be defined in
306 order to create a graph of all audio paths between widgets.
308 This is easiest with a diagram of the codec or DSP (and schematic of the machine
309 audio system), as it requires joining widgets together via their audio signal
320 name. We can now connect the destination widget (wrt audio signal) with its
339 snd_soc_dapm_connect_input(codec, sink, path, source);
343 scan the codec and machine so that the internal DAPM state matches the
348 -------------------------------
349 Machine widget interconnections are created in the same way as codec ones and
350 directly connect the codec pins to machine level widgets.
352 e.g. connects the speaker out codec pins to the internal speaker.
355 /* ext speaker connected to codec pins LOUT2, ROUT2 */
365 An endpoint is a start or end point (widget) of an audio signal within the
366 machine and includes the codec. e.g.
372 * Codec Pins
404 See soc-dapm.h for all other widgets that support events.
408 -----------
417 #define SND_SOC_DAPM_PRE_REG 0x10 /* before audio path setup */
418 #define SND_SOC_DAPM_POST_REG 0x20 /* after audio path setup */