[alsa-devel] snd jack report and unsolicited event ad1988

Raymond Yau superquad.vortex2 at gmail.com
Mon May 9 05:56:11 CEST 2011


2011/5/5 Takashi Iwai <tiwai at suse.de>

>> This mean that the driver need to define FRONT_MIC_EVENT, REAR_MIC_EVENT,
>> LINE_IN_EVENT in addition to HP_EVENT

>Does it mean that the codec can't accept the same id tag for multiple
>pins?

No, the event can be received by the event handler but there is no way to
know the event is related to which jack

>> Can  snd_jack_report used to report the mic event of two pink jacks
(front
>> panel and rear panel) of the desktop to the user space program?

> I assumed so, but someone needs to confirm.
> Assigning different tags is easy and safe, so even if it worked, we
> can go forward for individual tags.

So  the point is whether the user space program need to know

1) the event is related to the plug in or out of the front mic jack / rear
mic jack
2) whether earphone or speaker is plugged into correct/wrong jacks by
measured impedance .


 So, adding some delay like below makes it working?
>

       if (!codec->no_trigger_sense) {
>                pincap = snd_hda_query_pin_caps(codec, nid);
> -               if (pincap & AC_PINCAP_TRIG_REQ) /* need trigger? */
> +               if (pincap & AC_PINCAP_TRIG_REQ) { /* need trigger? */
>                        snd_hda_codec_read(codec, nid, 0,
>                                        AC_VERB_SET_PIN_SENSE, 0);
> +                       if (codec->trigger_delay > 0)
> +                               mdelay(codec->trigger_delay);
> +               }
>        }
>        return snd_hda_codec_read(codec, nid, 0,
>                                  AC_VERB_GET_PIN_SENSE, 0);
>

Noise appear  when delay is add at here

Have to wait until someone find a safe way to get the impedance without any
side effect


       spec->vmaster_nid = 0x04;
>
> -       codec->no_trigger_sense = 1;
> +       /* codec->no_trigger_sense = 1; */
> +       codec->trigger_delay = 5;
>        codec->no_sticky_stream = 1;
>
>        return 0;
>


So no need to change if the objective of snd_hda_jack_detect() is to get
presence detect bit

As mentioned in 729d55ba972348234759f8e40abf8d
e020f0d505

use tigger at pin-sensing seem generate a lot of responses

Is there any way to stop the measurement ?


More information about the Alsa-devel mailing list