All of lore.kernel.org
 help / color / mirror / Atom feed
* Patch "ALSA: hda - Apply HP headphone fixups more generically" has been added to the 4.3-stable tree
@ 2016-01-25 21:49 gregkh
  0 siblings, 0 replies; only message in thread
From: gregkh @ 2016-01-25 21:49 UTC (permalink / raw)
  To: tiwai, gregkh; +Cc: stable, stable-commits


This is a note to let you know that I've just added the patch titled

    ALSA: hda - Apply HP headphone fixups more generically

to the 4.3-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     alsa-hda-apply-hp-headphone-fixups-more-generically.patch
and it can be found in the queue-4.3 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@vger.kernel.org> know about it.


>From 196543d54574f50e3fd04df4e3048181e006a9da Mon Sep 17 00:00:00 2001
From: Takashi Iwai <tiwai@suse.de>
Date: Mon, 9 Nov 2015 14:46:35 +0100
Subject: ALSA: hda - Apply HP headphone fixups more generically

From: Takashi Iwai <tiwai@suse.de>

commit 196543d54574f50e3fd04df4e3048181e006a9da upstream.

It turned out that many HP laptops suffer from the same problem as
fixed in commit [c932b98c1e47: ALSA: hda - Apply pin fixup for HP
ProBook 6550b].  But, it's tiresome to list up all such PCI SSIDs, as
there are really lots of HP machines.

Instead, we do a bit more clever, try to check the supposedly dock and
built-in headphone pins, and apply the fixup when both seem valid.
This rule can be applied generically to all models using the same
quirk, so we'll fix all in a shot.

Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=107491
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 sound/pci/hda/patch_sigmatel.c |   45 ++++++++++++++++++++++++++---------------
 1 file changed, 29 insertions(+), 16 deletions(-)

--- a/sound/pci/hda/patch_sigmatel.c
+++ b/sound/pci/hda/patch_sigmatel.c
@@ -3110,6 +3110,29 @@ static void stac92hd71bxx_fixup_hp_hdx(s
 	spec->gpio_led = 0x08;
 }
 
+static bool is_hp_output(struct hda_codec *codec, hda_nid_t pin)
+{
+	unsigned int pin_cfg = snd_hda_codec_get_pincfg(codec, pin);
+
+	/* count line-out, too, as BIOS sets often so */
+	return get_defcfg_connect(pin_cfg) != AC_JACK_PORT_NONE &&
+		(get_defcfg_device(pin_cfg) == AC_JACK_LINE_OUT ||
+		 get_defcfg_device(pin_cfg) == AC_JACK_HP_OUT);
+}
+
+static void fixup_hp_headphone(struct hda_codec *codec, hda_nid_t pin)
+{
+	unsigned int pin_cfg = snd_hda_codec_get_pincfg(codec, pin);
+
+	/* It was changed in the BIOS to just satisfy MS DTM.
+	 * Lets turn it back into slaved HP
+	 */
+	pin_cfg = (pin_cfg & (~AC_DEFCFG_DEVICE)) |
+		(AC_JACK_HP_OUT << AC_DEFCFG_DEVICE_SHIFT);
+	pin_cfg = (pin_cfg & (~(AC_DEFCFG_DEF_ASSOC | AC_DEFCFG_SEQUENCE))) |
+		0x1f;
+	snd_hda_codec_set_pincfg(codec, pin, pin_cfg);
+}
 
 static void stac92hd71bxx_fixup_hp(struct hda_codec *codec,
 				   const struct hda_fixup *fix, int action)
