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

Commit 1387e2d1 authored by Kailang Yang's avatar Kailang Yang Committed by Takashi Iwai
Browse files

ALSA: hda - Improve HP depop when system enter to S3



alc269_toggle_power_output() was only use in ALC269VB.  I rename it to
alc269vb_toggle_power_output().

Signed-off-by: default avatarKailang Yang <kailang@realtek.com>
Cc: <stable@vger.kernel.org>
Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
parent f58161ba
Loading
Loading
Loading
Loading
+11 −13
Original line number Original line Diff line number Diff line
@@ -5840,7 +5840,7 @@ static int alc269_parse_auto_config(struct hda_codec *codec)
	return alc_parse_auto_config(codec, alc269_ignore, ssids);
	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);
	int val = alc_read_coef_idx(codec, 0x04);
	if (power_up)
	if (power_up)
@@ -5857,10 +5857,10 @@ static void alc269_shutup(struct hda_codec *codec)
	if (spec->codec_variant != ALC269_TYPE_ALC269VB)
	if (spec->codec_variant != ALC269_TYPE_ALC269VB)
		return;
		return;


	if ((alc_get_coef0(codec) & 0x00ff) == 0x017)
	if (spec->codec_variant == ALC269_TYPE_ALC269VB)
		alc269_toggle_power_output(codec, 0);
		alc269vb_toggle_power_output(codec, 0);
	if ((alc_get_coef0(codec) & 0x00ff) == 0x018) {
	if (spec->codec_variant == ALC269_TYPE_ALC269VB &&
		alc269_toggle_power_output(codec, 0);
			(alc_get_coef0(codec) & 0x00ff) == 0x018) {
		msleep(150);
		msleep(150);
	}
	}
}
}
@@ -5870,24 +5870,22 @@ static int alc269_resume(struct hda_codec *codec)
{
{
	struct alc_spec *spec = codec->spec;
	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) {
			(alc_get_coef0(codec) & 0x00ff) == 0x018) {
		alc269_toggle_power_output(codec, 0);
		msleep(150);
		msleep(150);
	}
	}


	codec->patch_ops.init(codec);
	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) {
			(alc_get_coef0(codec) & 0x00ff) == 0x017) {
		alc269_toggle_power_output(codec, 1);
		msleep(200);
		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_amp(codec);
	snd_hda_codec_resume_cache(codec);
	snd_hda_codec_resume_cache(codec);
	hda_call_check_power_status(codec, 0x01);
	hda_call_check_power_status(codec, 0x01);