linux/sound
Richard Purdie 2b97eabc09 [ALSA] ASoC: dynamic audio power management (DAPM)
This patch adds Dynamic Audio Power Management (DAPM) to ASoC.
Dynamic Audio Power Management (DAPM) is designed to allow portable and
handheld Linux devices to use the minimum amount of power within the
audio subsystem at all times. It is independent of other kernel PM and
as such, can easily co-exist with the other PM systems.
DAPM is also completely transparent to all user space applications as
all power switching is done within the ASoC core. No code changes or
recompiling are required for user space applications. DAPM makes power
switching decisions based upon any audio stream (capture/playback)
activity and audio mixer settings within the device.
DAPM spans the whole machine. It covers power control within the entire
audio subsystem, this includes internal codec power blocks and machine
level power systems.
There are 4 power domains within DAPM:-
1. Codec domain - VREF, VMID (core codec and audio power)
Usually controlled at codec probe/remove and suspend/resume, although
can be set at stream time if power is not needed for sidetone, etc.
2. Platform/Machine domain - physically connected inputs and outputs
Is platform/machine and user action specific, is configured by the
machine driver and responds to asynchronous events e.g when HP are
inserted
3. Path domain - audio subsystem signal paths
Automatically set when mixer and mux settings are changed by the user.
e.g. alsamixer, amixer.
4. Stream domain - DAC's and ADC's.
Enabled and disabled when stream playback/capture is started and stopped
respectively. e.g. aplay, arecord.
All DAPM power switching decisions are made automatically by consulting
an audio routing map of the whole machine. This map is specific to each
machine and consists of the interconnections between every audio
component (including internal codec components).

Signed-off-by: Richard Purdie <rpurdie@rpsys.net>
Signed-off-by: Liam Girdwood <liam.girdwood@wolfsonmicro.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Jaroslav Kysela <perex@suse.cz>
2007-02-09 09:00:18 +01:00
..
aoa [ALSA] aoa: fix up i2sbus_attach_codec 2007-02-09 09:00:09 +01:00
arm [PATCH] make 1-bit bitfields unsigned 2006-12-07 08:39:38 -08:00
core [ALSA] pcm core: add prealloc_max file to substream directory to show maximum DMA size 2007-02-09 09:00:13 +01:00
drivers [PATCH] remove config ordering/dependency between ucb1400-ts and sound subsystem 2006-12-12 10:43:21 -08:00
i2c [ALSA] Enable the analog loopback of the Revolution 5.1 2007-02-09 09:00:05 +01:00
isa [ALSA] Remove IRQF_DISABLED for shared PCI irqs 2006-12-20 08:55:57 +01:00
mips IRQ: Maintain regs pointer globally rather than passing to IRQ handlers 2006-10-05 15:10:12 +01:00
oss [PATCH] more work_struct fixes: tas300x sound drivers 2006-12-17 19:07:21 -08:00
parisc IRQ: Maintain regs pointer globally rather than passing to IRQ handlers 2006-10-05 15:10:12 +01:00
pci [ALSA] intel8x0 - Use pci_iomap 2007-02-09 09:00:14 +01:00
pcmcia [PATCH] pcmcia: conf.ConfigBase and conf.Present consolidation 2006-12-04 20:12:02 -05:00
ppc WorkStruct: make allyesconfig 2006-11-22 14:57:56 +00:00
soc [ALSA] ASoC: dynamic audio power management (DAPM) 2007-02-09 09:00:18 +01:00
sparc [SOUND] Sparc CS4231: Use 64 for period_bytes_min 2007-01-03 18:51:54 -08:00
synth [ALSA] Fix disconnection of proc interface 2006-09-23 10:36:48 +02:00
usb [ALSA] usb-audio: allow pausing 2007-02-09 09:00:02 +01:00
ac97_bus.c [PATCH] remove config ordering/dependency between ucb1400-ts and sound subsystem 2006-12-12 10:43:21 -08:00
Kconfig [PATCH] remove config ordering/dependency between ucb1400-ts and sound subsystem 2006-12-12 10:43:21 -08:00
last.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
Makefile [PATCH] remove config ordering/dependency between ucb1400-ts and sound subsystem 2006-12-12 10:43:21 -08:00
sound_core.c Driver core: convert sound core to use struct device 2006-12-01 14:52:01 -08:00
sound_firmware.c [PATCH] struct path: convert sound 2006-12-08 08:28:49 -08:00