On 09/09/2012 09:50 AM, Takashi Iwai wrote:
At Sat, 8 Sep 2012 09:10:14 +0800, Raymond Yau wrote:
2012-9-7 下午1:26 於 "David Henningsson" david.henningsson@canonical.com 寫道:
The purpose of this flag is unclear. If the problem is that some machines have broken misc/NO_PRESENCE bits, they should be fixed by pin fixups.
In addition, this causes jack detection functionality to be flawed on the M31EI, where there are two jacks without jack detection (which is properly marked as NO_PRESENCE), but due to ignore_misc_bit, these jacks are instead being reported as being present but always unplugged.
BugLink:
do you mean the commit does not fix the bug?
ALSA: hda - add support for Uniwill ECS M31EI notebook
This hardware requires same fixup for the node 0x0f like Asus A6Rp. More information: https://bugzilla.redhat.com/show_bug.cgi?id=785417
http://git.kernel.org/?p=linux/kernel/git/tiwai/sound.git;a=commit;h=416846d...
The PCI SSIDs are different, so I don't think that commit will affect the bug I was trying to fix.
the real cases are those desktop which does not use hda front audio panel , they just loss the auto mute since there is no jack detect circuit but they can still hear sound from the headphone at anytime
If there is no HDA front panel connected to the motherboard physically, the codec should report front headphone and mic as unconnected.
If there is an AC'97 front panel connected, the BIOS should set NO_PRESENCE in the misc bit.
If BIOS/HW does not support these simple rules, we need to quirk them.
do pulseaudio need a phantom port for the front panel headphone and mic without jack detection ?
Actually this is one good point. The jack detection isn't always reliably on such old machines, and BIOS cannot know, too.
Can you be a bit more specific about this claim? What machines? How many machines? In what way is it unreliable?
That is, it has to be adjusted by user manually, whether the jack detection is enabled or not.
So far, we solved this by providing "Auto-Mute Mode" mixer switch.
This is not a proper way to "solve" it - "Auto-Mute mode" as the control name says is more closely related to the muting of outputs, than it is to the actual jack detection.
Also, "Auto-Mute mode" is 1) only related to outputs and 2) not available generically but only for specific codecs.
But the jack detection controls don't follow this yet. Maybe we can set such a jack control as inactive state when the jack detection is disabled.
(And this reminds me that we can cut off "Phantom" name hack by following the same rule -- just set the control inactive when it has no real detection. But it still appears in control list.)
Looking at the alsa-lib API, this seems doable. It seems possible to figure out using snd_hctl_elem_info and then snd_ctl_elem_info_is_inactive. If it is also runtime changeable (i e depending on some other mixer control), we need a callback to fire on the hctl.