linux-stable/sound/pci
Mengdong Lin 795614dde4 ALSA: hda - divide controller and codec dependency on i915 gfx power well
This patch can improve power saving for Intel platforms on which only the
display audio codec is in the shared i915 power well:

- Add a flag "need_i915_power" to indicate whether the controller needs the
  i915 power well.

- The driver will always request the i915 power when probing the controller
  and codecs if AZX_DCAPS_I915_POWERWELL is set (either the controller or a
  codec needs this power).

- If the controller needs the i915 power, the power will be held after probe
  until the controller is runtime suspended or S3. If the controller doesn't
  need the power, the power will be released the after probe, and a codec
  that needs the power can request/release the power via bus link_power ops.

Background:
- For Haswell/Broadwell, which has a separate HD-A controller for display audio,
  both the controller and the display codec are in the i915 power well.

- For Baytrail/Braswell, the display and analog audio share the same HDA
  controller and link, and only the display codec is in the i915 power well.

- For Skylake, the display and analog audio share the same HDA controller but
  use separate links. Only the display codec is in the i915 power well. And in
  legacy mode we take the two links as one. So it can follow Baytrail/Braswell.

Signed-off-by: Mengdong Lin <mengdong.lin@intel.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2015-04-29 12:27:53 +02:00
..
ac97 ALSA: Use const struct ac97_quirk 2015-04-05 08:41:05 +02:00
ali5451 ALSA: Include linux/io.h instead of asm/io.h 2015-01-28 16:49:33 +01:00
asihpi ALSA: asihpi: Fix duplicate const for clock sources 2015-03-24 11:51:43 +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: Use const struct ac97_quirk 2015-04-05 08:41:05 +02:00
ctxfi Merge branch 'topic/pci-cleanup' into for-next 2015-01-11 11:26:48 +01:00
echoaudio ALSA: echoaudio: read past end of array 2015-03-23 14:00:28 +01:00
emu10k1 Merge branch 'for-next' into for-linus 2015-04-13 10:23:18 +02:00
hda ALSA: hda - divide controller and codec dependency on i915 gfx power well 2015-04-29 12:27:53 +02:00
ice1712 ALSA: ice1724: ESI W192M: Add sampling rate control of the ADC/DAC 2015-03-18 08:07:00 +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
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: Use const struct ac97_quirk 2015-04-05 08:41:05 +02:00
ad1889.h
ak4531_codec.c
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.c ALSA: Use const struct ac97_quirk 2015-04-05 08:41:05 +02:00
atiixp_modem.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
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: Use const struct ac97_quirk 2015-04-05 08:41:05 +02: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
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
sonicvibes.c ALSA: Include linux/io.h instead of asm/io.h 2015-01-28 16:49:33 +01:00
via82xx.c ALSA: Use const struct ac97_quirk 2015-04-05 08:41:05 +02:00
via82xx_modem.c ALSA: Include linux/io.h instead of asm/io.h 2015-01-28 16:49:33 +01:00