kernel-ark/sound/pci
Mengdong Lin b8dfc46241 ALSA: hda - add runtime PM support
Runtime PM can bring more power saving:
- When the controller is suspended, its parent device will also have a chance
  to suspend.
- PCI subsystem can choose the lowest power state the controller can signal
  wake up from. This state can be D3cold on platforms with ACPI PM support.
And runtime PM can provide a gerneral sysfs interface for a system policy
manager.

Runtime PM support is based on current HDA power saving implementation. The user
can enable runtime PM on platfroms that provide acceptable latency on transition
from D3 to D0.

Details:
- When both power saving and runtime PM are enabled:
  -- If a codec supports 'stop-clock' in D3, it will request suspending the
     controller after it enters D3 and request resuming the controller before
     back to D0. Thus the controller will be suspended only when all codecs are
     suspended and support stop-clock in D3.
  -- User IO operations and HW wakeup signal can resume the controller back to
     D0.
- If runtime PM is disabled, power saving just works as before.
- If power saving is disabled, the controller won't be suspended because the
  power usage counter can never be 0.

More about 'stop-clock' feature:
If a codec can support targeted pass-through operations in D3 state when there
is no BCLK present on the link, it will set CLKSTOP flag in the supported power
states and report PS-ClkStopOk when entering D3 state. Please refer to HDA spec
section 7.3.3.10 Power state and 7.3.4.12 Supported Power State.

[Fixed CONFIG_PM_RUNTIME dependency in hda_intel.c by tiwai]

Signed-off-by: Mengdong Lin <mengdong.lin@intel.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2012-08-23 14:21:32 +02:00
..
ac97 ALSA: module_param: make bool parameters really bool 2011-12-19 10:34:41 +01:00
ali5451 ALSA: PCI: Replace CONFIG_PM with CONFIG_PM_SLEEP 2012-08-14 18:12:04 +02:00
asihpi ALSA: PCI: Replace CONFIG_PM with CONFIG_PM_SLEEP 2012-08-14 18:12:04 +02:00
au88x0 ALSA: au88x0 - Remove unused "Master Mono" Playback Volume and Playback Switch of ac97 codec 2012-06-05 18:02:27 +02:00
aw2 ALSA: pci: clean up using module_pci_driver() 2012-04-24 12:25:00 +02:00
ca0106 ALSA: PCI: Replace CONFIG_PM with CONFIG_PM_SLEEP 2012-08-14 18:12:04 +02:00
cs46xx Merge branch 'for-linus' into for-next 2012-08-20 22:14:26 +02:00
cs5535audio ALSA: PCI: Replace CONFIG_PM with CONFIG_PM_SLEEP 2012-08-14 18:12:04 +02:00
ctxfi Merge branch 'for-linus' into for-next 2012-08-20 22:14:26 +02:00
echoaudio ALSA: PCI: Replace CONFIG_PM with CONFIG_PM_SLEEP 2012-08-14 18:12:04 +02:00
emu10k1 ALSA: PCI: Replace CONFIG_PM with CONFIG_PM_SLEEP 2012-08-14 18:12:04 +02:00
hda ALSA: hda - add runtime PM support 2012-08-23 14:21:32 +02:00
ice1712 ALSA: PCI: Replace CONFIG_PM with CONFIG_PM_SLEEP 2012-08-14 18:12:04 +02:00
korg1212 ALSA: pci: clean up using module_pci_driver() 2012-04-24 12:25:00 +02:00
lola ALSA: pci: clean up using module_pci_driver() 2012-04-24 12:25:00 +02:00
lx6464es ALSA: lx6464es: Add a missing error check 2012-08-14 17:42:11 +02:00
mixart ALSA: pci: clean up using module_pci_driver() 2012-04-24 12:25:00 +02:00
nm256 ALSA: PCI: Replace CONFIG_PM with CONFIG_PM_SLEEP 2012-08-14 18:12:04 +02:00
oxygen ALSA: PCI: Replace CONFIG_PM with CONFIG_PM_SLEEP 2012-08-14 18:12:04 +02:00
pcxhr ALSA: pcxhr: Add LTC support 2012-06-20 08:35:37 +02:00
riptide ALSA: PCI: Replace CONFIG_PM with CONFIG_PM_SLEEP 2012-08-14 18:12:04 +02:00
rme9652 ALSA: sound/pci/rme9652/hdspm.c: fix error return code 2012-08-20 11:00:51 +02:00
trident ALSA: PCI: Replace CONFIG_PM with CONFIG_PM_SLEEP 2012-08-14 18:12:04 +02:00
vx222 ALSA: PCI: Replace CONFIG_PM with CONFIG_PM_SLEEP 2012-08-14 18:12:04 +02:00
ymfpci ALSA: PCI: Replace CONFIG_PM with CONFIG_PM_SLEEP 2012-08-14 18:12:04 +02:00
ad1889.c ALSA: pci: clean up using module_pci_driver() 2012-04-24 12:25:00 +02:00
ad1889.h
ak4531_codec.c sound: Add module.h to the previously silent sound users 2011-10-31 19:31:21 -04:00
als300.c ALSA: PCI: Replace CONFIG_PM with CONFIG_PM_SLEEP 2012-08-14 18:12:04 +02:00
als4000.c ALSA: PCI: Replace CONFIG_PM with CONFIG_PM_SLEEP 2012-08-14 18:12:04 +02:00
atiixp_modem.c ALSA: PCI: Replace CONFIG_PM with CONFIG_PM_SLEEP 2012-08-14 18:12:04 +02:00
atiixp.c ALSA: PCI: Replace CONFIG_PM with CONFIG_PM_SLEEP 2012-08-14 18:12:04 +02:00
azt3328.c ALSA: PCI: Replace CONFIG_PM with CONFIG_PM_SLEEP 2012-08-14 18:12:04 +02:00
azt3328.h
bt87x.c ALSA: pci: clean up using module_pci_driver() 2012-04-24 12:25:00 +02:00
cmipci.c ALSA: PCI: Replace CONFIG_PM with CONFIG_PM_SLEEP 2012-08-14 18:12:04 +02:00
cs4281.c ALSA: PCI: Replace CONFIG_PM with CONFIG_PM_SLEEP 2012-08-14 18:12:04 +02:00
cs5530.c ALSA: pci: clean up using module_pci_driver() 2012-04-24 12:25:00 +02:00
ens1370.c ALSA: PCI: Replace CONFIG_PM with CONFIG_PM_SLEEP 2012-08-14 18:12:04 +02:00
ens1371.c
es1938.c ALSA: PCI: Replace CONFIG_PM with CONFIG_PM_SLEEP 2012-08-14 18:12:04 +02:00
es1968.c ALSA: PCI: Replace CONFIG_PM with CONFIG_PM_SLEEP 2012-08-14 18:12:04 +02:00
fm801.c ALSA: PCI: Replace CONFIG_PM with CONFIG_PM_SLEEP 2012-08-14 18:12:04 +02:00
intel8x0.c ALSA: PCI: Replace CONFIG_PM with CONFIG_PM_SLEEP 2012-08-14 18:12:04 +02:00
intel8x0m.c ALSA: PCI: Replace CONFIG_PM with CONFIG_PM_SLEEP 2012-08-14 18:12:04 +02:00
Kconfig Merge branch 'topic/misc' into for-linus 2012-05-21 12:51:35 +02:00
maestro3.c ALSA: PCI: Replace CONFIG_PM with CONFIG_PM_SLEEP 2012-08-14 18:12:04 +02:00
Makefile ALSA: Add the driver for Digigram Lola PCI-e boards 2011-05-03 16:31:05 +02:00
rme32.c ALSA: pci: clean up using module_pci_driver() 2012-04-24 12:25:00 +02:00
rme96.c ALSA: pci: clean up using module_pci_driver() 2012-04-24 12:25:00 +02:00
sis7019.c Merge branch 'for-linus' into for-next 2012-08-20 22:14:26 +02:00
sis7019.h
sonicvibes.c ALSA: pci: clean up using module_pci_driver() 2012-04-24 12:25:00 +02:00
via82xx_modem.c ALSA: PCI: Replace CONFIG_PM with CONFIG_PM_SLEEP 2012-08-14 18:12:04 +02:00
via82xx.c ALSA: PCI: Replace CONFIG_PM with CONFIG_PM_SLEEP 2012-08-14 18:12:04 +02:00