android_kernel_oneplus_msm8998/sound/pci
Hui Wang 4d026d221b ALSA: hda - Enforces runtime_resume after S3 and S4 for each codec
commit b5a236c175b0d984552a5f7c9d35141024c2b261 upstream.

Recently we found the audio jack detection stop working after suspend
on many machines with Realtek codec. Sometimes the audio selection
dialogue didn't show up after users plugged headhphone/headset into
the headset jack, sometimes after uses plugged headphone/headset, then
click the sound icon on the upper-right corner of gnome-desktop, it
also showed the speaker rather than the headphone.

The root cause is that before suspend, the codec already call the
runtime_suspend since this codec is not used by any apps, then in
resume, it will not call runtime_resume for this codec. But for some
realtek codec (so far, alc236, alc255 and alc891) with the specific
BIOS, if it doesn't run runtime_resume after suspend, all codec
functions including jack detection stop working anymore.

This problem existed for a long time, but it was not exposed, that is
because when problem happens, if users play sound or open
sound-setting to check audio device, this will trigger calling to
runtime_resume (via snd_hda_power_up), then the codec starts working
again before users notice this problem.

Since we don't know how many codec and BIOS combinations have this
problem, to fix it, let the driver call runtime_resume for all codecs
in pm_resume, maybe for some codecs, this is not needed, but it is
harmless. After a codec is runtime resumed, if it is not used by any
apps, it will be runtime suspended soon and furthermore we don't run
suspend frequently, this change will not add much power consumption.

Fixes: cc72da7d4d ("ALSA: hda - Use standard runtime PM for codec power-save control")
Signed-off-by: Hui Wang <hui.wang@canonical.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2019-04-03 06:23:17 +02:00
..
ac97 ALSA: ac97: Fix incorrect bit shift at AC97-SPSA control write 2018-12-13 09:21:27 +01:00
ali5451 ALSA: ali5451: Fix out-of-bound position reporting 2016-10-16 17:36:14 +02:00
asihpi ALSA: asihpi: Hardening for potential Spectre v1 2018-05-02 07:53:41 -07:00
au88x0 ALSA: au88x0: avoid theoretical uninitialized access 2017-10-08 10:14:20 +02:00
aw2 ALSA: remove deprecated use of pci api 2015-04-16 12:19:52 +02:00
ca0106 ALSA: ca0106: Disable IZD on SB0570 DAC to fix audio pops 2018-11-21 09:27:30 +01:00
cs46xx ALSA: cs46xx: Potential NULL dereference in probe 2019-01-13 10:05:32 +01:00
cs5535audio ALSA: cs5535audio: Fix invalid endian conversion 2018-08-22 07:48:36 +02:00
ctxfi ALSA: ctxfi: Fix the incorrect check of dma_set_mask() call 2017-03-30 09:35:15 +02:00
echoaudio ALSA: echoaudio: Fix memory allocation 2016-07-27 09:47:38 -07:00
emu10k1 ALSA: emu10k1: Fix potential Spectre v1 vulnerabilities 2019-01-13 10:05:29 +01:00
hda ALSA: hda - Enforces runtime_resume after S3 and S4 for each codec 2019-04-03 06:23:17 +02:00
ice1712 ALSA: pci: Drop superfluous ifdef CONFIG_PROC_FS 2015-05-29 08:00:06 +02:00
korg1212 ALSA: korg1212: Use snd_pcm_hw_constraint_single() 2015-10-21 14:24:27 +02:00
lola ALSA: Deletion of checks before the function call "iounmap" 2015-01-04 15:13:45 +01:00
lx6464es ALSA: lx6464es: Use snd_pcm_hw_constraint_single() 2015-10-21 14:24:28 +02:00
mixart ALSA: remove deprecated use of pci api 2015-04-16 12:19:52 +02:00
nm256 ALSA: Include linux/io.h instead of asm/io.h 2015-01-28 16:49:33 +01:00
oxygen ALSA: oxygen: Fix logical-not-parentheses warning 2015-08-03 10:15:09 +02:00
pcxhr ALSA: pcxhr: Fix missing mutex unlock 2016-05-04 14:48:43 -07:00
riptide ALSA: off by one bug in snd_riptide_joystick_probe() 2015-02-09 14:57:15 +01:00
rme9652 ALSA: rme9652: Fix potential Spectre v1 vulnerability 2019-01-13 10:05:29 +01:00
trident ALSA: trident: Suppress gcc string warning 2018-12-13 09:21:30 +01:00
vx222 ALSA: vx222: Fix invalid endian conversions 2018-08-22 07:48:36 +02:00
ymfpci ALSA: Include linux/io.h instead of asm/io.h 2015-01-28 16:49:33 +01:00
ad1889.c ALSA: remove deprecated use of pci api 2015-04-16 12:19:52 +02:00
ad1889.h
ak4531_codec.c ALSA: pci: Drop superfluous ifdef CONFIG_PROC_FS 2015-05-29 08:00:06 +02:00
als300.c ALSA: remove deprecated use of pci api 2015-04-16 12:19:52 +02:00
als4000.c ALSA: remove deprecated use of pci api 2015-04-16 12:19:52 +02:00
atiixp.c ALSA: pci: Drop superfluous ifdef CONFIG_PROC_FS 2015-05-29 08:00:06 +02:00
atiixp_modem.c ALSA: pci: Drop superfluous ifdef CONFIG_PROC_FS 2015-05-29 08:00:06 +02:00
azt3328.c ALSA: remove deprecated use of pci api 2015-04-16 12:19:52 +02: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: pci: Drop superfluous ifdef CONFIG_PROC_FS 2015-05-29 08:00:06 +02: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: remove deprecated use of pci api 2015-04-16 12:19:52 +02:00
es1968.c ALSA: remove deprecated use of pci api 2015-04-16 12:19:52 +02:00
fm801.c ALSA: fm801: add error handling for snd_ctl_add 2018-08-06 16:24:30 +02:00
intel8x0.c ALSA: intel8x0: Add clock quirk entry for AD1981B on IBM ThinkPad X41. 2016-04-12 09:08:52 -07:00
intel8x0m.c ALSA: pci: Drop superfluous ifdef CONFIG_PROC_FS 2015-05-29 08:00:06 +02:00
Kconfig ALSA: Add missing dependency on CONFIG_SND_TIMER 2016-02-17 12:30:58 -08:00
maestro3.c ALSA: maestro3: Fix Allegro mute until master volume/mute is touched 2015-11-02 08:46:30 +01:00
Makefile
rme32.c ALSA: rme32: Use snd_pcm_hw_constraint_single() 2015-10-21 14:24:28 +02:00
rme96.c ALSA: rme96: Fix unexpected volume reset after rate changes 2015-12-04 20:39:49 +01:00
sis7019.c ALSA: remove deprecated use of pci api 2015-04-16 12:19:52 +02:00
sis7019.h
sonicvibes.c ALSA: remove deprecated use of pci api 2015-04-16 12:19:52 +02: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