Re: [PATCH] ALSA: hda/realtek: Fix speaker mute LED on Lenovo ThinkBook 14 G8+ IPH
Takashi Iwai <[email protected]> Thu, 30 Jul 2026 17:45:20 +0200
| Newsgroups | gmane.linux.alsa.devel,gmane.linux.kernel |
|---|---|
| Message-ID | <[email protected]> |
On Thu, 30 Jul 2026 09:14:53 +0200, Padhia Luo wrote: > > On the ThinkBook 14 G8+ IPH (SSID 17aa:393e, ALC287) the F1 speaker mute > LED never lights up, while the F4 mic mute LED works. > > Both LEDs are platform LEDs registered by lenovo-wmi-hotkey-utilities and > default to the audio-mute / audio-micmute triggers, so the speaker LED only > follows a control carrying SNDRV_CTL_ELEM_ACCESS_SPK_LED. No control on > this machine has that flag set, so snd_ctl_led never attaches anything and > /sys/class/sound/ctl-led/speaker/card0/list stays empty. The mic LED is > unaffected because MIC_LED is set from the SOF topology on the DMIC > control, which does not go through the codec fixups at all. > > The pin configuration of this machine matches the ThinkPad pin quirk that > selects ALC285_FIXUP_THINKPAD_HEADSET_JACK - pin_config_match() masks out > the sequence/association nibbles, so 0x14=0x90170120 still matches the > 0x90170110 in the table. That fixup chains into ALC269_FIXUP_THINKPAD_ACPI, > but hda_fixup_thinkpad_acpi() returns early because is_thinkpad() is false: > a ThinkBook exposes neither LEN0068/LEN0268 nor IBM0068. Therefore > snd_hda_gen_add_mute_led_cdev() is never called and spec->vmaster_mute_led > stays 0. > > The vendor fallback SND_PCI_QUIRK_VENDOR(0x17aa, "Lenovo XPAD", > ALC269_FIXUP_LENOVO_XPAD_ACPI) would have handled this correctly - the > machine does expose LHK2019 and VPC2004, so is_ideapad() is true - but it > never runs: the pin quirk has already set codec->fixup_id, and > snd_hda_pick_fixup() returns immediately in that case. > > Add an SSID quirk selecting a fixup that keeps everything the machine > currently gets (headset jack handling plus the X1 Gen7 DAC routing) and > additionally runs the ideapad ACPI setup. It chains into > ALC287_FIXUP_LENOVO_YOGA_PRO7, which already combines > alc285_fixup_thinkpad_x1_gen7 with ALC269_FIXUP_LENOVO_XPAD_ACPI, so the > resulting chain differs from the current one only by the added ideapad step > and cannot regress the analog output or the headset jack. > > Tested on 7.1.5 on the affected machine: the speaker LED group is now > populated at probe time without any userspace help, and the F1 LED > follows the mute state. Compared against a boot with the previous fixup > selection, the mixer control list (names and numids) and the registered > jack input devices are identical. > > Note that the underlying mismatch is not specific to this SSID. Any Lenovo > non-ThinkPad whose pins collide with a ThinkPad pin quirk loses its mute > LED the same way. Letting hda_fixup_thinkpad_acpi() fall back to the > ideapad check would cover the whole class at once, but that touches a > helper shared with every ThinkPad, so this patch only fixes the machine > that was actually tested. > > Signed-off-by: Padhia Luo <[email protected]> Applied to for-next branch. Thanks. Takashi