PCI SSID and Codec SSID collision?
Hi,
The Lenovo Yoga Slim Pro 9 14IRP8 has tas2781 amplifiers, but it can only pickup its fixup with the hda_model=17aa:38be module parameter.
The 17aa:38be is the SSID of its Codec. The PCI SSID is 17aa:3802.
The patch_realtek.c has these fixup: SND_PCI_QUIRK(0x17aa, 0x3802, "Lenovo Yoga DuetITL 2021", ALC287_FIXUP_YOGA7_14ITL_SPEAKERS), SND_PCI_QUIRK(0x17aa, 0x38be, "Yoga S980-14.5 proX YC Dual", ALC287_FIXUP_TAS2781_I2C),
And the snd_hda_pick_fixup() picks the former fixup because of the same PCI SSID, but that is a Codec SSID?
At least it worked without that line. https://bugzilla.kernel.org/show_bug.cgi?id=208555#c839
It would be nice if it can be work without the module parameter.
What is the best way to add this strangeness to patch_realtek.c?
Thanks, Gergo
On Fri, 23 Feb 2024 13:05:12 +0100, Gergo Koteles wrote:
Hi,
The Lenovo Yoga Slim Pro 9 14IRP8 has tas2781 amplifiers, but it can only pickup its fixup with the hda_model=17aa:38be module parameter.
The 17aa:38be is the SSID of its Codec. The PCI SSID is 17aa:3802.
The patch_realtek.c has these fixup: SND_PCI_QUIRK(0x17aa, 0x3802, "Lenovo Yoga DuetITL 2021", ALC287_FIXUP_YOGA7_14ITL_SPEAKERS), SND_PCI_QUIRK(0x17aa, 0x38be, "Yoga S980-14.5 proX YC Dual", ALC287_FIXUP_TAS2781_I2C),
And the snd_hda_pick_fixup() picks the former fixup because of the same PCI SSID, but that is a Codec SSID?
At least it worked without that line. https://bugzilla.kernel.org/show_bug.cgi?id=208555#c839
It would be nice if it can be work without the module parameter.
What is the best way to add this strangeness to patch_realtek.c?
That's a bad collision that happens rarely but more than once...
In this case, we'd need to fix 17aa:3802 matching to be a special function that checks the model more closely. e.g. create a quirk function that checks the codec SSID additionally and apply the different quirks from there.
thanks,
Takashi
participants (2)
-
Gergo Koteles
-
Takashi Iwai