1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
|
.\" $OpenBSD: azalia.4,v 1.27 2012/03/15 14:22:59 sthen Exp $
.\" $NetBSD: azalia.4,v 1.2 2005/06/22 04:19:09 kent Exp $
.\"
.\" Copyright (c) 2005 The NetBSD Foundation, Inc.
.\" All rights reserved.
.\"
.\" This code is derived from software contributed to The NetBSD Foundation
.\" by TAMURA Kent
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
.\" are met:
.\" 1. Redistributions of source code must retain the above copyright
.\" notice, this list of conditions and the following disclaimer.
.\" 2. Redistributions in binary form must reproduce the above copyright
.\" notice, this list of conditions and the following disclaimer in the
.\" documentation and/or other materials provided with the distribution.
.\"
.\" THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
.\" ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
.\" TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
.\" PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
.\" BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
.\" CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
.\" SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
.\" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
.\" CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
.\" POSSIBILITY OF SUCH DAMAGE.
.\"
.Dd $Mdocdate: March 15 2012 $
.Dt AZALIA 4
.Os
.Sh NAME
.Nm azalia
.Nd generic High Definition Audio device
.Sh SYNOPSIS
.Cd "azalia* at pci?"
.Cd "audio* at azalia?"
.Sh DESCRIPTION
The
.Nm
device driver is expected to support any PCI device which is
compliant with the High Definition Audio Specification 1.0.
.Pp
Supported controllers include:
.Pp
.Bl -bullet -compact -offset indent
.It
Acer Labs M5461
.It
AMD Hudson-2
.It
ATI SB450, SB600, SB700, SB800
.It
Intel 82801FB/GB/H/I/JI (ICH6, ICH7, ICH8, ICH9, ICH10)
.It
NVIDIA MCP51/MCP55/MCP61/MCP65/MCP67/MCP73/MCP77/MCP79/MCP89
.It
Silicon Integrated System 966/966L
.It
VIA Technologies VT8237A, VT8251
.El
.Pp
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.
.Sh 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.
.Pp
The mixer interface for
.Nm
is designed to allow the user to control most properties of the widgets.
When
.Nm
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.
.Pp
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
.Nm
may be very different than the mixer interface on another.
.Pp
Mixer item names describe the widget and property being controlled.
Names take the following form:
.Bd -literal
<mixer class>.<widget type>[<widget type enumerator>][_<property>]
.Ed
.Pp
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.
.Pp
The following are the widget type names used in mixer control names:
.Bl -tag -width "SPDIF-in"
.It Cm 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,
.Cm 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
.Cm dac-2:3
is the default dac for the built-in speakers in a laptop,
.Cm 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.
.It Cm 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,
.Cm dig-dac-0:1
converts channels 0 and 1 (stereo).
.It Cm 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,
.Cm adc-0:1
converts channels 0 and 1 (stereo).
.It Cm 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,
.Cm dig-adc-0:1
converts channels 0 and 1 (stereo).
.It Cm 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.
.It Cm sel
Selects a single audio source, but sometimes used only for amplifier
or mute properties.
.It Cm pow
Controls power state for a group of widgets.
.It Cm volume
Interprets data from external controls, such as a volume knob.
.It Cm beep
Creates a tone at a certain frequency.
.It Cm 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.
.It Cm spkr
Pin complex for a speaker, often built into the machine.
.It Cm hp
Pin complex for a jack that is normally used for output to a headphone.
.It Cm cd
Pin complex for analog audio input from a CD device.
.It Cm SPDIF
Pin complex for an S/PDIF output connector.
.It Cm line-in
Pin complex for a line-level jack that is normally used for analog audio input.
.It Cm aux
Pin complex for an auxiliary analog audio input.
.It Cm mic
Pin complex for analog audio input from a microphone, either a jack or built
into the machine.
.It Cm SPDIF-in
Pin complex for an S/PDIF input connector.
.It Cm beep
Pin complex for analog audio input from a beep generator.
.El
.Pp
The following are the property names used in mixer control names:
.Bl -tag -width "source"
.It Cm mute
Mutes input or output audio stream.
.It Cm 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.
.It Cm 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.
.It Cm boost
Enables/disables low impedance amplifier, usually for use with headphones.
.It Cm eapd
Powers on/off external amplifier circuitry.
.It Cm sense
Reports current jack sense state.
.El
.Pp
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:
.Bl -tag -width "outputsXmasterXslaves"
.It Cm 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.
.It Cm outputs.master.slaves
List of widgets with amplifier gain or mute controls that are configured
with the parameters used for
.Cm outputs.master
and
.Cm outputs.master.mute .
For example, if
.Cm dac
is in the list and has an input amplifier gain control, setting
.Cm outputs.master
to 200 will set
.Cm inputs.dac
to 200.
.It Cm outputs.master
Amplifier gain control for widgets listed in
.Cm outputs.master.slaves .
.It Cm outputs.master.mute
Mute control for widgets listed in
.Cm outputs.master.slaves .
.It Cm record.volume.slaves
List of widgets with amplifier gain or mute controls that are configured
with the parameters used for
.Cm record.volume
and
.Cm record.volume.mute .
For example, if
.Cm adc
is in the list and has an input amplifier gain control, setting
.Cm record.volume
to 200 will set
.Cm record.adc
to 200.
.It Cm record.volume
Amplifier gain control for widgets listed in
.Cm record.volume.slaves .
.It Cm record.volume.mute
Mute control for widgets listed in
.Cm record.volume.slaves .
.It Cm outputs.mode
Controls whether the digital or analog converters and pins will be
used for playback.
.It Cm record.mode
Controls whether the digital or analog converters and pins will be
used for recording.
.El
.Sh SEE ALSO
.Xr audio 4 ,
.Xr pci 4
.Sh HISTORY
The
.Nm
device driver first appeared in
.Nx 3.0 .
.Ox
support first appeared in
.Ox 4.0 .
.Sh BUGS
This driver does not support codecs that are intended for HDMI or
DisplayPort connectivity.
|