diff options
Diffstat (limited to 'sound/pci/hda/patch_analog.c')
| -rw-r--r-- | sound/pci/hda/patch_analog.c | 23 | 
1 files changed, 12 insertions, 11 deletions
diff --git a/sound/pci/hda/patch_analog.c b/sound/pci/hda/patch_analog.c index 699262a3e07a..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 = {  }; -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; @@ -195,7 +195,8 @@ 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; +	spec->gen.add_stereo_mix_input = 1;  	err = snd_hda_parse_pin_defcfg(codec, cfg, NULL, 0);  	if (err < 0) @@ -280,11 +281,11 @@ static const struct hda_fixup ad1986a_fixups[] = {  		.v.pins = (const struct hda_pintbl[]) {  			{ 0x1a, 0x02214021 }, /* headphone */  			{ 0x1b, 0x01014011 }, /* front */ -			{ 0x1c, 0x01013012 }, /* surround */ -			{ 0x1d, 0x01019015 }, /* clfe */ +			{ 0x1c, 0x01813030 }, /* line-in */ +			{ 0x1d, 0x01a19020 }, /* rear mic */  			{ 0x1e, 0x411111f0 }, /* N/A */  			{ 0x1f, 0x02a190f0 }, /* mic */ -			{ 0x20, 0x018130f0 }, /* line-in */ +			{ 0x20, 0x411111f0 }, /* N/A */  			{}  		},  	}, @@ -378,7 +379,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; @@ -480,7 +481,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); @@ -567,7 +568,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); @@ -893,7 +894,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); @@ -1070,7 +1071,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); @@ -1112,7 +1113,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);  |