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

Commit 6e969d91 authored by Takashi Iwai's avatar Takashi Iwai
Browse files

ALSA: hda - Set line-out pin-ctls properly when indep-HP mode changes



When Independent-HP mode is changed for VIA, the driver needs to
re-issue the auto-mute check so that the line-out pins are set properly
without influence of HP pin state.

Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
parent 21ce0b65
Loading
Loading
Loading
Loading
+11 −10
Original line number Diff line number Diff line
@@ -615,6 +615,7 @@ static void via_auto_init_speaker_out(struct hda_codec *codec)
}

static bool is_smart51_pins(struct hda_codec *codec, hda_nid_t pin);
static void via_hp_automute(struct hda_codec *codec);

static void via_auto_init_analog_input(struct hda_codec *codec)
{
@@ -801,6 +802,7 @@ static int via_independent_hp_put(struct snd_kcontrol *kcontrol,

	/* update jack power state */
	set_widgets_power_state(codec);
	via_hp_automute(codec);
	return 1;
}

@@ -1532,19 +1534,18 @@ static void via_line_automute(struct hda_codec *codec, int present)
static void via_hp_automute(struct hda_codec *codec)
{
	int present = 0;
	int nums;
	struct via_spec *spec = codec->spec;

	if (!spec->hp_independent_mode && spec->autocfg.hp_pins[0]) {
		int nums;
	if (!spec->hp_independent_mode && spec->autocfg.hp_pins[0])
		present = snd_hda_jack_detect(codec, spec->autocfg.hp_pins[0]);

	if (spec->smart51_enabled)
		nums = spec->autocfg.line_outs + spec->smart51_nums;
	else
		nums = spec->autocfg.line_outs;
		toggle_output_mutes(codec, nums,
				    spec->autocfg.line_out_pins,
				    present);
	}
	toggle_output_mutes(codec, nums, spec->autocfg.line_out_pins, present);

	via_line_automute(codec, present);
}