[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <beb7bb41-fb5b-4b6b-86c3-509e97a30614@perex.cz>
Date: Mon, 17 Feb 2025 11:11:37 +0100
From: Jaroslav Kysela <perex@...ex.cz>
To: Takashi Iwai <tiwai@...e.de>,
"Maciej S. Szmigiero" <mail@...iej.szmigiero.name>
Cc: Takashi Iwai <tiwai@...e.com>, Kailang Yang <kailang@...ltek.com>,
Oder Chiou <oder_chiou@...ltek.com>, Shuming Fan <shumingf@...ltek.com>,
Qiu Wenbo <qiuwenbo@...inos.com.cn>, linux-sound@...r.kernel.org,
linux-kernel@...r.kernel.org
Subject: Re: [PATCH v2] ALSA: hda/realtek: Enable PC beep passthrough for HP
EliteBook 855 G7
On 17. 02. 25 11:02, Takashi Iwai wrote:
> On Sun, 16 Feb 2025 22:31:03 +0100,
> Maciej S. Szmigiero wrote:
>>
>> 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@...iej.szmigiero.name>
>> ---
>>
>> Since more than 6 weeks has now passed since the previous version of this
>> patch was posted, yet no better or other solution was provided I'm
>> re-submitting an updated version of the original patch.
>>
>> This solution has been working fine for me on this platform all that time,
>> without any obvious issues.
>>
>> Changes from v1:
>> * Correct the typo in !IS_ENABLED(CONFIG_INPUT_PCSPKR) code that the
>> kernel test robot found.
>>
>> * Change codec_warn() into dev_warn_once(hda_codec_dev(codec))
>> to avoid spamming the kernel log at runtime PM CODEC re-init.
>
> This is really a thing to be checked by Realtek people at first, as
> it's very vendor-specific thing.
>
> Kailang, please check this.
The primary issue seems to be with the beep signal routing to the analog
outputs. The hidden codec registers accessed through the coefficient nodes may
play a role for this setup. Only Realtek can give a solid answer for this
(lack of public codec documentation).
Jaroslav
--
Jaroslav Kysela <perex@...ex.cz>
Linux Sound Maintainer; ALSA Project; Red Hat, Inc.
Powered by blists - more mailing lists