lkml.org 
[lkml]   [2022]   [Jun]   [3]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.17 02/75] ALSA: hda/realtek: Add quirk for Dell Latitude 7520
    Date
    From: Gabriele Mazzotta <gabriele.mzt@gmail.com>

    [ Upstream commit 1efcdd9c1f34f5a6590bc9ac5471e562fb011386 ]

    The driver is currently using ALC269_FIXUP_DELL4_MIC_NO_PRESENCE for
    the Latitude 7520, but this fixup chain has some issues:

    - The internal mic is really loud and the recorded audio is distorted
    at "standard" audio levels.

    - There are pop noises at system startup and when plugging/unplugging
    headphone jacks.

    BugLink: https://bugzilla.kernel.org/show_bug.cgi?id=215885
    Signed-off-by: Gabriele Mazzotta <gabriele.mzt@gmail.com>
    Link: https://lore.kernel.org/r/20220501124237.4667-1-gabriele.mzt@gmail.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    sound/pci/hda/patch_realtek.c | 43 +++++++++++++++++++++++++++++++++++
    1 file changed, 43 insertions(+)

    diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
    index e38acdbe1a3b..cc3cf65ad5b9 100644
    --- a/sound/pci/hda/patch_realtek.c
    +++ b/sound/pci/hda/patch_realtek.c
    @@ -6773,6 +6773,41 @@ static void alc256_fixup_mic_no_presence_and_resume(struct hda_codec *codec,
    }
    }

    +static void alc_fixup_dell4_mic_no_presence_quiet(struct hda_codec *codec,
    + const struct hda_fixup *fix,
    + int action)
    +{
    + struct alc_spec *spec = codec->spec;
    + struct hda_input_mux *imux = &spec->gen.input_mux;
    + int i;
    +
    + alc269_fixup_limit_int_mic_boost(codec, fix, action);
    +
    + switch (action) {
    + case HDA_FIXUP_ACT_PRE_PROBE:
    + /**
    + * Set the vref of pin 0x19 (Headset Mic) and pin 0x1b (Headphone Mic)
    + * to Hi-Z to avoid pop noises at startup and when plugging and
    + * unplugging headphones.
    + */
    + snd_hda_codec_set_pin_target(codec, 0x19, PIN_VREFHIZ);
    + snd_hda_codec_set_pin_target(codec, 0x1b, PIN_VREFHIZ);
    + break;
    + case HDA_FIXUP_ACT_PROBE:
    + /**
    + * Make the internal mic (0x12) the default input source to
    + * prevent pop noises on cold boot.
    + */
    + for (i = 0; i < imux->num_items; i++) {
    + if (spec->gen.imux_pins[i] == 0x12) {
    + spec->gen.cur_mux[0] = i;
    + break;
    + }
    + }
    + break;
    + }
    +}
    +
    enum {
    ALC269_FIXUP_GPIO2,
    ALC269_FIXUP_SONY_VAIO,
    @@ -6814,6 +6849,7 @@ enum {
    ALC269_FIXUP_DELL2_MIC_NO_PRESENCE,
    ALC269_FIXUP_DELL3_MIC_NO_PRESENCE,
    ALC269_FIXUP_DELL4_MIC_NO_PRESENCE,
    + ALC269_FIXUP_DELL4_MIC_NO_PRESENCE_QUIET,
    ALC269_FIXUP_HEADSET_MODE,
    ALC269_FIXUP_HEADSET_MODE_NO_HP_MIC,
    ALC269_FIXUP_ASPIRE_HEADSET_MIC,
    @@ -8770,6 +8806,12 @@ static const struct hda_fixup alc269_fixups[] = {
    .chained = true,
    .chain_id = ALC285_FIXUP_HP_MUTE_LED,
    },
    + [ALC269_FIXUP_DELL4_MIC_NO_PRESENCE_QUIET] = {
    + .type = HDA_FIXUP_FUNC,
    + .v.func = alc_fixup_dell4_mic_no_presence_quiet,
    + .chained = true,
    + .chain_id = ALC269_FIXUP_DELL4_MIC_NO_PRESENCE,
    + },
    };

    static const struct snd_pci_quirk alc269_fixup_tbl[] = {
    @@ -8860,6 +8902,7 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = {
    SND_PCI_QUIRK(0x1028, 0x09bf, "Dell Precision", ALC233_FIXUP_ASUS_MIC_NO_PRESENCE),
    SND_PCI_QUIRK(0x1028, 0x0a2e, "Dell", ALC236_FIXUP_DELL_AIO_HEADSET_MIC),
    SND_PCI_QUIRK(0x1028, 0x0a30, "Dell", ALC236_FIXUP_DELL_AIO_HEADSET_MIC),
    + SND_PCI_QUIRK(0x1028, 0x0a38, "Dell Latitude 7520", ALC269_FIXUP_DELL4_MIC_NO_PRESENCE_QUIET),
    SND_PCI_QUIRK(0x1028, 0x0a58, "Dell", ALC255_FIXUP_DELL_HEADSET_MIC),
    SND_PCI_QUIRK(0x1028, 0x0a61, "Dell XPS 15 9510", ALC289_FIXUP_DUAL_SPK),
    SND_PCI_QUIRK(0x1028, 0x0a62, "Dell Precision 5560", ALC289_FIXUP_DUAL_SPK),
    --
    2.35.1


    \
     
     \ /
      Last update: 2022-06-03 20:09    [W:4.458 / U:0.252 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site