Commit 065380f0 authored by Kailang Yang's avatar Kailang Yang Committed by Takashi Iwai

ALSA: hda - Add support of new codec ALC284

Added the support for a new codec ALC284, which is compatible with
ALC269.  Also add more codec variants to handle the SSID check
properly.
Signed-off-by: default avatarKailang Yang <kailang@realtek.com>
Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
parent e8e7da23
...@@ -5817,6 +5817,9 @@ enum { ...@@ -5817,6 +5817,9 @@ enum {
ALC269_TYPE_ALC269VB, ALC269_TYPE_ALC269VB,
ALC269_TYPE_ALC269VC, ALC269_TYPE_ALC269VC,
ALC269_TYPE_ALC269VD, ALC269_TYPE_ALC269VD,
ALC269_TYPE_ALC280,
ALC269_TYPE_ALC282,
ALC269_TYPE_ALC284,
}; };
/* /*
...@@ -5833,10 +5836,13 @@ static int alc269_parse_auto_config(struct hda_codec *codec) ...@@ -5833,10 +5836,13 @@ static int alc269_parse_auto_config(struct hda_codec *codec)
switch (spec->codec_variant) { switch (spec->codec_variant) {
case ALC269_TYPE_ALC269VA: case ALC269_TYPE_ALC269VA:
case ALC269_TYPE_ALC269VC: case ALC269_TYPE_ALC269VC:
case ALC269_TYPE_ALC280:
case ALC269_TYPE_ALC284:
ssids = alc269va_ssids; ssids = alc269va_ssids;
break; break;
case ALC269_TYPE_ALC269VB: case ALC269_TYPE_ALC269VB:
case ALC269_TYPE_ALC269VD: case ALC269_TYPE_ALC269VD:
case ALC269_TYPE_ALC282:
ssids = alc269_ssids; ssids = alc269_ssids;
break; break;
default: default:
...@@ -6400,7 +6406,8 @@ static int patch_alc269(struct hda_codec *codec) ...@@ -6400,7 +6406,8 @@ static int patch_alc269(struct hda_codec *codec)
alc_auto_parse_customize_define(codec); alc_auto_parse_customize_define(codec);
if (codec->vendor_id == 0x10ec0269) { switch (codec->vendor_id) {
case 0x10ec0269:
spec->codec_variant = ALC269_TYPE_ALC269VA; spec->codec_variant = ALC269_TYPE_ALC269VA;
switch (alc_get_coef0(codec) & 0x00f0) { switch (alc_get_coef0(codec) & 0x00f0) {
case 0x0010: case 0x0010:
...@@ -6425,6 +6432,20 @@ static int patch_alc269(struct hda_codec *codec) ...@@ -6425,6 +6432,20 @@ static int patch_alc269(struct hda_codec *codec)
goto error; goto error;
spec->init_hook = alc269_fill_coef; spec->init_hook = alc269_fill_coef;
alc269_fill_coef(codec); alc269_fill_coef(codec);
break;
case 0x10ec0280:
case 0x10ec0290:
spec->codec_variant = ALC269_TYPE_ALC280;
break;
case 0x10ec0282:
case 0x10ec0283:
spec->codec_variant = ALC269_TYPE_ALC282;
break;
case 0x10ec0284:
case 0x10ec0292:
spec->codec_variant = ALC269_TYPE_ALC284;
break;
} }
/* automatic parse from the BIOS config */ /* automatic parse from the BIOS config */
...@@ -7129,6 +7150,7 @@ static const struct hda_codec_preset snd_hda_preset_realtek[] = { ...@@ -7129,6 +7150,7 @@ static const struct hda_codec_preset snd_hda_preset_realtek[] = {
{ .id = 0x10ec0280, .name = "ALC280", .patch = patch_alc269 }, { .id = 0x10ec0280, .name = "ALC280", .patch = patch_alc269 },
{ .id = 0x10ec0282, .name = "ALC282", .patch = patch_alc269 }, { .id = 0x10ec0282, .name = "ALC282", .patch = patch_alc269 },
{ .id = 0x10ec0283, .name = "ALC283", .patch = patch_alc269 }, { .id = 0x10ec0283, .name = "ALC283", .patch = patch_alc269 },
{ .id = 0x10ec0284, .name = "ALC284", .patch = patch_alc269 },
{ .id = 0x10ec0290, .name = "ALC290", .patch = patch_alc269 }, { .id = 0x10ec0290, .name = "ALC290", .patch = patch_alc269 },
{ .id = 0x10ec0292, .name = "ALC292", .patch = patch_alc269 }, { .id = 0x10ec0292, .name = "ALC292", .patch = patch_alc269 },
{ .id = 0x10ec0861, .rev = 0x100340, .name = "ALC660", { .id = 0x10ec0861, .rev = 0x100340, .name = "ALC660",
......
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