[alsa-devel] How to create and verify verb tables for coreboot?

Takashi Iwai tiwai at suse.de
Tue Apr 2 12:08:39 CEST 2013

At Thu, 28 Mar 2013 22:56:37 +0100,
Paul Menzel wrote:
> Dear ALSA folks,
> coreboot is a free replacement for the traditional BIOS [1].
> Therefore coreboot is also responsible for providing the correct verb
> table [2]. According to Jens the Verb Table format is not documented and
> is created by for example Realtek [3].
> Could you give some more information about the verb table and how this
> can be created from scratch?
> Our developer Rudolf suggests to take the values from
>     /sys/class/sound/hwC1D0/init_pin_configs
> when running the vendor BIOS [2].

Yes, that would work.  You don't have to initialize the codec fully
just to get the initial pin configs.  Pass probe_only=1 to
snd-hda-intel driver so that it will skip the codec initializations
but just probing the codecs.  The sysfs file should be available even
in this mode.

> How can a correct verb table be verified?

It's difficult to say what's correct in general, because the pin setup
is what's really depending on the hardware.  Also, BIOS doesn't always
give a correct pin config.  There might be the pin config overridden
by *.INI file on Windows.

Also, BIOS may set up more than pin configs.  It may set also some
COEF verbs.

> As for the ASRock E350M1 [4][5], I attach the output of `alsa-info.sh`
> [6] when running coreboot. The one running with the vendor BIOS is
> uploaded to the server [7] due to the size limit of this mailing list.
>         $ wdiff vendorbios coreboot # init_pin_configs
>         0x11 [-0x411111f0-] {+0x411110f0+}
>         0x12 0x411111f0
>         0x14 [-0x01014010-] {+0x01014030+}
>         0x15 [-0x01011012-] {+0x01011031+}
>         0x16 [-0x01016011-] {+0x01016032+}
>         0x17 [-0x411111f0-] {+0x01012033+}
>         0x18 [-0x01a19840-] {+0x01a19850+}
>         0x19 [-0x02a19950-] {+0x02a19c80+}
>         0x1a [-0x0181304f-] {+0x01813051+}
>         0x1b [-0x02214120-] {+0x02214c40+}
>         0x1c [-0x411111f0-] {+0x9933105f+}
>         0x1d [-0x4005e601-] {+0x00000100+}
>         0x1e [-0x01452130-] {+0x01441070+}
>         0x1f [-0x411111f0-] {+0x41c46060+}

The values there can be decoded by hda-decode-pincfg program included
in hda-emu:

In the case above, pins 0x14-16 are changed to have association number
3 instead of 1, and add the pin 0x17 as the side channel jack.


More information about the Alsa-devel mailing list