mirror of
https://github.com/torvalds/linux.git
synced 2024-11-11 14:42:24 +00:00
ALSA: hda/realtek: Add quirk for Dell Latitude 7520
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>
This commit is contained in:
parent
c3d9ca93f1
commit
1efcdd9c1f
@ -6778,6 +6778,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,
|
||||
@ -6819,6 +6854,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,
|
||||
@ -8806,6 +8842,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[] = {
|
||||
@ -8896,6 +8938,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),
|
||||
|
Loading…
Reference in New Issue
Block a user