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@perex.cz Cc: Kailang Yang kailang@realtek.com Signed-off-by: Benjamin Poirier benjamin.poirier@gmail.com --- 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),