From patchwork Thu Dec 1 08:52:16 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: Oneiric SRU (pre-stable): Fix Line out -> Speaker automute for Realtek Date: Wed, 30 Nov 2011 22:52:16 -0000 From: David Henningsson X-Patchwork-Id: 128666 Message-Id: <4ED74040.2060802@canonical.com> To: Ubuntu Kernel Team SRU Justification: Fixes a blocks-hwcert bug. Test case: Take the Optiplex XE machine specified here: http://bugs.launchpad.net/bugs/882693 Without this patch: - Internal Speaker is not muted when "Line Out" jack is plugged in With this patch: - Internal Speaker is muted when "Line Out" jack is plugged in Upstream status: Acked/reviewed by Takashi Iwai and on its way to 3.0 (and 3.1) stable. >From d494dd1f0689328b2c9a62fa168ff774928becc6 Mon Sep 17 00:00:00 2001 From: David Henningsson Date: Tue, 29 Nov 2011 09:19:45 +0100 Subject: [PATCH] ALSA: HDA: Fix Realtek automute Line Out -> Internal Speaker In kernels 3.0 and 3.1, no automute control was created unless Headphone pins were present. This patch enables automute for the case where there are just Line Out and Speaker pins. BugLink: http://bugs.launchpad.net/bugs/882693 Cc: stable@kernel.org (3.0 and 3.1) Tested-by: Marc Legris Signed-off-by: David Henningsson --- sound/pci/hda/patch_realtek.c | 6 +++++- 1 files changed, 5 insertions(+), 1 deletions(-) diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c index e7dc034..c85ce60 100644 --- a/sound/pci/hda/patch_realtek.c +++ b/sound/pci/hda/patch_realtek.c @@ -1605,7 +1605,7 @@ static void alc_init_auto_hp(struct hda_codec *codec) spec->automute = 1; spec->automute_mode = ALC_AUTOMUTE_PIN; } - if (spec->automute && cfg->line_out_pins[0] && + if (cfg->line_out_pins[0] && cfg->speaker_pins[0] && cfg->line_out_pins[0] != cfg->hp_pins[0] && cfg->line_out_pins[0] != cfg->speaker_pins[0]) { @@ -1619,6 +1619,10 @@ static void alc_init_auto_hp(struct hda_codec *codec) AC_VERB_SET_UNSOLICITED_ENABLE, AC_USRSP_EN | ALC880_FRONT_EVENT); spec->detect_line = 1; + if (!spec->automute) { + spec->automute = 1; + spec->automute_mode = ALC_AUTOMUTE_PIN; + } } spec->automute_lines = spec->detect_line; } -- 1.7.5.4