From 4e48c39843bd5868eaefabe9545ca81ecfd7abda Mon Sep 17 00:00:00 2001 From: Takashi Iwai Date: Wed, 19 Dec 2012 13:01:54 +0100 Subject: [PATCH] --- yaml --- r: 353042 b: refs/heads/master c: 731dc3019c7b9fa7a787f9b0a74e94638eee3fe1 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/sound/pci/hda/hda_generic.c | 6 ++++++ trunk/sound/pci/hda/hda_generic.h | 1 + 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index 585ce17732ad..f90afb69b385 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 352f7f914ebb8fe19f9b3f03e7767b04eedf5be3 +refs/heads/master: 731dc3019c7b9fa7a787f9b0a74e94638eee3fe1 diff --git a/trunk/sound/pci/hda/hda_generic.c b/trunk/sound/pci/hda/hda_generic.c index 2d19b915dbf1..31c5677e6210 100644 --- a/trunk/sound/pci/hda/hda_generic.c +++ b/trunk/sound/pci/hda/hda_generic.c @@ -3333,6 +3333,7 @@ EXPORT_SYMBOL_HDA(snd_hda_gen_build_pcms); static void set_output_and_unmute(struct hda_codec *codec, hda_nid_t pin, int pin_type, hda_nid_t dac) { + struct hda_gen_spec *spec = codec->spec; struct nid_path *path; snd_hda_set_pin_ctl_cache(codec, pin, pin_type); @@ -3342,6 +3343,11 @@ static void set_output_and_unmute(struct hda_codec *codec, hda_nid_t pin, if (path->active) return; snd_hda_activate_path(codec, path, true, true); + + if (!spec->own_eapd_ctl && + (snd_hda_query_pin_caps(codec, pin) & AC_PINCAP_EAPD)) + snd_hda_codec_update_cache(codec, pin, 0, + AC_VERB_SET_EAPD_BTLENABLE, 0x02); } /* initialize primary output paths */ diff --git a/trunk/sound/pci/hda/hda_generic.h b/trunk/sound/pci/hda/hda_generic.h index a9f4f63b4894..9c00bd5863e5 100644 --- a/trunk/sound/pci/hda/hda_generic.h +++ b/trunk/sound/pci/hda/hda_generic.h @@ -150,6 +150,7 @@ struct hda_gen_spec { unsigned int no_primary_hp:1; /* Don't prefer HP pins to speaker pins */ unsigned int multi_cap_vol:1; /* allow multiple capture xxx volumes */ unsigned int inv_dmic_split:1; /* inverted dmic w/a for conexant */ + unsigned int own_eapd_ctl:1; /* set EAPD by own function */ unsigned int parse_flags; /* passed to snd_hda_parse_pin_defcfg() */