|
@@ -2406,6 +2406,7 @@ static void alc_free(struct hda_codec *codec)
|
|
|
alc_shutup(codec);
|
|
|
alc_free_kctls(codec);
|
|
|
alc_free_bind_ctls(codec);
|
|
|
+ snd_hda_gen_free(&spec->gen);
|
|
|
kfree(spec);
|
|
|
snd_hda_detach_beep_device(codec);
|
|
|
}
|
|
@@ -4371,6 +4372,7 @@ static int alc_alloc_spec(struct hda_codec *codec, hda_nid_t mixer_nid)
|
|
|
return -ENOMEM;
|
|
|
codec->spec = spec;
|
|
|
spec->mixer_nid = mixer_nid;
|
|
|
+ snd_hda_gen_init(&spec->gen);
|
|
|
|
|
|
err = alc_codec_rename_from_preset(codec);
|
|
|
if (err < 0) {
|
|
@@ -6868,6 +6870,12 @@ static int patch_alc662(struct hda_codec *codec)
|
|
|
|
|
|
alc_fix_pll_init(codec, 0x20, 0x04, 15);
|
|
|
|
|
|
+ alc_pick_fixup(codec, alc662_fixup_models,
|
|
|
+ alc662_fixup_tbl, alc662_fixups);
|
|
|
+ alc_apply_fixup(codec, ALC_FIXUP_ACT_PRE_PROBE);
|
|
|
+
|
|
|
+ alc_auto_parse_customize_define(codec);
|
|
|
+
|
|
|
if ((alc_get_coef0(codec) & (1 << 14)) &&
|
|
|
codec->bus->pci->subsystem_vendor == 0x1025 &&
|
|
|
spec->cdefine.platform_type == 1) {
|
|
@@ -6875,12 +6883,6 @@ static int patch_alc662(struct hda_codec *codec)
|
|
|
goto error;
|
|
|
}
|
|
|
|
|
|
- alc_pick_fixup(codec, alc662_fixup_models,
|
|
|
- alc662_fixup_tbl, alc662_fixups);
|
|
|
- alc_apply_fixup(codec, ALC_FIXUP_ACT_PRE_PROBE);
|
|
|
-
|
|
|
- alc_auto_parse_customize_define(codec);
|
|
|
-
|
|
|
/* automatic parse from the BIOS config */
|
|
|
err = alc662_parse_auto_config(codec);
|
|
|
if (err < 0)
|
|
@@ -6963,6 +6965,7 @@ static const struct hda_codec_preset snd_hda_preset_realtek[] = {
|
|
|
{ .id = 0x10ec0272, .name = "ALC272", .patch = patch_alc662 },
|
|
|
{ .id = 0x10ec0275, .name = "ALC275", .patch = patch_alc269 },
|
|
|
{ .id = 0x10ec0276, .name = "ALC276", .patch = patch_alc269 },
|
|
|
+ { .id = 0x10ec0280, .name = "ALC280", .patch = patch_alc269 },
|
|
|
{ .id = 0x10ec0861, .rev = 0x100340, .name = "ALC660",
|
|
|
.patch = patch_alc861 },
|
|
|
{ .id = 0x10ec0660, .name = "ALC660-VD", .patch = patch_alc861vd },
|