Unmuting the analog bypass causes any input to be directly bypassed to the outputs, which is usually not expected by the user.
Signed-off-by: Thierry Reding thierry.reding@avionic-design.de --- Note that this patch could be generalized to include all codec variants that have this second channel. As I don't have access to all the data sheets I'll leave that decision up to somebody with more hardware available.
sound/pci/hda/patch_realtek.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-)
diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c index 4f81dd4..54d0917 100644 --- a/sound/pci/hda/patch_realtek.c +++ b/sound/pci/hda/patch_realtek.c @@ -3752,8 +3752,15 @@ static void alc_auto_set_output_and_unmute(struct hda_codec *codec, if (nid_has_mute(codec, mix, HDA_INPUT)) { snd_hda_codec_write(codec, mix, 0, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)); - snd_hda_codec_write(codec, mix, 0, AC_VERB_SET_AMP_GAIN_MUTE, - AMP_IN_UNMUTE(1)); + /* + * On ALC892, the second entry in the connection list is the + * analog bypass. Unmuting it will cause any inputs to be + * directly forwarded to the corresponding outputs. + */ + if (codec->subsystem_id != 0x10ec0892) + snd_hda_codec_write(codec, mix, 0, + AC_VERB_SET_AMP_GAIN_MUTE, + AMP_IN_UNMUTE(1)); } /* initialize volume */ nid = alc_look_for_out_vol_nid(codec, pin, dac);