@@ -3119,22 +3142,12 @@ static void stac92hd71bxx_fixup_hp(struc
 	if (action != HDA_FIXUP_ACT_PRE_PROBE)
 		return;
 
-	if (hp_blike_system(codec->core.subsystem_id)) {
-		unsigned int pin_cfg = snd_hda_codec_get_pincfg(codec, 0x0f);
-		if (get_defcfg_device(pin_cfg) == AC_JACK_LINE_OUT ||
-			get_defcfg_device(pin_cfg) == AC_JACK_SPEAKER  ||
-			get_defcfg_device(pin_cfg) == AC_JACK_HP_OUT) {
-			/* It was changed in the BIOS to just satisfy MS DTM.
-			 * Lets turn it back into slaved HP
-			 */
-			pin_cfg = (pin_cfg & (~AC_DEFCFG_DEVICE))
-					| (AC_JACK_HP_OUT <<
-						AC_DEFCFG_DEVICE_SHIFT);
-			pin_cfg = (pin_cfg & (~(AC_DEFCFG_DEF_ASSOC
-							| AC_DEFCFG_SEQUENCE)))
-								| 0x1f;
-			snd_hda_codec_set_pincfg(codec, 0x0f, pin_cfg);
-		}
+	/* when both output A and F are assigned, these are supposedly
+	 * dock and built-in headphones; fix both pin configs
+	 */
+	if (is_hp_output(codec, 0x0a) && is_hp_output(codec, 0x0f)) {
+		fixup_hp_headphone(codec, 0x0a);
+		fixup_hp_headphone(codec, 0x0f);
 	}
 
 	if (find_mute_led_cfg(codec, 1))


Patches currently in stable-queue which might be from tiwai@suse.de are

queue-4.3/alsa-hda-fix-headphone-mic-input-on-a-few-dell-alc293-machines.patch
queue-4.3/alsa-hda-add-fixup-for-acer-aspire-one-cloudbook-14.patch
queue-4.3/alsa-usb-audio-add-sample-rate-inquiry-quirk-for-audioquest-dragonfly.patch
queue-4.3/alsa-hda-realtek-dell-xps-one-alc3260-speaker-no-sound-after-resume-back.patch
queue-4.3/alsa-hda-apply-hp-headphone-fixups-more-generically.patch
queue-4.3/alsa-hda-set-codec-to-d3-at-reboot-shutdown-on-thinkpads.patch
queue-4.3/alsa-hda-realtek-fix-silent-headphone-output-on-macpro-4-1-v2.patch
queue-4.3/alsa-rme96-fix-unexpected-volume-reset-after-rate-changes.patch
queue-4.3/alsa-fireworks-bebob-oxfw-dice-enable-to-make-as-built-in.patch
queue-4.3/alsa-hda-set-skl-hda-controller-power-at-freeze-and-thaw.patch
queue-4.3/alsa-hda-add-inverted-dmic-for-packard-bell-dots.patch
queue-4.3/alsa-hda-add-intel-lewisburg-device-ids-audio.patch
queue-4.3/alsa-hda-add-keycode-map-for-alc-input-device.patch
queue-4.3/alsa-hda-add-a-fixup-for-thinkpad-x1-carbon-2nd.patch
queue-4.3/alsa-hda-skip-eld-notification-during-system-suspend.patch
queue-4.3/alsa-hda-add-mic-mute-hotkey-quirk-for-lenovo-thinkcentre-aio.patch
queue-4.3/alsa-hda-disable-64bit-address-for-creative-hda-controllers.patch
queue-4.3/alsa-hda-fix-noise-on-dell-latitude-e6440.patch
queue-4.3/alsa-hda-ca0132-quirk-for-alienware-17-2015.patch
queue-4.3/alsa-usb-audio-add-a-more-accurate-volume-quirk-for-audioquest-dragonfly.patch
queue-4.3/alsa-hda-fix-headphone-noise-after-dell-xps-13-resume-back-from-s3.patch
queue-4.3/alsa-hda-fix-noise-problems-on-thinkpad-t440s.patch
queue-4.3/alsa-hda-fix-lost-4k-bdl-boundary-workaround.patch
queue-4.3/alsa-hda-apply-pin-fixup-for-hp-probook-6550b.patch
queue-4.3/alsa-hda-fixing-speaker-noise-on-the-two-latest-thinkpad-models.patch
queue-4.3/alsa-hda-apply-click-noise-workaround-for-thinkpads-generically.patch
queue-4.3/alsa-hda-fix-noise-on-gigabyte-z170x-mobo.patch

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2016-01-25 21:49 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-01-25 21:49 Patch "ALSA: hda - Apply HP headphone fixups more generically" has been added to the 4.3-stable tree gregkh

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.