Each codec-hwdep device has a sysfs directory in /sys/class/sound populated with a bunch of files which can be read. Some of these files can be written to, enabling one to over-ride the default. For example on my Lenovo I have /sys/class/sound/hwC0D0 which contains:
32 bit codec vendor id (hex) (read-write)
32 bit subsystem id (hex) (read-write)
32 bit revision id (hex) (read-write)
name of chipset
AFG id (read-only)
MFG id (read-only)
code name string (read-write)
current model option (read-write)
verbs to be execute at initialisation time. Extra verbs can be added by writing to init_verbs as numbers in the form: nid verb parameter
hint strings in format 'key= value', e.g. eapd_switch = yes (for example, this particular hint is picked up by a call to snd_hda_get_bool_hint(codec, "eapd_switch") in the patch_sigmatel.c source)
show the default initial pin configurations as set up by the BIOS at boot time
show the default pin configurations as set by the codec parser. Only pin configurations changed by the parser are shown.
show ping configurations used to override the BIOS set up configurations. One can append new values by writing a nid and value tuple to this file.
triggers codec reconfiguration by writing any value to this file
codec reset, remove mixer elements, clear all init verbs and hints
For example to see the BIOS pin configurations on my Lenovo laptop:
$ cat /sys/class/sound/hwC0D0/init_pin_configs
And to identify my audio hardware, I can use:
$ cat /sys/class/sound/hwC0D0/ \
..showing that my Lenovo has Realtek ALC861-VD and the vendor and subsystem ids.