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

Commit 95f74c41 authored by Takashi Iwai's avatar Takashi Iwai
Browse files

ALSA: hda - Fix mute LED on HP laptops in runtime suspend



When HP laptops with mute and mic-record LEDs go to runtime suspend,
these LEDs are turned on forcibly no matter whether GPIO pis are on or
off.  This strange behavior seems triggered by resetting the HD-audio
bus link at azx_rutime_suspend().  So, just add a new hda_bus flag to
avoid the link reset at runtime suspend and set it for these HP
machines.

Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
parent 161ebf29
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -698,6 +698,7 @@ struct hda_bus {
	unsigned int in_reset:1;	/* during reset operation */
	unsigned int power_keep_link_on:1; /* don't power off HDA link */
	unsigned int no_response_fallback:1; /* don't fallback at RIRB error */
	unsigned int avoid_link_reset:1; /* don't reset link at runtime PM */

	int primary_dig_out_type;	/* primary digital out PCM type */
};
+2 −1
Original line number Diff line number Diff line
@@ -2986,6 +2986,7 @@ static int azx_runtime_suspend(struct device *dev)
		  STATESTS_INT_MASK);

	azx_stop_chip(chip);
	if (!chip->bus->avoid_link_reset)
		azx_enter_link_reset(chip);
	azx_clear_irq_pending(chip);
	if (chip->driver_caps & AZX_DCAPS_I915_POWERWELL)
+3 −1
Original line number Diff line number Diff line
@@ -2091,8 +2091,10 @@ static void stac92hd83xxx_fixup_hp_mic_led(struct hda_codec *codec,
{
	struct sigmatel_spec *spec = codec->spec;

	if (action == HDA_FIXUP_ACT_PRE_PROBE)
	if (action == HDA_FIXUP_ACT_PRE_PROBE) {
		spec->mic_mute_led_gpio = 0x08; /* GPIO3 */
		codec->bus->avoid_link_reset = 1;
	}
}

static void stac92hd83xxx_fixup_headset_jack(struct hda_codec *codec,