linux_dsm_epyc7002/sound/pci
Takashi Iwai e6feb5d085 ALSA: hda - Support advanced power state controls
This patch enables the finer power state control of each widget
depending on the jack plug state and streaming state in addition to
the existing power_down_unused power optimization.  The new feature is
enabled only when codec->power_mgmt flag is set.

Two new flags, pin_enabled and stream_enabled, are introduced in
nid_path struct for marking the two individual power states: the pin
plug/unplug and DAC/ADC stream, respectively.  They can be set
statically in case they are static routes (e.g. some mixer paths),
too.

The power up and down events for each pin are triggered via the
standard hda_jack table.  The call order is hard-coded, relying on the
current implementation of jack event chain (a la FILO/stack order).

One point to be dealt carefully is that DAC/ADC cannot be powered
on/off while streaming.  They are pinned as long as the stream is
running.  For controlling the power of DAC/ADC, a new patch_ops is
added.  The generic parser provides the default callback for that.

As of this patch, only IDT/Sigmatel codec driver enables the flag.
The support on other codecs will follow.

An assumption we made in this code is that the widget state (e.g. amp,
pinctl, connections) remains after the widget power transition (not
about FG power transition).  This is true for IDT codecs, at least.
But if the widget state is lost at widget power transition, we'd need
to implement additional code to sync the cached amp/verbs for the
specific NID.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2015-03-18 09:22:28 +01:00
..
ac97 ALSA: ac97: ac97_patch: Simplify patch_vt1613_specific() 2015-03-06 17:47:27 +01:00
ali5451 ALSA: Include linux/io.h instead of asm/io.h 2015-01-28 16:49:33 +01:00
asihpi ALSA: Include linux/uaccess.h and linux/bitopts.h instead of asm/* 2015-01-28 17:25:07 +01:00
au88x0 ALSA: au88x0: Remove superfluous ifdef __KERNEL__ 2015-01-28 17:26:45 +01:00
aw2 ALSA: Include linux/io.h instead of asm/io.h 2015-01-28 16:49:33 +01:00
ca0106 ALSA: Include linux/io.h instead of asm/io.h 2015-01-28 16:49:33 +01:00
cs46xx ALSA: Include linux/io.h instead of asm/io.h 2015-01-28 16:49:33 +01:00
cs5535audio ALSA: Include linux/io.h instead of asm/io.h 2015-01-28 16:49:33 +01:00
ctxfi Merge branch 'topic/pci-cleanup' into for-next 2015-01-11 11:26:48 +01:00
echoaudio ALSA: Include linux/io.h instead of asm/io.h 2015-01-28 16:49:33 +01:00
emu10k1 ALSA: seq: Define driver object in each driver 2015-02-12 14:15:54 +01:00
hda ALSA: hda - Support advanced power state controls 2015-03-18 09:22:28 +01:00
ice1712 Merge branch 'topic/ak411x-fix' into for-next 2015-01-28 22:32:10 +01:00
korg1212 ALSA: Include linux/io.h instead of asm/io.h 2015-01-28 16:49:33 +01:00
lola ALSA: Deletion of checks before the function call "iounmap" 2015-01-04 15:13:45 +01:00
lx6464es ALSA: Fix invalid kerneldoc markers 2014-11-11 09:39:17 +01:00
mixart ALSA: Include linux/io.h instead of asm/io.h 2015-01-28 16:49:33 +01:00
nm256 ALSA: Include linux/io.h instead of asm/io.h 2015-01-28 16:49:33 +01:00
oxygen ALSA: Include linux/io.h instead of asm/io.h 2015-01-28 16:49:33 +01:00
pcxhr ALSA: Include linux/io.h instead of asm/io.h 2015-01-28 16:49:33 +01:00
riptide ALSA: off by one bug in snd_riptide_joystick_probe() 2015-02-09 14:57:15 +01:00
rme9652 ALSA: hdspm - DRY cleanup of snd_pcm_ops 2015-02-17 07:40:36 +01:00
trident ALSA: Include linux/io.h instead of asm/io.h 2015-01-28 16:49:33 +01:00
vx222 ALSA: Include linux/io.h instead of asm/io.h 2015-01-28 16:49:33 +01:00
ymfpci ALSA: Include linux/io.h instead of asm/io.h 2015-01-28 16:49:33 +01:00
ad1889.c ALSA: Include linux/io.h instead of asm/io.h 2015-01-28 16:49:33 +01:00
ad1889.h
ak4531_codec.c ALSA: pci: remove __dev* attributes 2012-12-07 07:20:55 +01:00
als300.c ALSA: Include linux/io.h instead of asm/io.h 2015-01-28 16:49:33 +01:00
als4000.c ALSA: Include linux/io.h instead of asm/io.h 2015-01-28 16:49:33 +01:00
atiixp_modem.c ALSA: Include linux/io.h instead of asm/io.h 2015-01-28 16:49:33 +01:00
atiixp.c ALSA: Include linux/io.h instead of asm/io.h 2015-01-28 16:49:33 +01:00
azt3328.c ALSA: azt3328: some indenting cleanups 2015-02-25 20:08:35 +01:00
azt3328.h ALSA: azt3328: fix previous breakage, improve suspend, cleanups 2009-07-15 12:03:26 +02:00
bt87x.c ALSA: Include linux/io.h instead of asm/io.h 2015-01-28 16:49:33 +01:00
cmipci.c ALSA: cmipci: remove a stray space character 2015-02-25 20:08:44 +01:00
cs4281.c ALSA: Include linux/io.h instead of asm/io.h 2015-01-28 16:49:33 +01:00
cs5530.c ASoC: sb16: Simplify snd_sb16dsp_pcm() 2015-01-02 16:28:35 +01:00
ens1370.c ALSA: Include linux/io.h instead of asm/io.h 2015-01-28 16:49:33 +01:00
ens1371.c
es1938.c ALSA: Include linux/io.h instead of asm/io.h 2015-01-28 16:49:33 +01:00
es1968.c ALSA: Include linux/io.h instead of asm/io.h 2015-01-28 16:49:33 +01:00
fm801.c ALSA: fm801: remove FSF address 2015-01-11 11:27:13 +01:00
intel8x0.c ALSA: Include linux/io.h instead of asm/io.h 2015-01-28 16:49:33 +01:00
intel8x0m.c ALSA: Include linux/io.h instead of asm/io.h 2015-01-28 16:49:33 +01:00
Kconfig ALSA: add Studio Evolution SE6X support 2015-01-16 22:44:56 +01:00
maestro3.c ALSA: Include linux/io.h instead of asm/io.h 2015-01-28 16:49:33 +01:00
Makefile ALSA: Add the driver for Digigram Lola PCI-e boards 2011-05-03 16:31:05 +02:00
rme32.c ALSA: Include linux/io.h instead of asm/io.h 2015-01-28 16:49:33 +01:00
rme96.c ALSA: Include linux/io.h instead of asm/io.h 2015-01-28 16:49:33 +01:00
sis7019.c Merge branch 'topic/pci-cleanup' into for-next 2015-01-11 11:26:48 +01:00
sis7019.h trivial: fix typos s/paramter/parameter/ and s/excute/execute/ in documentation and source comments. 2009-06-12 18:01:46 +02:00
sonicvibes.c ALSA: Include linux/io.h instead of asm/io.h 2015-01-28 16:49:33 +01:00
via82xx_modem.c ALSA: Include linux/io.h instead of asm/io.h 2015-01-28 16:49:33 +01:00
via82xx.c ALSA: Include linux/io.h instead of asm/io.h 2015-01-28 16:49:33 +01:00