- NetBSD Manual Pages
HDAUDIO(4) NetBSD Kernel Interfaces Manual HDAUDIO(4)
Powered by man-cgi (2021-06-01).
Maintained for NetBSD
by Kimmo Suominen.
Based on man-cgi by Panagiotis Christias.
hdaudio -- High Definition Audio device driver
hdaudio* at pci? dev ? function ?
hdafg* at hdaudiobus?
audio* at audiobus?
The hdaudio device driver is expected to support any PCI device which is
compliant to the High Definition Audio Specification 1.0. It was written
from scratch following the Intel HD Audio and Microsoft Universal Audio
The driver consists of two interlinked components, which reflects the
hardware design. The hdaudio component interfaces with a PCI/PCIe bus
and provides an hdaudiobus(4) onto which different function groups
attach. Each function group (e.g. audio, vendor-specific modem) is
exported as a separate child device of the hdaudio controller. Audio
function groups (a.k.a. audio codec) are exported as hdafg(4) devices.
Audio codecs are available from a number of manufacturers and are made up
of a number of widgets (e.g. audio mixer, output pin, analog-to-digital
converter). The way the widgets are interlinked varies significantly
between implementations. The tree of widgets must be parsed and mapped
to mixer(4) controls. As part of this process, loops in the inter-codec
links must be detected and muted, bi-directional pins must be set up
appropriately and the locations of pins determined. hdaudio works back-
wards by starting with a list of desired, consistent and compatible
mixer(4) controls and configuring/discovering appropriate widget link
routes to fit.
By following the published mechanisms for common implementations of wid-
get parsing, it is expected that nearly all High Definition Audio devices
will be supported without requiring per-device quirks.
In addition to many on-board sound cards included in mainboards, the fol-
lowing add-on card is supported:
TerraTec Aureon 7.1 PCIe
audio(4), mixer(4), pci(4), hdaudioctl(8),
Intel High Definition Audio:
Audio Device Technologies for Windows:
The hdaudio device driver appeared in NetBSD 5.1.
The hdaudio driver was written by Jared McNeill <jmcneill@NetBSD.org>
under contract by Precedence Technologies Ltd.:
The UAA-compliant widget parser is derived from the FreeBSD snd_hda(4)
The following items are not yet implemented:
· Improve power management support when driver is idle
· Add support for non-PCM output formats
· Handle unsolicited RIRB messages
· Modem function groups
· 24-bit and 20-bit hardware formats cannot yet be used. Since the
machine-independent audio layer converts all input from userland and
the hardware layer to 16-bit precision for processing, there would
currently be no advantage in using them.
NetBSD 10.99 March 21, 2022 NetBSD 10.99