At Tue, 12 Feb 2008 12:02:16 +0100, I wrote:
At Tue, 12 Feb 2008 11:50:36 +0100, Matej Laitl wrote:
Takashi Iwai wrote:
Matej Laitl wrote:
after upgrading from 2.6.24 to 2.6.25-rc1, I lost headphone-out sound output of my Intel HDA card - it is quiet no matter what the mixer settings are.
(...)
The box is Fujitsu-Siemens Esprimo Mobile M9400 laptop.
Could you give the output of alsa-info.sh for both working and non-working kernels?
The locations of alsa-info.sh outputs: no sound in headphones: http://pastebin.ca/901022 sound ok: http://pastebin.ca/901016
Both kernels are Linus' tree snapshots as of commit cc13e442952a347f7, the one with working sound has just the f889fa91ad47e commit reverted.
Thanks. It seems that your device has two headphone jacks according to the BIOS setup, and this seems to be the problem.
Could you show the kernel messages like "autoconfig: line_outs..." for both cases? This appears when build with CONFIG_SND_DEBUG=y.
And the patch below may fix your problem. Give it a try.
Takashi
---
diff -r e84ee72676f0 sound/pci/hda/hda_codec.c --- a/sound/pci/hda/hda_codec.c Tue Feb 12 12:11:36 2008 +0100 +++ b/sound/pci/hda/hda_codec.c Tue Feb 12 12:31:37 2008 +0100 @@ -2821,6 +2821,30 @@ int snd_hda_parse_pin_def_config(struct } }
+ /* FIX-UP: + * If no line-out is defined but multiple HPs are found, + * some of them might be the real line-outs. + */ + if (!cfg->line_outs && cfg->hp_outs > 1) { + int i = 0; + while (i < cfg->hp_outs) { + /* The real HPs should have the sequence 0x0f */ + if ((sequences_hp[i] & 0x0f) == 0x0f) { + i++; + continue; + } + /* Move it to the line-out table */ + cfg->line_out_pins[cfg->line_outs] = cfg->hp_pins[i]; + sequences_line_out[cfg->line_outs] = sequences_hp[i]; + cfg->line_outs++; + cfg->hp_outs--; + memmove(cfg->hp_pins + i, cfg->hp_pins + i + 1, + sizeof(cfg->hp_pins[0]) * (cfg->hp_outs - i)); + memmove(sequences_hp + i - 1, sequences_hp + i, + sizeof(sequences_hp[0]) * (cfg->hp_outs - i)); + } + } + /* sort by sequence */ sort_pins_by_sequence(cfg->line_out_pins, sequences_line_out, cfg->line_outs);