aboutsummaryrefslogtreecommitdiffstats
path: root/sound/pci/hda
diff options
context:
space:
mode:
authorTakashi Iwai <tiwai@suse.de>2014-01-13 06:40:07 -0500
committerTakashi Iwai <tiwai@suse.de>2014-01-13 06:40:07 -0500
commitcbd209f41ea5f39394de5c1fe2dd9aa54a9c5744 (patch)
tree7047903854b06aa51718c553d53cac9504e7eace /sound/pci/hda
parent80ab8eae70e51d578ebbeb228e0f7a562471b8b7 (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.c16
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
188static int ad198x_parse_auto_config(struct hda_codec *codec) 188static 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);