AZALIA(4) | Device Drivers Manual | AZALIA(4) |
azalia
— generic
High Definition Audio device
azalia* at pci?
audio* at azalia?
The azalia
device driver is expected to
support any PCI device which is compliant with the High Definition Audio
Specification 1.0.
Supported controllers include:
The High Definition Audio (HDA) specification describes a flexible and extensible infrastructure to support high quality audio. HDA supports sample rates up to 192 kHz, bit rates of up to 32 bits per sample, and up to 16 channels in audio streams. It also supports S/PDIF input/output as well as jack retasking and sensing. The HDA specification defines a controller register set and a codec architecture.
The codec is the main audio processor. Configuration of the device, such as selecting playback sample rate or decreasing the volume, is handled by the codec. Codecs are comprised of interconnected widgets. Common examples of widgets include DACs (digital to analog converter), ADCs (analog to digital converter), selectors, mixers, and pin complexes (input/output jacks). Widgets may have fixed or controllable properties. Some of these properties include source selection, amplifier gain, mute, and operational direction.
The mixer interface for azalia
is designed
to allow the user to control most properties of the widgets. When
azalia
first attaches and configures the device, it
will set all widgets to unmuted, moderate volume, and configure connections
such that stereo playback and recording will work with the expected
input/output pins.
There are a wide range of HDA codecs. Some have only a few widgets
that don't have many controllable properties, and some may have many, very
controllable widgets. The mixer interface on one
azalia
may be very different than the mixer
interface on another.
Mixer item names describe the widget and property being controlled. Names take the following form:
<mixer class>.<widget type>[<widget type enumerator>][_<property>]
The mixer class gives a hint as to the purpose of the control. The widget type enumerator is used to distinguish different widgets of the same type. The enumeration starts at 2: the first widget of each type is not enumerated. The enumeration order is meaningless. The property is optional. Generally, if there is no property, the mixer item is an amplifier gain control.
The following are the widget type names used in mixer control names:
dac
dac-0:1
converts channels 0 and 1 (stereo).
However, a dac that is connected to built-in speakers or front panel
headphone jacks by default will convert audio stream channels starting at
0 if the dac would otherwise not be converting any channels. For example,
if dac-2:3
is the default dac for the built-in
speakers in a laptop, dac-2:3
will convert
channels 0 and 1 when a stereo audio stream is being played. This is to
allow simultaneous stereo playback on both the built-in speakers and a
line or headphone jack.dig-dac
dig-dac-0:1
converts channels 0 and 1
(stereo).adc
adc-0:1
converts channels 0 and 1 (stereo).dig-adc
dig-adc-0:1
converts channels 0 and 1
(stereo).mix
sel
pow
volume
beep
line
spkr
hp
cd
SPDIF
line-in
aux
mic
SPDIF-in
beep
The following are the property names used in mixer control names:
mute
source
dir
boost
eapd
sense
There are also some special mixer controls that don't directly correspond to properties of the widgets, but control aspects of the driver or other mixer controls. The following describes these special controls:
outputs.spkr_muters
outputs.master.slaves
outputs.master
and
outputs.master.mute
. For example, if
dac
is in the list and has an input amplifier gain
control, setting outputs.master
to 200 will set
inputs.dac
to 200.outputs.master
outputs.master.slaves
.outputs.master.mute
outputs.master.slaves
.record.volume.slaves
record.volume
and
record.volume.mute
. For example, if
adc
is in the list and has an input amplifier gain
control, setting record.volume
to 200 will set
record.adc
to 200.record.volume
record.volume.slaves
.record.volume.mute
record.volume.slaves
.outputs.mode
record.mode
The azalia
device driver first appeared in
NetBSD 3.0. OpenBSD support
first appeared in OpenBSD 4.0.
This driver does not support codecs that are intended for HDMI or DisplayPort connectivity.
March 15, 2012 | OpenBSD-6.9 |