[alsa-devel] [PATCH] ALSA: hda - Disable automute feature by default
The default behaviour should be the same as before this feature was introduced, to avoid user confusion.
Reported-by: Toni Mueller support@oeko.net References: http://bugs.debian.org/631963 Signed-off-by: Ben Hutchings ben@decadent.org.uk --- The code is rather inconsistent in whether 'mode' means the behaviour or mechanism of automute. I didn't touch that but you might want to consider some renaming.
Ben.
sound/pci/hda/patch_realtek.c | 74 ++--------------------------------------- 1 files changed, 3 insertions(+), 71 deletions(-)
diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c index b48fb43..1247a04 100644 --- a/sound/pci/hda/patch_realtek.c +++ b/sound/pci/hda/patch_realtek.c @@ -306,7 +306,7 @@ struct alc_multi_io { };
enum { - ALC_AUTOMUTE_PIN, /* change the pin control */ + ALC_AUTOMUTE_PIN = 1, /* change the pin control */ ALC_AUTOMUTE_AMP, /* mute/unmute the pin AMP */ ALC_AUTOMUTE_MIXER, /* mute/unmute mixer widget AMP */ }; @@ -1599,10 +1599,9 @@ static void alc_init_auto_hp(struct hda_codec *codec) snd_hda_codec_write_cache(codec, nid, 0, AC_VERB_SET_UNSOLICITED_ENABLE, AC_USRSP_EN | ALC880_HP_EVENT); - spec->automute = 1; spec->automute_mode = ALC_AUTOMUTE_PIN; } - if (spec->automute && cfg->line_out_pins[0] && + if (spec->automute_mode && cfg->line_out_pins[0] && cfg->line_out_pins[0] != cfg->hp_pins[0] && cfg->line_out_pins[0] != cfg->speaker_pins[0]) { for (i = 0; i < cfg->line_outs; i++) { @@ -1619,7 +1618,7 @@ static void alc_init_auto_hp(struct hda_codec *codec) spec->automute_lines = spec->detect_line; }
- if (spec->automute) { + if (spec->automute_mode) { /* create a control for automute mode */ alc_add_automute_mode_enum(codec); spec->unsol_event = alc_sku_unsol_event; @@ -2241,7 +2240,6 @@ static void alc889_automute_setup(struct hda_codec *codec) spec->autocfg.speaker_pins[2] = 0x17; spec->autocfg.speaker_pins[3] = 0x19; spec->autocfg.speaker_pins[4] = 0x1a; - spec->automute = 1; spec->automute_mode = ALC_AUTOMUTE_AMP; }
@@ -2259,7 +2257,6 @@ static void alc888_fujitsu_xa3530_setup(struct hda_codec *codec) spec->autocfg.hp_pins[1] = 0x1b; /* hp */ spec->autocfg.speaker_pins[0] = 0x14; /* speaker */ spec->autocfg.speaker_pins[1] = 0x15; /* bass */ - spec->automute = 1; spec->automute_mode = ALC_AUTOMUTE_AMP; }
@@ -2543,7 +2540,6 @@ static void alc888_acer_aspire_4930g_setup(struct hda_codec *codec) spec->autocfg.speaker_pins[0] = 0x14; spec->autocfg.speaker_pins[1] = 0x16; spec->autocfg.speaker_pins[2] = 0x17; - spec->automute = 1; spec->automute_mode = ALC_AUTOMUTE_AMP; }
@@ -2555,7 +2551,6 @@ static void alc888_acer_aspire_6530g_setup(struct hda_codec *codec) spec->autocfg.speaker_pins[0] = 0x14; spec->autocfg.speaker_pins[1] = 0x16; spec->autocfg.speaker_pins[2] = 0x17; - spec->automute = 1; spec->automute_mode = ALC_AUTOMUTE_AMP; }
@@ -2567,7 +2562,6 @@ static void alc888_acer_aspire_7730g_setup(struct hda_codec *codec) spec->autocfg.speaker_pins[0] = 0x14; spec->autocfg.speaker_pins[1] = 0x16; spec->autocfg.speaker_pins[2] = 0x17; - spec->automute = 1; spec->automute_mode = ALC_AUTOMUTE_AMP; }
@@ -2579,7 +2573,6 @@ static void alc889_acer_aspire_8930g_setup(struct hda_codec *codec) spec->autocfg.speaker_pins[0] = 0x14; spec->autocfg.speaker_pins[1] = 0x16; spec->autocfg.speaker_pins[2] = 0x1b; - spec->automute = 1; spec->automute_mode = ALC_AUTOMUTE_AMP; }
@@ -3667,7 +3660,6 @@ static void alc880_uniwill_setup(struct hda_codec *codec) spec->autocfg.hp_pins[0] = 0x14; spec->autocfg.speaker_pins[0] = 0x15; spec->autocfg.speaker_pins[0] = 0x16; - spec->automute = 1; spec->automute_mode = ALC_AUTOMUTE_AMP; }
@@ -3699,7 +3691,6 @@ static void alc880_uniwill_p53_setup(struct hda_codec *codec)
spec->autocfg.hp_pins[0] = 0x14; spec->autocfg.speaker_pins[0] = 0x15; - spec->automute = 1; spec->automute_mode = ALC_AUTOMUTE_AMP; }
@@ -3969,7 +3960,6 @@ static void alc880_lg_setup(struct hda_codec *codec)
spec->autocfg.hp_pins[0] = 0x1b; spec->autocfg.speaker_pins[0] = 0x17; - spec->automute = 1; spec->automute_mode = ALC_AUTOMUTE_AMP; }
@@ -4055,7 +4045,6 @@ static void alc880_lg_lw_setup(struct hda_codec *codec)
spec->autocfg.hp_pins[0] = 0x1b; spec->autocfg.speaker_pins[0] = 0x14; - spec->automute = 1; spec->automute_mode = ALC_AUTOMUTE_AMP; }
@@ -4128,7 +4117,6 @@ static void alc880_medion_rim_setup(struct hda_codec *codec)
spec->autocfg.hp_pins[0] = 0x14; spec->autocfg.speaker_pins[0] = 0x1b; - spec->automute = 1; spec->automute_mode = ALC_AUTOMUTE_AMP; }
@@ -6277,7 +6265,6 @@ static void alc260_hp_setup(struct hda_codec *codec) spec->autocfg.hp_pins[0] = 0x0f; spec->autocfg.speaker_pins[0] = 0x10; spec->autocfg.speaker_pins[1] = 0x11; - spec->automute = 1; spec->automute_mode = ALC_AUTOMUTE_PIN; }
@@ -6308,7 +6295,6 @@ static void alc260_hp_3013_setup(struct hda_codec *codec) spec->autocfg.hp_pins[0] = 0x15; spec->autocfg.speaker_pins[0] = 0x10; spec->autocfg.speaker_pins[1] = 0x11; - spec->automute = 1; spec->automute_mode = ALC_AUTOMUTE_PIN; }
@@ -6352,7 +6338,6 @@ static void alc260_hp_3012_setup(struct hda_codec *codec) spec->autocfg.speaker_pins[0] = 0x0f; spec->autocfg.speaker_pins[1] = 0x11; spec->autocfg.speaker_pins[2] = 0x15; - spec->automute = 1; spec->automute_mode = ALC_AUTOMUTE_PIN; }
@@ -8887,7 +8872,6 @@ static void alc885_imac24_setup(struct hda_codec *codec) spec->autocfg.hp_pins[0] = 0x14; spec->autocfg.speaker_pins[0] = 0x18; spec->autocfg.speaker_pins[1] = 0x1a; - spec->automute = 1; spec->automute_mode = ALC_AUTOMUTE_AMP; }
@@ -8901,7 +8885,6 @@ static void alc885_mba21_setup(struct hda_codec *codec)
spec->autocfg.hp_pins[0] = 0x14; spec->autocfg.speaker_pins[0] = 0x18; - spec->automute = 1; spec->automute_mode = ALC_AUTOMUTE_AMP; }
@@ -8913,7 +8896,6 @@ static void alc885_mbp3_setup(struct hda_codec *codec)
spec->autocfg.hp_pins[0] = 0x15; spec->autocfg.speaker_pins[0] = 0x14; - spec->automute = 1; spec->automute_mode = ALC_AUTOMUTE_AMP; }
@@ -8924,7 +8906,6 @@ static void alc885_imac91_setup(struct hda_codec *codec) spec->autocfg.hp_pins[0] = 0x14; spec->autocfg.speaker_pins[0] = 0x18; spec->autocfg.speaker_pins[1] = 0x1a; - spec->automute = 1; spec->automute_mode = ALC_AUTOMUTE_AMP; }
@@ -8958,7 +8939,6 @@ static void alc882_targa_setup(struct hda_codec *codec)
spec->autocfg.hp_pins[0] = 0x14; spec->autocfg.speaker_pins[0] = 0x1b; - spec->automute = 1; spec->automute_mode = ALC_AUTOMUTE_AMP; }
@@ -9405,7 +9385,6 @@ static void alc883_medion_wim2160_setup(struct hda_codec *codec)
spec->autocfg.hp_pins[0] = 0x1a; spec->autocfg.speaker_pins[0] = 0x15; - spec->automute = 1; spec->automute_mode = ALC_AUTOMUTE_AMP; }
@@ -9559,7 +9538,6 @@ static void alc883_mitac_setup(struct hda_codec *codec) spec->autocfg.hp_pins[0] = 0x15; spec->autocfg.speaker_pins[0] = 0x14; spec->autocfg.speaker_pins[1] = 0x17; - spec->automute = 1; spec->automute_mode = ALC_AUTOMUTE_AMP; }
@@ -9725,7 +9703,6 @@ static void alc888_3st_hp_setup(struct hda_codec *codec) spec->autocfg.speaker_pins[0] = 0x14; spec->autocfg.speaker_pins[1] = 0x16; spec->autocfg.speaker_pins[2] = 0x18; - spec->automute = 1; spec->automute_mode = ALC_AUTOMUTE_AMP; }
@@ -9786,7 +9763,6 @@ static void alc888_lenovo_ms7195_setup(struct hda_codec *codec) spec->autocfg.hp_pins[0] = 0x1b; spec->autocfg.line_out_pins[0] = 0x14; spec->autocfg.speaker_pins[0] = 0x15; - spec->automute = 1; spec->automute_mode = ALC_AUTOMUTE_AMP; }
@@ -9797,7 +9773,6 @@ static void alc883_lenovo_nb0763_setup(struct hda_codec *codec)
spec->autocfg.hp_pins[0] = 0x14; spec->autocfg.speaker_pins[0] = 0x15; - spec->automute = 1; spec->automute_mode = ALC_AUTOMUTE_AMP; }
@@ -9811,7 +9786,6 @@ static void alc883_clevo_m720_setup(struct hda_codec *codec)
spec->autocfg.hp_pins[0] = 0x15; spec->autocfg.speaker_pins[0] = 0x14; - spec->automute = 1; spec->automute_mode = ALC_AUTOMUTE_AMP; }
@@ -9841,7 +9815,6 @@ static void alc883_2ch_fujitsu_pi2515_setup(struct hda_codec *codec)
spec->autocfg.hp_pins[0] = 0x14; spec->autocfg.speaker_pins[0] = 0x15; - spec->automute = 1; spec->automute_mode = ALC_AUTOMUTE_AMP; }
@@ -9851,7 +9824,6 @@ static void alc883_haier_w66_setup(struct hda_codec *codec)
spec->autocfg.hp_pins[0] = 0x1b; spec->autocfg.speaker_pins[0] = 0x14; - spec->automute = 1; spec->automute_mode = ALC_AUTOMUTE_AMP; }
@@ -9862,7 +9834,6 @@ static void alc883_lenovo_101e_setup(struct hda_codec *codec) spec->autocfg.hp_pins[0] = 0x1b; spec->autocfg.line_out_pins[0] = 0x14; spec->autocfg.speaker_pins[0] = 0x15; - spec->automute = 1; spec->detect_line = 1; spec->automute_lines = 1; spec->automute_mode = ALC_AUTOMUTE_AMP; @@ -9876,7 +9847,6 @@ static void alc883_acer_aspire_setup(struct hda_codec *codec) spec->autocfg.hp_pins[0] = 0x14; spec->autocfg.speaker_pins[0] = 0x15; spec->autocfg.speaker_pins[1] = 0x16; - spec->automute = 1; spec->automute_mode = ALC_AUTOMUTE_AMP; }
@@ -9907,7 +9877,6 @@ static void alc888_6st_dell_setup(struct hda_codec *codec) spec->autocfg.speaker_pins[1] = 0x15; spec->autocfg.speaker_pins[2] = 0x16; spec->autocfg.speaker_pins[3] = 0x17; - spec->automute = 1; spec->automute_mode = ALC_AUTOMUTE_AMP; }
@@ -9921,7 +9890,6 @@ static void alc888_lenovo_sky_setup(struct hda_codec *codec) spec->autocfg.speaker_pins[2] = 0x16; spec->autocfg.speaker_pins[3] = 0x17; spec->autocfg.speaker_pins[4] = 0x1a; - spec->automute = 1; spec->automute_mode = ALC_AUTOMUTE_AMP; }
@@ -9932,7 +9900,6 @@ static void alc883_vaiott_setup(struct hda_codec *codec) spec->autocfg.hp_pins[0] = 0x15; spec->autocfg.speaker_pins[0] = 0x14; spec->autocfg.speaker_pins[1] = 0x17; - spec->automute = 1; spec->automute_mode = ALC_AUTOMUTE_AMP; }
@@ -9959,7 +9926,6 @@ static void alc883_mode2_setup(struct hda_codec *codec) spec->ext_mic.mux_idx = 0; spec->int_mic.mux_idx = 1; spec->auto_mic = 1; - spec->automute = 1; spec->automute_mode = ALC_AUTOMUTE_AMP; }
@@ -11470,7 +11436,6 @@ static void alc262_hp_bpc_setup(struct hda_codec *codec)
spec->autocfg.hp_pins[0] = 0x1b; spec->autocfg.speaker_pins[0] = 0x16; - spec->automute = 1; spec->automute_mode = ALC_AUTOMUTE_PIN; }
@@ -11480,7 +11445,6 @@ static void alc262_hp_wildwest_setup(struct hda_codec *codec)
spec->autocfg.hp_pins[0] = 0x15; spec->autocfg.speaker_pins[0] = 0x16; - spec->automute = 1; spec->automute_mode = ALC_AUTOMUTE_PIN; }
@@ -11560,7 +11524,6 @@ static void alc262_hp_t5735_setup(struct hda_codec *codec)
spec->autocfg.hp_pins[0] = 0x15; spec->autocfg.speaker_pins[0] = 0x14; - spec->automute = 1; spec->automute_mode = ALC_AUTOMUTE_PIN; }
@@ -11674,7 +11637,6 @@ static void alc262_hippo_setup(struct hda_codec *codec)
spec->autocfg.hp_pins[0] = 0x15; spec->autocfg.speaker_pins[0] = 0x14; - spec->automute = 1; spec->automute_mode = ALC_AUTOMUTE_AMP; }
@@ -11684,7 +11646,6 @@ static void alc262_hippo1_setup(struct hda_codec *codec)
spec->autocfg.hp_pins[0] = 0x1b; spec->autocfg.speaker_pins[0] = 0x14; - spec->automute = 1; spec->automute_mode = ALC_AUTOMUTE_AMP; }
@@ -11748,7 +11709,6 @@ static void alc262_tyan_setup(struct hda_codec *codec)
spec->autocfg.hp_pins[0] = 0x1b; spec->autocfg.speaker_pins[0] = 0x15; - spec->automute = 1; spec->automute_mode = ALC_AUTOMUTE_AMP; }
@@ -11893,7 +11853,6 @@ static void alc262_toshiba_s06_setup(struct hda_codec *codec) spec->int_mic.pin = 0x12; spec->int_mic.mux_idx = 9; spec->auto_mic = 1; - spec->automute = 1; spec->automute_mode = ALC_AUTOMUTE_PIN; }
@@ -11998,7 +11957,6 @@ static void alc262_fujitsu_setup(struct hda_codec *codec) spec->autocfg.hp_pins[0] = 0x14; spec->autocfg.hp_pins[1] = 0x1b; spec->autocfg.speaker_pins[0] = 0x15; - spec->automute = 1; spec->automute_mode = ALC_AUTOMUTE_AMP; }
@@ -12045,7 +12003,6 @@ static void alc262_lenovo_3000_setup(struct hda_codec *codec) spec->autocfg.hp_pins[0] = 0x1b; spec->autocfg.speaker_pins[0] = 0x14; spec->autocfg.speaker_pins[1] = 0x16; - spec->automute = 1; spec->automute_mode = ALC_AUTOMUTE_AMP; }
@@ -13255,7 +13212,6 @@ static void alc268_acer_setup(struct hda_codec *codec)
spec->autocfg.hp_pins[0] = 0x14; spec->autocfg.speaker_pins[0] = 0x15; - spec->automute = 1; spec->automute_mode = ALC_AUTOMUTE_AMP; }
@@ -13339,7 +13295,6 @@ static void alc268_acer_lc_setup(struct hda_codec *codec) struct alc_spec *spec = codec->spec; spec->autocfg.hp_pins[0] = 0x15; spec->autocfg.speaker_pins[0] = 0x14; - spec->automute = 1; spec->automute_mode = ALC_AUTOMUTE_AMP; spec->ext_mic.pin = 0x18; spec->ext_mic.mux_idx = 0; @@ -13379,7 +13334,6 @@ static void alc268_dell_setup(struct hda_codec *codec) spec->int_mic.pin = 0x19; spec->int_mic.mux_idx = 1; spec->auto_mic = 1; - spec->automute = 1; spec->automute_mode = ALC_AUTOMUTE_PIN; }
@@ -13411,7 +13365,6 @@ static void alc267_quanta_il1_setup(struct hda_codec *codec) spec->int_mic.pin = 0x19; spec->int_mic.mux_idx = 1; spec->auto_mic = 1; - spec->automute = 1; spec->automute_mode = ALC_AUTOMUTE_PIN; }
@@ -14415,7 +14368,6 @@ static void alc269_quanta_fl1_setup(struct hda_codec *codec) spec->autocfg.hp_pins[0] = 0x15; spec->autocfg.speaker_pins[0] = 0x14; spec->automute_mixer_nid[0] = 0x0c; - spec->automute = 1; spec->automute_mode = ALC_AUTOMUTE_MIXER; spec->ext_mic.pin = 0x18; spec->ext_mic.mux_idx = 0; @@ -14437,7 +14389,6 @@ static void alc269_lifebook_setup(struct hda_codec *codec) spec->autocfg.hp_pins[1] = 0x1a; spec->autocfg.speaker_pins[0] = 0x14; spec->automute_mixer_nid[0] = 0x0c; - spec->automute = 1; spec->automute_mode = ALC_AUTOMUTE_MIXER; }
@@ -14510,7 +14461,6 @@ static void alc269_laptop_amic_setup(struct hda_codec *codec) spec->autocfg.hp_pins[0] = 0x15; spec->autocfg.speaker_pins[0] = 0x14; spec->automute_mixer_nid[0] = 0x0c; - spec->automute = 1; spec->automute_mode = ALC_AUTOMUTE_MIXER; spec->ext_mic.pin = 0x18; spec->ext_mic.mux_idx = 0; @@ -14525,7 +14475,6 @@ static void alc269_laptop_dmic_setup(struct hda_codec *codec) spec->autocfg.hp_pins[0] = 0x15; spec->autocfg.speaker_pins[0] = 0x14; spec->automute_mixer_nid[0] = 0x0c; - spec->automute = 1; spec->automute_mode = ALC_AUTOMUTE_MIXER; spec->ext_mic.pin = 0x18; spec->ext_mic.mux_idx = 0; @@ -14540,7 +14489,6 @@ static void alc269vb_laptop_amic_setup(struct hda_codec *codec) spec->autocfg.hp_pins[0] = 0x21; spec->autocfg.speaker_pins[0] = 0x14; spec->automute_mixer_nid[0] = 0x0c; - spec->automute = 1; spec->automute_mode = ALC_AUTOMUTE_MIXER; spec->ext_mic.pin = 0x18; spec->ext_mic.mux_idx = 0; @@ -14555,7 +14503,6 @@ static void alc269vb_laptop_dmic_setup(struct hda_codec *codec) spec->autocfg.hp_pins[0] = 0x21; spec->autocfg.speaker_pins[0] = 0x14; spec->automute_mixer_nid[0] = 0x0c; - spec->automute = 1; spec->automute_mode = ALC_AUTOMUTE_MIXER; spec->ext_mic.pin = 0x18; spec->ext_mic.mux_idx = 0; @@ -16878,7 +16825,6 @@ static void alc861vd_lenovo_setup(struct hda_codec *codec) struct alc_spec *spec = codec->spec; spec->autocfg.hp_pins[0] = 0x1b; spec->autocfg.speaker_pins[0] = 0x14; - spec->automute = 1; spec->automute_mode = ALC_AUTOMUTE_AMP; }
@@ -16953,7 +16899,6 @@ static void alc861vd_dallas_setup(struct hda_codec *codec)
spec->autocfg.hp_pins[0] = 0x15; spec->autocfg.speaker_pins[0] = 0x14; - spec->automute = 1; spec->automute_mode = ALC_AUTOMUTE_AMP; }
@@ -18222,7 +18167,6 @@ static void alc662_lenovo_101e_setup(struct hda_codec *codec) spec->autocfg.hp_pins[0] = 0x1b; spec->autocfg.line_out_pins[0] = 0x14; spec->autocfg.speaker_pins[0] = 0x15; - spec->automute = 1; spec->detect_line = 1; spec->automute_lines = 1; spec->automute_mode = ALC_AUTOMUTE_AMP; @@ -18246,7 +18190,6 @@ static void alc662_eeepc_ep20_setup(struct hda_codec *codec)
spec->autocfg.hp_pins[0] = 0x14; spec->autocfg.speaker_pins[0] = 0x1b; - spec->automute = 1; spec->automute_mode = ALC_AUTOMUTE_AMP; }
@@ -18256,7 +18199,6 @@ static void alc663_m51va_setup(struct hda_codec *codec) spec->autocfg.hp_pins[0] = 0x21; spec->autocfg.speaker_pins[0] = 0x14; spec->automute_mixer_nid[0] = 0x0c; - spec->automute = 1; spec->automute_mode = ALC_AUTOMUTE_MIXER; spec->ext_mic.pin = 0x18; spec->ext_mic.mux_idx = 0; @@ -18272,7 +18214,6 @@ static void alc663_mode1_setup(struct hda_codec *codec) spec->autocfg.hp_pins[0] = 0x21; spec->autocfg.speaker_pins[0] = 0x14; spec->automute_mixer_nid[0] = 0x0c; - spec->automute = 1; spec->automute_mode = ALC_AUTOMUTE_MIXER; spec->ext_mic.pin = 0x18; spec->ext_mic.mux_idx = 0; @@ -18287,7 +18228,6 @@ static void alc662_mode2_setup(struct hda_codec *codec) struct alc_spec *spec = codec->spec; spec->autocfg.hp_pins[0] = 0x1b; spec->autocfg.speaker_pins[0] = 0x14; - spec->automute = 1; spec->automute_mode = ALC_AUTOMUTE_PIN; spec->ext_mic.pin = 0x18; spec->ext_mic.mux_idx = 0; @@ -18303,7 +18243,6 @@ static void alc663_mode3_setup(struct hda_codec *codec) spec->autocfg.hp_pins[0] = 0x21; spec->autocfg.hp_pins[0] = 0x15; spec->autocfg.speaker_pins[0] = 0x14; - spec->automute = 1; spec->automute_mode = ALC_AUTOMUTE_PIN; spec->ext_mic.pin = 0x18; spec->ext_mic.mux_idx = 0; @@ -18321,7 +18260,6 @@ static void alc663_mode4_setup(struct hda_codec *codec) spec->autocfg.speaker_pins[1] = 0x16; spec->automute_mixer_nid[0] = 0x0c; spec->automute_mixer_nid[1] = 0x0e; - spec->automute = 1; spec->automute_mode = ALC_AUTOMUTE_MIXER; spec->ext_mic.pin = 0x18; spec->ext_mic.mux_idx = 0; @@ -18339,7 +18277,6 @@ static void alc663_mode5_setup(struct hda_codec *codec) spec->autocfg.speaker_pins[1] = 0x16; spec->automute_mixer_nid[0] = 0x0c; spec->automute_mixer_nid[1] = 0x0e; - spec->automute = 1; spec->automute_mode = ALC_AUTOMUTE_MIXER; spec->ext_mic.pin = 0x18; spec->ext_mic.mux_idx = 0; @@ -18356,7 +18293,6 @@ static void alc663_mode6_setup(struct hda_codec *codec) spec->autocfg.hp_pins[0] = 0x15; spec->autocfg.speaker_pins[0] = 0x14; spec->automute_mixer_nid[0] = 0x0c; - spec->automute = 1; spec->automute_mode = ALC_AUTOMUTE_MIXER; spec->ext_mic.pin = 0x18; spec->ext_mic.mux_idx = 0; @@ -18373,7 +18309,6 @@ static void alc663_mode7_setup(struct hda_codec *codec) spec->autocfg.hp_pins[0] = 0x21; spec->autocfg.speaker_pins[0] = 0x14; spec->autocfg.speaker_pins[0] = 0x17; - spec->automute = 1; spec->automute_mode = ALC_AUTOMUTE_PIN; spec->ext_mic.pin = 0x18; spec->ext_mic.mux_idx = 0; @@ -18390,7 +18325,6 @@ static void alc663_mode8_setup(struct hda_codec *codec) spec->autocfg.hp_pins[1] = 0x15; spec->autocfg.speaker_pins[0] = 0x14; spec->autocfg.speaker_pins[0] = 0x17; - spec->automute = 1; spec->automute_mode = ALC_AUTOMUTE_PIN; spec->ext_mic.pin = 0x18; spec->ext_mic.mux_idx = 0; @@ -18405,7 +18339,6 @@ static void alc663_g71v_setup(struct hda_codec *codec) spec->autocfg.hp_pins[0] = 0x21; spec->autocfg.line_out_pins[0] = 0x15; spec->autocfg.speaker_pins[0] = 0x14; - spec->automute = 1; spec->automute_mode = ALC_AUTOMUTE_AMP; spec->detect_line = 1; spec->automute_lines = 1; @@ -19818,7 +19751,6 @@ static void alc680_base_setup(struct hda_codec *codec) spec->autocfg.inputs[0].type = AUTO_PIN_MIC; spec->autocfg.inputs[1].pin = 0x19; spec->autocfg.inputs[1].type = AUTO_PIN_LINE_IN; - spec->automute = 1; spec->automute_mode = ALC_AUTOMUTE_AMP; }
[I resend this again since it didn't get out due to domain problem of alsa-project.org. If you've already seen the mail, please disregard.]
At Thu, 14 Jul 2011 03:07:51 +0100, Ben Hutchings wrote:
The default behaviour should be the same as before this feature was introduced, to avoid user confusion.
Reported-by: Toni Mueller support@oeko.net References: http://bugs.debian.org/631963 Signed-off-by: Ben Hutchings ben@decadent.org.uk
The code is rather inconsistent in whether 'mode' means the behaviour or mechanism of automute. I didn't touch that but you might want to consider some renaming.
Sorry, I can't take this.
First, the fix is touching a wrong place. There are several flags to control the auto-mute behavior. spec->automute is a flag to control the all auto-mute feature including the headphone jack. For the line-out jack, it's spec->automute_lines flag.
Secondly, this is a fix of long-standing bug. With this change, the driver finally behaves consistently in a way seen in other OS.
thanks,
Takashi
Ben.
sound/pci/hda/patch_realtek.c | 74 ++--------------------------------------- 1 files changed, 3 insertions(+), 71 deletions(-)
diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c index b48fb43..1247a04 100644 --- a/sound/pci/hda/patch_realtek.c +++ b/sound/pci/hda/patch_realtek.c @@ -306,7 +306,7 @@ struct alc_multi_io { };
enum {
- ALC_AUTOMUTE_PIN, /* change the pin control */
- ALC_AUTOMUTE_PIN = 1, /* change the pin control */ ALC_AUTOMUTE_AMP, /* mute/unmute the pin AMP */ ALC_AUTOMUTE_MIXER, /* mute/unmute mixer widget AMP */
}; @@ -1599,10 +1599,9 @@ static void alc_init_auto_hp(struct hda_codec *codec) snd_hda_codec_write_cache(codec, nid, 0, AC_VERB_SET_UNSOLICITED_ENABLE, AC_USRSP_EN | ALC880_HP_EVENT);
spec->automute_mode = ALC_AUTOMUTE_PIN; }spec->automute = 1;
- if (spec->automute && cfg->line_out_pins[0] &&
- if (spec->automute_mode && cfg->line_out_pins[0] && cfg->line_out_pins[0] != cfg->hp_pins[0] && cfg->line_out_pins[0] != cfg->speaker_pins[0]) { for (i = 0; i < cfg->line_outs; i++) {
@@ -1619,7 +1618,7 @@ static void alc_init_auto_hp(struct hda_codec *codec) spec->automute_lines = spec->detect_line; }
- if (spec->automute) {
- if (spec->automute_mode) { /* create a control for automute mode */ alc_add_automute_mode_enum(codec); spec->unsol_event = alc_sku_unsol_event;
@@ -2241,7 +2240,6 @@ static void alc889_automute_setup(struct hda_codec *codec) spec->autocfg.speaker_pins[2] = 0x17; spec->autocfg.speaker_pins[3] = 0x19; spec->autocfg.speaker_pins[4] = 0x1a;
- spec->automute = 1; spec->automute_mode = ALC_AUTOMUTE_AMP;
}
@@ -2259,7 +2257,6 @@ static void alc888_fujitsu_xa3530_setup(struct hda_codec *codec) spec->autocfg.hp_pins[1] = 0x1b; /* hp */ spec->autocfg.speaker_pins[0] = 0x14; /* speaker */ spec->autocfg.speaker_pins[1] = 0x15; /* bass */
- spec->automute = 1; spec->automute_mode = ALC_AUTOMUTE_AMP;
}
@@ -2543,7 +2540,6 @@ static void alc888_acer_aspire_4930g_setup(struct hda_codec *codec) spec->autocfg.speaker_pins[0] = 0x14; spec->autocfg.speaker_pins[1] = 0x16; spec->autocfg.speaker_pins[2] = 0x17;
- spec->automute = 1; spec->automute_mode = ALC_AUTOMUTE_AMP;
}
@@ -2555,7 +2551,6 @@ static void alc888_acer_aspire_6530g_setup(struct hda_codec *codec) spec->autocfg.speaker_pins[0] = 0x14; spec->autocfg.speaker_pins[1] = 0x16; spec->autocfg.speaker_pins[2] = 0x17;
- spec->automute = 1; spec->automute_mode = ALC_AUTOMUTE_AMP;
}
@@ -2567,7 +2562,6 @@ static void alc888_acer_aspire_7730g_setup(struct hda_codec *codec) spec->autocfg.speaker_pins[0] = 0x14; spec->autocfg.speaker_pins[1] = 0x16; spec->autocfg.speaker_pins[2] = 0x17;
- spec->automute = 1; spec->automute_mode = ALC_AUTOMUTE_AMP;
}
@@ -2579,7 +2573,6 @@ static void alc889_acer_aspire_8930g_setup(struct hda_codec *codec) spec->autocfg.speaker_pins[0] = 0x14; spec->autocfg.speaker_pins[1] = 0x16; spec->autocfg.speaker_pins[2] = 0x1b;
- spec->automute = 1; spec->automute_mode = ALC_AUTOMUTE_AMP;
}
@@ -3667,7 +3660,6 @@ static void alc880_uniwill_setup(struct hda_codec *codec) spec->autocfg.hp_pins[0] = 0x14; spec->autocfg.speaker_pins[0] = 0x15; spec->autocfg.speaker_pins[0] = 0x16;
- spec->automute = 1; spec->automute_mode = ALC_AUTOMUTE_AMP;
}
@@ -3699,7 +3691,6 @@ static void alc880_uniwill_p53_setup(struct hda_codec *codec)
spec->autocfg.hp_pins[0] = 0x14; spec->autocfg.speaker_pins[0] = 0x15;
- spec->automute = 1; spec->automute_mode = ALC_AUTOMUTE_AMP;
}
@@ -3969,7 +3960,6 @@ static void alc880_lg_setup(struct hda_codec *codec)
spec->autocfg.hp_pins[0] = 0x1b; spec->autocfg.speaker_pins[0] = 0x17;
- spec->automute = 1; spec->automute_mode = ALC_AUTOMUTE_AMP;
}
@@ -4055,7 +4045,6 @@ static void alc880_lg_lw_setup(struct hda_codec *codec)
spec->autocfg.hp_pins[0] = 0x1b; spec->autocfg.speaker_pins[0] = 0x14;
- spec->automute = 1; spec->automute_mode = ALC_AUTOMUTE_AMP;
}
@@ -4128,7 +4117,6 @@ static void alc880_medion_rim_setup(struct hda_codec *codec)
spec->autocfg.hp_pins[0] = 0x14; spec->autocfg.speaker_pins[0] = 0x1b;
- spec->automute = 1; spec->automute_mode = ALC_AUTOMUTE_AMP;
}
@@ -6277,7 +6265,6 @@ static void alc260_hp_setup(struct hda_codec *codec) spec->autocfg.hp_pins[0] = 0x0f; spec->autocfg.speaker_pins[0] = 0x10; spec->autocfg.speaker_pins[1] = 0x11;
- spec->automute = 1; spec->automute_mode = ALC_AUTOMUTE_PIN;
}
@@ -6308,7 +6295,6 @@ static void alc260_hp_3013_setup(struct hda_codec *codec) spec->autocfg.hp_pins[0] = 0x15; spec->autocfg.speaker_pins[0] = 0x10; spec->autocfg.speaker_pins[1] = 0x11;
- spec->automute = 1; spec->automute_mode = ALC_AUTOMUTE_PIN;
}
@@ -6352,7 +6338,6 @@ static void alc260_hp_3012_setup(struct hda_codec *codec) spec->autocfg.speaker_pins[0] = 0x0f; spec->autocfg.speaker_pins[1] = 0x11; spec->autocfg.speaker_pins[2] = 0x15;
- spec->automute = 1; spec->automute_mode = ALC_AUTOMUTE_PIN;
}
@@ -8887,7 +8872,6 @@ static void alc885_imac24_setup(struct hda_codec *codec) spec->autocfg.hp_pins[0] = 0x14; spec->autocfg.speaker_pins[0] = 0x18; spec->autocfg.speaker_pins[1] = 0x1a;
- spec->automute = 1; spec->automute_mode = ALC_AUTOMUTE_AMP;
}
@@ -8901,7 +8885,6 @@ static void alc885_mba21_setup(struct hda_codec *codec)
spec->autocfg.hp_pins[0] = 0x14; spec->autocfg.speaker_pins[0] = 0x18;
- spec->automute = 1; spec->automute_mode = ALC_AUTOMUTE_AMP;
}
@@ -8913,7 +8896,6 @@ static void alc885_mbp3_setup(struct hda_codec *codec)
spec->autocfg.hp_pins[0] = 0x15; spec->autocfg.speaker_pins[0] = 0x14;
- spec->automute = 1; spec->automute_mode = ALC_AUTOMUTE_AMP;
}
@@ -8924,7 +8906,6 @@ static void alc885_imac91_setup(struct hda_codec *codec) spec->autocfg.hp_pins[0] = 0x14; spec->autocfg.speaker_pins[0] = 0x18; spec->autocfg.speaker_pins[1] = 0x1a;
- spec->automute = 1; spec->automute_mode = ALC_AUTOMUTE_AMP;
}
@@ -8958,7 +8939,6 @@ static void alc882_targa_setup(struct hda_codec *codec)
spec->autocfg.hp_pins[0] = 0x14; spec->autocfg.speaker_pins[0] = 0x1b;
- spec->automute = 1; spec->automute_mode = ALC_AUTOMUTE_AMP;
}
@@ -9405,7 +9385,6 @@ static void alc883_medion_wim2160_setup(struct hda_codec *codec)
spec->autocfg.hp_pins[0] = 0x1a; spec->autocfg.speaker_pins[0] = 0x15;
- spec->automute = 1; spec->automute_mode = ALC_AUTOMUTE_AMP;
}
@@ -9559,7 +9538,6 @@ static void alc883_mitac_setup(struct hda_codec *codec) spec->autocfg.hp_pins[0] = 0x15; spec->autocfg.speaker_pins[0] = 0x14; spec->autocfg.speaker_pins[1] = 0x17;
- spec->automute = 1; spec->automute_mode = ALC_AUTOMUTE_AMP;
}
@@ -9725,7 +9703,6 @@ static void alc888_3st_hp_setup(struct hda_codec *codec) spec->autocfg.speaker_pins[0] = 0x14; spec->autocfg.speaker_pins[1] = 0x16; spec->autocfg.speaker_pins[2] = 0x18;
- spec->automute = 1; spec->automute_mode = ALC_AUTOMUTE_AMP;
}
@@ -9786,7 +9763,6 @@ static void alc888_lenovo_ms7195_setup(struct hda_codec *codec) spec->autocfg.hp_pins[0] = 0x1b; spec->autocfg.line_out_pins[0] = 0x14; spec->autocfg.speaker_pins[0] = 0x15;
- spec->automute = 1; spec->automute_mode = ALC_AUTOMUTE_AMP;
}
@@ -9797,7 +9773,6 @@ static void alc883_lenovo_nb0763_setup(struct hda_codec *codec)
spec->autocfg.hp_pins[0] = 0x14; spec->autocfg.speaker_pins[0] = 0x15;
- spec->automute = 1; spec->automute_mode = ALC_AUTOMUTE_AMP;
}
@@ -9811,7 +9786,6 @@ static void alc883_clevo_m720_setup(struct hda_codec *codec)
spec->autocfg.hp_pins[0] = 0x15; spec->autocfg.speaker_pins[0] = 0x14;
- spec->automute = 1; spec->automute_mode = ALC_AUTOMUTE_AMP;
}
@@ -9841,7 +9815,6 @@ static void alc883_2ch_fujitsu_pi2515_setup(struct hda_codec *codec)
spec->autocfg.hp_pins[0] = 0x14; spec->autocfg.speaker_pins[0] = 0x15;
- spec->automute = 1; spec->automute_mode = ALC_AUTOMUTE_AMP;
}
@@ -9851,7 +9824,6 @@ static void alc883_haier_w66_setup(struct hda_codec *codec)
spec->autocfg.hp_pins[0] = 0x1b; spec->autocfg.speaker_pins[0] = 0x14;
- spec->automute = 1; spec->automute_mode = ALC_AUTOMUTE_AMP;
}
@@ -9862,7 +9834,6 @@ static void alc883_lenovo_101e_setup(struct hda_codec *codec) spec->autocfg.hp_pins[0] = 0x1b; spec->autocfg.line_out_pins[0] = 0x14; spec->autocfg.speaker_pins[0] = 0x15;
- spec->automute = 1; spec->detect_line = 1; spec->automute_lines = 1; spec->automute_mode = ALC_AUTOMUTE_AMP;
@@ -9876,7 +9847,6 @@ static void alc883_acer_aspire_setup(struct hda_codec *codec) spec->autocfg.hp_pins[0] = 0x14; spec->autocfg.speaker_pins[0] = 0x15; spec->autocfg.speaker_pins[1] = 0x16;
- spec->automute = 1; spec->automute_mode = ALC_AUTOMUTE_AMP;
}
@@ -9907,7 +9877,6 @@ static void alc888_6st_dell_setup(struct hda_codec *codec) spec->autocfg.speaker_pins[1] = 0x15; spec->autocfg.speaker_pins[2] = 0x16; spec->autocfg.speaker_pins[3] = 0x17;
- spec->automute = 1; spec->automute_mode = ALC_AUTOMUTE_AMP;
}
@@ -9921,7 +9890,6 @@ static void alc888_lenovo_sky_setup(struct hda_codec *codec) spec->autocfg.speaker_pins[2] = 0x16; spec->autocfg.speaker_pins[3] = 0x17; spec->autocfg.speaker_pins[4] = 0x1a;
- spec->automute = 1; spec->automute_mode = ALC_AUTOMUTE_AMP;
}
@@ -9932,7 +9900,6 @@ static void alc883_vaiott_setup(struct hda_codec *codec) spec->autocfg.hp_pins[0] = 0x15; spec->autocfg.speaker_pins[0] = 0x14; spec->autocfg.speaker_pins[1] = 0x17;
- spec->automute = 1; spec->automute_mode = ALC_AUTOMUTE_AMP;
}
@@ -9959,7 +9926,6 @@ static void alc883_mode2_setup(struct hda_codec *codec) spec->ext_mic.mux_idx = 0; spec->int_mic.mux_idx = 1; spec->auto_mic = 1;
- spec->automute = 1; spec->automute_mode = ALC_AUTOMUTE_AMP;
}
@@ -11470,7 +11436,6 @@ static void alc262_hp_bpc_setup(struct hda_codec *codec)
spec->autocfg.hp_pins[0] = 0x1b; spec->autocfg.speaker_pins[0] = 0x16;
- spec->automute = 1; spec->automute_mode = ALC_AUTOMUTE_PIN;
}
@@ -11480,7 +11445,6 @@ static void alc262_hp_wildwest_setup(struct hda_codec *codec)
spec->autocfg.hp_pins[0] = 0x15; spec->autocfg.speaker_pins[0] = 0x16;
- spec->automute = 1; spec->automute_mode = ALC_AUTOMUTE_PIN;
}
@@ -11560,7 +11524,6 @@ static void alc262_hp_t5735_setup(struct hda_codec *codec)
spec->autocfg.hp_pins[0] = 0x15; spec->autocfg.speaker_pins[0] = 0x14;
- spec->automute = 1; spec->automute_mode = ALC_AUTOMUTE_PIN;
}
@@ -11674,7 +11637,6 @@ static void alc262_hippo_setup(struct hda_codec *codec)
spec->autocfg.hp_pins[0] = 0x15; spec->autocfg.speaker_pins[0] = 0x14;
- spec->automute = 1; spec->automute_mode = ALC_AUTOMUTE_AMP;
}
@@ -11684,7 +11646,6 @@ static void alc262_hippo1_setup(struct hda_codec *codec)
spec->autocfg.hp_pins[0] = 0x1b; spec->autocfg.speaker_pins[0] = 0x14;
- spec->automute = 1; spec->automute_mode = ALC_AUTOMUTE_AMP;
}
@@ -11748,7 +11709,6 @@ static void alc262_tyan_setup(struct hda_codec *codec)
spec->autocfg.hp_pins[0] = 0x1b; spec->autocfg.speaker_pins[0] = 0x15;
- spec->automute = 1; spec->automute_mode = ALC_AUTOMUTE_AMP;
}
@@ -11893,7 +11853,6 @@ static void alc262_toshiba_s06_setup(struct hda_codec *codec) spec->int_mic.pin = 0x12; spec->int_mic.mux_idx = 9; spec->auto_mic = 1;
- spec->automute = 1; spec->automute_mode = ALC_AUTOMUTE_PIN;
}
@@ -11998,7 +11957,6 @@ static void alc262_fujitsu_setup(struct hda_codec *codec) spec->autocfg.hp_pins[0] = 0x14; spec->autocfg.hp_pins[1] = 0x1b; spec->autocfg.speaker_pins[0] = 0x15;
- spec->automute = 1; spec->automute_mode = ALC_AUTOMUTE_AMP;
}
@@ -12045,7 +12003,6 @@ static void alc262_lenovo_3000_setup(struct hda_codec *codec) spec->autocfg.hp_pins[0] = 0x1b; spec->autocfg.speaker_pins[0] = 0x14; spec->autocfg.speaker_pins[1] = 0x16;
- spec->automute = 1; spec->automute_mode = ALC_AUTOMUTE_AMP;
}
@@ -13255,7 +13212,6 @@ static void alc268_acer_setup(struct hda_codec *codec)
spec->autocfg.hp_pins[0] = 0x14; spec->autocfg.speaker_pins[0] = 0x15;
- spec->automute = 1; spec->automute_mode = ALC_AUTOMUTE_AMP;
}
@@ -13339,7 +13295,6 @@ static void alc268_acer_lc_setup(struct hda_codec *codec) struct alc_spec *spec = codec->spec; spec->autocfg.hp_pins[0] = 0x15; spec->autocfg.speaker_pins[0] = 0x14;
- spec->automute = 1; spec->automute_mode = ALC_AUTOMUTE_AMP; spec->ext_mic.pin = 0x18; spec->ext_mic.mux_idx = 0;
@@ -13379,7 +13334,6 @@ static void alc268_dell_setup(struct hda_codec *codec) spec->int_mic.pin = 0x19; spec->int_mic.mux_idx = 1; spec->auto_mic = 1;
- spec->automute = 1; spec->automute_mode = ALC_AUTOMUTE_PIN;
}
@@ -13411,7 +13365,6 @@ static void alc267_quanta_il1_setup(struct hda_codec *codec) spec->int_mic.pin = 0x19; spec->int_mic.mux_idx = 1; spec->auto_mic = 1;
- spec->automute = 1; spec->automute_mode = ALC_AUTOMUTE_PIN;
}
@@ -14415,7 +14368,6 @@ static void alc269_quanta_fl1_setup(struct hda_codec *codec) spec->autocfg.hp_pins[0] = 0x15; spec->autocfg.speaker_pins[0] = 0x14; spec->automute_mixer_nid[0] = 0x0c;
- spec->automute = 1; spec->automute_mode = ALC_AUTOMUTE_MIXER; spec->ext_mic.pin = 0x18; spec->ext_mic.mux_idx = 0;
@@ -14437,7 +14389,6 @@ static void alc269_lifebook_setup(struct hda_codec *codec) spec->autocfg.hp_pins[1] = 0x1a; spec->autocfg.speaker_pins[0] = 0x14; spec->automute_mixer_nid[0] = 0x0c;
- spec->automute = 1; spec->automute_mode = ALC_AUTOMUTE_MIXER;
}
@@ -14510,7 +14461,6 @@ static void alc269_laptop_amic_setup(struct hda_codec *codec) spec->autocfg.hp_pins[0] = 0x15; spec->autocfg.speaker_pins[0] = 0x14; spec->automute_mixer_nid[0] = 0x0c;
- spec->automute = 1; spec->automute_mode = ALC_AUTOMUTE_MIXER; spec->ext_mic.pin = 0x18; spec->ext_mic.mux_idx = 0;
@@ -14525,7 +14475,6 @@ static void alc269_laptop_dmic_setup(struct hda_codec *codec) spec->autocfg.hp_pins[0] = 0x15; spec->autocfg.speaker_pins[0] = 0x14; spec->automute_mixer_nid[0] = 0x0c;
- spec->automute = 1; spec->automute_mode = ALC_AUTOMUTE_MIXER; spec->ext_mic.pin = 0x18; spec->ext_mic.mux_idx = 0;
@@ -14540,7 +14489,6 @@ static void alc269vb_laptop_amic_setup(struct hda_codec *codec) spec->autocfg.hp_pins[0] = 0x21; spec->autocfg.speaker_pins[0] = 0x14; spec->automute_mixer_nid[0] = 0x0c;
- spec->automute = 1; spec->automute_mode = ALC_AUTOMUTE_MIXER; spec->ext_mic.pin = 0x18; spec->ext_mic.mux_idx = 0;
@@ -14555,7 +14503,6 @@ static void alc269vb_laptop_dmic_setup(struct hda_codec *codec) spec->autocfg.hp_pins[0] = 0x21; spec->autocfg.speaker_pins[0] = 0x14; spec->automute_mixer_nid[0] = 0x0c;
- spec->automute = 1; spec->automute_mode = ALC_AUTOMUTE_MIXER; spec->ext_mic.pin = 0x18; spec->ext_mic.mux_idx = 0;
@@ -16878,7 +16825,6 @@ static void alc861vd_lenovo_setup(struct hda_codec *codec) struct alc_spec *spec = codec->spec; spec->autocfg.hp_pins[0] = 0x1b; spec->autocfg.speaker_pins[0] = 0x14;
- spec->automute = 1; spec->automute_mode = ALC_AUTOMUTE_AMP;
}
@@ -16953,7 +16899,6 @@ static void alc861vd_dallas_setup(struct hda_codec *codec)
spec->autocfg.hp_pins[0] = 0x15; spec->autocfg.speaker_pins[0] = 0x14;
- spec->automute = 1; spec->automute_mode = ALC_AUTOMUTE_AMP;
}
@@ -18222,7 +18167,6 @@ static void alc662_lenovo_101e_setup(struct hda_codec *codec) spec->autocfg.hp_pins[0] = 0x1b; spec->autocfg.line_out_pins[0] = 0x14; spec->autocfg.speaker_pins[0] = 0x15;
- spec->automute = 1; spec->detect_line = 1; spec->automute_lines = 1; spec->automute_mode = ALC_AUTOMUTE_AMP;
@@ -18246,7 +18190,6 @@ static void alc662_eeepc_ep20_setup(struct hda_codec *codec)
spec->autocfg.hp_pins[0] = 0x14; spec->autocfg.speaker_pins[0] = 0x1b;
- spec->automute = 1; spec->automute_mode = ALC_AUTOMUTE_AMP;
}
@@ -18256,7 +18199,6 @@ static void alc663_m51va_setup(struct hda_codec *codec) spec->autocfg.hp_pins[0] = 0x21; spec->autocfg.speaker_pins[0] = 0x14; spec->automute_mixer_nid[0] = 0x0c;
- spec->automute = 1; spec->automute_mode = ALC_AUTOMUTE_MIXER; spec->ext_mic.pin = 0x18; spec->ext_mic.mux_idx = 0;
@@ -18272,7 +18214,6 @@ static void alc663_mode1_setup(struct hda_codec *codec) spec->autocfg.hp_pins[0] = 0x21; spec->autocfg.speaker_pins[0] = 0x14; spec->automute_mixer_nid[0] = 0x0c;
- spec->automute = 1; spec->automute_mode = ALC_AUTOMUTE_MIXER; spec->ext_mic.pin = 0x18; spec->ext_mic.mux_idx = 0;
@@ -18287,7 +18228,6 @@ static void alc662_mode2_setup(struct hda_codec *codec) struct alc_spec *spec = codec->spec; spec->autocfg.hp_pins[0] = 0x1b; spec->autocfg.speaker_pins[0] = 0x14;
- spec->automute = 1; spec->automute_mode = ALC_AUTOMUTE_PIN; spec->ext_mic.pin = 0x18; spec->ext_mic.mux_idx = 0;
@@ -18303,7 +18243,6 @@ static void alc663_mode3_setup(struct hda_codec *codec) spec->autocfg.hp_pins[0] = 0x21; spec->autocfg.hp_pins[0] = 0x15; spec->autocfg.speaker_pins[0] = 0x14;
- spec->automute = 1; spec->automute_mode = ALC_AUTOMUTE_PIN; spec->ext_mic.pin = 0x18; spec->ext_mic.mux_idx = 0;
@@ -18321,7 +18260,6 @@ static void alc663_mode4_setup(struct hda_codec *codec) spec->autocfg.speaker_pins[1] = 0x16; spec->automute_mixer_nid[0] = 0x0c; spec->automute_mixer_nid[1] = 0x0e;
- spec->automute = 1; spec->automute_mode = ALC_AUTOMUTE_MIXER; spec->ext_mic.pin = 0x18; spec->ext_mic.mux_idx = 0;
@@ -18339,7 +18277,6 @@ static void alc663_mode5_setup(struct hda_codec *codec) spec->autocfg.speaker_pins[1] = 0x16; spec->automute_mixer_nid[0] = 0x0c; spec->automute_mixer_nid[1] = 0x0e;
- spec->automute = 1; spec->automute_mode = ALC_AUTOMUTE_MIXER; spec->ext_mic.pin = 0x18; spec->ext_mic.mux_idx = 0;
@@ -18356,7 +18293,6 @@ static void alc663_mode6_setup(struct hda_codec *codec) spec->autocfg.hp_pins[0] = 0x15; spec->autocfg.speaker_pins[0] = 0x14; spec->automute_mixer_nid[0] = 0x0c;
- spec->automute = 1; spec->automute_mode = ALC_AUTOMUTE_MIXER; spec->ext_mic.pin = 0x18; spec->ext_mic.mux_idx = 0;
@@ -18373,7 +18309,6 @@ static void alc663_mode7_setup(struct hda_codec *codec) spec->autocfg.hp_pins[0] = 0x21; spec->autocfg.speaker_pins[0] = 0x14; spec->autocfg.speaker_pins[0] = 0x17;
- spec->automute = 1; spec->automute_mode = ALC_AUTOMUTE_PIN; spec->ext_mic.pin = 0x18; spec->ext_mic.mux_idx = 0;
@@ -18390,7 +18325,6 @@ static void alc663_mode8_setup(struct hda_codec *codec) spec->autocfg.hp_pins[1] = 0x15; spec->autocfg.speaker_pins[0] = 0x14; spec->autocfg.speaker_pins[0] = 0x17;
- spec->automute = 1; spec->automute_mode = ALC_AUTOMUTE_PIN; spec->ext_mic.pin = 0x18; spec->ext_mic.mux_idx = 0;
@@ -18405,7 +18339,6 @@ static void alc663_g71v_setup(struct hda_codec *codec) spec->autocfg.hp_pins[0] = 0x21; spec->autocfg.line_out_pins[0] = 0x15; spec->autocfg.speaker_pins[0] = 0x14;
- spec->automute = 1; spec->automute_mode = ALC_AUTOMUTE_AMP; spec->detect_line = 1; spec->automute_lines = 1;
@@ -19818,7 +19751,6 @@ static void alc680_base_setup(struct hda_codec *codec) spec->autocfg.inputs[0].type = AUTO_PIN_MIC; spec->autocfg.inputs[1].pin = 0x19; spec->autocfg.inputs[1].type = AUTO_PIN_LINE_IN;
- spec->automute = 1; spec->automute_mode = ALC_AUTOMUTE_AMP;
}
-- 1.7.5.4
On Thu, 2011-07-14 at 10:01 +0200, Takashi Iwai wrote:
[I resend this again since it didn't get out due to domain problem of alsa-project.org. If you've already seen the mail, please disregard.]
At Thu, 14 Jul 2011 03:07:51 +0100, Ben Hutchings wrote:
The default behaviour should be the same as before this feature was introduced, to avoid user confusion.
Reported-by: Toni Mueller support@oeko.net References: http://bugs.debian.org/631963 Signed-off-by: Ben Hutchings ben@decadent.org.uk
The code is rather inconsistent in whether 'mode' means the behaviour or mechanism of automute. I didn't touch that but you might want to consider some renaming.
Sorry, I can't take this.
First, the fix is touching a wrong place. There are several flags to control the auto-mute behavior. spec->automute is a flag to control the all auto-mute feature including the headphone jack. For the line-out jack, it's spec->automute_lines flag.
OK.
Secondly, this is a fix of long-standing bug. With this change, the driver finally behaves consistently in a way seen in other OS.
[...]
But why would Linux users know or care how it behaves in the other OS?
Ben.
At Thu, 14 Jul 2011 14:59:32 +0100, Ben Hutchings wrote:
On Thu, 2011-07-14 at 10:01 +0200, Takashi Iwai wrote:
[I resend this again since it didn't get out due to domain problem of alsa-project.org. If you've already seen the mail, please disregard.]
At Thu, 14 Jul 2011 03:07:51 +0100, Ben Hutchings wrote:
The default behaviour should be the same as before this feature was introduced, to avoid user confusion.
Reported-by: Toni Mueller support@oeko.net References: http://bugs.debian.org/631963 Signed-off-by: Ben Hutchings ben@decadent.org.uk
The code is rather inconsistent in whether 'mode' means the behaviour or mechanism of automute. I didn't touch that but you might want to consider some renaming.
Sorry, I can't take this.
First, the fix is touching a wrong place. There are several flags to control the auto-mute behavior. spec->automute is a flag to control the all auto-mute feature including the headphone jack. For the line-out jack, it's spec->automute_lines flag.
OK.
Secondly, this is a fix of long-standing bug. With this change, the driver finally behaves consistently in a way seen in other OS.
[...]
But why would Linux users know or care how it behaves in the other OS?
Why not?
This change also makes the behavior consistent even within Linux, now behaving same as other HD-audio codec drivers.
Takashi
participants (2)
-
Ben Hutchings
-
Takashi Iwai