diff options
author | Takashi Iwai <tiwai@suse.de> | 2014-01-13 06:40:07 -0500 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2014-01-13 06:40:07 -0500 |
commit | cbd209f41ea5f39394de5c1fe2dd9aa54a9c5744 (patch) | |
tree | 7047903854b06aa51718c553d53cac9504e7eace /sound/pci/hda | |
parent | 80ab8eae70e51d578ebbeb228e0f7a562471b8b7 (diff) |
ALSA: hda - Don't set indep_hp flag for old AD codecs
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
Cc: <stable@vger.kernel.org>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound/pci/hda')
-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 819d4a98abaf..7a426ed491f2 100644 --- a/sound/pci/hda/patch_analog.c +++ b/sound/pci/hda/patch_analog.c | |||
@@ -185,7 +185,7 @@ static const struct hda_codec_ops ad198x_auto_patch_ops = { | |||
185 | }; | 185 | }; |
186 | 186 | ||
187 | 187 | ||
188 | static int ad198x_parse_auto_config(struct hda_codec *codec) | 188 | static int ad198x_parse_auto_config(struct hda_codec *codec, bool indep_hp) |
189 | { | 189 | { |
190 | struct ad198x_spec *spec = codec->spec; | 190 | struct ad198x_spec *spec = codec->spec; |
191 | struct auto_pin_cfg *cfg = &spec->gen.autocfg; | 191 | struct auto_pin_cfg *cfg = &spec->gen.autocfg; |
@@ -195,7 +195,7 @@ static int ad198x_parse_auto_config(struct hda_codec *codec) | |||
195 | codec->no_trigger_sense = 1; | 195 | codec->no_trigger_sense = 1; |
196 | codec->no_sticky_stream = 1; | 196 | codec->no_sticky_stream = 1; |
197 | 197 | ||
198 | spec->gen.indep_hp = 1; | 198 | spec->gen.indep_hp = indep_hp; |
199 | spec->gen.add_stereo_mix_input = 1; | 199 | spec->gen.add_stereo_mix_input = 1; |
200 | 200 | ||
201 | err = snd_hda_parse_pin_defcfg(codec, cfg, NULL, 0); | 201 | err = snd_hda_parse_pin_defcfg(codec, cfg, NULL, 0); |
@@ -379,7 +379,7 @@ static int patch_ad1986a(struct hda_codec *codec) | |||
379 | ad1986a_fixups); | 379 | ad1986a_fixups); |
380 | snd_hda_apply_fixup(codec, HDA_FIXUP_ACT_PRE_PROBE); | 380 | snd_hda_apply_fixup(codec, HDA_FIXUP_ACT_PRE_PROBE); |
381 | 381 | ||
382 | err = ad198x_parse_auto_config(codec); | 382 | err = ad198x_parse_auto_config(codec, false); |
383 | if (err < 0) { | 383 | if (err < 0) { |
384 | snd_hda_gen_free(codec); | 384 | snd_hda_gen_free(codec); |
385 | return err; | 385 | return err; |
@@ -481,7 +481,7 @@ static int patch_ad1983(struct hda_codec *codec) | |||
481 | 481 | ||
482 | spec->gen.beep_nid = 0x10; | 482 | spec->gen.beep_nid = 0x10; |
483 | set_beep_amp(spec, 0x10, 0, HDA_OUTPUT); | 483 | set_beep_amp(spec, 0x10, 0, HDA_OUTPUT); |
484 | err = ad198x_parse_auto_config(codec); | 484 | err = ad198x_parse_auto_config(codec, false); |
485 | if (err < 0) | 485 | if (err < 0) |
486 | goto error; | 486 | goto error; |
487 | err = ad1983_add_spdif_mux_ctl(codec); | 487 | err = ad1983_add_spdif_mux_ctl(codec); |
@@ -568,7 +568,7 @@ static int patch_ad1981(struct hda_codec *codec) | |||
568 | snd_hda_pick_fixup(codec, NULL, ad1981_fixup_tbl, ad1981_fixups); | 568 | snd_hda_pick_fixup(codec, NULL, ad1981_fixup_tbl, ad1981_fixups); |
569 | snd_hda_apply_fixup(codec, HDA_FIXUP_ACT_PRE_PROBE); | 569 | snd_hda_apply_fixup(codec, HDA_FIXUP_ACT_PRE_PROBE); |
570 | 570 | ||
571 | err = ad198x_parse_auto_config(codec); | 571 | err = ad198x_parse_auto_config(codec, false); |
572 | if (err < 0) | 572 | if (err < 0) |
573 | goto error; | 573 | goto error; |
574 | err = ad1983_add_spdif_mux_ctl(codec); | 574 | err = ad1983_add_spdif_mux_ctl(codec); |
@@ -894,7 +894,7 @@ static int patch_ad1988(struct hda_codec *codec) | |||
894 | snd_hda_pick_fixup(codec, ad1988_fixup_models, NULL, ad1988_fixups); | 894 | snd_hda_pick_fixup(codec, ad1988_fixup_models, NULL, ad1988_fixups); |
895 | snd_hda_apply_fixup(codec, HDA_FIXUP_ACT_PRE_PROBE); | 895 | snd_hda_apply_fixup(codec, HDA_FIXUP_ACT_PRE_PROBE); |
896 | 896 | ||
897 | err = ad198x_parse_auto_config(codec); | 897 | err = ad198x_parse_auto_config(codec, true); |
898 | if (err < 0) | 898 | if (err < 0) |
899 | goto error; | 899 | goto error; |
900 | err = ad1988_add_spdif_mux_ctl(codec); | 900 | err = ad1988_add_spdif_mux_ctl(codec); |
@@ -1071,7 +1071,7 @@ static int patch_ad1884(struct hda_codec *codec) | |||
1071 | snd_hda_pick_fixup(codec, NULL, ad1884_fixup_tbl, ad1884_fixups); | 1071 | snd_hda_pick_fixup(codec, NULL, ad1884_fixup_tbl, ad1884_fixups); |
1072 | snd_hda_apply_fixup(codec, HDA_FIXUP_ACT_PRE_PROBE); | 1072 | snd_hda_apply_fixup(codec, HDA_FIXUP_ACT_PRE_PROBE); |
1073 | 1073 | ||
1074 | err = ad198x_parse_auto_config(codec); | 1074 | err = ad198x_parse_auto_config(codec, true); |
1075 | if (err < 0) | 1075 | if (err < 0) |
1076 | goto error; | 1076 | goto error; |
1077 | err = ad1983_add_spdif_mux_ctl(codec); | 1077 | err = ad1983_add_spdif_mux_ctl(codec); |
@@ -1113,7 +1113,7 @@ static int patch_ad1882(struct hda_codec *codec) | |||
1113 | spec->gen.mixer_merge_nid = 0x21; | 1113 | spec->gen.mixer_merge_nid = 0x21; |
1114 | spec->gen.beep_nid = 0x10; | 1114 | spec->gen.beep_nid = 0x10; |
1115 | set_beep_amp(spec, 0x10, 0, HDA_OUTPUT); | 1115 | set_beep_amp(spec, 0x10, 0, HDA_OUTPUT); |
1116 | err = ad198x_parse_auto_config(codec); | 1116 | err = ad198x_parse_auto_config(codec, true); |
1117 | if (err < 0) | 1117 | if (err < 0) |
1118 | goto error; | 1118 | goto error; |
1119 | err = ad1988_add_spdif_mux_ctl(codec); | 1119 | err = ad1988_add_spdif_mux_ctl(codec); |