[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