[alsa-devel] [RFC]Connection list of hda widget

Raymond Yau superquad.vortex2 at gmail.com
Wed Feb 13 04:16:15 CET 2013


> > > > > > >
> > > > > > > ADI codecs  have vendor defined widgets ( BIAS Power-Down and
VREF
> > > > > > > Power-Down) which have connection list
> >
> > >
> > > > Node 0x2f [Vendor Defined Widget] wcaps 0xf00100: Mono
> > > >     Connection: 6
> > > > 0x11* 0x12 0x14 0x15 0x16 0x17
> > > >
> > > > My proposed patch just remove "*" from the connection list since
there
> > is
> > > > no way to know the vendor defined widget support the verb
> > GET_CONNECT_SELECT
> > >
> > > You should have written _this_ text at the first place!
> > > The biggest problem is that your description doesn't match with what
> > > you write in your patch.
> > >
> > > But still, it's still an open question.  In the specification, the use
> > > of selector isn't prohibited for vendor-spec widgets.  So, some crazy
> > > h/w designer may think of it.
> > >
> >
> > Yes, it depend on how you interept "Other"
> >
> > 7.3.3.2 Connection Select Control
> > Applies to:
> > Input Converter
> > Selector Widget
> > Pin Complex
> > Other
>
> Heh, and obviously h/w manufacturers thought vendor-spec widget
> belongs to "Other".

http://git.kernel.org/?p=linux/kernel/git/tiwai/sound.git;a=commit;h=5fdaecdb0d8fd8131d2adb9ca0ae2b77707b36ca

do you have the connection list in node 0x12 of ad1986a ?


If you prefer the patch to blacklist specific widgets similar to power
widget

Refer to Table 13.Connection List of AD1882 dartasheet

23 A2209811 BC30AE24 NID 11 1 18 20 1 22 24 1 2E 30 1 3C
2F 00171514 NID 14 15 17

Refer to Table 13.Connection List of AD1988 dartasheet

23 25249811 2120BD38 Length 8 NID 11 1 18  24  25  38 1 3D  20  21
2F 15141211 00001716 Length 6  NID 11  12  14  15  16  17

Blacklist ADI codec's vendor defined widgets ( BIAS Power-Down and VREF
Power-Down) which have connection list for not sending
AC_VERB_GET_CONNECT_SEL

static void print_conn_list(struct snd_info_buffer *buffer,
    struct hda_codec *codec, hda_nid_t nid,
    unsigned int wid_type, hda_nid_t *conn,
    int conn_len)
{
int c, curr = -1;

if (conn_len > 1 &&
    wid_type != AC_WID_AUD_MIX &&
    wid_type != AC_WID_VOL_KNB &&
+     (wide_type != AC_WID _VENDOR && ((codec->vendor_id >> 16) != 0x11d4))
&&
    wid_type != AC_WID_POWER)
curr = snd_hda_codec_read(codec, nid, 0,
  AC_VERB_GET_CONNECT_SEL, 0);
snd_iprintf(buffer, "  Connection: %d\n", conn_len);


More information about the Alsa-devel mailing list