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: David Henningsson <david.henningsson@canonical.com> Cc: <stable@vger.kernel.org> [v3.5+] Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
parent
d279fae8a4
commit
4b527b6516
1 changed files with 29 additions and 0 deletions
|
@ -3666,6 +3666,32 @@ static void set_widgets_power_state_vt2002P(struct hda_codec *codec)
|
||||||
update_power_state(codec, 0x21, AC_PWRST_D3);
|
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 */
|
/* patch for vt2002P */
|
||||||
static int patch_vt2002P(struct hda_codec *codec)
|
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);
|
override_mic_boost(codec, 0x29, 0, 3, 40);
|
||||||
add_secret_dac_path(codec);
|
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 */
|
/* automatic parse from the BIOS config */
|
||||||
err = via_parse_auto_config(codec);
|
err = via_parse_auto_config(codec);
|
||||||
if (err < 0) {
|
if (err < 0) {
|
||||||
|
|
Loading…
Add table
Reference in a new issue