HDAUDIO(4) | Device Drivers Manual | HDAUDIO(4) |
hdaudio
— High
Definition Audio device driver
hdaudio* at pci? dev ? function ?
hdafg* at hdaudiobus?
audio* at audiobus?
options HDAUDIOVERBOSE
options HDAUDIO_DEBUG
options HDAFG_DEBUG
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 Architecture specifications.
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
backwards 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 widget 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 following add-on card is supported:
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) driver.
The following items are not yet implemented:
March 21, 2022 | NetBSD 10.99 |