[alsa-devel] 1.0.15rc3 patch_analog.s bug + fix

Takashi Iwai tiwai at suse.de
Tue Oct 16 13:32:23 CEST 2007


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


More information about the Alsa-devel mailing list