FS#78565 - Lenovo ThinkBook 16p G4 IRH internal speaker too low

Attached to Project: Arch Linux
Opened by Huayu Zhang (Tanche-Z) - Sunday, 21 May 2023, 15:09 GMT
Last edited by Toolybird (Toolybird) - Saturday, 27 May 2023, 00:14 GMT
Task Type Bug Report
Category Kernel
Status Closed
Assigned To No-one
Architecture All
Severity Low
Priority Normal
Reported Version
Due in Version Undecided
Due Date Undecided
Percent Complete 100%
Votes 1
Private No

Details

Description:
The Lenovo ThinkBook 16p G4 IRH uses a Cirrus AMP for internal speaker, so that even the codec of Realtek soundcard works properly (in headphone jack), the speaker are still too low and the ACPI Error keeps showing during boot and power off.

Additional info:
* package version(s)
* config and/or log files etc.
* link to upstream bug report, if any

Steps to reproduce:

1. newest packages (sof-firmware, alsa, pipewire...)
2. New laptop that use Cirrus for AMP and Realtek for codec. (The Cirrus should be work properly with Realtek soundcard together so that the internal speaker can output at a acceptable volumn level)
This task depends upon

Closed by  Toolybird (Toolybird)
Saturday, 27 May 2023, 00:14 GMT
Reason for closing:  Upstream
Additional comments about closing:  See comments
Comment by Toolybird (Toolybird) - Sunday, 21 May 2023, 20:57 GMT
From the description, it sounds like an upstream kernel problem. You'll likely have better luck reporting this to the kernel folks. But first, you should try an LTS kernel, then maybe also a mainline kernel [1]. Please let us know what you find out.

[1] https://wiki.archlinux.org/title/Kernel#Debugging_regressions
Comment by Huayu Zhang (Tanche-Z) - Monday, 22 May 2023, 05:12 GMT
Some one managed to fix it by adding the patched the ACPI tables to kernel: ( https://gist.github.com/lamperez/862763881c0e1c812392b5574727f6ff )

And Ubuntu developer also tried to do something. But didn;t fix for my laptop: ( https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1965496 )
Comment by Huayu Zhang (Tanche-Z) - Monday, 22 May 2023, 05:32 GMT
Someone already reported the issue, but hasn't fixed yet: ( https://bugzilla.kernel.org/show_bug.cgi?id=216311#c10 )

Possible solution:
- Your BIOS needs to behave correctly to report the _DSD information in ACPI for the Cirrus device.

- Once when BIOS is proper, HD-audio Realtek codec needs the binding with Cirrus sub-codec driver. It needs the quirk entry.

If the same quirk is applicable, you may try to pass the model option with the existing PCI SSID as alias. See Documentation/sound/hda/notes.rst.
Note that, on AMD platforms, the Realtek codec appears at the secondary instance, hence you'd need to pass to the second argument of model option, e.g.
model=,103c:8975
Comment by Huayu Zhang (Tanche-Z) - Monday, 22 May 2023, 05:34 GMT
It looks like Lenovi hasn't release the BIOS that has correct _DSD info?

So we have to wait...
Comment by Huayu Zhang (Tanche-Z) - Monday, 22 May 2023, 05:35 GMT
btw, I'm using the newest BIOS (2023-05-17) from lenovo (it required to use windows11 to update BIOS, my lord...)
Comment by Huayu Zhang (Tanche-Z) - Monday, 22 May 2023, 05:36 GMT
Wondering if we can get hard codec _DSD info just like in Windows? So we don't need the BIOS update? (Reverse enginering, get from Cirrus or Lenovo?)
Comment by Huayu Zhang (Tanche-Z) - Monday, 22 May 2023, 05:46 GMT
TLS kernel and mainline kernel not works by my testing.
Comment by Huayu Zhang (Tanche-Z) - Friday, 26 May 2023, 05:58 GMT
THis thread helped me temporary fixed the issue <https://bugzilla.kernel.org/show_bug.cgi?id=216194>

But the patch won't be accepted in the tree. Because those are gussing value and may damage the hardware.

We should wait for Cirrus and Lenovo add some quirk into the kernel (or Lenovo may update their BIOS)
Comment by Toolybird (Toolybird) - Saturday, 27 May 2023, 00:14 GMT
> it required to use windows11 to update BIOS, my lord...

Ick! :/

Thanks for following up. It's good that you have a workaround. Clearly an upstream issue...but nothing Arch can do here.

Loading...