[alsa-devel] [PATCH] ALSA: hda - Remove ignore_misc_bit

David Henningsson david.henningsson at canonical.com
Mon Sep 17 09:39:01 CEST 2012

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 at 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=416846d2b31fc740ed9d5a5ec116964fb43c4358

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.

David Henningsson, Canonical Ltd.

More information about the Alsa-devel mailing list