2015-10-19 下午7:20於 "David Henningsson" david.henningsson@canonical.com寫道:
On 2015-10-19 11:53, Takashi Iwai wrote:
Hi David,
I'm currently checking the bug report regarding PA, and this looks like an issue with "Headphone Mic" jack control.
The reported problem is that PA doesn't react properly when both HP and dock line-out jacks are plugged and line-out is unplugged. The machine in question is Dell E7250, and I see that it has only "Headphone Mic Jack" kctl without "Headphone Jack" kctl. Is this the intentional behavior?
Yes. The "Headphone Mic Jack" indicates that the jack can be used to
indicate either "Headphone" or "Mic". The additional "Headset Mic Phantom Jack" indicates that headset is a third usage for the jack and there is no hardware that can detect which one of them it is. So it looks correct to me.
Also the Dell E7250 is Ubuntu certified, but I don't think docking
stations are part of that certification suite (at least not for Dell E7250).
I skimmed through the opensuse bug as well. Two notes:
- Here's a guide of how to generate a PA log, avoiding the autospawn
problem: https://wiki.ubuntu.com/PulseAudio/Log
- There is a patch series in the pipeline [2] that Tanu has promised to
review, that makes module-switch-on-port-available more aggressive w r t being able to reroute away from unavailable things. I suspect it would help here, but I'm not completely sure.
control.13 { iface MIXER name 'Capture Source' value 'Internal Mic' comment { access 'read write' type ENUMERATED count 1 item.0 'Headphone Mic' item.1 'Dock Mic' item.2 'Headset Mic' item.3 'Internal Mic' } }
Do alc_headset mode still work when there is dock mic ?
https://git.kernel.org/cgit/linux/kernel/git/tiwai/sound.git/commit/sound/pc...
hda_nid_t mux_pin = spec->gen.imux_pins[spec->gen.cur_mux[0]]; hda_nid_t hp_pin = spec->gen.autocfg.hp_pins[0];
int new_headset_mode;
if (!snd_hda_jack_detect(codec, hp_pin)) new_headset_mode = ALC_HEADSET_MODE_UNPLUGGED; else if (mux_pin == spec->headset_mic_pin) new_headset_mode = ALC_HEADSET_MODE_HEADSET; else if (mux_pin == spec->headphone_mic_pin) new_headset_mode = ALC_HEADSET_MODE_MIC; else new_headset_mode = ALC_HEADSET_MODE_HEADPHONE;
https://bugzilla.kernel.org/show_bug.cgi?id=104901
The other examples are Dell Alienware 18 which have mic jack, headphone jack and headset jack :