linux/sound/pci
Thomas Hebb c447374494 ALSA: hda/realtek - Set principled PC Beep configuration for ALC256
The Realtek PC Beep Hidden Register[1] is currently set by
patch_realtek.c in two different places:

In alc_fill_eapd_coef(), it's set to the value 0x5757, corresponding to
non-beep input on 1Ah and no 1Ah loopback to either headphones or
speakers. (Although, curiously, the loopback amp is still enabled.) This
write was added fairly recently by commit e3743f431143 ("ALSA:
hda/realtek - Dell headphone has noise on unmute for ALC236") and is a
safe default. However, it happens in the wrong place:
alc_fill_eapd_coef() runs on module load and cold boot but not on S3
resume, meaning the register loses its value after suspend.

Conversely, in alc256_init(), the register is updated to unset bit 13
(disable speaker loopback) and set bit 5 (set non-beep input on 1Ah).
Although this write does run on S3 resume, it's not quite enough to fix
up the register's default value of 0x3717. What's missing is a set of
bit 14 to disable headphone loopback. Without that, we end up with a
feedback loop where the headphone jack is being driven by amplified
samples of itself[2].

This change eliminates the update in alc256_init() and replaces it with
the 0x5757 write from alc_fill_eapd_coef(). Kailang says that 0x5757 is
supposed to be the codec's default value, so using it will make
debugging easier for Realtek.

Affects the ALC255, ALC256, ALC257, ALC235, and ALC236 codecs.

[1] Newly documented in Documentation/sound/hd-audio/realtek-pc-beep.rst

[2] Setting the "Headphone Mic Boost" control from userspace changes
this feedback loop and has been a widely-shared workaround for headphone
noise on laptops like the Dell XPS 13 9350. This commit eliminates the
feedback loop and makes the workaround unnecessary.

Fixes: e1e8c1fdce ("ALSA: hda/realtek - Dell headphone has noise on unmute for ALC236")
Cc: stable@vger.kernel.org
Signed-off-by: Thomas Hebb <tommyhebb@gmail.com>
Link: https://lore.kernel.org/r/bf22b417d1f2474b12011c2a39ed6cf8b06d3bf5.1585584498.git.tommyhebb@gmail.com
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2020-03-31 10:53:29 +02:00
..
ac97 ALSA: ac97: More constifications 2020-01-05 16:14:34 +01:00
ali5451 ALSA: ali5451: remove redundant variable capture_flag 2020-02-10 08:29:54 +01:00
asihpi ALSA: asihpi: More constifications 2020-01-05 16:14:53 +01:00
au88x0 ALSA: au88x0: More constifications 2020-01-05 16:14:38 +01:00
aw2 sound updates for 5.6-rc1 2020-01-28 16:26:57 -08:00
ca0106 ALSA: ca0106: More constifications 2020-01-05 16:14:52 +01:00
cs46xx sound updates for 5.6-rc1 2020-01-28 16:26:57 -08:00
cs5535audio ALSA: pci: Constify snd_kcontrol_new items 2020-01-03 09:24:28 +01:00
ctxfi ALSA: ctxfi: More constifications 2020-01-05 16:14:52 +01:00
echoaudio sound updates for 5.6-rc1 2020-01-28 16:26:57 -08:00
emu10k1 ALSA: emu10k1: Fix endianness annotations 2020-02-10 08:25:45 +01:00
hda ALSA: hda/realtek - Set principled PC Beep configuration for ALC256 2020-03-31 10:53:29 +02:00
ice1712 ALSA: ice1712: More constifications 2020-01-05 16:14:41 +01:00
korg1212 ALSA: korg1212: fix if-statement empty body warnings 2020-03-06 09:00:33 +01:00
lola ALSA: pci: Constify snd_device_ops definitions 2020-01-03 09:23:56 +01:00
lx6464es ALSA: lx6464es: More constifications 2020-01-05 16:15:07 +01:00
mixart ALSA: mixart: More constifications 2020-01-05 16:14:48 +01:00
nm256 sound updates for 5.6-rc1 2020-01-28 16:26:57 -08:00
oxygen ALSA: oxygen: Support PCM sync_stop 2019-12-11 07:25:50 +01:00
pcxhr ALSA: pcxhr: More constifications 2020-01-05 16:14:47 +01:00
riptide ALSA: riptide: More constifications 2020-01-05 16:14:40 +01:00
rme9652 ALSA: hdsp: remove redundant assignment to variable err 2020-02-10 08:29:26 +01:00
trident ALSA: pci: Constify snd_ac97_bus_ops definitions 2020-01-03 09:24:13 +01:00
vx222 ALSA: vx: More constifications 2020-01-05 16:14:30 +01:00
ymfpci sound updates for 5.6-rc1 2020-01-28 16:26:57 -08:00
ad1889.c ALSA: pci: Constify snd_ac97_bus_ops definitions 2020-01-03 09:24:13 +01:00
ad1889.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
ak4531_codec.c ALSA: ak4531: More constification 2020-01-05 16:15:09 +01:00
als300.c ALSA: pci: Constify snd_ac97_bus_ops definitions 2020-01-03 09:24:13 +01:00
als4000.c ALSA: pci: Drop superfluous ioctl PCM ops 2019-12-11 07:25:31 +01:00
atiixp_modem.c ALSA: atiixp: More constifications 2020-01-05 16:14:54 +01:00
atiixp.c ALSA: atiixp: More constifications 2020-01-05 16:14:54 +01:00
azt3328.c ALSA: azt3328: More constification 2020-01-05 16:15:09 +01:00
azt3328.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
bt87x.c ALSA: bt87x: Constify snd_bt87x_boards 2020-01-03 09:24:42 +01:00
cmipci.c ALSA: cmipci: More constifications 2020-01-05 16:14:55 +01:00
cs4281.c ALSA: cs4281: More constification 2020-01-05 16:15:10 +01:00
cs5530.c ALSA: pci: Constify snd_device_ops definitions 2020-01-03 09:23:56 +01:00
ens1370.c ALSA: ens137x: More constification 2020-01-05 16:15:11 +01:00
ens1371.c
es1938.c ALSA: es1938: More constifications 2020-01-05 16:14:54 +01:00
es1968.c ALSA: es1968: More constifications 2020-01-05 16:14:55 +01:00
fm801.c ALSA: fm801: More constification 2020-01-05 16:15:12 +01:00
intel8x0.c ALSA: intel8x0: More constifications 2020-01-05 16:14:31 +01:00
intel8x0m.c ALSA: intel8x0: More constifications 2020-01-05 16:14:31 +01:00
Kconfig sound: Fix Kconfig indentation 2019-10-07 03:53:03 +02:00
maestro3.c ALSA: pci: Constify snd_pci_quirk tables 2020-01-03 09:24:45 +01:00
Makefile License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
rme32.c sound updates for 5.6-rc1 2020-01-28 16:26:57 -08:00
rme96.c sound updates for 5.6-rc1 2020-01-28 16:26:57 -08:00
sis7019.c sound updates for 5.6-rc1 2020-01-28 16:26:57 -08:00
sis7019.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 274 2019-06-05 17:30:30 +02:00
sonicvibes.c ALSA: pci: Constify snd_kcontrol_new items 2020-01-03 09:24:28 +01:00
via82xx_modem.c ALSA: via82xx: Fix endianness annotations 2020-02-10 08:25:07 +01:00
via82xx.c ALSA: via82xx: Fix endianness annotations 2020-02-10 08:25:07 +01:00