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

Commit 4b527b65 authored by David Henningsson's avatar David Henningsson Committed by Takashi Iwai
Browse files

ALSA: hda - limit internal mic boost for Asus X202E

When the input gain for the internal mic is set to its maximum level,
the background noise becomes so high - and any relevant signal clipped -
that the setting becomes unusable. It is better to limit the amplification.

BugLink: https://bugs.launchpad.net/bugs/1052460


Signed-off-by: default avatarDavid Henningsson <david.henningsson@canonical.com>
Cc: <stable@vger.kernel.org> [v3.5+]
Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
parent d279fae8
Loading
Loading
Loading
Loading
+29 −0
Original line number Diff line number Diff line
@@ -3666,6 +3666,32 @@ static void set_widgets_power_state_vt2002P(struct hda_codec *codec)
		update_power_state(codec, 0x21, AC_PWRST_D3);
}

/*
 * pin fix-up
 */
enum {
	VIA_FIXUP_INTMIC_BOOST,
};

static void via_fixup_intmic_boost(struct hda_codec *codec,
				  const struct hda_fixup *fix, int action)
{
	if (action == HDA_FIXUP_ACT_PRE_PROBE)
		override_mic_boost(codec, 0x30, 0, 2, 40);
}

static const struct hda_fixup via_fixups[] = {
	[VIA_FIXUP_INTMIC_BOOST] = {
		.type = HDA_FIXUP_FUNC,
		.v.func = via_fixup_intmic_boost,
	},
};

static const struct snd_pci_quirk vt2002p_fixups[] = {
	SND_PCI_QUIRK(0x1043, 0x8532, "Asus X202E", VIA_FIXUP_INTMIC_BOOST),
	{}
};

/* patch for vt2002P */
static int patch_vt2002P(struct hda_codec *codec)
{
@@ -3682,6 +3708,9 @@ static int patch_vt2002P(struct hda_codec *codec)
	override_mic_boost(codec, 0x29, 0, 3, 40);
	add_secret_dac_path(codec);

	snd_hda_pick_fixup(codec, NULL, vt2002p_fixups, via_fixups);
	snd_hda_apply_fixup(codec, HDA_FIXUP_ACT_PRE_PROBE);

	/* automatic parse from the BIOS config */
	err = via_parse_auto_config(codec);
	if (err < 0) {