* 1.0.15rc3 patch_analog.s bug + fix
@ 2007-10-15 2:53 Peter Skensved
2007-10-15 11:29 ` Takashi Iwai
0 siblings, 1 reply; 14+ messages in thread
From: Peter Skensved @ 2007-10-15 2:53 UTC (permalink / raw)
To: alsa-devel
Hi,
I've come across a problem with the 1.0.15rc3 alsa driver on my Lenovo 3000 N100 laptop using
the auto mute feature - it appears to work backwards ! Plugging in the headphones unmutes the
external speakers and unplugging the heaphones mutes them ...
Changing the if statement in line ~600 in patch_analog.c in ad1986a_update_hp to
if (!spec->jack_preset)
makes it work the intended way. ( spec->jack_present changes state _before_ the call to
ad1986a_hp_automute )
peter
----
Peter Skensved Email : peter@SNO.Phy.QueensU.CA
Dept. of Physics,
Queen's University,
Kingston, Ontario,
Canada
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: 1.0.15rc3 patch_analog.s bug + fix
2007-10-15 2:53 1.0.15rc3 patch_analog.s bug + fix Peter Skensved
@ 2007-10-15 11:29 ` Takashi Iwai
2007-10-15 20:34 ` Peter Skensved
0 siblings, 1 reply; 14+ messages in thread
From: Takashi Iwai @ 2007-10-15 11:29 UTC (permalink / raw)
To: Peter Skensved; +Cc: alsa-devel
At Sun, 14 Oct 2007 22:53:03 -0400,
Peter Skensved wrote:
>
> Hi,
> I've come across a problem with the 1.0.15rc3 alsa driver on my Lenovo 3000 N100 laptop using
> the auto mute feature - it appears to work backwards ! Plugging in the headphones unmutes the
> external speakers and unplugging the heaphones mutes them ...
>
> Changing the if statement in line ~600 in patch_analog.c in ad1986a_update_hp to
>
> if (!spec->jack_preset)
>
> makes it work the intended way. ( spec->jack_present changes state _before_ the call to
> ad1986a_hp_automute )
Hmm, the code logic looks correct to me. If HP jack is present, the
internal speaker should be muted. Otherwise it follows the state of
HP jack (muted/unmuted, that acts as a master switch).
Is jack_present set/reset correctly when HP jack is plugged/unplugged
at all? Or, the pin NID is swapped, or any other reason?
Thanks,
Takashi
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: 1.0.15rc3 patch_analog.s bug + fix
2007-10-15 11:29 ` Takashi Iwai
@ 2007-10-15 20:34 ` Peter Skensved
2007-10-16 7:39 ` Vasily Khoruzhick
` (2 more replies)
0 siblings, 3 replies; 14+ messages in thread
From: Peter Skensved @ 2007-10-15 20:34 UTC (permalink / raw)
To: Takashi Iwai; +Cc: alsa-devel
On Mon, Oct 15, 2007 at 01:29:50PM +0200, Takashi Iwai wrote:
> At Sun, 14 Oct 2007 22:53:03 -0400,
> Peter Skensved wrote:
> >
> > Hi,
> > I've come across a problem with the 1.0.15rc3 alsa driver on my Lenovo 3000 N100 laptop using
> > the auto mute feature - it appears to work backwards ! Plugging in the headphones unmutes the
> > external speakers and unplugging the heaphones mutes them ...
> >
> > Changing the if statement in line ~600 in patch_analog.c in ad1986a_update_hp to
> >
> > if (!spec->jack_preset)
> >
> > makes it work the intended way. ( spec->jack_present changes state _before_ the call to
> > ad1986a_hp_automute )
>
> Hmm, the code logic looks correct to me. If HP jack is present, the
> internal speaker should be muted. Otherwise it follows the state of
> HP jack (muted/unmuted, that acts as a master switch).
>
Well - in the default mode the jack is present and the internal speakers are permanently
muted until I plug in a set of headphones no matter how I toggle the speaker mute in the mixer.
With headphones plugged in I can mute and unmute the internal speakers in alsa mixer
Surely the default cannot be that I have to carry a set of headphones with my
laptop all the time ???!!???
> Is jack_present set/reset correctly when HP jack is plugged/unplugged
> at all? Or, the pin NID is swapped, or any other reason?
>
I sprinkled some printk's in the driver :
On entry to ad1986a_update_hp : plugging headphones into jack : spec->jack_present = 0
removing headphones from jack : spec->jack_present = 1
>
> Thanks,
>
> Takashi
> _______________________________________________
> Alsa-devel mailing list
> Alsa-devel@alsa-project.org
> http://mailman.alsa-project.org/mailman/listinfo/alsa-devel
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: 1.0.15rc3 patch_analog.s bug + fix
2007-10-15 20:34 ` Peter Skensved
@ 2007-10-16 7:39 ` Vasily Khoruzhick
2007-10-16 11:25 ` Takashi Iwai
2007-10-16 7:58 ` Vasily Khoruzhick
2007-10-16 11:38 ` Takashi Iwai
2 siblings, 1 reply; 14+ messages in thread
From: Vasily Khoruzhick @ 2007-10-16 7:39 UTC (permalink / raw)
To: alsa-devel
[-- Attachment #1: Type: text/plain, Size: 404 bytes --]
On Monday 15 October 2007 23:34:21 Peter Skensved wrote:
> > Hmm, the code logic looks correct to me. If HP jack is present, the
> > internal speaker should be muted. Otherwise it follows the state of
> > HP jack (muted/unmuted, that acts as a master switch)
Code logic is broken.
Internal speakers muted while jack unplugged and unmuted while it's plugged.
See attached original patch.
[-- Attachment #2: hdaintel-laptop-eapd-updated.patch --]
[-- Type: text/x-diff, Size: 3029 bytes --]
--- alsa-driver-1.0.14-orig/alsa-kernel/pci/hda/patch_analog.c 2007-06-04 02:28:53.000000000 +0000
+++ alsa-driver-1.0.14/alsa-kernel/pci/hda/patch_analog.c 2007-08-29 00:32:52.000000000 +0000
@@ -497,6 +497,7 @@
/*
* mixers
*/
+
static struct snd_kcontrol_new ad1986a_mixers[] = {
{
.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
@@ -628,18 +629,65 @@
struct hda_codec *codec = snd_kcontrol_chip(kcontrol);
long *valp = ucontrol->value.integer.value;
int change;
+ unsigned int present;
+
+ present = snd_hda_codec_read(codec, 0x1a, 0,
+ AC_VERB_GET_PIN_SENSE, 0) & 0x80000000;
+ /* HP (0x1a) */
change = snd_hda_codec_amp_update(codec, 0x1a, 0, HDA_OUTPUT, 0,
0x80, valp[0] ? 0 : 0x80);
change |= snd_hda_codec_amp_update(codec, 0x1a, 1, HDA_OUTPUT, 0,
0x80, valp[1] ? 0 : 0x80);
+
+ /* Line-Out (0x1b) */
snd_hda_codec_amp_update(codec, 0x1b, 0, HDA_OUTPUT, 0,
- 0x80, valp[0] ? 0 : 0x80);
+ 0x80, (valp[0] && present) ? 0 : 0x80);
snd_hda_codec_amp_update(codec, 0x1b, 1, HDA_OUTPUT, 0,
- 0x80, valp[1] ? 0 : 0x80);
+ 0x80, (valp[1] && present) ? 0 : 0x80);
+
return change;
}
+/* mute internal speakers if HP is plugged */
+static void ad1986a_laptop_eapd_automute(struct hda_codec *codec)
+{
+ unsigned int present, sw;
+
+ present = snd_hda_codec_read(codec, 0x1a, 0,
+ AC_VERB_GET_PIN_SENSE, 0) & 0x80000000;
+
+ /*
+ * TODO: get kcontrol value for "Master Playback Switch" and
+ * enable Line-Out only if (present && sw), where sw means "unmute"
+ *
+ * Currently the Line-Out is unmuted when we unplug HP jack, even if we
+ * asked to mute Master Volume.
+ */
+ sw = 1;
+
+ /* Line-Out */
+ snd_hda_codec_amp_update(codec, 0x1b, 0, HDA_OUTPUT, 0,
+ 0x80, (present && sw) ? 0 : 0x80);
+ snd_hda_codec_amp_update(codec, 0x1b, 1, HDA_OUTPUT, 0,
+ 0x80, (present && sw) ? 0 : 0x80);
+}
+
+/* unsolicited event for HP jack sensing */
+static void ad1986a_laptop_eapd_unsol_event(struct hda_codec *codec,
+ unsigned int res)
+{
+ ad1986a_laptop_eapd_automute(codec);
+}
+
+/* initialize jack-sensing, too */
+static int ad1986a_laptop_eapd_init(struct hda_codec *codec)
+{
+ ad198x_init(codec);
+ ad1986a_laptop_eapd_automute(codec);
+ return 0;
+}
+
static struct hda_input_mux ad1986a_laptop_eapd_capture_source = {
.num_items = 3,
.items = {
@@ -749,6 +797,8 @@
{0x22, AC_VERB_SET_PIN_WIDGET_CONTROL, 0x20 },
{0x23, AC_VERB_SET_PIN_WIDGET_CONTROL, 0x20 },
{0x24, AC_VERB_SET_PIN_WIDGET_CONTROL, 0x20 },
+ /* HP pin event */
+ {0x1a, AC_VERB_SET_UNSOLICITED_ENABLE, AC_USRSP_EN},
{ } /* end */
};
@@ -913,6 +963,10 @@
spec->multiout.dac_nids = ad1986a_laptop_dac_nids;
spec->multiout.dig_out_nid = 0;
spec->input_mux = &ad1986a_laptop_eapd_capture_source;
+
+ /* add some ad1986a specific operations */
+ codec->patch_ops.init = ad1986a_laptop_eapd_init;
+ codec->patch_ops.unsol_event = ad1986a_laptop_eapd_unsol_event;
break;
case AD1986A_ULTRA:
spec->mixers[0] = ad1986a_laptop_eapd_mixers;
[-- Attachment #3: Type: text/plain, Size: 160 bytes --]
_______________________________________________
Alsa-devel mailing list
Alsa-devel@alsa-project.org
http://mailman.alsa-project.org/mailman/listinfo/alsa-devel
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: 1.0.15rc3 patch_analog.s bug + fix
2007-10-15 20:34 ` Peter Skensved
2007-10-16 7:39 ` Vasily Khoruzhick
@ 2007-10-16 7:58 ` Vasily Khoruzhick
2007-10-16 11:32 ` Takashi Iwai
2007-10-16 11:38 ` Takashi Iwai
2 siblings, 1 reply; 14+ messages in thread
From: Vasily Khoruzhick @ 2007-10-16 7:58 UTC (permalink / raw)
To: alsa-devel
> > Hmm, the code logic looks correct to me. If HP jack is present, the
> > internal speaker should be muted. Otherwise it follows the state of
> > HP jack (muted/unmuted, that acts as a master switch).
Original patch:
present = snd_hda_codec_read(codec, 0x1a, 0,
AC_VERB_GET_PIN_SENSE, 0) & 0x80000000;
Code in alsa (patch-analog.c line 614):
present = snd_hda_codec_read(codec, 0x1a, 0, AC_VERB_GET_PIN_SENSE, 0);
spec->jack_present = (present & 0x80000000) != 0;
Seems to have quite different logic, don't it?
Should be:
present = snd_hda_codec_read(codec, 0x1a, 0, AC_VERB_GET_PIN_SENSE, 0);
spec->jack_present = (present & 0x80000000) == 0;
P.S. It's very sad that you've released 1.0.15 with that bug :(
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: 1.0.15rc3 patch_analog.s bug + fix
2007-10-16 7:39 ` Vasily Khoruzhick
@ 2007-10-16 11:25 ` Takashi Iwai
2007-10-16 18:30 ` Vasily Khoruzhick
0 siblings, 1 reply; 14+ messages in thread
From: Takashi Iwai @ 2007-10-16 11:25 UTC (permalink / raw)
To: Vasily Khoruzhick; +Cc: alsa-devel
At Tue, 16 Oct 2007 10:39:55 +0300,
Vasily Khoruzhick wrote:
>
> [1 <text/plain; iso-8859-1 (quoted-printable)>]
> On Monday 15 October 2007 23:34:21 Peter Skensved wrote:
> > > Hmm, the code logic looks correct to me. If HP jack is present, the
> > > internal speaker should be muted. Otherwise it follows the state of
> > > HP jack (muted/unmuted, that acts as a master switch)
>
> Code logic is broken.
> Internal speakers muted while jack unplugged and unmuted while it's plugged.
No, it's the wrong logic. The internal speaker should be unmuted when
HP is unplugged, and muted when plugged. You don't want to hear from
both at the same time.
> See attached original patch.
And if that patch works, then it simply means that the HP jack
detection is reversed, not about the code logic.
Takashi
>
>
> [2 hdaintel-laptop-eapd-updated.patch <text/x-diff; iso-8859-1 (7bit)>]
> --- alsa-driver-1.0.14-orig/alsa-kernel/pci/hda/patch_analog.c 2007-06-04 02:28:53.000000000 +0000
> +++ alsa-driver-1.0.14/alsa-kernel/pci/hda/patch_analog.c 2007-08-29 00:32:52.000000000 +0000
> @@ -497,6 +497,7 @@
> /*
> * mixers
> */
> +
> static struct snd_kcontrol_new ad1986a_mixers[] = {
> {
> .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
> @@ -628,18 +629,65 @@
> struct hda_codec *codec = snd_kcontrol_chip(kcontrol);
> long *valp = ucontrol->value.integer.value;
> int change;
> + unsigned int present;
> +
> + present = snd_hda_codec_read(codec, 0x1a, 0,
> + AC_VERB_GET_PIN_SENSE, 0) & 0x80000000;
>
> + /* HP (0x1a) */
> change = snd_hda_codec_amp_update(codec, 0x1a, 0, HDA_OUTPUT, 0,
> 0x80, valp[0] ? 0 : 0x80);
> change |= snd_hda_codec_amp_update(codec, 0x1a, 1, HDA_OUTPUT, 0,
> 0x80, valp[1] ? 0 : 0x80);
> +
> + /* Line-Out (0x1b) */
> snd_hda_codec_amp_update(codec, 0x1b, 0, HDA_OUTPUT, 0,
> - 0x80, valp[0] ? 0 : 0x80);
> + 0x80, (valp[0] && present) ? 0 : 0x80);
> snd_hda_codec_amp_update(codec, 0x1b, 1, HDA_OUTPUT, 0,
> - 0x80, valp[1] ? 0 : 0x80);
> + 0x80, (valp[1] && present) ? 0 : 0x80);
> +
> return change;
> }
>
> +/* mute internal speakers if HP is plugged */
> +static void ad1986a_laptop_eapd_automute(struct hda_codec *codec)
> +{
> + unsigned int present, sw;
> +
> + present = snd_hda_codec_read(codec, 0x1a, 0,
> + AC_VERB_GET_PIN_SENSE, 0) & 0x80000000;
> +
> + /*
> + * TODO: get kcontrol value for "Master Playback Switch" and
> + * enable Line-Out only if (present && sw), where sw means "unmute"
> + *
> + * Currently the Line-Out is unmuted when we unplug HP jack, even if we
> + * asked to mute Master Volume.
> + */
> + sw = 1;
> +
> + /* Line-Out */
> + snd_hda_codec_amp_update(codec, 0x1b, 0, HDA_OUTPUT, 0,
> + 0x80, (present && sw) ? 0 : 0x80);
> + snd_hda_codec_amp_update(codec, 0x1b, 1, HDA_OUTPUT, 0,
> + 0x80, (present && sw) ? 0 : 0x80);
> +}
> +
> +/* unsolicited event for HP jack sensing */
> +static void ad1986a_laptop_eapd_unsol_event(struct hda_codec *codec,
> + unsigned int res)
> +{
> + ad1986a_laptop_eapd_automute(codec);
> +}
> +
> +/* initialize jack-sensing, too */
> +static int ad1986a_laptop_eapd_init(struct hda_codec *codec)
> +{
> + ad198x_init(codec);
> + ad1986a_laptop_eapd_automute(codec);
> + return 0;
> +}
> +
> static struct hda_input_mux ad1986a_laptop_eapd_capture_source = {
> .num_items = 3,
> .items = {
> @@ -749,6 +797,8 @@
> {0x22, AC_VERB_SET_PIN_WIDGET_CONTROL, 0x20 },
> {0x23, AC_VERB_SET_PIN_WIDGET_CONTROL, 0x20 },
> {0x24, AC_VERB_SET_PIN_WIDGET_CONTROL, 0x20 },
> + /* HP pin event */
> + {0x1a, AC_VERB_SET_UNSOLICITED_ENABLE, AC_USRSP_EN},
> { } /* end */
> };
>
> @@ -913,6 +963,10 @@
> spec->multiout.dac_nids = ad1986a_laptop_dac_nids;
> spec->multiout.dig_out_nid = 0;
> spec->input_mux = &ad1986a_laptop_eapd_capture_source;
> +
> + /* add some ad1986a specific operations */
> + codec->patch_ops.init = ad1986a_laptop_eapd_init;
> + codec->patch_ops.unsol_event = ad1986a_laptop_eapd_unsol_event;
> break;
> case AD1986A_ULTRA:
> spec->mixers[0] = ad1986a_laptop_eapd_mixers;
> [3 <text/plain; us-ascii (7bit)>]
> _______________________________________________
> Alsa-devel mailing list
> Alsa-devel@alsa-project.org
> http://mailman.alsa-project.org/mailman/listinfo/alsa-devel
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: 1.0.15rc3 patch_analog.s bug + fix
2007-10-16 7:58 ` Vasily Khoruzhick
@ 2007-10-16 11:32 ` Takashi Iwai
2007-10-16 12:14 ` Ma Begaj
0 siblings, 1 reply; 14+ messages in thread
From: Takashi Iwai @ 2007-10-16 11:32 UTC (permalink / raw)
To: Vasily Khoruzhick; +Cc: alsa-devel
At Tue, 16 Oct 2007 10:58:19 +0300,
Vasily Khoruzhick wrote:
>
> > > Hmm, the code logic looks correct to me. If HP jack is present, the
> > > internal speaker should be muted. Otherwise it follows the state of
> > > HP jack (muted/unmuted, that acts as a master switch).
>
> Original patch:
> present = snd_hda_codec_read(codec, 0x1a, 0,
> AC_VERB_GET_PIN_SENSE, 0) & 0x80000000;
>
> Code in alsa (patch-analog.c line 614):
>
> present = snd_hda_codec_read(codec, 0x1a, 0, AC_VERB_GET_PIN_SENSE, 0);
> spec->jack_present = (present & 0x80000000) != 0;
>
> Seems to have quite different logic, don't it?
I don't see your point. It's the same logic:
If present has bit 0x80000000, spec->jack_present = 1,
Otherwise, spec->jack_present = 0.
The problem is that the jack detection of this codec (or specific to
the laptop) seems inverse from the standard.
> Should be:
>
> present = snd_hda_codec_read(codec, 0x1a, 0, AC_VERB_GET_PIN_SENSE, 0);
> spec->jack_present = (present & 0x80000000) == 0;
>
> P.S. It's very sad that you've released 1.0.15 with that bug :(
Yes, it's sad. Too late recognized. We'll likely have 1.0.15a
release soon later, though.
Takashi
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: 1.0.15rc3 patch_analog.s bug + fix
2007-10-15 20:34 ` Peter Skensved
2007-10-16 7:39 ` Vasily Khoruzhick
2007-10-16 7:58 ` Vasily Khoruzhick
@ 2007-10-16 11:38 ` Takashi Iwai
2007-10-17 14:55 ` Peter Skensved
2 siblings, 1 reply; 14+ messages in thread
From: Takashi Iwai @ 2007-10-16 11:38 UTC (permalink / raw)
To: Peter Skensved; +Cc: alsa-devel
At Mon, 15 Oct 2007 16:34:21 -0400,
Peter Skensved wrote:
>
> On Mon, Oct 15, 2007 at 01:29:50PM +0200, Takashi Iwai wrote:
> > At Sun, 14 Oct 2007 22:53:03 -0400,
> > Peter Skensved wrote:
> > >
> > > Hi,
> > > I've come across a problem with the 1.0.15rc3 alsa driver on my Lenovo 3000 N100 laptop using
> > > the auto mute feature - it appears to work backwards ! Plugging in the headphones unmutes the
> > > external speakers and unplugging the heaphones mutes them ...
> > >
> > > Changing the if statement in line ~600 in patch_analog.c in ad1986a_update_hp to
> > >
> > > if (!spec->jack_preset)
> > >
> > > makes it work the intended way. ( spec->jack_present changes state _before_ the call to
> > > ad1986a_hp_automute )
> >
> > Hmm, the code logic looks correct to me. If HP jack is present, the
> > internal speaker should be muted. Otherwise it follows the state of
> > HP jack (muted/unmuted, that acts as a master switch).
> >
>
> Well - in the default mode the jack is present and the internal speakers are permanently
> muted until I plug in a set of headphones no matter how I toggle the speaker mute in the mixer.
>
> With headphones plugged in I can mute and unmute the internal speakers in alsa mixer
>
>
> Surely the default cannot be that I have to carry a set of headphones with my
> laptop all the time ???!!???
>
>
> > Is jack_present set/reset correctly when HP jack is plugged/unplugged
> > at all? Or, the pin NID is swapped, or any other reason?
> >
>
> I sprinkled some printk's in the driver :
> On entry to ad1986a_update_hp : plugging headphones into jack : spec->jack_present = 0
> removing headphones from jack : spec->jack_present = 1
This implies rather that the jack detection itself is reversed from
the standard. Could you try the patch below?
thanks,
Takashi
diff -r 29661bff769f pci/hda/patch_analog.c
--- a/pci/hda/patch_analog.c Mon Oct 15 10:36:45 2007 +0200
+++ b/pci/hda/patch_analog.c Tue Oct 16 10:38:09 2007 +0200
@@ -612,7 +612,8 @@ static void ad1986a_hp_automute(struct h
unsigned int present;
present = snd_hda_codec_read(codec, 0x1a, 0, AC_VERB_GET_PIN_SENSE, 0);
- spec->jack_present = (present & 0x80000000) != 0;
+ /* Lenovo N100 seems to report the reversed bit for HP jack-sensing */
+ spec->jack_present = !(present & 0x80000000);
ad1986a_update_hp(codec);
}
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: 1.0.15rc3 patch_analog.s bug + fix
2007-10-16 11:32 ` Takashi Iwai
@ 2007-10-16 12:14 ` Ma Begaj
0 siblings, 0 replies; 14+ messages in thread
From: Ma Begaj @ 2007-10-16 12:14 UTC (permalink / raw)
To: alsa-devel
Hi,
sorry for partly OT and interrupting your conversation. is there
somewhere a patch which corrects muting for AD1986A when playing 2ch
sound when 6ch is selected in the alsamixer?
https://bugtrack.alsa-project.org/alsa-bug/view.php?id=3485
Thanks
M.
2007/10/16, Takashi Iwai <tiwai@suse.de>:
> At Tue, 16 Oct 2007 10:58:19 +0300,
> Vasily Khoruzhick wrote:
> >
> > > > Hmm, the code logic looks correct to me. If HP jack is present, the
> > > > internal speaker should be muted. Otherwise it follows the state of
> > > > HP jack (muted/unmuted, that acts as a master switch).
> >
> > Original patch:
> > present = snd_hda_codec_read(codec, 0x1a, 0,
> > AC_VERB_GET_PIN_SENSE, 0) & 0x80000000;
> >
> > Code in alsa (patch-analog.c line 614):
> >
> > present = snd_hda_codec_read(codec, 0x1a, 0, AC_VERB_GET_PIN_SENSE, 0);
> > spec->jack_present = (present & 0x80000000) != 0;
> >
> > Seems to have quite different logic, don't it?
>
> I don't see your point. It's the same logic:
>
> If present has bit 0x80000000, spec->jack_present = 1,
> Otherwise, spec->jack_present = 0.
>
> The problem is that the jack detection of this codec (or specific to
> the laptop) seems inverse from the standard.
>
> > Should be:
> >
> > present = snd_hda_codec_read(codec, 0x1a, 0, AC_VERB_GET_PIN_SENSE, 0);
> > spec->jack_present = (present & 0x80000000) == 0;
> >
> > P.S. It's very sad that you've released 1.0.15 with that bug :(
>
> Yes, it's sad. Too late recognized. We'll likely have 1.0.15a
> release soon later, though.
>
>
> Takashi
> _______________________________________________
> Alsa-devel mailing list
> Alsa-devel@alsa-project.org
> http://mailman.alsa-project.org/mailman/listinfo/alsa-devel
>
--
Glauben heißt nicht wissen wollen, was wahr ist ... Nietzsche
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: 1.0.15rc3 patch_analog.s bug + fix
2007-10-16 11:25 ` Takashi Iwai
@ 2007-10-16 18:30 ` Vasily Khoruzhick
2007-10-17 7:34 ` Takashi Iwai
0 siblings, 1 reply; 14+ messages in thread
From: Vasily Khoruzhick @ 2007-10-16 18:30 UTC (permalink / raw)
To: Takashi Iwai, alsa-devel
> At Tue, 16 Oct 2007 10:39:55 +0300,
>
> Vasily Khoruzhick wrote:
> > [1 <text/plain; iso-8859-1 (quoted-printable)>]
> >
> > On Monday 15 October 2007 23:34:21 Peter Skensved wrote:
> > > > Hmm, the code logic looks correct to me. If HP jack is present, the
> > > > internal speaker should be muted. Otherwise it follows the state of
> > > > HP jack (muted/unmuted, that acts as a master switch)
> >
> > Code logic is broken.
> > Internal speakers muted while jack unplugged and unmuted while it's
> > plugged.
>
> No, it's the wrong logic. The internal speaker should be unmuted when
> HP is unplugged, and muted when plugged. You don't want to hear from
> both at the same time.
>
Sorry, i've made mistake, of course internal speakers should be muted when
jack plugged. Patch that I've attached to previous message has exactly that
logic.
> This implies rather that the jack detection itself is reversed from
> the standard. Could you try the patch below?
Your patch works.
But it seems that there's another bug - i have loud click when i to play
something or change mixer settings after not using audio for ~1min
Thanks.
Regards
Vasily
_______________________________________________
Alsa-devel mailing list
Alsa-devel@alsa-project.org
http://mailman.alsa-project.org/mailman/listinfo/alsa-devel
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: 1.0.15rc3 patch_analog.s bug + fix
2007-10-16 18:30 ` Vasily Khoruzhick
@ 2007-10-17 7:34 ` Takashi Iwai
2007-10-17 16:10 ` Василий
0 siblings, 1 reply; 14+ messages in thread
From: Takashi Iwai @ 2007-10-17 7:34 UTC (permalink / raw)
To: Vasily Khoruzhick; +Cc: alsa-devel
At Tue, 16 Oct 2007 21:30:50 +0300,
Vasily Khoruzhick wrote:
>
> > At Tue, 16 Oct 2007 10:39:55 +0300,
> >
> > Vasily Khoruzhick wrote:
> > > [1 <text/plain; iso-8859-1 (quoted-printable)>]
> > >
> > > On Monday 15 October 2007 23:34:21 Peter Skensved wrote:
> > > > > Hmm, the code logic looks correct to me. If HP jack is present, the
> > > > > internal speaker should be muted. Otherwise it follows the state of
> > > > > HP jack (muted/unmuted, that acts as a master switch)
> > >
> > > Code logic is broken.
> > > Internal speakers muted while jack unplugged and unmuted while it's
> > > plugged.
> >
> > No, it's the wrong logic. The internal speaker should be unmuted when
> > HP is unplugged, and muted when plugged. You don't want to hear from
> > both at the same time.
> >
>
> Sorry, i've made mistake, of course internal speakers should be muted when
> jack plugged. Patch that I've attached to previous message has exactly that
> logic.
Well, the point is that the logic in your patch was a bit confusing.
"present" should have been renamed as "not_present" or so...
> > This implies rather that the jack detection itself is reversed from
> > the standard. Could you try the patch below?
>
> Your patch works.
Thanks for confirmation. Now applied to HG tree.
> But it seems that there's another bug - i have loud click when i to play
> something or change mixer settings after not using audio for ~1min
I guess it's likely the auto power-saving feature.
Could you set the module option power_save=0 for snd-hda-intel?
thanks,
Takashi
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: 1.0.15rc3 patch_analog.s bug + fix
2007-10-16 11:38 ` Takashi Iwai
@ 2007-10-17 14:55 ` Peter Skensved
0 siblings, 0 replies; 14+ messages in thread
From: Peter Skensved @ 2007-10-17 14:55 UTC (permalink / raw)
To: Takashi Iwai; +Cc: alsa-devel
On Tue, Oct 16, 2007 at 01:38:34PM +0200, Takashi Iwai wrote:
> At Mon, 15 Oct 2007 16:34:21 -0400,
> Peter Skensved wrote:
> >
> > On Mon, Oct 15, 2007 at 01:29:50PM +0200, Takashi Iwai wrote:
> > > At Sun, 14 Oct 2007 22:53:03 -0400,
> > > Peter Skensved wrote:
> > > >
> > > > Hi,
> > > > I've come across a problem with the 1.0.15rc3 alsa driver on my Lenovo 3000 N100 laptop using
> > > > the auto mute feature - it appears to work backwards ! Plugging in the headphones unmutes the
> > > > external speakers and unplugging the heaphones mutes them ...
> > > >
> > > > Changing the if statement in line ~600 in patch_analog.c in ad1986a_update_hp to
> > > >
> > > > if (!spec->jack_preset)
> > > >
> > > > makes it work the intended way. ( spec->jack_present changes state _before_ the call to
> > > > ad1986a_hp_automute )
> > >
> > > Hmm, the code logic looks correct to me. If HP jack is present, the
> > > internal speaker should be muted. Otherwise it follows the state of
> > > HP jack (muted/unmuted, that acts as a master switch).
> > >
> >
> > Well - in the default mode the jack is present and the internal speakers are permanently
> > muted until I plug in a set of headphones no matter how I toggle the speaker mute in the mixer.
> >
> > With headphones plugged in I can mute and unmute the internal speakers in alsa mixer
> >
> >
> > Surely the default cannot be that I have to carry a set of headphones with my
> > laptop all the time ???!!???
> >
> >
> > > Is jack_present set/reset correctly when HP jack is plugged/unplugged
> > > at all? Or, the pin NID is swapped, or any other reason?
> > >
> >
> > I sprinkled some printk's in the driver :
> > On entry to ad1986a_update_hp : plugging headphones into jack : spec->jack_present = 0
> > removing headphones from jack : spec->jack_present = 1
>
> This implies rather that the jack detection itself is reversed from
> the standard. Could you try the patch below?
>
>
> thanks,
>
> Takashi
>
It works -
peter
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: 1.0.15rc3 patch_analog.s bug + fix
2007-10-17 16:10 ` Василий
@ 2007-10-17 15:43 ` Takashi Iwai
0 siblings, 0 replies; 14+ messages in thread
From: Takashi Iwai @ 2007-10-17 15:43 UTC (permalink / raw)
To: Василий; +Cc: alsa-devel
At Wed, 17 Oct 2007 19:10:45 +0300,
=?KOI8-R?B?98HTyczJyg==?= wrote:
>
> 2007/10/17, Takashi Iwai <tiwai@suse.de>:
>
> At Tue, 16 Oct 2007 21:30:50 +0300,
>
> >> But it seems that there's another bug - i have loud click when i try to
> play
> >> something or change mixer settings after not using audio for ~1min
>
> > I guess it's likely the auto power-saving feature.
> > Could you set the module option power_save=0 for snd-hda-intel?
>
> Thanks, it works. But why such feature is enabled by default?
> AFAIK such loud clicks are harmful for speakers or headphones.
Technically, the option is enabled as default just because of the
configure script. In the kernel configuration, you can choose freely
as you like. (And this feature will save lots of battery time.)
But, the default power_save value is 0 in the recent version, so
passing power_save=0 shouldn't give any difference unless you set
other values in somewhere else.
Takashi
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: 1.0.15rc3 patch_analog.s bug + fix
2007-10-17 7:34 ` Takashi Iwai
@ 2007-10-17 16:10 ` Василий
2007-10-17 15:43 ` Takashi Iwai
0 siblings, 1 reply; 14+ messages in thread
From: Василий @ 2007-10-17 16:10 UTC (permalink / raw)
To: Takashi Iwai; +Cc: alsa-devel
2007/10/17, Takashi Iwai <tiwai@suse.de>:
>
> At Tue, 16 Oct 2007 21:30:50 +0300,
>
> >> But it seems that there's another bug - i have loud click when i try to
> play
> >> something or change mixer settings after not using audio for ~1min
>
> > I guess it's likely the auto power-saving feature.
> > Could you set the module option power_save=0 for snd-hda-intel?
>
> Thanks, it works. But why such feature is enabled by default?
AFAIK such loud clicks are harmful for speakers or headphones.
Regards
Vasily
^ permalink raw reply [flat|nested] 14+ messages in thread
end of thread, other threads:[~2007-10-17 16:25 UTC | newest]
Thread overview: 14+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-10-15 2:53 1.0.15rc3 patch_analog.s bug + fix Peter Skensved
2007-10-15 11:29 ` Takashi Iwai
2007-10-15 20:34 ` Peter Skensved
2007-10-16 7:39 ` Vasily Khoruzhick
2007-10-16 11:25 ` Takashi Iwai
2007-10-16 18:30 ` Vasily Khoruzhick
2007-10-17 7:34 ` Takashi Iwai
2007-10-17 16:10 ` Василий
2007-10-17 15:43 ` Takashi Iwai
2007-10-16 7:58 ` Vasily Khoruzhick
2007-10-16 11:32 ` Takashi Iwai
2007-10-16 12:14 ` Ma Begaj
2007-10-16 11:38 ` Takashi Iwai
2007-10-17 14:55 ` Peter Skensved
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.