ALSA: VIA HDA: Fix side channel mute invalid issue
PATCH 5/16 ALSA: VIA HDA: Fix side channel mute invalid issue
From: Lydia Wang <[email protected]>
Subject: ALSA: VIA HDA: Fix side channel mute invalid issue.
Modify side_mute_channel() and update_side_mute_status() functions to fix invalid side channel mute issue of VT2002P, VT1812 and VT1802 codecs.
Signed-off-by Lydia Wang <[email protected]>
--- sound/pci/hda/patch_via.c | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-)
sound/pci/hda/patch_via.c +19 -5
@@ -698,6 +698,9 @@case VT1709_10CH :return 0x29 ;case VT1708B_8CH :/* fall thru */ case VT1708S :return 0x27 ; +case VT2002P :return 0x19 ; +case VT1802 :return 0x15 ; +case VT1812 :return 0x15 ;default :return 0 ; } }
@@ -706,13 +709,24 @@ {/* mute side channel */ struct via_spec *spec = codec->spec; -unsigned int parm = spec->hp_independent_mode - ?AMP_OUT_MUTE :AMP_OUT_UNMUTE ; +unsigned int parm;hda_nid_t sw3 =side_mute_channel (spec); -if (sw3) -snd_hda_codec_write (codec, sw3,0 ,AC_VERB_SET_AMP_GAIN_MUTE , - parm); +if (sw3) { +if (spec->codec_type ==VT2002P || + spec->codec_type ==VT1802 || + spec->codec_type ==VT1812 ) + parm = spec->hp_independent_mode ? +AMP_IN_MUTE (1 ) :AMP_IN_UNMUTE (1 ); +else + parm = spec->hp_independent_mode ? +AMP_OUT_MUTE :AMP_OUT_UNMUTE ; +snd_hda_codec_write (codec, sw3,0 , +AC_VERB_SET_AMP_GAIN_MUTE , parm); +if (spec->codec_type ==VT1812 ) +snd_hda_codec_write (codec,0x1d ,0 , +AC_VERB_SET_AMP_GAIN_MUTE , parm); + }return 0 ; }