ALSA: hda - Fix click noise at start on Dell XPS13
Dell XPS13 produces a click noise at boot up, and Gabriele spotted out that it's triggered by the initial pin control of the mic (NID 0x19). This has to be set to Hi-Z Vref while the driver initializes to Vref 80% as a normal mic. This patch fixes the generic parser code not to override the target vref if it has been already set by the driver, and adds a proper initialization of the target vref for this pin in the Realtek driver side. Reported-and-tested-by: Gabriele Mazzotta <gabriele.mzt@gmail.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
parent
b787f68c36
commit
3e1b0c4a9d
|
@ -3259,7 +3259,8 @@ static int create_input_ctls(struct hda_codec *codec)
|
|||
val = PIN_IN;
|
||||
if (cfg->inputs[i].type == AUTO_PIN_MIC)
|
||||
val |= snd_hda_get_default_vref(codec, pin);
|
||||
if (pin != spec->hp_mic_pin)
|
||||
if (pin != spec->hp_mic_pin &&
|
||||
!snd_hda_codec_get_pin_target(codec, pin))
|
||||
set_pin_target(codec, pin, val, false);
|
||||
|
||||
if (mixer) {
|
||||
|
|
|
@ -4190,11 +4190,18 @@ static void alc_shutup_dell_xps13(struct hda_codec *codec)
|
|||
static void alc_fixup_dell_xps13(struct hda_codec *codec,
|
||||
const struct hda_fixup *fix, int action)
|
||||
{
|
||||
if (action == HDA_FIXUP_ACT_PROBE) {
|
||||
struct alc_spec *spec = codec->spec;
|
||||
struct hda_input_mux *imux = &spec->gen.input_mux;
|
||||
int i;
|
||||
struct alc_spec *spec = codec->spec;
|
||||
struct hda_input_mux *imux = &spec->gen.input_mux;
|
||||
int i;
|
||||
|
||||
switch (action) {
|
||||
case HDA_FIXUP_ACT_PRE_PROBE:
|
||||
/* mic pin 0x19 must be initialized with Vref Hi-Z, otherwise
|
||||
* it causes a click noise at start up
|
||||
*/
|
||||
snd_hda_codec_set_pin_target(codec, 0x19, PIN_VREFHIZ);
|
||||
break;
|
||||
case HDA_FIXUP_ACT_PROBE:
|
||||
spec->shutup = alc_shutup_dell_xps13;
|
||||
|
||||
/* Make the internal mic the default input source. */
|
||||
|
@ -4204,6 +4211,7 @@ static void alc_fixup_dell_xps13(struct hda_codec *codec,
|
|||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue