Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 596830ee authored by Takashi Iwai's avatar Takashi Iwai
Browse files

ALSA: hda/realtek - Look through codec SSID for fix-up lists



Not only PCI SSIDs but also look through codec SSIDs for fix-up table
entries.  MacBook tend to give the same PCI SSID but unique codec SSIDs.

Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
parent 0e7cc2e7
Loading
Loading
Loading
Loading
+18 −4
Original line number Diff line number Diff line
@@ -1526,6 +1526,7 @@ static void alc_pick_fixup(struct hda_codec *codec,
			   const struct alc_fixup *fixlist)
{
	struct alc_spec *spec = codec->spec;
	const struct snd_pci_quirk *q;
	int id = -1;
	const char *name = NULL;

@@ -1540,12 +1541,25 @@ static void alc_pick_fixup(struct hda_codec *codec,
		}
	}
	if (id < 0) {
		quirk = snd_pci_quirk_lookup(codec->bus->pci, quirk);
		if (quirk) {
			id = quirk->value;
		q = snd_pci_quirk_lookup(codec->bus->pci, quirk);
		if (q) {
			id = q->value;
#ifdef CONFIG_SND_DEBUG_VERBOSE
			name = q->name;
#endif
		}
	}
	if (id < 0) {
		for (q = quirk; q->subvendor; q++) {
			unsigned int vendorid =
				q->subdevice | (q->subvendor << 16);
			if (vendorid == codec->subsystem_id) {
				id = q->value;
#ifdef CONFIG_SND_DEBUG_VERBOSE
			name = quirk->name;
				name = q->name;
#endif
				break;
			}
		}
	}