diff options
author | Takashi Iwai <tiwai@suse.de> | 2014-01-13 12:40:07 +0100 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2014-02-06 11:22:21 -0800 |
commit | 5fdc514317fc03a570dd3667ce5820ce3cfb5cea (patch) | |
tree | e3610ae23e36c269d69e7c55a52816f6f18a877b /sound | |
parent | ee1c2e62dc47f69e5b4b18b1af33851c9491e0c7 (diff) |
ALSA: hda - Don't set indep_hp flag for old AD codecs
commit cbd209f41ea5f39394de5c1fe2dd9aa54a9c5744 upstream.
Some old AD codecs don't like the independent HP handling, either it
contains a single DAC (AD1981) or it mandates the mixer routing
(AD1986A). This patch removes the indep_hp flag for such codecs.
Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=68081
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'sound')
-rw-r--r-- | sound/pci/hda/patch_analog.c | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/sound/pci/hda/patch_analog.c b/sound/pci/hda/patch_analog.c index 93df6a9dd1d..31230c68b60 100644 --- a/sound/pci/hda/patch_analog.c +++ b/sound/pci/hda/patch_analog.c @@ -171,7 +171,7 @@ static const struct hda_codec_ops ad198x_auto_patch_ops = { }; -static int ad198x_parse_auto_config(struct hda_codec *codec) +static int ad198x_parse_auto_config(struct hda_codec *codec, bool indep_hp) { struct ad198x_spec *spec = codec->spec; struct auto_pin_cfg *cfg = &spec->gen.autocfg; @@ -181,7 +181,7 @@ static int ad198x_parse_auto_config(struct hda_codec *codec) codec->no_trigger_sense = 1; codec->no_sticky_stream = 1; - spec->gen.indep_hp = 1; + spec->gen.indep_hp = indep_hp; err = snd_hda_parse_pin_defcfg(codec, cfg, NULL, 0); if (err < 0) @@ -362,7 +362,7 @@ static int patch_ad1986a(struct hda_codec *codec) ad1986a_fixups); snd_hda_apply_fixup(codec, HDA_FIXUP_ACT_PRE_PROBE); - err = ad198x_parse_auto_config(codec); + err = ad198x_parse_auto_config(codec, false); if (err < 0) { snd_hda_gen_free(codec); return err; @@ -464,7 +464,7 @@ static int patch_ad1983(struct hda_codec *codec) spec->gen.beep_nid = 0x10; set_beep_amp(spec, 0x10, 0, HDA_OUTPUT); - err = ad198x_parse_auto_config(codec); + err = ad198x_parse_auto_config(codec, false); if (err < 0) goto error; err = ad1983_add_spdif_mux_ctl(codec); @@ -564,7 +564,7 @@ static int patch_ad1981(struct hda_codec *codec) snd_hda_pick_fixup(codec, NULL, ad1981_fixup_tbl, ad1981_fixups); snd_hda_apply_fixup(codec, HDA_FIXUP_ACT_PRE_PROBE); - err = ad198x_parse_auto_config(codec); + err = ad198x_parse_auto_config(codec, false); if (err < 0) goto error; err = ad1983_add_spdif_mux_ctl(codec); @@ -890,7 +890,7 @@ static int patch_ad1988(struct hda_codec *codec) snd_hda_pick_fixup(codec, ad1988_fixup_models, NULL, ad1988_fixups); snd_hda_apply_fixup(codec, HDA_FIXUP_ACT_PRE_PROBE); - err = ad198x_parse_auto_config(codec); + err = ad198x_parse_auto_config(codec, true); if (err < 0) goto error; err = ad1988_add_spdif_mux_ctl(codec); @@ -1064,7 +1064,7 @@ static int patch_ad1884(struct hda_codec *codec) snd_hda_pick_fixup(codec, NULL, ad1884_fixup_tbl, ad1884_fixups); snd_hda_apply_fixup(codec, HDA_FIXUP_ACT_PRE_PROBE); - err = ad198x_parse_auto_config(codec); + err = ad198x_parse_auto_config(codec, true); if (err < 0) goto error; err = ad1983_add_spdif_mux_ctl(codec); @@ -1106,7 +1106,7 @@ static int patch_ad1882(struct hda_codec *codec) spec->gen.mixer_merge_nid = 0x21; spec->gen.beep_nid = 0x10; set_beep_amp(spec, 0x10, 0, HDA_OUTPUT); - err = ad198x_parse_auto_config(codec); + err = ad198x_parse_auto_config(codec, true); if (err < 0) goto error; err = ad1988_add_spdif_mux_ctl(codec); |