(In reply to Gergo K from comment #840)
> There is an ID collision.
>
> Your audio controller's PCI SSID (17aa:3802) is the same as the "Lenovo Yoga
> DuetITL 2021" Codec SSID. The snd_hda_pick_fixup() function searches the PCI
> SSID before the Codec SSID in the same table. So it picks the
> ALC287_FIXUP_YOGA7_14ITL_SPEAKERS fixup not the ALC287_FIXUP_TAS2781_I2C.
>
>
> !!PCI Soundcards installed in the system
> !!--------------------------------------
>
> 00:1f.3 Multimedia audio controller [0401]: Intel Corporation Device
> [8086:51cf] (rev 01)
> Subsystem: Lenovo Device [17aa:3802]
>
> I think a common fixup can be figured out, or a better solution from someone
> who knows this subsystem well.
Hm I see, not sure if this is the right place to talk about the code, but is there a reason for the fixup table to be the same for PCI and Codec SSIDs? (I know it's not like it could be separated at this point). Also, is there a reason to match by PCI before Codec? A few ideas I was thinking:
1. Just check if the PCI and Codec SSID match the exact SSIDs of this device - not elegant
2. For every lookup, check with both PCI and Codec SSID and see if they match the same entry, add a debug to these cases and use the Codec entry - not sure how common this is and if this will break other cases
Depending on how hard this problem is I may want to help with the code if possible.
(sorry for the dupe, I pressed the save changes by mistake before)
(In reply to Gergo K from comment #840) pick_fixup( ) function searches the PCI FIXUP_YOGA7_ 14ITL_SPEAKERS fixup not the ALC287_ FIXUP_TAS2781_ I2C. ------- ------- ------- ------- -----
> There is an ID collision.
>
> Your audio controller's PCI SSID (17aa:3802) is the same as the "Lenovo Yoga
> DuetITL 2021" Codec SSID. The snd_hda_
> SSID before the Codec SSID in the same table. So it picks the
> ALC287_
>
>
> !!PCI Soundcards installed in the system
> !!-----
>
> 00:1f.3 Multimedia audio controller [0401]: Intel Corporation Device
> [8086:51cf] (rev 01)
> Subsystem: Lenovo Device [17aa:3802]
>
> I think a common fixup can be figured out, or a better solution from someone
> who knows this subsystem well.
Hm I see, not sure if this is the right place to talk about the code, but is there a reason for the fixup table to be the same for PCI and Codec SSIDs? (I know it's not like it could be separated at this point). Also, is there a reason to match by PCI before Codec? A few ideas I was thinking:
1. Just check if the PCI and Codec SSID match the exact SSIDs of this device - not elegant
2. For every lookup, check with both PCI and Codec SSID and see if they match the same entry, add a debug to these cases and use the Codec entry - not sure how common this is and if this will break other cases
Depending on how hard this problem is I may want to help with the code if possible.
(sorry for the dupe, I pressed the save changes by mistake before)