From nobody Tue Feb 10 02:29:22 2026 Received: from mail-wm1-f52.google.com (mail-wm1-f52.google.com [209.85.128.52]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 46245392836 for ; Thu, 22 Jan 2026 02:51:40 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.52 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769050304; cv=none; b=CsZsTsOSIAiMJFzXIJteu2T5Df2diuJu7fQK0QpWSJ/euT3doh9AHnMxh757ZjxTZXXhXiE6CQtO9UUUVjP2CSbku7w+TWjbn2D3T+XWq/eTDXBqDUnpI0zXeOE/FS8XmaVONWv7HGBd41Xpsgq4Upg2QUSptOtardOsuyEFnMI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769050304; c=relaxed/simple; bh=UbXDWwXNuth28nGsK0Lf/kWl5ygU/FoxQgjCggkcxfU=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:To:Cc; b=o4nr1Hbzu0DyW90jrk+x0hVHQioHzWK6mixEgrHyE2gbIXHvqgA7AewYnUXMI8d/BlC92oZui4K5n+xIzm+hnQzXFf+gC+FRQhE4+9w6xcDTZA6n8355wB+VE/6uQ6f5YmJKc9uIc51PsDwuMUFXzX1tYCF4aQ8RO4VbAOWPULk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=martinh.net; spf=pass smtp.mailfrom=martinh.net; dkim=pass (1024-bit key) header.d=martinh.net header.i=@martinh.net header.b=O8Ks+Pz+; arc=none smtp.client-ip=209.85.128.52 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=martinh.net Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=martinh.net Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=martinh.net header.i=@martinh.net header.b="O8Ks+Pz+" Received: by mail-wm1-f52.google.com with SMTP id 5b1f17b1804b1-47ee07570deso3661075e9.1 for ; Wed, 21 Jan 2026 18:51:39 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=martinh.net; s=google; t=1769050298; x=1769655098; darn=vger.kernel.org; h=cc:to:message-id:content-transfer-encoding:mime-version:subject :date:from:from:to:cc:subject:date:message-id:reply-to; bh=jf58Nd2C1MaJTnsyeFDPWfQLo+rAATd9OP2nzG8lhII=; b=O8Ks+Pz+duPUHC4LJeE1JeM31QJdmHaQG6irxKBln0S+/RZUCPVIkttb3FbgcyVhC5 cDv4B2KS9K+yC0bNpB5KjdYs93evDVRaa1c+vErChe04SnVksNrVLdWW2R34DLq6bFMK CmdhDXJK/iDwku2dNEbOl9hteWlzolUjFs7GM= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1769050298; x=1769655098; h=cc:to:message-id:content-transfer-encoding:mime-version:subject :date:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=jf58Nd2C1MaJTnsyeFDPWfQLo+rAATd9OP2nzG8lhII=; b=Eg+kHPHv0fvnxPZ0VaZsooRHA2VnHN4ETSR6hUdi8OV504XiiFcRjyGqzGHCPLzEWn 7eA6Pl3f04wMBpR3g/xGYvUiqKa1q8x2/MB3I10qxMR4J91WzRNOEG0Se3kGSWvuHlJ5 NKckhmx5uyNkWTRQjt7ztkJMyj0jiiha/o+HRJmpAXkFM7dkqv+6HLP8ebqNZUSaUSJg G5f7DtO37QIh7anfY+xiAm41k+yZfxSqCpdSnr056jzwcCX3obhXXGEFrY+s9h3ewXf0 s2Fstm0ztXTvML6jwKM0DvVH3uKZyWdgN6Ozcrdi8tUAQ0twltXHbcnmw5SvlXeyuWVt aaLQ== X-Forwarded-Encrypted: i=1; AJvYcCUMR6+jfXjBx7xXcp5EdhBhhQy8pfpfhTCsZ4N1ClkXXWVsYo/i/RgY8CLF0Sm3HXbVpLxeyZO+f0PV+eM=@vger.kernel.org X-Gm-Message-State: AOJu0YziDvWVlWBZFhfiy9tRdiRw8RhcARxTXVEdeafwjfm2viY+GreJ AkAVCgpbfyEIZy5ikIBDoe300RlBHVfA7jJURfjcHK1HQ68S+2wXEZq6BV/BKeY6e+0Mgr95BZp HioU6gfQx X-Gm-Gg: AZuq6aJa/I7oLtNOBXcvnGuxYYfw3JmmMuyraFogV9RS1c9cTZR/el1mOYOJjoqt81p i2g2vcgC6E5Q0B3+NZb/sEaSO+4WGQ9laY0eiLBYuyTf61NiquwJwcy9F7amQW60KrHKwQ2OEWM BLbMwo0RyooFvLZkonU9L21ctcGrRkZVSf/gTCewrJcXdLudcfXXAYMtJECGHT+WV8dnr50beS/ JmzTRcrh8wHQKcw12D/Qp5zHU7gKxL5NYAn8QxW16M7Zo0gk03I+yYEb6NFE+Svyxvht/tKU0li uBGXKdH7fEHDldxU1gI3Ol/gVYoi9e/lI7jjAUFBv3H/HDb+vQ+ETLJTieF91yF6HCyYI8+AKD3 TQp4u7VRiMQZUe16VDSPzBPrBBc3blzkIp1e+paV3eMwwF+M+vvakFeAaIU5TtfAXoG6bINjfyW 1FiUxk0sEaAhq9Lkxi/lia1owrJWz5aLeKdY1maJt32UUOaHmMY/8DtRu4lrUHn8sqjKVSRJYQZ hLzFr5iF5VbV3ZzYn80avi8SugvEq/9YiCOMTsgDQM/vmBc/8HYZ8kleR5U0ZoryWk4K+cWw6ce +BhqJvxEbvyh3GvvO4G0lFjG04BmMpJx+rFMdIAHvVlc X-Received: by 2002:a05:6000:4205:b0:431:808:2d50 with SMTP id ffacd0b85a97d-4356a024d4cmr30388196f8f.13.1769050297721; Wed, 21 Jan 2026 18:51:37 -0800 (PST) Received: from [192.168.86.246] (f.a.3.f.4.7.1.b.6.c.8.5.2.2.0.4.9.f.5.b.8.b.4.a.0.b.8.0.1.0.0.2.ip6.arpa. [2001:8b0:a4b8:b5f9:4022:58c6:b174:f3af]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-43569921df9sm42025916f8f.3.2026.01.21.18.51.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 21 Jan 2026 18:51:36 -0800 (PST) From: Martin Hamilton Date: Thu, 22 Jan 2026 02:51:18 +0000 Subject: [PATCH] ALSA: hda/realtek: ALC269 fixup for Lenovo Yoga Book 9i 13IRU8 audio Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260122-alc269-yogabook9i-fixup-v1-1-a6883429400f@martinh.net> X-B4-Tracking: v=1; b=H4sIAAAAAAAC/x2M0QpAQBAAf0X7bOtuhfgVebg7i42c7iKSf3d5n KaZByIH4Qht9kDgU6L4LYHOM3Cz2SZGGRIDKaqUJkKzOqoavP1krPdLIzjKdexYlNpapWrWpYF U74GT+M9d/74fDLSvs2kAAAA= X-Change-ID: 20260122-alc269-yogabook9i-fixup-351bb007e15a To: Jaroslav Kysela , Takashi Iwai Cc: linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org, Martin Hamilton X-Mailer: b4 0.14.3 --- 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 --- sound/hda/codecs/realtek/alc269.c | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/sound/hda/codecs/realtek/alc269.c b/sound/hda/codecs/realtek/a= lc269.c index 29469e549791..c832a1c75301 100644 --- a/sound/hda/codecs/realtek/alc269.c +++ b/sound/hda/codecs/realtek/alc269.c @@ -3736,6 +3736,7 @@ enum { ALC287_FIXUP_LEGION_15IMHG05_AUTOMUTE, ALC287_FIXUP_YOGA7_14ITL_SPEAKERS, ALC298_FIXUP_LENOVO_C940_DUET7, + ALC287_FIXUP_LENOVO_YOGA_BOOK_9I, ALC287_FIXUP_13S_GEN2_SPEAKERS, ALC256_FIXUP_SET_COEF_DEFAULTS, ALC256_FIXUP_SYSTEM76_MIC_NO_PRESENCE, @@ -3823,6 +3824,23 @@ static void alc298_fixup_lenovo_c940_duet7(struct hd= a_codec *codec, __snd_hda_apply_fixup(codec, id, action, 0); } =20 +/* A special fixup for Lenovo Yoga 9i and Yoga Book 9i 13IRU8 + * both have the very same PCI SSID and vendor ID, so we need + * to apply different fixups depending on the subsystem ID + */ +static void alc287_fixup_lenovo_yoga_book_9i(struct hda_codec *codec, + const struct hda_fixup *fix, + int action) +{ + int id; + + if (codec->core.subsystem_id =3D=3D 0x17aa3881) + id =3D ALC287_FIXUP_TAS2781_I2C; /* Yoga Book 9i 13IRU8 */ + else + id =3D ALC287_FIXUP_IDEAPAD_BASS_SPK_AMP; /* Yoga 9i */ + __snd_hda_apply_fixup(codec, id, action, 0); +} + static const struct hda_fixup alc269_fixups[] =3D { [ALC269_FIXUP_GPIO2] =3D { .type =3D HDA_FIXUP_FUNC, @@ -5834,6 +5852,10 @@ static const struct hda_fixup alc269_fixups[] =3D { .type =3D HDA_FIXUP_FUNC, .v.func =3D alc298_fixup_lenovo_c940_duet7, }, + [ALC287_FIXUP_LENOVO_YOGA_BOOK_9I] =3D { + .type =3D HDA_FIXUP_FUNC, + .v.func =3D alc287_fixup_lenovo_yoga_book_9i, + }, [ALC287_FIXUP_13S_GEN2_SPEAKERS] =3D { .type =3D HDA_FIXUP_VERBS, .v.verbs =3D (const struct hda_verb[]) { @@ -7191,7 +7213,7 @@ static const struct hda_quirk alc269_fixup_tbl[] =3D { SND_PCI_QUIRK(0x17aa, 0x3827, "Ideapad S740", ALC285_FIXUP_IDEAPAD_S740_C= OEF), SND_PCI_QUIRK(0x17aa, 0x3834, "Lenovo IdeaPad Slim 9i 14ITL5", ALC287_FIX= UP_YOGA7_14ITL_SPEAKERS), SND_PCI_QUIRK(0x17aa, 0x383d, "Legion Y9000X 2019", ALC285_FIXUP_LEGION_Y= 9000X_SPEAKERS), - SND_PCI_QUIRK(0x17aa, 0x3843, "Yoga 9i", ALC287_FIXUP_IDEAPAD_BASS_SPK_AM= P), + SND_PCI_QUIRK(0x17aa, 0x3843, "Lenovo Yoga 9i / Yoga Book 9i", ALC287_FIX= UP_LENOVO_YOGA_BOOK_9I), SND_PCI_QUIRK(0x17aa, 0x3847, "Legion 7 16ACHG6", ALC287_FIXUP_LEGION_16A= CHG6), SND_PCI_QUIRK(0x17aa, 0x384a, "Lenovo Yoga 7 15ITL5", ALC287_FIXUP_YOGA7_= 14ITL_SPEAKERS), SND_PCI_QUIRK(0x17aa, 0x3852, "Lenovo Yoga 7 14ITL5", ALC287_FIXUP_YOGA7_= 14ITL_SPEAKERS), --- base-commit: 24d479d26b25bce5faea3ddd9fa8f3a6c3129ea7 change-id: 20260122-alc269-yogabook9i-fixup-351bb007e15a Best regards, --=20 Martin Hamilton