Commit 4b016931 authored by Kailang Yang's avatar Kailang Yang Committed by Takashi Iwai

ALSA: hda/realtek - Add more codecs alias name for Dell

Dell assigned alias name for more codecs.
ALC3220 ALC3221 ALC3223 ALC3226 ALC3234 ALC3661.
Signed-off-by: default avatarKailang Yang <kailang@realtek.com>
Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
parent 696620a6
...@@ -903,7 +903,7 @@ static int alc_codec_rename(struct hda_codec *codec, const char *name) ...@@ -903,7 +903,7 @@ static int alc_codec_rename(struct hda_codec *codec, const char *name)
} }
/* /*
* Rename codecs appropriately from COEF value * Rename codecs appropriately from COEF value or subvendor id
*/ */
struct alc_codec_rename_table { struct alc_codec_rename_table {
unsigned int vendor_id; unsigned int vendor_id;
...@@ -912,6 +912,13 @@ struct alc_codec_rename_table { ...@@ -912,6 +912,13 @@ struct alc_codec_rename_table {
const char *name; const char *name;
}; };
struct alc_codec_rename_pci_table {
unsigned int codec_vendor_id;
unsigned short pci_subvendor;
unsigned short pci_subdevice;
const char *name;
};
static struct alc_codec_rename_table rename_tbl[] = { static struct alc_codec_rename_table rename_tbl[] = {
{ 0x10ec0269, 0xfff0, 0x3010, "ALC277" }, { 0x10ec0269, 0xfff0, 0x3010, "ALC277" },
{ 0x10ec0269, 0xf0f0, 0x2010, "ALC259" }, { 0x10ec0269, 0xf0f0, 0x2010, "ALC259" },
...@@ -931,9 +938,20 @@ static struct alc_codec_rename_table rename_tbl[] = { ...@@ -931,9 +938,20 @@ static struct alc_codec_rename_table rename_tbl[] = {
{ } /* terminator */ { } /* terminator */
}; };
static struct alc_codec_rename_pci_table rename_pci_tbl[] = {
{ 0x10ec0280, 0x1028, 0, "ALC3220" },
{ 0x10ec0282, 0x1028, 0, "ALC3221" },
{ 0x10ec0283, 0x1028, 0, "ALC3223" },
{ 0x10ec0292, 0x1028, 0, "ALC3226" },
{ 0x10ec0255, 0x1028, 0, "ALC3234" },
{ 0x10ec0668, 0x1028, 0, "ALC3661" },
{ } /* terminator */
};
static int alc_codec_rename_from_preset(struct hda_codec *codec) static int alc_codec_rename_from_preset(struct hda_codec *codec)
{ {
const struct alc_codec_rename_table *p; const struct alc_codec_rename_table *p;
const struct alc_codec_rename_pci_table *q;
for (p = rename_tbl; p->vendor_id; p++) { for (p = rename_tbl; p->vendor_id; p++) {
if (p->vendor_id != codec->vendor_id) if (p->vendor_id != codec->vendor_id)
...@@ -941,6 +959,17 @@ static int alc_codec_rename_from_preset(struct hda_codec *codec) ...@@ -941,6 +959,17 @@ static int alc_codec_rename_from_preset(struct hda_codec *codec)
if ((alc_get_coef0(codec) & p->coef_mask) == p->coef_bits) if ((alc_get_coef0(codec) & p->coef_mask) == p->coef_bits)
return alc_codec_rename(codec, p->name); return alc_codec_rename(codec, p->name);
} }
for (q = rename_pci_tbl; q->codec_vendor_id; q++) {
if (q->codec_vendor_id != codec->vendor_id)
continue;
if (q->pci_subvendor != codec->bus->pci->subsystem_vendor)
continue;
if (!q->pci_subdevice ||
q->pci_subdevice == codec->bus->pci->subsystem_device)
return alc_codec_rename(codec, q->name);
}
return 0; return 0;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment