the original ad-audiomp branch notes:
Add MP locking to the audio drivers.
Making the audio drivers MP safe is necessary before efforts
can be made to make the VM system MP safe.
The are two locks per device instance, an ISR lock and
a character device lock. The ISR lock replaces calls to
splaudio()/splx(), and will be held across calls to device
methods which were called at splaudio() before (e.g.
trigger_output). The character device lock is held across
calls to nearly all of the methods, excluding some only
used for initialization, e.g. get_locks.
Welcome to 5.99.57.
o Don't add unconnected pins to generated mixer list, should help
make auto-generated mixer lists slightly easier to work with.
o Move COP_AWTYPE_AUDIO_MIXER type knobs to mix.* rather than polluting
the inputs.* namespace and giving a few more characters for the
auto-generated names.
o Introduce an alternate to generic_mixer_init, generic_mixer_autoinit.
generic_mixer_autoinit uses COP_AWTYPE_PIN_COMPLEX "default
configuration" capability flags to determine proper pin widget control
and eapd configuration, as well as creating virtual outputs.master,
inputs.dac, and record.volume mixer controls that mirror the default
dac and adc controls.
o Introduce generic_mixer_init_widget which uses COP_AWTYPE_PIN_COMPLEX
"default configuration" device type, gross location, and geometric
locations to guess friendlier mixer control names.
o On ALC662-GR, the primary ADC NID is 0x09, not 0x08, so correct the
convgroupset in alc662_init_dacgroup.
Audio capture now works on ALC662-GR (as found in the ASUS EeePC 701).
Note that only ALC662-GR uses generic_mixer_autoinit and
generic_mixer_init_widget; other codecs will need to be tested and
converted to address PR#38578: azalia_codec.o is too large.
* enable S/PDIF for a digital audio converter when connecting
a stream
* rename "inputs.usingdac" to "playback.mode", and
"record.usingadc" to "record.mode"
* add S/PDIF output configuration to ALC882
rename them like azalia_mixer_foo() to generic_mixer_foo()
* enable codec-specific code to hook any mixer operations such
as creating mixer items, or special handling for a specific
item.
* provide a custom mixer table specific to ALC260
* provide a custom mixer table specific to Fujitsu LOOX