linux/sound
Martin Hamilton 64e0924ed3 ALSA: hda/realtek: ALC269 fixup for Lenovo Yoga Book 9i 13IRU8 audio
The amp/speakers on the Lenovo Yoga Book 9i 13IRU8 laptop aren't
fully powered up, resulting in horrible tinny sound by default.

The kernel has an existing quirk for PCI SSID 0x17aa3843 which
matches this machine and several others. The quirk applies the
ALC287_FIXUP_IDEAPAD_BASS_SPK_AMP fixup, however the fixup does not
work on this machine.

This patch modifies the existing quirk by adding a check for the
subsystem ID 0x17aa3881. If present, ALC287_FIXUP_TAS2781_I2C will
be applied instead of ALC287_FIXUP_IDEAPAD_BASS_SPK_AMP. With this
change the TAS2781 amp is powered up, firmware is downloaded and
recognised by HDA/SOF - i.e. all is good, and we can boogie.

Code is re-used from alc298_fixup_lenovo_c940_duet7(), which fixes a
similar problem with two other Lenovo laptops.

Cross checked against ALSA cardinfo database for potential clashes.
Tested against 6.18.5 kernel built with Arch Linux default options.
Tested in HDA mode and SOF mode.

Note: Possible further work required to address quality of life issues
caused by the firmware's agressive power saving, and to improve ALSA
control mappings.

Signed-off-by: Martin Hamilton <m@martinh.net>
Link: https://patch.msgid.link/20260122-alc269-yogabook9i-fixup-v1-1-a6883429400f@martinh.net
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2026-01-22 13:33:41 +01:00
..
ac97 ALSA: ac97: fix a double free in snd_ac97_controller_register() 2025-12-23 10:43:43 +01:00
aoa ALSA: aoa: Remove redundant size arguments from strscpy() 2025-09-12 07:54:40 +02:00
arm ALSA: arm: Use guard() for spin locks 2025-09-10 13:20:01 +02:00
atmel ALSA: atmel: Use guard() for mutex locks 2025-09-01 13:54:28 +02:00
core ALSA: pcm: Improve the fix for race of buffer access at PCM OSS layer 2026-01-08 08:07:54 +01:00
drivers ALSA: pcmtest: Replace deprecated strcpy with strscpy_pad in setup_patt_bufs 2025-11-19 17:16:49 +01:00
firewire sound fixes for 6.19-rc1 2025-12-13 16:09:10 +12:00
hda ALSA: hda/realtek: ALC269 fixup for Lenovo Yoga Book 9i 13IRU8 audio 2026-01-22 13:33:41 +01:00
i2c ALSA: i2c: Use guard() for spin locks 2025-09-01 13:54:26 +02:00
isa ALSA: gus: Remove unused declarations 2025-11-12 10:34:44 +01:00
mips ALSA: snd-n64: Use guard() for spin locks 2025-09-10 13:20:01 +02:00
oss sound: Switch back to struct platform_driver::remove() 2024-10-30 14:47:59 +01:00
parisc ALSA: parisc: Use guard() for spin locks 2025-09-10 13:20:01 +02:00
pci ALSA: ctxfi: Fix potential OOB access in audio mixer handling 2026-01-19 14:32:55 +01:00
pcmcia ALSA: pcmcia: Fix resource leak in snd_pdacf_probe error path 2025-12-15 10:11:19 +01:00
ppc ALSA: ppc: Use guard() for spin locks 2025-09-10 13:20:01 +02:00
sh ALSA: sh: Use safer strscpy() instead of strcpy() 2025-07-11 09:53:35 +02:00
soc ASoC: tlv320adcx140: Merge fixes from Pengutronix 2026-01-14 22:16:56 +00:00
sparc ALSA: sparc/dbri: Use guard() for spin locks 2025-09-10 13:20:01 +02:00
spi ALSA: spi/at73c213: Use guard() for spin locks 2025-09-17 14:07:02 +02:00
synth ALSA: synth: Use guard() for preset locks 2025-09-01 13:54:27 +02:00
usb ALSA: usb-audio: Use the right limit for PCM OOB check 2026-01-21 09:22:12 +01:00
virtio ALSA: virtio: Use guard() for spin locks 2025-09-01 13:54:28 +02:00
x86 ALSA: x86: Use guard() for spin locks 2025-09-01 13:54:27 +02:00
xen ALSA: xen: Use guard() for mutex locks 2025-09-01 13:54:27 +02:00
ac97_bus.c ALSA: ac97: Fix kernel-doc warning for snd_ac97_reset 2025-11-06 10:52:43 +01:00
Kconfig sound: Make CONFIG_SND depend on INDIRECT_IOMEM instead of UML 2024-10-10 16:11:18 +02:00
last.c
Makefile ALSA: core: Use *-y instead of *-objs in Makefile 2024-05-08 18:17:32 +02:00
sound_core.c