At Mon, 22 Apr 2013 14:30:14 +0200, David Henningsson wrote: > > These are being reported as being so noisy at high mic boost levels, > so they are unusable in practice. > Therefore artificially limit the boosts. > > BugLink: https://bugs.launchpad.net/bugs/1089795 > Signed-off-by: David Henningsson <david.hennings...@canonical.com>
Thanks, applied. Takashi > --- > sound/pci/hda/patch_realtek.c | 42 > ++++++++++++++++++++++++++++++++++++++++- > 1 file changed, 41 insertions(+), 1 deletion(-) > > diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c > index 28b3f5a..6e5d383 100644 > --- a/sound/pci/hda/patch_realtek.c > +++ b/sound/pci/hda/patch_realtek.c > @@ -3156,6 +3156,38 @@ static void alc271_hp_gate_mic_jack(struct hda_codec > *codec, > } > } > > +static void alc269_fixup_limit_int_mic_boost(struct hda_codec *codec, > + const struct hda_fixup *fix, > + int action) > +{ > + struct alc_spec *spec = codec->spec; > + struct auto_pin_cfg *cfg = &spec->gen.autocfg; > + int i; > + > + /* The mic boosts on level 2 and 3 are too noisy > + on the internal mic input. > + Therefore limit the boost to 0 or 1. */ > + > + if (action != HDA_FIXUP_ACT_PROBE) > + return; > + > + for (i = 0; i < cfg->num_inputs; i++) { > + hda_nid_t nid = cfg->inputs[i].pin; > + unsigned int defcfg; > + if (cfg->inputs[i].type != AUTO_PIN_MIC) > + continue; > + defcfg = snd_hda_codec_get_pincfg(codec, nid); > + if (snd_hda_get_input_pin_attr(defcfg) != INPUT_PIN_ATTR_INT) > + continue; > + > + snd_hda_override_amp_caps(codec, nid, HDA_INPUT, > + (0x00 << AC_AMPCAP_OFFSET_SHIFT) | > + (0x01 << AC_AMPCAP_NUM_STEPS_SHIFT) | > + (0x2f << AC_AMPCAP_STEP_SIZE_SHIFT) | > + (0 << AC_AMPCAP_MUTE_SHIFT)); > + } > +} > + > enum { > ALC269_FIXUP_SONY_VAIO, > ALC275_FIXUP_SONY_VAIO_GPIO2, > @@ -3190,6 +3222,7 @@ enum { > ALC271_FIXUP_AMIC_MIC2, > ALC271_FIXUP_HP_GATE_MIC_JACK, > ALC269_FIXUP_ACER_AC700, > + ALC269_FIXUP_LIMIT_INT_MIC_BOOST, > }; > > static const struct hda_fixup alc269_fixups[] = { > @@ -3428,6 +3461,10 @@ static const struct hda_fixup alc269_fixups[] = { > .chained = true, > .chain_id = ALC271_FIXUP_DMIC, > }, > + [ALC269_FIXUP_LIMIT_INT_MIC_BOOST] = { > + .type = HDA_FIXUP_FUNC, > + .v.func = alc269_fixup_limit_int_mic_boost, > + }, > }; > > static const struct snd_pci_quirk alc269_fixup_tbl[] = { > @@ -3458,11 +3495,14 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] > = { > SND_PCI_QUIRK(0x103c, 0x1973, "HP Pavilion", > ALC269_FIXUP_HP_MUTE_LED_MIC1), > SND_PCI_QUIRK(0x103c, 0x1983, "HP Pavilion", > ALC269_FIXUP_HP_MUTE_LED_MIC1), > SND_PCI_QUIRK_VENDOR(0x103c, "HP", ALC269_FIXUP_HP_MUTE_LED), > + SND_PCI_QUIRK(0x1043, 0x106d, "Asus K53BE", > ALC269_FIXUP_LIMIT_INT_MIC_BOOST), > + SND_PCI_QUIRK(0x1043, 0x115d, "Asus 1015E", > ALC269_FIXUP_LIMIT_INT_MIC_BOOST), > SND_PCI_QUIRK(0x1043, 0x1427, "Asus Zenbook UX31E", > ALC269VB_FIXUP_DMIC), > SND_PCI_QUIRK(0x1043, 0x1517, "Asus Zenbook UX31A", > ALC269VB_FIXUP_DMIC), > + SND_PCI_QUIRK(0x1043, 0x16e3, "ASUS UX50", ALC269_FIXUP_STEREO_DMIC), > SND_PCI_QUIRK(0x1043, 0x1a13, "Asus G73Jw", ALC269_FIXUP_ASUS_G73JW), > SND_PCI_QUIRK(0x1043, 0x1b13, "Asus U41SV", ALC269_FIXUP_INV_DMIC), > - SND_PCI_QUIRK(0x1043, 0x16e3, "ASUS UX50", ALC269_FIXUP_STEREO_DMIC), > + SND_PCI_QUIRK(0x1043, 0x1c23, "Asus X55U", > ALC269_FIXUP_LIMIT_INT_MIC_BOOST), > SND_PCI_QUIRK(0x1043, 0x831a, "ASUS P901", ALC269_FIXUP_STEREO_DMIC), > SND_PCI_QUIRK(0x1043, 0x834a, "ASUS S101", ALC269_FIXUP_STEREO_DMIC), > SND_PCI_QUIRK(0x1043, 0x8398, "ASUS P1005", ALC269_FIXUP_STEREO_DMIC), > -- > 1.7.9.5 > -- You received this bug notification because you are a member of Ubuntu Bugs, which is subscribed to Ubuntu. https://bugs.launchpad.net/bugs/1089795 Title: Please limit mic boost on Asus 1015E, X55U and K53BE To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1089795/+subscriptions -- ubuntu-bugs mailing list ubuntu-bugs@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs