|
@@ -5841,7 +5841,7 @@ static int alc269_parse_auto_config(struct hda_codec *codec)
|
|
|
return alc_parse_auto_config(codec, alc269_ignore, ssids);
|
|
|
}
|
|
|
|
|
|
-static void alc269_toggle_power_output(struct hda_codec *codec, int power_up)
|
|
|
+static void alc269vb_toggle_power_output(struct hda_codec *codec, int power_up)
|
|
|
{
|
|
|
int val = alc_read_coef_idx(codec, 0x04);
|
|
|
if (power_up)
|
|
@@ -5858,10 +5858,10 @@ static void alc269_shutup(struct hda_codec *codec)
|
|
|
if (spec->codec_variant != ALC269_TYPE_ALC269VB)
|
|
|
return;
|
|
|
|
|
|
- if ((alc_get_coef0(codec) & 0x00ff) == 0x017)
|
|
|
- alc269_toggle_power_output(codec, 0);
|
|
|
- if ((alc_get_coef0(codec) & 0x00ff) == 0x018) {
|
|
|
- alc269_toggle_power_output(codec, 0);
|
|
|
+ if (spec->codec_variant == ALC269_TYPE_ALC269VB)
|
|
|
+ alc269vb_toggle_power_output(codec, 0);
|
|
|
+ if (spec->codec_variant == ALC269_TYPE_ALC269VB &&
|
|
|
+ (alc_get_coef0(codec) & 0x00ff) == 0x018) {
|
|
|
msleep(150);
|
|
|
}
|
|
|
}
|
|
@@ -5871,24 +5871,22 @@ static int alc269_resume(struct hda_codec *codec)
|
|
|
{
|
|
|
struct alc_spec *spec = codec->spec;
|
|
|
|
|
|
- if (spec->codec_variant == ALC269_TYPE_ALC269VB ||
|
|
|
+ if (spec->codec_variant == ALC269_TYPE_ALC269VB)
|
|
|
+ alc269vb_toggle_power_output(codec, 0);
|
|
|
+ if (spec->codec_variant == ALC269_TYPE_ALC269VB &&
|
|
|
(alc_get_coef0(codec) & 0x00ff) == 0x018) {
|
|
|
- alc269_toggle_power_output(codec, 0);
|
|
|
msleep(150);
|
|
|
}
|
|
|
|
|
|
codec->patch_ops.init(codec);
|
|
|
|
|
|
- if (spec->codec_variant == ALC269_TYPE_ALC269VB ||
|
|
|
+ if (spec->codec_variant == ALC269_TYPE_ALC269VB)
|
|
|
+ alc269vb_toggle_power_output(codec, 1);
|
|
|
+ if (spec->codec_variant == ALC269_TYPE_ALC269VB &&
|
|
|
(alc_get_coef0(codec) & 0x00ff) == 0x017) {
|
|
|
- alc269_toggle_power_output(codec, 1);
|
|
|
msleep(200);
|
|
|
}
|
|
|
|
|
|
- if (spec->codec_variant == ALC269_TYPE_ALC269VB ||
|
|
|
- (alc_get_coef0(codec) & 0x00ff) == 0x018)
|
|
|
- alc269_toggle_power_output(codec, 1);
|
|
|
-
|
|
|
snd_hda_codec_resume_amp(codec);
|
|
|
snd_hda_codec_resume_cache(codec);
|
|
|
hda_call_check_power_status(codec, 0x01);
|
|
@@ -7080,6 +7078,7 @@ static const struct hda_codec_preset snd_hda_preset_realtek[] = {
|
|
|
.patch = patch_alc662 },
|
|
|
{ .id = 0x10ec0663, .name = "ALC663", .patch = patch_alc662 },
|
|
|
{ .id = 0x10ec0665, .name = "ALC665", .patch = patch_alc662 },
|
|
|
+ { .id = 0x10ec0668, .name = "ALC668", .patch = patch_alc662 },
|
|
|
{ .id = 0x10ec0670, .name = "ALC670", .patch = patch_alc662 },
|
|
|
{ .id = 0x10ec0680, .name = "ALC680", .patch = patch_alc680 },
|
|
|
{ .id = 0x10ec0880, .name = "ALC880", .patch = patch_alc880 },
|
|
@@ -7097,6 +7096,7 @@ static const struct hda_codec_preset snd_hda_preset_realtek[] = {
|
|
|
{ .id = 0x10ec0889, .name = "ALC889", .patch = patch_alc882 },
|
|
|
{ .id = 0x10ec0892, .name = "ALC892", .patch = patch_alc662 },
|
|
|
{ .id = 0x10ec0899, .name = "ALC898", .patch = patch_alc882 },
|
|
|
+ { .id = 0x10ec0900, .name = "ALC1150", .patch = patch_alc882 },
|
|
|
{} /* terminator */
|
|
|
};
|
|
|
|