linux/sound
Takashi Iwai 37a3a98ef6 ALSA: hda - Enable runtime PM only for discrete GPU
The recent change of vga_switcheroo allowed the runtime PM for
HD-audio on AMD GPUs, but this also resulted in a regression.  When
the HD-audio controller driver gets runtime-suspended, HD-audio link
is turned off, and the hotplug notification is ignored.  This leads to
the inconsistent audio state (the connection isn't notified and ELD is
ignored).

The best fix would be to implement the proper ELD notification via the
audio component, but it's still not ready.  As a quick workaround,
this patch adds the check of runtime_idle and allows the runtime
suspend only when the vga_switcheroo is bound with discrete GPU.
That is, a system with a single GPU and APU would be again without
runtime PM to keep the HD-audio link for the hotplug notification and
ELD read out.

Also, the codec->auto_runtime_pm flag is set only for the discrete GPU
at the time GPU gets bound via vga_switcheroo (i.e. only dGPU is
forcibly runtime-PM enabled), so that APU can still get the ELD
notification.

For identifying which GPU is bound, a new vga_switcheroo client
callback, gpu_bound, is implemented.  The vga_switcheroo simply calls
this when GPU is bound, and tells whether it's dGPU or APU.

Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=200945
Fixes: 07f4f97d7b ("vga_switcheroo: Use device link for HDA controller")
Reported-by: Jian-Hong Pan <jian-hong@endlessm.com>
Tested-by: Jian-Hong Pan <jian-hong@endlessm.com>
Acked-by: Lukas Wunner <lukas@wunner.de>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2018-09-13 17:58:30 +02:00
..
ac97 ALSA: ac97: fix unbalanced pm_runtime_enable 2018-08-19 18:37:04 +02:00
aoa ALSA: snd-aoa: add of_node_put() in error path 2018-06-29 20:35:14 +02:00
arm ASoC: pxa2xx-pcm-lib: fix indenting 2018-06-29 12:05:05 +01:00
atmel
core ALSA: rawmidi: Initialize allocated buffers 2018-09-03 15:16:43 +02:00
drivers ALSA: opl3: Mark expected switch fall-through 2018-08-08 21:40:14 +02:00
firewire ALSA: oxfw: fix memory leak of private data 2018-09-13 15:15:39 +02:00
hda ALSA: hda: Fix several mismatch for register mask and value 2018-09-03 23:47:40 +02:00
i2c ALSA: i2c: Remove empty init and exit 2018-08-03 16:11:43 +02:00
isa ALSA: isa: Remove empty init and exit 2018-08-03 16:11:35 +02:00
mips ALSA: pcm: Nuke snd_pcm_lib_mmap_vmalloc() 2018-07-18 08:24:29 +02:00
oss treewide: kmalloc() -> kmalloc_array() 2018-06-12 16:19:22 -07:00
parisc
pci ALSA: hda - Enable runtime PM only for discrete GPU 2018-09-13 17:58:30 +02:00
pcmcia Merge branch 'for-linus' into topic/virmidi 2018-07-29 22:39:29 +02:00
ppc powerpc/ps3: Set driver coherent_dma_mask 2018-07-20 12:50:37 +10:00
sh
soc treewide: correct "differenciate" and "instanciate" typos 2018-08-23 18:48:43 -07:00
sparc sound: Use octal not symbolic permissions 2018-05-28 11:27:20 +02:00
spi
synth ALSA: synth: Remove empty init and exit 2018-08-03 16:11:53 +02:00
usb ALSA: usb-audio: Mark expected switch fall-through 2018-08-09 08:52:33 +02:00
x86 ALSA: intel_hdmi: remove redundant variable cfg_val 2018-08-06 21:36:14 +02:00
xen ALSA: xen: Use standard pcm_format_to_bits() for ALSA format bits 2018-07-27 09:05:34 +02:00
ac97_bus.c
Kconfig ALSA: xen-front: Introduce Xen para-virtualized sound frontend driver 2018-05-16 12:58:36 +02:00
last.c
Makefile ALSA: xen-front: Introduce Xen para-virtualized sound frontend driver 2018-05-16 12:58:36 +02:00
sound_core.c sound: Use octal not symbolic permissions 2018-05-28 11:27:20 +02:00