Commit 5fdc5143 authored by Takashi Iwai's avatar Takashi Iwai Committed by Greg Kroah-Hartman

ALSA: hda - Don't set indep_hp flag for old AD codecs

commit cbd209f4 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=68081Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent ee1c2e62
...@@ -171,7 +171,7 @@ static const struct hda_codec_ops ad198x_auto_patch_ops = { ...@@ -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 ad198x_spec *spec = codec->spec;
struct auto_pin_cfg *cfg = &spec->gen.autocfg; struct auto_pin_cfg *cfg = &spec->gen.autocfg;
...@@ -181,7 +181,7 @@ static int ad198x_parse_auto_config(struct hda_codec *codec) ...@@ -181,7 +181,7 @@ static int ad198x_parse_auto_config(struct hda_codec *codec)
codec->no_trigger_sense = 1; codec->no_trigger_sense = 1;
codec->no_sticky_stream = 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); err = snd_hda_parse_pin_defcfg(codec, cfg, NULL, 0);
if (err < 0) if (err < 0)
...@@ -362,7 +362,7 @@ static int patch_ad1986a(struct hda_codec *codec) ...@@ -362,7 +362,7 @@ static int patch_ad1986a(struct hda_codec *codec)
ad1986a_fixups); ad1986a_fixups);
snd_hda_apply_fixup(codec, HDA_FIXUP_ACT_PRE_PROBE); 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) { if (err < 0) {
snd_hda_gen_free(codec); snd_hda_gen_free(codec);
return err; return err;
...@@ -464,7 +464,7 @@ static int patch_ad1983(struct hda_codec *codec) ...@@ -464,7 +464,7 @@ static int patch_ad1983(struct hda_codec *codec)
spec->gen.beep_nid = 0x10; spec->gen.beep_nid = 0x10;
set_beep_amp(spec, 0x10, 0, HDA_OUTPUT); set_beep_amp(spec, 0x10, 0, HDA_OUTPUT);
err = ad198x_parse_auto_config(codec); err = ad198x_parse_auto_config(codec, false);
if (err < 0) if (err < 0)
goto error; goto error;
err = ad1983_add_spdif_mux_ctl(codec); err = ad1983_add_spdif_mux_ctl(codec);
...@@ -564,7 +564,7 @@ static int patch_ad1981(struct hda_codec *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_pick_fixup(codec, NULL, ad1981_fixup_tbl, ad1981_fixups);
snd_hda_apply_fixup(codec, HDA_FIXUP_ACT_PRE_PROBE); 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) if (err < 0)
goto error; goto error;
err = ad1983_add_spdif_mux_ctl(codec); err = ad1983_add_spdif_mux_ctl(codec);
...@@ -890,7 +890,7 @@ static int patch_ad1988(struct hda_codec *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_pick_fixup(codec, ad1988_fixup_models, NULL, ad1988_fixups);
snd_hda_apply_fixup(codec, HDA_FIXUP_ACT_PRE_PROBE); 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) if (err < 0)
goto error; goto error;
err = ad1988_add_spdif_mux_ctl(codec); err = ad1988_add_spdif_mux_ctl(codec);
...@@ -1064,7 +1064,7 @@ static int patch_ad1884(struct hda_codec *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_pick_fixup(codec, NULL, ad1884_fixup_tbl, ad1884_fixups);
snd_hda_apply_fixup(codec, HDA_FIXUP_ACT_PRE_PROBE); 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) if (err < 0)
goto error; goto error;
err = ad1983_add_spdif_mux_ctl(codec); err = ad1983_add_spdif_mux_ctl(codec);
...@@ -1106,7 +1106,7 @@ static int patch_ad1882(struct hda_codec *codec) ...@@ -1106,7 +1106,7 @@ static int patch_ad1882(struct hda_codec *codec)
spec->gen.mixer_merge_nid = 0x21; spec->gen.mixer_merge_nid = 0x21;
spec->gen.beep_nid = 0x10; spec->gen.beep_nid = 0x10;
set_beep_amp(spec, 0x10, 0, HDA_OUTPUT); set_beep_amp(spec, 0x10, 0, HDA_OUTPUT);
err = ad198x_parse_auto_config(codec); err = ad198x_parse_auto_config(codec, true);
if (err < 0) if (err < 0)
goto error; goto error;
err = ad1988_add_spdif_mux_ctl(codec); err = ad1988_add_spdif_mux_ctl(codec);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment