]> www.infradead.org Git - users/jedix/linux-maple.git/commit
ALSA: hda/realtek: Enable PC beep passthrough for HP EliteBook 855 G7
authorMaciej S. Szmigiero <mail@maciej.szmigiero.name>
Sun, 16 Feb 2025 21:31:03 +0000 (22:31 +0100)
committerTakashi Iwai <tiwai@suse.de>
Tue, 4 Mar 2025 08:29:06 +0000 (09:29 +0100)
commitaa85822c611aef7cd4dc17d27121d43e21bb82f0
tree4aa0fd111bb11eea99d03facb21c2812e127c8e4
parent3abe3d342fc6a254e8b878d1e8c72c0ff980e68a
ALSA: hda/realtek: Enable PC beep passthrough for HP EliteBook 855 G7

PC speaker works well on this platform in BIOS and in Linux until sound
card drivers are loaded. Then it stops working.

There seems to be a beep generator node at 0x1a in this CODEC
(ALC269_TYPE_ALC215) but it seems to be only connected to capture mixers
at nodes 0x22 and 0x23.
If I unmute the mixer input for 0x1a at node 0x23 and start recording
from its "ALC285 Analog" capture device I can clearly hear beeps in that
recording.

So the beep generator is indeed working properly, however I wasn't able to
figure out any way to connect it to speakers.

However, the bits in the "Passthrough Control" register (0x36) seems to
work at least partially: by zeroing "B" and "h" and setting "S" I can at
least make the PIT PC speaker output appear either in this laptop speakers
or headphones (depending on whether they are connected or not).

There are some caveats, however:
* If the CODEC gets runtime-suspended the beeps stop so it needs HDA beep
device for keeping it awake during beeping.

* If the beep generator node is generating any beep the PC beep passthrough
seems to be temporarily inhibited, so the HDA beep device has to be
prevented from using the actual beep generator node - but the beep device
is still necessary due to the previous point.

* In contrast with other platforms here beep amplification has to be
disabled otherwise the beeps output are WAY louder than they were on pure
BIOS setup.

Unless someone (from Realtek probably) knows how to make the beep generator
node output appear in speakers / headphones using PC beep passthrough seems
to be the only way to make PC speaker beeping actually work on this
platform.

Signed-off-by: Maciej S. Szmigiero <mail@maciej.szmigiero.name>
Acked-by: kailang@realtek.com
Link: https://patch.msgid.link/7461f695b4daed80f2fc4b1463ead47f04f9ad05.1739741254.git.mail@maciej.szmigiero.name
Signed-off-by: Takashi Iwai <tiwai@suse.de>
include/sound/hda_codec.h
sound/pci/hda/hda_beep.c
sound/pci/hda/patch_realtek.c