[PATCH 1/2] ALSA: hda/realtek - Fix Lenovo Thinkpad X1 Carbon 7th quirk subdevice id
From: Benjamin Poirier
Date: Tue Feb 11 2020 - 00:57:39 EST
fixes the pci subsystem device ids for the "Thinkpad X1 Carbon 7th" and
"Thinkpad X1 Yoga 7th" quirks.
My machine reports the following:
dmidecode -t system
Manufacturer: LENOVO
Product Name: 20QDCTO1WW
Version: ThinkPad X1 Carbon 7th
lspci -s 1f.3 -vnn
00:1f.3 Audio device [0403]: Intel Corporation Cannon Point-LP High Definition Audio Controller [8086:9dc8] (rev 11) (prog-if 80)
Subsystem: Lenovo Cannon Point-LP High Definition Audio Controller [17aa:2292]
/proc/asound/card0/codec#0
Subsystem Id: 0x17aa2293
Notice the different subsystem device ids between pci info and codec info.
commit d2cd795c4ece ("ALSA: hda - fixup for the bass speaker on Lenovo
Carbon X1 7th gen") added a quirk meant for the X1 Carbon but used device
id 0x2293. Note that this does not match the PCI SSID but it matches the
codec SSID.
commit 54a6a7dc107d ("ALSA: hda/realtek - Add quirk for the bass speaker on
Lenovo Yoga X1 7th gen") added a quirk meant for the X1 Yoga but used
subdevice id 0x2292, the PCI SSID used on the X1 Carbon.
Given that in snd_hdac_device_init() quirks are first matched by PCI SSID
and then, if there is no match, by codec SSID, the net result is that the
quirk labelled "Thinkpad X1 Yoga 7th" now gets applied on the X1 Carbon.
Example from my machine (an X1 Carbon, not Yoga):
[ 15.817637] snd_hda_codec_realtek hdaudioC0D0: ALC285: picked fixup Thinkpad X1 Yoga 7th (PCI SSID)
Therefore, fix the subdevice id for the "ThinkPad X1 Carbon 7th" quirk.
Note that looking through the lspci outputs collected at
https://github.com/linuxhw/LsPCI/tree/master/Notebook/Lenovo/ThinkPad
all X1 Carbon there have an Audio device with PCI SSID 0x2292, which
matches with the output from my machine.
This leaves the question of what to do with the quirk labelled "Thinkpad X1
Yoga 7th".
>From email discussions, it seems that the author of commit 54a6a7dc107d
("ALSA: hda/realtek - Add quirk for the bass speaker on Lenovo Yoga X1 7th
gen") did not have a device to test the changes. I don't have an X1 Yoga
either and I did not find a sample lspci listing for it online. Therefore,
the best course of action seems to be to remove that quirk. In the best
case, the quirk for the X1 Carbon will match the X1 Yoga (via PCI SSID or
codec SSID). In the worst case, it will not and someone who actually has
such a machine should come forth with concrete data about subsystem ids and
needed quirks.
Fixes: d2cd795c4ece ("ALSA: hda - fixup for the bass speaker on Lenovo Carbon X1 7th gen")
Fixes: 54a6a7dc107d ("ALSA: hda/realtek - Add quirk for the bass speaker on Lenovo Yoga X1 7th gen")
Link: https://lore.kernel.org/alsa-devel/20200210025249.GA2700@f3/
Cc: Jaroslav Kysela <perex@xxxxxxxx>
Cc: Kailang Yang <kailang@xxxxxxxxxxx>
Signed-off-by: Benjamin Poirier <benjamin.poirier@xxxxxxxxx>
---
sound/pci/hda/patch_realtek.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
index 4770fb3f51fb..05d44df2008e 100644
--- a/sound/pci/hda/patch_realtek.c
+++ b/sound/pci/hda/patch_realtek.c
@@ -7268,8 +7268,7 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = {
SND_PCI_QUIRK(0x17aa, 0x224c, "Thinkpad", ALC298_FIXUP_TPT470_DOCK),
SND_PCI_QUIRK(0x17aa, 0x224d, "Thinkpad", ALC298_FIXUP_TPT470_DOCK),
SND_PCI_QUIRK(0x17aa, 0x225d, "Thinkpad T480", ALC269_FIXUP_LIMIT_INT_MIC_BOOST),
- SND_PCI_QUIRK(0x17aa, 0x2292, "Thinkpad X1 Yoga 7th", ALC285_FIXUP_SPEAKER2_TO_DAC1),
- SND_PCI_QUIRK(0x17aa, 0x2293, "Thinkpad X1 Carbon 7th", ALC285_FIXUP_SPEAKER2_TO_DAC1),
+ SND_PCI_QUIRK(0x17aa, 0x2292, "Thinkpad X1 Carbon 7th", ALC285_FIXUP_SPEAKER2_TO_DAC1),
SND_PCI_QUIRK(0x17aa, 0x30bb, "ThinkCentre AIO", ALC233_FIXUP_LENOVO_LINE2_MIC_HOTKEY),
SND_PCI_QUIRK(0x17aa, 0x30e2, "ThinkCentre AIO", ALC233_FIXUP_LENOVO_LINE2_MIC_HOTKEY),
SND_PCI_QUIRK(0x17aa, 0x310c, "ThinkCentre Station", ALC294_FIXUP_LENOVO_MIC_LOCATION),
--
2.25.0