AZALIA(4) OpenBSD Programmer's Manual AZALIA(4)NAME
azalia - generic High Definition Audio device
SYNOPSIS
azalia* at pci?
audio* at azalia?
DESCRIPTION
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:
o Acer Labs M5461
o ATI SB450, SB600, SB700, SB800
o Intel 82801FB/GB/H/I/JI (ICH6, ICH7, ICH8, ICH9, ICH10)
o NVIDIA MCP51/MCP55/MCP61/MCP65/MCP67/MCP73/MCP77/MCP79/MCP89
o Silicon Integrated System 966/966L
o VIA Technologies VT8237A, VT8251
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.
MIXER INTERFACE
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 Digital to analog converter, usually used for playback. The
audio stream channels these widgets will convert are encoded
into their name in the form of <start channel>:<end channel>.
For example, 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 Digital output converter, usually an S/PDIF transmitter. The
audio stream channels these widgets will convert are encoded
into their name in the form of <start channel>:<end channel>.
For example, dig-dac-0:1 converts channels 0 and 1 (stereo).
adc Analog to digital converter, usually used for recording. The
audio stream channels these widgets will convert are encoded
into their name in the form of <start channel>:<end channel>.
For example, adc-0:1 converts channels 0 and 1 (stereo).
dig-adc Digital input converter, usually an S/PDIF receiver. The audio
stream channels these widgets will convert are encoded into
their name in the form of <start channel>:<end channel>. For
example, dig-adc-0:1 converts channels 0 and 1 (stereo).
mix Sums multiple audio sources into a single stream, but sometimes
only used for amplifier or mute properties. The property part
of a mix widget mixer control name may be the name of another
widget. Such a mixer item controls the input level from the
widget in the property part of the name.
sel Selects a single audio source, but sometimes used only for
amplifier or mute properties.
pow Controls power state for a group of widgets.
volume Interprets data from external controls, such as a volume knob.
beep Creates a tone at a certain frequency.
line Pin complex for a line-level jack that is normally used for
analog audio output. The name may also be appended with a
color abbreviation such as -grn (green), -blk (black), -org
(orange), or -gry (grey), to help differentiate jacks.
spkr Pin complex for a speaker, often built into the machine.
hp Pin complex for a jack that is normally used for output to a
headphone.
cd Pin complex for analog audio input from a CD device.
SPDIF Pin complex for an S/PDIF output connector.
line-in Pin complex for a line-level jack that is normally used for
analog audio input.
aux Pin complex for an auxiliary analog audio input.
mic Pin complex for analog audio input from a microphone, either a
jack or built into the machine.
SPDIF-in Pin complex for an S/PDIF input connector.
beep Pin complex for analog audio input from a beep generator.
The following are the property names used in mixer control names:
mute Mutes input or output audio stream.
source Selects input source. Can either select a single source or
multiple sources. Sometimes these controls may only have a
single choice, but they are provided to show how audio streams
move through the codec.
dir Selects pin direction and input VRef signal. VRef is represented
in percent of the analog voltage rail. For example, 'input-vr80'
means input direction with 80% VRef.
boost Enables/disables low impedance amplifier, usually for use with
headphones.
eapd Powers on/off external amplifier circuitry.
sense Reports current jack sense state.
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 List of pins that can mute a built-in speaker. A
pin mutes the speaker by sending a signal when it
senses that something has been plugged into its
jack. If a pin supports both input and output
operation, the pin will only mute the speaker when
plugged into if that pin is configured for output.
outputs.master.slaves List of widgets with amplifier gain or mute
controls that are configured with the parameters
used for 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 Amplifier gain control for widgets listed in
outputs.master.slaves.
outputs.master.mute Mute control for widgets listed in
outputs.master.slaves.
record.volume.slaves List of widgets with amplifier gain or mute
controls that are configured with the parameters
used for 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 Amplifier gain control for widgets listed in
record.volume.slaves.
record.volume.mute Mute control for widgets listed in
record.volume.slaves.
outputs.mode Controls whether the digital or analog converters
and pins will be used for playback.
record.mode Controls whether the digital or analog converters
and pins will be used for recording.
SEE ALSOaudio(4), pci(4)HISTORY
The azalia device driver first appeared in NetBSD 3.0. OpenBSD support
first appeared in OpenBSD 4.0.
BUGS
This driver does not support codecs that are intended for HDMI or
DisplayPort connectivity.
OpenBSD 4.9 September 4, 2010 OpenBSD 4.9