]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/commit
Major snd_hda driver rewrite:
authorAlexander Motin <mav@FreeBSD.org>
Sun, 15 Jan 2012 13:21:36 +0000 (13:21 +0000)
committerAlexander Motin <mav@FreeBSD.org>
Sun, 15 Jan 2012 13:21:36 +0000 (13:21 +0000)
commit7c6b05d2808bc66bcbe81196f5709c137be1d890
tree8289c967044f52cc3a8f60637b0eb5a3620165b2
parentf6e633a9e101c8401459f233adffe8f1f001db63
Major snd_hda driver rewrite:
 - Huge old hdac driver was split into three independent pieces: HDA
controller driver (hdac), HDA CODEC driver (hdacc) and HDA sudio function
driver (hdaa).
 - Support for multichannel recording was added. Now, as specification
defines, driver checks input associations for pins with sequence numbers
14 and 15, and if found (usually) -- works as before, mixing signals
together. If it doesn't, it configures input association as multichannel.
 - Signal tracer was improved to look for cases where several DACs/ADCs in
CODEC can work with the same audio signal. If such case found, driver
registers additional playback/record stream (channel) for the pcm device.
 - New controller streams reservation mechanism was implemented. That
allows to have more pcm devices then streams supported by the controller
(usually 4 in each direction). Now it limits only number of simultaneously
transferred audio streams, that is rarely reachable and properly reported
if happens.
 - Codec pins and GPIO signals configuration was exported via set of
writable sysctls. Another sysctl dev.hdaa.X.reconfig allows to trigger
driver reconfiguration in run-time.
 - Driver now decodes pins location and connector type names. In some cases
it allows to hint user where on the system case connectors, related to the
pcm device, are located. Number of channels supported by pcm device,
reported now (if it is not 2), should also make search easier.
 - Added workaround for digital mic on some Asus laptops/netbooks.

MFC after: 2 months
Sponsored by: iXsystems, Inc.
14 files changed:
share/man/man4/snd_hda.4
sys/conf/files
sys/conf/kmod.mk
sys/dev/sound/pci/hda/hda_reg.h
sys/dev/sound/pci/hda/hdaa.c [new file with mode: 0644]
sys/dev/sound/pci/hda/hdaa.h [new file with mode: 0644]
sys/dev/sound/pci/hda/hdaa_patches.c [new file with mode: 0644]
sys/dev/sound/pci/hda/hdac.c
sys/dev/sound/pci/hda/hdac.h
sys/dev/sound/pci/hda/hdac_if.m [new file with mode: 0644]
sys/dev/sound/pci/hda/hdac_private.h
sys/dev/sound/pci/hda/hdac_reg.h
sys/dev/sound/pci/hda/hdacc.c [new file with mode: 0644]
sys/modules/sound/driver/hda/Makefile