Re: [alsa-devel] [Fwd: Re: [Regression] With the new 2.6.33 when I plug headphones, the speaker doen't get off anymore]
At Mon, 01 Mar 2010 14:46:10 +0100, Guillaume De Nayer wrote:
Takashi Iwai a écrit :
At Sun, 28 Feb 2010 15:29:25 +0100, giggz wrote:
giggz a écrit :
giggzounet a écrit :
Hi,
I have installed debian stable lenny + backports on an eeepc 1201n. With the 2.6.30 or 2.6.32 from lenny-backport I don't have problem with sound : when I plug the headphones, speakers get off.
I have tested with 2.6.33 and when I plug headphones, speakers don't get off anymore. so I have sound in headphones and speakers.
22:42 giggz@baal ~ % cat /proc/asound/card0/codec#* | grep Codec Codec: Realtek ALC269 Codec: Nvidia MCP7A HDMI
I attach the output of alsa-info with the 2.6.32.9 and the 2.6.33 (I'm in a Uni Campus and it's quite difficult to have internet on a external laptop...so I attach them at this mail and I don't upload them on pastbin).
I have opened a bug on the kernel bugzilla (bug 15399). Should I provide anything more ?
Following the advice of Paul Menzel I did a "diff" of the sources of the 2.6.32.9 kernel and of the 2.6.33. In patch_realtek.c, we see that there is an new snd_hda_jack_detect funtion with 2 arguments. I have noticed that the second argument is "normaly" the second argument of snd_hda_codec_read. In the alc269_speaker_automute function there is this new snd_hda_jack_detect function, but the second argument is "nid". But in the old alc269_speaker_automute of the 2.6.32.9 the second argument of snd_hda_codec_read is 0x15. So I think there is perhaps a bug here...But I hesitate to modify the source...so I'm waiting the anwser of the dev.
--- patch_realtek.c 2010-02-27 14:58:06.000000000 +0100 +++ patch_realtek_modif.c 2010-02-27 14:58:54.000000000 +0100 @@ -13381,7 +13381,7 @@ unsigned int present; unsigned char bits;
- present = snd_hda_jack_detect(codec, nid);
- present = snd_hda_jack_detect(codec, 0x15); bits = present ? AMP_IN_MUTE(0) : 0; snd_hda_codec_amp_stereo(codec, 0x0c, HDA_INPUT, 0, AMP_IN_MUTE(0), bits);
I tested it. And with this modif in the kernel, after recompilation and reboot, my problem is headphones and speaker is gone.
It implies that the setup of the headphone pin is wrong. This doesn't mean a bug of the driver, though. It might have uncovered the BIOS bug.
ok. I don't have any knowledge in C or in bios...so you're problably right :)
but it seems strange that for all the new line with snd_hda_jack_detect the second argument is always the second argument of snd_hda_codec_read except for the alc269.
Could you provide alsa-info.sh without your patch to check the setup?
In attachment of the first post on alsa-devel or on the kernel bugzilla http://bugzilla.kernel.org/show_bug.cgi?id=15399, there are the output of alsa-info.sh with the 2.6.32.9 (no problem) and the output of alsa-info.sh with the 2.6.33 without any patch (problem occurs).
OK, thanks. This looks actually like a bug :)
But, the easiest (and probably better) fix is to use model=auto for your device. Just pass model=auto option. I guess everything should work with that.
Takashi
Takashi Iwai a écrit :
At Mon, 01 Mar 2010 14:46:10 +0100, Guillaume De Nayer wrote:
Takashi Iwai a écrit :
At Sun, 28 Feb 2010 15:29:25 +0100, giggz wrote:
giggz a écrit :
giggzounet a écrit :
Hi,
I have installed debian stable lenny + backports on an eeepc 1201n. With the 2.6.30 or 2.6.32 from lenny-backport I don't have problem with sound : when I plug the headphones, speakers get off.
I have tested with 2.6.33 and when I plug headphones, speakers don't get off anymore. so I have sound in headphones and speakers.
22:42 giggz@baal ~ % cat /proc/asound/card0/codec#* | grep Codec Codec: Realtek ALC269 Codec: Nvidia MCP7A HDMI
I attach the output of alsa-info with the 2.6.32.9 and the 2.6.33 (I'm in a Uni Campus and it's quite difficult to have internet on a external laptop...so I attach them at this mail and I don't upload them on pastbin).
I have opened a bug on the kernel bugzilla (bug 15399). Should I provide anything more ?
Following the advice of Paul Menzel I did a "diff" of the sources of the 2.6.32.9 kernel and of the 2.6.33. In patch_realtek.c, we see that there is an new snd_hda_jack_detect funtion with 2 arguments. I have noticed that the second argument is "normaly" the second argument of snd_hda_codec_read. In the alc269_speaker_automute function there is this new snd_hda_jack_detect function, but the second argument is "nid". But in the old alc269_speaker_automute of the 2.6.32.9 the second argument of snd_hda_codec_read is 0x15. So I think there is perhaps a bug here...But I hesitate to modify the source...so I'm waiting the anwser of the dev.
--- patch_realtek.c 2010-02-27 14:58:06.000000000 +0100 +++ patch_realtek_modif.c 2010-02-27 14:58:54.000000000 +0100 @@ -13381,7 +13381,7 @@ unsigned int present; unsigned char bits;
- present = snd_hda_jack_detect(codec, nid);
- present = snd_hda_jack_detect(codec, 0x15); bits = present ? AMP_IN_MUTE(0) : 0; snd_hda_codec_amp_stereo(codec, 0x0c, HDA_INPUT, 0, AMP_IN_MUTE(0), bits);
I tested it. And with this modif in the kernel, after recompilation and reboot, my problem is headphones and speaker is gone.
It implies that the setup of the headphone pin is wrong. This doesn't mean a bug of the driver, though. It might have uncovered the BIOS bug.
ok. I don't have any knowledge in C or in bios...so you're problably right :)
but it seems strange that for all the new line with snd_hda_jack_detect the second argument is always the second argument of snd_hda_codec_read except for the alc269.
Could you provide alsa-info.sh without your patch to check the setup?
In attachment of the first post on alsa-devel or on the kernel bugzilla http://bugzilla.kernel.org/show_bug.cgi?id=15399, there are the output of alsa-info.sh with the 2.6.32.9 (no problem) and the output of alsa-info.sh with the 2.6.33 without any patch (problem occurs).
OK, thanks. This looks actually like a bug :)
a bug in the driver or a bug in the bios ?
I have taken a look under the gitweb : in the commit of the introduction of snd_hda_jack_detect() http://git.kernel.org/?p=linux/kernel/git/next/linux-next.git;a=commit;h=864... I see : @@ -13183,8 +13098,7 @@ static void alc269_speaker_automute(struct hda_codec *codec) unsigned int present; unsigned char bits;
- present = snd_hda_codec_read(codec, 0x15, 0, - AC_VERB_GET_PIN_SENSE, 0) & 0x80000000; + present = snd_hda_jack_detect(codec, 0x15); bits = present ? AMP_IN_MUTE(0) : 0; snd_hda_codec_amp_stereo(codec, 0x0c, HDA_INPUT, 0, AMP_IN_MUTE(0), bits);
But in the commit : http://git.kernel.org/?p=linux/kernel/git/next/linux-next.git;a=commitdiff;h... the 0x15 is replaced with nid.
Cheers, GiGGz
participants (2)
-
giggzounet
-
Takashi Iwai