@ -10631,6 +10631,18 @@ static void alc262_lenovo_3000_unsol_event(struct hda_codec *codec,
alc262_lenovo_3000_automute ( codec , 1 ) ;
}
static int amp_stereo_mute_update ( struct hda_codec * codec , hda_nid_t nid ,
int dir , int idx , long * valp )
{
int i , change = 0 ;
for ( i = 0 ; i < 2 ; i + + , valp + + )
change | = snd_hda_codec_amp_update ( codec , nid , i , dir , idx ,
HDA_AMP_MUTE ,
* valp ? 0 : HDA_AMP_MUTE ) ;
return change ;
}
/* bind hp and internal speaker mute (with plug check) */
static int alc262_fujitsu_master_sw_put ( struct snd_kcontrol * kcontrol ,
struct snd_ctl_elem_value * ucontrol )
@ -10639,13 +10651,8 @@ static int alc262_fujitsu_master_sw_put(struct snd_kcontrol *kcontrol,
long * valp = ucontrol - > value . integer . value ;
int change ;
change = snd_hda_codec_amp_stereo ( codec , 0x14 , HDA_OUTPUT , 0 ,
HDA_AMP_MUTE ,
valp ? 0 : HDA_AMP_MUTE ) ;
change | = snd_hda_codec_amp_stereo ( codec , 0x1b , HDA_OUTPUT , 0 ,
HDA_AMP_MUTE ,
valp ? 0 : HDA_AMP_MUTE ) ;
change = amp_stereo_mute_update ( codec , 0x14 , HDA_OUTPUT , 0 , valp ) ;
change | = amp_stereo_mute_update ( codec , 0x1b , HDA_OUTPUT , 0 , valp ) ;
if ( change )
alc262_fujitsu_automute ( codec , 0 ) ;
return change ;
@ -10680,10 +10687,7 @@ static int alc262_lenovo_3000_master_sw_put(struct snd_kcontrol *kcontrol,
long * valp = ucontrol - > value . integer . value ;
int change ;
change = snd_hda_codec_amp_stereo ( codec , 0x1b , HDA_OUTPUT , 0 ,
HDA_AMP_MUTE ,
valp ? 0 : HDA_AMP_MUTE ) ;
change = amp_stereo_mute_update ( codec , 0x1b , HDA_OUTPUT , 0 , valp ) ;
if ( change )
alc262_lenovo_3000_automute ( codec , 0 ) ;
return change ;
@ -11854,12 +11858,7 @@ static int alc268_acer_master_sw_put(struct snd_kcontrol *kcontrol,
long * valp = ucontrol - > value . integer . value ;
int change ;
change = snd_hda_codec_amp_update ( codec , 0x14 , 0 , HDA_OUTPUT , 0 ,
HDA_AMP_MUTE ,
valp [ 0 ] ? 0 : HDA_AMP_MUTE ) ;
change | = snd_hda_codec_amp_update ( codec , 0x14 , 1 , HDA_OUTPUT , 0 ,
HDA_AMP_MUTE ,
valp [ 1 ] ? 0 : HDA_AMP_MUTE ) ;
change = amp_stereo_mute_update ( codec , 0x14 , HDA_OUTPUT , 0 , valp ) ;
if ( change )
alc268_acer_automute ( codec , 0 ) ;
return change ;