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: David Henningsson <email address hidden> ---
Feel free to add cc to stable if you think it makes sense to do so. Alsa info available at: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1052460/+attachment/3322585/+files/alsa-info.txt.unplugged
sound/pci/hda/patch_via.c | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+)
diff --git a/sound/pci/hda/patch_via.c b/sound/pci/hda/patch_via.c index d5f36a1..74fb6fd 100644 --- a/sound/pci/hda/patch_via.c +++ b/sound/pci/hda/patch_via.c @@ -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) { -- 1.7.9.5
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: David Henningsson <email address hidden>
---
Feel free to add cc to stable if you think it makes sense to do so. /bugs.launchpad .net/ubuntu/ +source/ linux/+ bug/1052460/ +attachment/ 3322585/ +files/ alsa-info. txt.unplugged
Alsa info available at:
https:/
sound/ pci/hda/ patch_via. c | 29 +++++++ +++++++ +++++++ +++++++ +
1 file changed, 29 insertions(+)
diff --git a/sound/ pci/hda/ patch_via. c b/sound/ pci/hda/ patch_via. c pci/hda/ patch_via. c pci/hda/ patch_via. c power_state_ vt2002P( struct hda_codec *codec) power_state( codec, 0x21, AC_PWRST_D3);
index d5f36a1..74fb6fd 100644
--- a/sound/
+++ b/sound/
@@ -3666,6 +3666,32 @@ static void set_widgets_
update_
}
+/* INTMIC_ BOOST, intmic_ boost(struct hda_codec *codec, ACT_PRE_ PROBE) mic_boost( codec, 0x30, 0, 2, 40); INTMIC_ BOOST] = { intmic_ boost, QUIRK(0x1043, 0x8532, "Asus X202E", VIA_FIXUP_ INTMIC_ BOOST), struct hda_codec *codec) struct hda_codec *codec) mic_boost( codec, 0x29, 0, 3, 40); dac_path( codec);
+ * pin fix-up
+ */
+enum {
+ VIA_FIXUP_
+};
+
+static void via_fixup_
+ const struct hda_fixup *fix, int action)
+{
+ if (action == HDA_FIXUP_
+ override_
+}
+
+static const struct hda_fixup via_fixups[] = {
+ [VIA_FIXUP_
+ .type = HDA_FIXUP_FUNC,
+ .v.func = via_fixup_
+ },
+};
+
+static const struct snd_pci_quirk vt2002p_fixups[] = {
+ SND_PCI_
+ {}
+};
+
/* patch for vt2002P */
static int patch_vt2002P(
{
@@ -3682,6 +3708,9 @@ static int patch_vt2002P(
override_
add_secret_
+ snd_hda_ pick_fixup( codec, NULL, vt2002p_fixups, via_fixups); apply_fixup( codec, HDA_FIXUP_ ACT_PRE_ PROBE); auto_config( codec);
+ snd_hda_
+
/* automatic parse from the BIOS config */
err = via_parse_
if (err < 0) {
--
1.7.9.5