diff options
Diffstat (limited to 'sound/pci/hda/patch_analog.c')
| -rw-r--r-- | sound/pci/hda/patch_analog.c | 16 | 
1 files changed, 16 insertions, 0 deletions
diff --git a/sound/pci/hda/patch_analog.c b/sound/pci/hda/patch_analog.c index 1a83559f4cbd..699262a3e07a 100644 --- a/sound/pci/hda/patch_analog.c +++ b/sound/pci/hda/patch_analog.c @@ -147,6 +147,8 @@ static void ad_vmaster_eapd_hook(void *private_data, int enabled)  	if (!spec->eapd_nid)  		return; +	if (codec->inv_eapd) +		enabled = !enabled;  	snd_hda_codec_update_cache(codec, spec->eapd_nid, 0,  				   AC_VERB_SET_EAPD_BTLENABLE,  				   enabled ? 0x02 : 0x00); @@ -338,6 +340,14 @@ static int patch_ad1986a(struct hda_codec *codec)  {  	int err;  	struct ad198x_spec *spec; +	static hda_nid_t preferred_pairs[] = { +		0x1a, 0x03, +		0x1b, 0x03, +		0x1c, 0x04, +		0x1d, 0x05, +		0x1e, 0x03, +		0 +	};  	err = alloc_ad_spec(codec);  	if (err < 0) @@ -358,6 +368,11 @@ static int patch_ad1986a(struct hda_codec *codec)  	 * So, let's disable the shared stream.  	 */  	spec->gen.multiout.no_share_stream = 1; +	/* give fixed DAC/pin pairs */ +	spec->gen.preferred_dacs = preferred_pairs; + +	/* AD1986A can't manage the dynamic pin on/off smoothly */ +	spec->gen.auto_mute_via_amp = 1;  	snd_hda_pick_fixup(codec, ad1986a_fixup_models, ad1986a_fixup_tbl,  			   ad1986a_fixups); @@ -962,6 +977,7 @@ static void ad1884_fixup_hp_eapd(struct hda_codec *codec,  	switch (action) {  	case HDA_FIXUP_ACT_PRE_PROBE:  		spec->gen.vmaster_mute.hook = ad1884_vmaster_hp_gpio_hook; +		spec->gen.own_eapd_ctl = 1;  		snd_hda_sequence_write_cache(codec, gpio_init_verbs);  		break;  	case HDA_FIXUP_ACT_PROBE:  | 
