| HDAUDIO(4) | Device Drivers Manual | HDAUDIO(4) | 
hdaudio —
hdaudio* at pci? dev ? function ?
hdafg* at hdaudiobus?
audio* at audiobus?
  
  options HDAUDIOVERBOSE
  
  options HDAUDIO_DEBUG
  
  options HDAFG_DEBUG
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.
hdaudio device driver appeared in
  NetBSD 5.1.
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.
| March 21, 2022 | NetBSD 10.1 |