|
@@ -7094,8 +7094,8 @@ static struct snd_kcontrol_new alc885_mb5_mixer[] = {
|
|
|
HDA_BIND_MUTE ("Surround Playback Switch", 0x0d, 0x02, HDA_INPUT),
|
|
|
HDA_CODEC_VOLUME("LFE Playback Volume", 0x0e, 0x00, HDA_OUTPUT),
|
|
|
HDA_BIND_MUTE ("LFE Playback Switch", 0x0e, 0x02, HDA_INPUT),
|
|
|
- HDA_CODEC_VOLUME("HP Playback Volume", 0x0f, 0x00, HDA_OUTPUT),
|
|
|
- HDA_BIND_MUTE ("HP Playback Switch", 0x0f, 0x02, HDA_INPUT),
|
|
|
+ HDA_CODEC_VOLUME("Headphone Playback Volume", 0x0f, 0x00, HDA_OUTPUT),
|
|
|
+ HDA_BIND_MUTE ("Headphone Playback Switch", 0x0f, 0x02, HDA_INPUT),
|
|
|
HDA_CODEC_VOLUME("Line Playback Volume", 0x0b, 0x02, HDA_INPUT),
|
|
|
HDA_CODEC_MUTE ("Line Playback Switch", 0x0b, 0x02, HDA_INPUT),
|
|
|
HDA_CODEC_VOLUME("Mic Playback Volume", 0x0b, 0x01, HDA_INPUT),
|
|
@@ -7496,6 +7496,7 @@ static struct hda_verb alc885_mb5_init_verbs[] = {
|
|
|
{0x14, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_OUT},
|
|
|
{0x14, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE},
|
|
|
{0x14, AC_VERB_SET_CONNECT_SEL, 0x03},
|
|
|
+ {0x14, AC_VERB_SET_UNSOLICITED_ENABLE, ALC880_HP_EVENT | AC_USRSP_EN},
|
|
|
/* Front Mic pin: input vref at 80% */
|
|
|
{0x19, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_VREF80},
|
|
|
{0x19, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_MUTE},
|
|
@@ -7680,6 +7681,27 @@ static void alc885_mbp3_setup(struct hda_codec *codec)
|
|
|
spec->autocfg.speaker_pins[0] = 0x14;
|
|
|
}
|
|
|
|
|
|
+static void alc885_mb5_automute(struct hda_codec *codec)
|
|
|
+{
|
|
|
+ unsigned int present;
|
|
|
+
|
|
|
+ present = snd_hda_codec_read(codec, 0x14, 0,
|
|
|
+ AC_VERB_GET_PIN_SENSE, 0) & 0x80000000;
|
|
|
+ snd_hda_codec_amp_stereo(codec, 0x18, HDA_OUTPUT, 0,
|
|
|
+ HDA_AMP_MUTE, present ? HDA_AMP_MUTE : 0);
|
|
|
+ snd_hda_codec_amp_stereo(codec, 0x1a, HDA_OUTPUT, 0,
|
|
|
+ HDA_AMP_MUTE, present ? HDA_AMP_MUTE : 0);
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
+static void alc885_mb5_unsol_event(struct hda_codec *codec,
|
|
|
+ unsigned int res)
|
|
|
+{
|
|
|
+ /* Headphone insertion or removal. */
|
|
|
+ if ((res >> 26) == ALC880_HP_EVENT)
|
|
|
+ alc885_mb5_automute(codec);
|
|
|
+}
|
|
|
+
|
|
|
static void alc885_imac91_automute(struct hda_codec *codec)
|
|
|
{
|
|
|
unsigned int present;
|
|
@@ -9126,6 +9148,8 @@ static struct alc_config_preset alc882_presets[] = {
|
|
|
.input_mux = &mb5_capture_source,
|
|
|
.dig_out_nid = ALC882_DIGOUT_NID,
|
|
|
.dig_in_nid = ALC882_DIGIN_NID,
|
|
|
+ .unsol_event = alc885_mb5_unsol_event,
|
|
|
+ .init_hook = alc885_mb5_automute,
|
|
|
},
|
|
|
[ALC885_MACPRO] = {
|
|
|
.mixers = { alc882_macpro_mixer },
|