Standard Mixers
===============

Registered via hda_register_mixer() and hda_register_mixers().
The latter takes the array of struct hda_std_mixer terminated by a
null item (all zero).

The meaning of value field (or argument for hda_register_mixer) varies
depending on the mixer type.  When it's HDA_MIXER_TYPE_VOLUME or
HDA_MIXER_TYPE_SWITCH, it's a 32bit int value representing the mixer
attribute (NID, channels, etc).
For HDA_MIXER_TYPE_BIND_VOLUME and _SWITCH, it's an array of 32bit int
values terminated by zero.  For HDA_MIXER_TYPE_ENUM and _BOOLEAN, it's
a pointer of struct hda_cmds to execute.  In each case, the pointer is
cast to long.

Input Mux
=========

hda_register_input_mixer() is available as a helper function for
creating an input-mux mixer element.  It takes struct hda_input_mux
containing the items for input-mux.  This can be used only for
choosing an index to select the connection of a single widget.
For more complicated cases, use a generic ENUM mixer.

When hda_fixup_input_mux() is used, it checks the availability of each
i-mux item via the default pin-config bits, and reduces the items if
not marked as available by BIOS.  Then it recreates hda_input_mux
record and returns it.  After using this, the caller should release it
via hda_input_mux_free().


Init Commands
=============

The initialization HDA verbs can be registered via
hda_register_init_verbs().  For extra verbs for resume, use
hda_register_resume_verbs().


Commands
========

The command sequence is represented using struct hda_cmds.
It contains the command type, HDA_CMD_TYPE_*, and the value.
The meaning of value varies as well as for standard mixers, depending
on the type.  For HDA_CMD_TYPE_INT, HDA_CMD_TYPE_SET_CHANNELS and
HDA_CMD_TYPE_CTL_NOTIFY, the value is the integer value.

