[alsa-devel] [RFC] hda - is_jack_detectable()

Takashi Iwai tiwai at suse.de
Wed Nov 9 08:08:17 CET 2011


At Wed, 9 Nov 2011 12:06:04 +0800,
Raymond Yau wrote:
> 
> 2011/11/6 Takashi Iwai <tiwai at suse.de>:
> > At Sat, 5 Nov 2011 13:30:21 +0800,
> > Raymond Yau wrote:
> >>
> >> 2011/11/2 Takashi Iwai <tiwai at suse.de>:
> >> > At Tue, 01 Nov 2011 17:03:29 -0400,
> >> > David Henningsson wrote:
> >> >>
> >> >> 2011-10-24 23:31, Raymond Yau skrev:
> >> >> > sorry, it should be
> >> >> >
> >> >> > static inline bool is_jack_detectable(struct hda_codec *codec, hda_nid_t nid)
> >> >> > {
> >> >> >          return (snd_hda_query_pin_caps(codec, nid)&  AC_PINCAP_PRES_DETECT)&&
> >> >> > +           !(get_defcfg_misc(snd_hda_codec_get_pincfg(codec, nid)
> >> >> >                     &  AC_DEFCFG_MISC_NO_PRESENCE))&&
> >> >> >                  (get_wcaps(codec, nid)&  AC_WCAP_UNSOL_CAP);
> >> >> > }
> >> >> >
> >> >> I also think it is a good idea, in fact I thought it was this way
> >> >> already. Can we merge this patch?
> >> >
> >> > OK, I checked through alsa-info series and confirmed that this causes
> >> > no harm, so I merged it now.
> >> >
> >> >
> >> > thanks,
> >> >
> >> > Takashi
> >> >
> >> >
> >>
> >> Sorry the previous patch is wrong
> >
> > Ugh, so actually changing it would may bring too many changes, and
> > most likely regressions, too.  I disabled the code for now for 3.2-rc1.
> > Once when we cover all test cases and fix broken BIOS devices enough,
> > we can re-enable it in near future.
> >
> >> attach the patch and test cases  (pins 0x11 and 0x14) front panel
> >> green and pink jacks when set Front Audio Panel to AC97 or HD in BIOS
> >> setup
> >
> > OK, thanks, we can refer to this for more tests.
> >
> >
> > Takashi
> >
> 
>  If bit 0 is set, it indicates that the jack has no presence detect capability
> 
> 
> The Configuration Default register is defined as shown in Figure 66.
>  31:30         29:24     23:20         19:16         15:12     11:8
> 7:4         3:0
>  Port          Location  Default       Connection    Color     Misc
> Default     Sequence
>  Connectivity            Device        Type                          Association
>                            Figure 66. Configuration Data Structure
> 
> 
> This mean that bit 0 of Misc is bit 8 of the Configuration Default register
> 
> 
>              !(get_defcfg_misc(snd_hda_codec_get_pincfg(codec, nid))
>                      &  AC_DEFCFG_MISC_NO_PRESENCE)&&
> 

Yeah, I already tried it and it still gives too many false-positives.
Many ASUS laptops (also mobo) set this bit to all pins no matter
whether it's an obviously detectable jack or not.  Some Toshiba
laptops do so, too.

That being said, checking this bit alone isn't reliable because of too
many BIOS bugs.  A bit more clever test is necessary.


Takashi


More information about the Alsa-devel mailing list