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:
- Acer Labs M5461
- AMD Hudson-2
- ATI SB450, SB600, SB700, SB800
- Intel 82801FB/GB/H/I/JI (ICH6, ICH7, ICH8, ICH9, ICH10)
- NVIDIA MCP51/MCP55/MCP61/MCP65/MCP67/MCP73/MCP77/MCP79/MCP89
- Silicon Integrated System 966/966L
- 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, ifdac-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
andoutputs.master.mute
. For example, ifdac
is in the list and has an input amplifier gain control, settingoutputs.master
to 200 will setinputs.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
andrecord.volume.mute
. For example, ifadc
is in the list and has an input amplifier gain control, settingrecord.volume
to 200 will setrecord.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 ALSO
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.