At Thu, 21 Feb 2008 10:58:48 +0800, Jiang zhe wrote:
Now the odd thing is that after the last compile of alsa-driver
1.0.16
... stuff works! Both HP jacks, the internal speakers and the mic
work
just fine. I don't really know what to make of it, since all I have
done
is compile like I did earlier and reboot...
Thanks. It's not that odd. As I mentioned, the fix after 1.0.16 might break the dual headphone configuration of Dell laptops.
Need to investigate a bit further...
Hi,
The reason should be the following code of hda_codec.c : /* 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)); } }
For dell machine which has two HP jacks, it will do some special process in stac***_parse_auto_config().Please refer to the code of patch_sigmatel.c, search the "hp_speaker_swap". But the code in the hda_codec.c break the logic. So it failed.
Anders: May you try latest alsa-driver and get rid of the above code from snd_hda_parse_pin_def_config() in hda_codec.c? I think that it will work.
I applied patches that may fix this issue (fixing the wrong association number of NID 0x0f) for MODEL_DELL_BIOS to HG tree. Please try the very latest HG version, take from hg.alsa-project.org. This should (I hope) work without changes...
Takashi