All of lore.kernel.org
 help / color / mirror / Atom feed
From: Tony Vroon <tony@linx.net>
To: alsa-devel@alsa-project.org
Cc: Takashi Iwai <tiwai@suse.de>
Subject: [ALC262_FUJITSU patch_realtek.c] Use jack sense for both headphone	outputs
Date: Mon, 19 May 2008 01:00:19 +0100	[thread overview]
Message-ID: <1211155219.4974.10.camel@localhost> (raw)


[-- Attachment #1.1.1: Type: text/plain, Size: 667 bytes --]

Good morning,

Could you please consider the following patch for 2.6.27.
The driver starts up with the jacks in an inconsistent state (speakers on, 
laptop headphone output enabled, dock headphone output enabled) and does not 
consider their state until the first unsolicited event arrives. In some cases 
it takes *headphone insert* *headphone removal* *headphone insert* to get the 
driver to mute the speakers successfully.

Also, both HP outputs are enabled together, rather then individually enabled based 
on jack sense results.

This patch addresses both problems. Open to comments as usual & sign-off in diff.

Regards,
Tony V.
LINX sysadmin

[-- Attachment #1.1.2: alc262-fujitsu-autosense.patch --]
[-- Type: text/x-patch, Size: 2715 bytes --]

--- sound/pci/hda/patch_realtek.c.orig	2008-05-17 15:07:35.000000000 +0100
+++ sound/pci/hda/patch_realtek.c	2008-05-19 00:43:35.000000000 +0100
@@ -8757,7 +8757,7 @@
 	},
 };
 
-/* mute/unmute internal speaker according to the hp jack and mute state */
+/* mute/unmute internal speaker according to the hp jacks and mute state */
 static void alc262_fujitsu_automute(struct hda_codec *codec, int force)
 {
 	struct alc_spec *spec = codec->spec;
@@ -8765,13 +8765,28 @@
 
 	if (force || !spec->sense_updated) {
 		unsigned int present_int_hp, present_dock_hp;
-		/* need to execute and sync at first */
+		/* sense laptop headphone jack, enable amp if required */
 		snd_hda_codec_read(codec, 0x14, 0, AC_VERB_SET_PIN_SENSE, 0);
 		present_int_hp = snd_hda_codec_read(codec, 0x14, 0,
 					AC_VERB_GET_PIN_SENSE, 0);
+		if ((present_int_hp & 0x80000000) != 0)
+			snd_hda_codec_amp_stereo(codec, 0x14, HDA_OUTPUT, 0,
+						 HDA_AMP_MUTE, 0);
+		else
+			snd_hda_codec_amp_stereo(codec, 0x14, HDA_OUTPUT, 0,
+						 HDA_AMP_MUTE, HDA_AMP_MUTE);
+
+		/* sense dock headphone jack, enable amp if required */
 		snd_hda_codec_read(codec, 0x1B, 0, AC_VERB_SET_PIN_SENSE, 0);
 		present_dock_hp = snd_hda_codec_read(codec, 0x1b, 0,
 					AC_VERB_GET_PIN_SENSE, 0);
+		if ((present_dock_hp & 0x80000000) != 0)
+			snd_hda_codec_amp_stereo(codec, 0x1b, HDA_OUTPUT, 0,
+						 HDA_AMP_MUTE, 0);
+		else
+			snd_hda_codec_amp_stereo(codec, 0x1b, HDA_OUTPUT, 0,
+						 HDA_AMP_MUTE, HDA_AMP_MUTE);
+
 		spec->jack_present = (present_int_hp & 0x80000000) != 0;
 		spec->jack_present |= (present_dock_hp & 0x80000000) != 0;
 		spec->sense_updated = 1;
@@ -8781,10 +8796,9 @@
 		snd_hda_codec_amp_stereo(codec, 0x15, HDA_OUTPUT, 0,
 					 HDA_AMP_MUTE, HDA_AMP_MUTE);
 	} else {
-		/* unmute internal speaker if necessary */
-		mute = snd_hda_codec_amp_read(codec, 0x14, 0, HDA_OUTPUT, 0);
+		/* unmute internal speaker */
 		snd_hda_codec_amp_stereo(codec, 0x15, HDA_OUTPUT, 0,
-					 HDA_AMP_MUTE, mute);
+					 HDA_AMP_MUTE, 0);
 	}
 }
 
@@ -8797,6 +8811,11 @@
 	alc262_fujitsu_automute(codec, 1);
 }
 
+static void alc262_fujitsu_init_hook(struct hda_codec *codec)
+{
+	alc262_fujitsu_automute(codec, 1);
+}
+
 /* bind volumes of both NID 0x0c and 0x0d */
 static struct hda_bind_ctls alc262_fujitsu_bind_master_vol = {
 	.ops = &snd_hda_bind_vol,
@@ -9570,6 +9590,7 @@
 		.channel_mode = alc262_modes,
 		.input_mux = &alc262_fujitsu_capture_source,
 		.unsol_event = alc262_fujitsu_unsol_event,
+		.init_hook = alc262_fujitsu_init_hook,
 	},
 	[ALC262_HP_BPC] = {
 		.mixers = { alc262_HP_BPC_mixer },

Signed-off-by: Tony Vroon <tony@linx.net>

[-- Attachment #1.2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 197 bytes --]

[-- Attachment #2: Type: text/plain, Size: 160 bytes --]

_______________________________________________
Alsa-devel mailing list
Alsa-devel@alsa-project.org
http://mailman.alsa-project.org/mailman/listinfo/alsa-devel

             reply	other threads:[~2008-05-19  0:01 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-05-19  0:00 Tony Vroon [this message]
2008-05-19 10:23 ` [ALC262_FUJITSU patch_realtek.c] Use jack sense for both headphone outputs Takashi Iwai
2008-05-19 10:31   ` Tony Vroon
2008-05-19 10:37     ` Takashi Iwai
2008-05-19 10:56       ` Takashi Iwai
2008-05-19 11:33         ` Tony Vroon

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1211155219.4974.10.camel@localhost \
    --to=tony@linx.net \
    --cc=alsa-devel@alsa-project.org \
    --cc=tiwai@suse.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.