History log of /freebsd-11-stable/sys/dev/sound/pci/hda/hdac.c
Revision Date Author Comments
(<<< Hide modified files)
(Show modified files >>>)
# 359485 31-Mar-2020 kib

MFC r359396:
hdaa: remove verbosity from the normal driver operations.


# 359114 19-Mar-2020 gonzo

MFC r352775-r352776

r352775:
snd_hda: Add Intel Cannon Lake support

Add PCI ids for Intel Cannon Lake PCH

Tested on: HP Spectre x360 13-p0043dx
PR: 240574
Submitted by: Neel Chauhan <neel@neelc.org>
Reviewed by: imp, mizhka, ray
Differential Revision: https://reviews.freebsd.org/D21789

r352776:
snd_hda: Add Intel Cannon Lake support

Add missing header change ommitted in r352775

X-MFC-with: 352775


# 345822 03-Apr-2019 mav

MFC r345332: Tune chipset naming.


# 331722 29-Mar-2018 eadler

Revert r330897:

This was intended to be a non-functional change. It wasn't. The commit
message was thus wrong. In addition it broke arm, and merged crypto
related code.

Revert with prejudice.

This revert skips files touched in r316370 since that commit was since
MFCed. This revert also skips files that require $FreeBSD$ property
changes.

Thank you to those who helped me get out of this mess including but not
limited to gonzo, kevans, rgrimes.

Requested by: gjb (re)


# 330897 14-Mar-2018 eadler

Partial merge of the SPDX changes

These changes are incomplete but are making it difficult
to determine what other changes can/should be merged.

No objections from: pfg


# 327170 25-Dec-2017 mav

MFC r326186: Slightly fix bidirectional stream number allocation.

This logic is still imperfect, since it allows at most 15 bidirectional
streams out of 30 allowed by specification, but at least now those should
work better. On the other side I don't remember I ever saw controller
supporting the bidirectional streams, so this is likely a nop change.


# 324909 23-Oct-2017 mav

MFC r324661: Add Creative vendor ID.


# 322573 16-Aug-2017 mav

MFC r322309, r322316:
Use "Ibex Peak" codename for "5 Series/3400 Series" chipsets.

This is shorter and unifies naming with later chipsets.


# 322572 16-Aug-2017 mav

MFC r322308: Add new Intel Lewisburg and Union Point chipset PCI IDs.

While there, polish some old AHCI ones, since they are still reused.


# 317010 16-Apr-2017 mmel

MFC r309532,r310674:

r309532:
Add IDs for HDA codecs found on Nvidia Tegra SoCs.
r310674:
Limit number of stripes supported by HDA codec to maximum number announced
by HDA controller. Incorrectly implermented HDA codec may report support
for more stripes that HDA controller already have. Due to this, always
limit number of enabled stripes by global controller maximum.


# 308738 16-Nov-2016 mav

MFC r308464, r308471: Add some device IDs found in my new laptop.


# 302408 07-Jul-2016 gjb

Copy head@r302406 to stable/11 as part of the 11.0-RELEASE cycle.
Prune svn:mergeinfo from the new branch, as nothing has been merged
here.

Additional commits post-branch will follow.

Approved by: re (implicit)
Sponsored by: The FreeBSD Foundation


/freebsd-11-stable/MAINTAINERS
/freebsd-11-stable/cddl
/freebsd-11-stable/cddl/contrib/opensolaris
/freebsd-11-stable/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/print
/freebsd-11-stable/cddl/contrib/opensolaris/cmd/zfs
/freebsd-11-stable/cddl/contrib/opensolaris/lib/libzfs
/freebsd-11-stable/contrib/amd
/freebsd-11-stable/contrib/apr
/freebsd-11-stable/contrib/apr-util
/freebsd-11-stable/contrib/atf
/freebsd-11-stable/contrib/binutils
/freebsd-11-stable/contrib/bmake
/freebsd-11-stable/contrib/byacc
/freebsd-11-stable/contrib/bzip2
/freebsd-11-stable/contrib/com_err
/freebsd-11-stable/contrib/compiler-rt
/freebsd-11-stable/contrib/dialog
/freebsd-11-stable/contrib/dma
/freebsd-11-stable/contrib/dtc
/freebsd-11-stable/contrib/ee
/freebsd-11-stable/contrib/elftoolchain
/freebsd-11-stable/contrib/elftoolchain/ar
/freebsd-11-stable/contrib/elftoolchain/brandelf
/freebsd-11-stable/contrib/elftoolchain/elfdump
/freebsd-11-stable/contrib/expat
/freebsd-11-stable/contrib/file
/freebsd-11-stable/contrib/gcc
/freebsd-11-stable/contrib/gcclibs/libgomp
/freebsd-11-stable/contrib/gdb
/freebsd-11-stable/contrib/gdtoa
/freebsd-11-stable/contrib/groff
/freebsd-11-stable/contrib/ipfilter
/freebsd-11-stable/contrib/ldns
/freebsd-11-stable/contrib/ldns-host
/freebsd-11-stable/contrib/less
/freebsd-11-stable/contrib/libarchive
/freebsd-11-stable/contrib/libarchive/cpio
/freebsd-11-stable/contrib/libarchive/libarchive
/freebsd-11-stable/contrib/libarchive/libarchive_fe
/freebsd-11-stable/contrib/libarchive/tar
/freebsd-11-stable/contrib/libc++
/freebsd-11-stable/contrib/libc-vis
/freebsd-11-stable/contrib/libcxxrt
/freebsd-11-stable/contrib/libexecinfo
/freebsd-11-stable/contrib/libpcap
/freebsd-11-stable/contrib/libstdc++
/freebsd-11-stable/contrib/libucl
/freebsd-11-stable/contrib/libxo
/freebsd-11-stable/contrib/llvm
/freebsd-11-stable/contrib/llvm/projects/libunwind
/freebsd-11-stable/contrib/llvm/tools/clang
/freebsd-11-stable/contrib/llvm/tools/lldb
/freebsd-11-stable/contrib/llvm/tools/llvm-dwarfdump
/freebsd-11-stable/contrib/llvm/tools/llvm-lto
/freebsd-11-stable/contrib/mdocml
/freebsd-11-stable/contrib/mtree
/freebsd-11-stable/contrib/ncurses
/freebsd-11-stable/contrib/netcat
/freebsd-11-stable/contrib/ntp
/freebsd-11-stable/contrib/nvi
/freebsd-11-stable/contrib/one-true-awk
/freebsd-11-stable/contrib/openbsm
/freebsd-11-stable/contrib/openpam
/freebsd-11-stable/contrib/openresolv
/freebsd-11-stable/contrib/pf
/freebsd-11-stable/contrib/sendmail
/freebsd-11-stable/contrib/serf
/freebsd-11-stable/contrib/sqlite3
/freebsd-11-stable/contrib/subversion
/freebsd-11-stable/contrib/tcpdump
/freebsd-11-stable/contrib/tcsh
/freebsd-11-stable/contrib/tnftp
/freebsd-11-stable/contrib/top
/freebsd-11-stable/contrib/top/install-sh
/freebsd-11-stable/contrib/tzcode/stdtime
/freebsd-11-stable/contrib/tzcode/zic
/freebsd-11-stable/contrib/tzdata
/freebsd-11-stable/contrib/unbound
/freebsd-11-stable/contrib/vis
/freebsd-11-stable/contrib/wpa
/freebsd-11-stable/contrib/xz
/freebsd-11-stable/crypto/heimdal
/freebsd-11-stable/crypto/openssh
/freebsd-11-stable/crypto/openssl
/freebsd-11-stable/gnu/lib
/freebsd-11-stable/gnu/usr.bin/binutils
/freebsd-11-stable/gnu/usr.bin/cc/cc_tools
/freebsd-11-stable/gnu/usr.bin/gdb
/freebsd-11-stable/lib/libc/locale/ascii.c
/freebsd-11-stable/sys/cddl/contrib/opensolaris
/freebsd-11-stable/sys/contrib/dev/acpica
/freebsd-11-stable/sys/contrib/ipfilter
/freebsd-11-stable/sys/contrib/libfdt
/freebsd-11-stable/sys/contrib/octeon-sdk
/freebsd-11-stable/sys/contrib/x86emu
/freebsd-11-stable/sys/contrib/xz-embedded
/freebsd-11-stable/usr.sbin/bhyve/atkbdc.h
/freebsd-11-stable/usr.sbin/bhyve/bhyvegc.c
/freebsd-11-stable/usr.sbin/bhyve/bhyvegc.h
/freebsd-11-stable/usr.sbin/bhyve/console.c
/freebsd-11-stable/usr.sbin/bhyve/console.h
/freebsd-11-stable/usr.sbin/bhyve/pci_fbuf.c
/freebsd-11-stable/usr.sbin/bhyve/pci_xhci.c
/freebsd-11-stable/usr.sbin/bhyve/pci_xhci.h
/freebsd-11-stable/usr.sbin/bhyve/ps2kbd.c
/freebsd-11-stable/usr.sbin/bhyve/ps2kbd.h
/freebsd-11-stable/usr.sbin/bhyve/ps2mouse.c
/freebsd-11-stable/usr.sbin/bhyve/ps2mouse.h
/freebsd-11-stable/usr.sbin/bhyve/rfb.c
/freebsd-11-stable/usr.sbin/bhyve/rfb.h
/freebsd-11-stable/usr.sbin/bhyve/sockstream.c
/freebsd-11-stable/usr.sbin/bhyve/sockstream.h
/freebsd-11-stable/usr.sbin/bhyve/usb_emul.c
/freebsd-11-stable/usr.sbin/bhyve/usb_emul.h
/freebsd-11-stable/usr.sbin/bhyve/usb_mouse.c
/freebsd-11-stable/usr.sbin/bhyve/vga.c
/freebsd-11-stable/usr.sbin/bhyve/vga.h
# 298983 03-May-2016 mav

Add some device IDs from Intel Sunrise Point chipsets.

MFC after: 2 weeks


# 297387 29-Mar-2016 mav

Add some device IDs found on AMD FCH shipsets.

MFC after: 2 weeks


# 283291 22-May-2015 jkim

CALLOUT_MPSAFE has lost its meaning since r141428, i.e., for more than ten
years for head. However, it is continuously misused as the mpsafe argument
for callout_init(9). Deprecate the flag and clean up callout_init() calls
to make them more consistent.

Differential Revision: https://reviews.freebsd.org/D2613
Reviewed by: jhb
MFC after: 2 weeks


# 281544 15-Apr-2015 rpaulo

snd_hda: add support for the Lenovo X1 20BS model.

This requires a patch to redirect the output to a separate DAC when
the headphones are used. While there, add device strings for Intel
Broadwell HDA controllers and Realtek ALC292 codecs.

MFC after: 1 week


# 275101 26-Nov-2014 mav

Add bunch of PCI IDs of Intel Wildcat Point (9 Series) chipsets.

MFC after: 1 week


# 267581 17-Jun-2014 jhb

Fix various bugs with freeing static DMA allocations in sound drivers:
- Don't compare the DMA map to NULL to determine if bus_dmamap_unload()
should be called when releasing a static allocation. Instead, compare
the bus address against 0.
- Don't assume that the DMA map for static allocations is NULL. Instead,
save the value set by bus_dmamem_alloc() so it can later be passed to
bus_dmamem_free(). Also, add missing calls to bus_dmamap_unload() in
these cases before freeing the buffer.
- Use the bus address from the bus_dma callback instead of calling
vtophys() on the address allocated by bus_dmamem_alloc().

Reviewed by: kan


# 264832 23-Apr-2014 marius

- Sprinkle const and static as appropriate.
- Convert the remainder of snd_hda(4) to take advantage of nitems().
- Use DEVMETHOD_END.
- Use NULL instead of 0 for pointers.

MFC after: 3 days


# 258170 15-Nov-2013 mav

Add some more Intel HDA controller IDs and rename HDMI CODEC to Haswell.


# 244980 02-Jan-2013 jfv

Add Intel Lynx Point PCH HD Audio Device IDs


# 242352 30-Oct-2012 mav

Print card and subsystem IDs in verbose logs to help to identify system.
Hide some less iseful messages under debug.


# 239908 30-Aug-2012 mav

Add bunch of ATI HDMI HDA controller IDs.

Submitted by: Dmitry Luhtionov <dmitryluhtionov@gmail.com>
MFC after: 1 week


# 233606 28-Mar-2012 mav

Stop HDA controller polling callout on suspend and reset it on resume.

PR: kern/166382
MFC after: 1 week


# 230807 31-Jan-2012 mav

Just in case, clear stream interrupts before enabling them.


# 230571 26-Jan-2012 mav

Add another bunch of CODEC IDs.


# 230465 22-Jan-2012 mav

Increase snd_hda(4) default maximal buffer size from 16K to 64K and
maximal from 64K to 256K.

We usually don't need 750 sound interrupts per second (1.3ms latency)
when playing 192K/24/8 stream. 187 should be better. On usual 48K/16/2
it is just enough for hw.snd.latency=9 at hw.snd.latency_profile=1 with
23 and 6 interrupts per second.

MFC after: 2 weeks
Sponsored by: iXsystems, Inc.


# 230331 19-Jan-2012 mav

Print controller/codec IDs for unknown chips instead of useless and
frightening "unknown" word. In most cases we don't need to know chips
to properly handle them, but having IDs in logs may simplify debugging.

MFC after: 2 weeks
Sponsored by: iXsystems, Inc.


# 230326 19-Jan-2012 mav

Two 192/24/8 playback streams overflow single mandatory output line (SDO)
of HDA bus. Handle that from two directions:
- Add support for "striping" (using several SDO lines), if supported.
- Account HDA bus utilization and return error on new stream allocation
attempt if remaining bandwidth is unsifficient.

Most of HDA controllers have one SDO line with 46Mbps output bandwidth.
NVIDIA GF210 has 2 lines - 92Mbps. NVIDIA GF520 has 4 lines - 184Mbps!

MFC after: 2 months
Sponsored by: iXsystems, Inc.


# 230312 18-Jan-2012 mav

Improve HDMI/DisplayPort audio support in snd_hda(4):

- Enable and handle unsolicited responses from digital display pins,
reporting connection and EDID-Like Data (ELD) validity status changes.
- Fetch ELD data, describing connected digital display device audio
capabilities. These data not really used at the moment (user is not
denied to use audio formats not supported by the device), only printed to
verbose logs. But they are useful for debugging. The fact that ELD was
received tells that HDMI link was established and video driver enabled
HDMI audio passthrough. Some old chips may not return ELD, so lack of it
is not necessary a problem.
- Add some more points to CODEC configuration sequence:
- For converter widgets, supporting more then two channels (HDMI/DP
converter widgets support 8), set number of channels to handle.
- For digital display pins (HDMI/DP) fill audio infoframe, reporting
connected device about number of channels and speakers allocation.
- For digital display pins (HDMI/DP) set mapping between channels seen
by software and channels transferred via HDMI/DisplayPort.
- Allow more audio formats, not used for analog connections because of
stereo pairs orientation, but easily applicable to HDMI/DisplayPort: 2.1,
3.0, 3.1, 4.1, 5.0, 6.0, 6.1, 7.0. That list may be filtered later using
info from ELD.
- Disable MSI interrupts for NVIDIA HDA controllers before GT520.

At this point I can successfully play audio over HDMI from NVIDIA GT210
and GT520 cards with nvidia-driver-290.10 driver to Marantz SR4001
receiver in 2.0, 2.1, 3.0, 4.0, 4.1, 5.0 and 5.1 PCM formats at 44, 48,
88 and 96KHz at 16 and 24 bits, same as do AC3/DTS passthrough.
6.0, 6.1, 7.0 and 7.1 PCM formats are not working for me, but I think
it is because of receiver age.

MFC after: 2 months
Sponsored by: iXsystems, Inc.


# 230130 15-Jan-2012 mav

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.


# 228727 20-Dec-2011 mav

Oops, list of IDs is not sequential. Have to list all of them expoicitly.


# 228726 20-Dec-2011 mav

Cast some vendor-specific spell on VIA VT1708S codecs to:
- make analog input loopback work;
- get access to the mics boost controls.

Sponsored by: iXsystems, Inc.
MFC after: 1 month


# 224967 18-Aug-2011 mav

Fix headphones pin configuration on Lenovo B450 laptop.

Submitted by: "Sergey V. Dyatko" <sergey.dyatko@gmail.com>
Approved by: re (kib)


# 223118 15-Jun-2011 joel

Hide driver revision behind bootverbose.

Approved by: mav


# 223058 13-Jun-2011 mav

Add bunch of Conexant codec IDs. For some of them add quirks to disable
excessive signal paths to simplify tracer's life.


# 222298 26-May-2011 mav

Add better names for the Intel HDMI audio codecs.


# 221794 11-May-2011 jfv

Correct a typo


# 221789 11-May-2011 jfv

Chipset support for the new Intel Panther Point PCH, thanks
to Seth Heasley for preparing the changes.


# 218149 31-Jan-2011 jfv

Support for the new Patsburg PCH chipset:
- SMBus Controller
- SATA Controller
- HD Audio Controller
- Watchdog Controller

Thanks to Seth Heasley (seth.heasley@intel.com) for providing us code.

MFC after 3 days


# 216766 28-Dec-2010 yongari

Add device id for RDC M3010 which is found on Vortex86 SoC.

Reviewed by: mav


# 211910 27-Aug-2010 jfv

Add Intel Cougar Point PCH HD Audio Controller ID

MFC in a week


# 210839 04-Aug-2010 gavin

Do not free sc if attach failed, as it was allocated by the bus
infrastructure, not us. This appears to be a leftover from an older
version of the driver.

Submitted by: avg
Tested by: Anton Shterenlikht <mexas bristol.ac.uk>
MFC after: 1 week
X-MFC-Note: To stable/8 and stable/7 only


# 208934 09-Jun-2010 mav

Add set of codec IDs.

PR: kern/147466


# 205413 21-Mar-2010 mav

Add some more codec IDs.


# 204351 26-Feb-2010 mav

Fix bug in headphones audio redirection using separate DAC. It was exposed
by removing channel duplication during multichannel audio implementation.


# 202796 22-Jan-2010 mav

Oops! r202789 broke recording from input mixer. Restore previous "mix"
usage and use "igain" instead for input-to-output monitoring loopback.


# 202789 22-Jan-2010 mav

- Improve tracer, to handle more cases of input-to-output monitoring
loopback.
- Change the meaning of "mix" OSS control. Now it controls loopback level,
according to comments in soundcard.h.
- Allow AD1981HD codecs to use playback mixer. Now driver should be able to
really use it.
- Fix bug in shared muters operation.


# 202736 21-Jan-2010 mav

Print playback channels paths in order of their sequence numbers, not nids.


# 202156 12-Jan-2010 mav

Align buffer size to LCM of 128bytes, required by hardware, and alignment of
current format. This fixes problems with non-power-of-2 number of channels.

Enable 5.1 formats support, as they are working fine now.


# 202127 11-Jan-2010 mav

Add multichannel (4.0 and 7.1) playback support. 5.1 mode support blocked
now due to unidentified synchonization problem. For 7.1 soundcards 5.1
support handled correctly via software upmix done by sound(4).

Stereo stream is no more duplicated to all ports. If you loose sound, check
you are using right connectors. Front speakers connector is usually green,
center/LFE - orange, rear - black, side - gray.


# 200375 10-Dec-2009 mav

Add one more set of codec IDs.


# 199846 26-Nov-2009 mav

Add two Cirrus Logic codec IDs.
Add GPIO setting quirk for Apple MacBookPro5,5.

Submitted by: ed


# 199258 13-Nov-2009 mav

Add more codec IDs.


# 197640 30-Sep-2009 mav

Fix typo in previous commit.
Add Realtek ALC887 codec ID.


# 197611 29-Sep-2009 mav

Add some bits of HDMI/DisplayPort support from later specification updates.
It may be not enough to make them work, but at least should give some
information about these beasts.


# 197018 09-Sep-2009 mav

Add NVidia MCP89 HDA controller IDs.


# 197017 09-Sep-2009 mav

Add Intel 82801JD (one more ICH10) HDA controller ID.

Submitted by: yongari


# 196762 02-Sep-2009 mav

Improve HDA controller capabilities logging.


# 196403 20-Aug-2009 jhb

Temporarily revert the new-bus locking for 8.0 release. It will be
reintroduced after HEAD is reopened for commits by re@.

Approved by: re (kib), attilio


# 196037 02-Aug-2009 attilio

Make the newbus subsystem Giant free by adding the new newbus sxlock.
The newbus lock is responsible for protecting newbus internIal structures,
device states and devclass flags. It is necessary to hold it when all
such datas are accessed. For the other operations, softc locking should
ensure enough protection to avoid races.

Newbus lock is automatically held when virtual operations on the device
and bus are invoked when loading the driver or when the suspend/resume
take place. For other 'spourious' operations trying to access/modify
the newbus topology, newbus lock needs to be automatically acquired and
dropped.

For the moment Giant is also acquired in some key point (modules subsystem)
in order to avoid problems before the 8.0 release as module handlers could
make assumptions about it. This Giant locking should go just after
the release happens.

Please keep in mind that the public interface can be expanded in order
to provide more support, if there are really necessities at some point
and also some bugs could arise as long as the patch needs a bit of
further testing.

Bump __FreeBSD_version in order to reflect the newbus lock introduction.

Reviewed by: ed, hps, jhb, imp, mav, scottl
No answer by: ariff, thompsa, yongari
Tested by: pho,
G. Trematerra <giovanni dot trematerra at gmail dot com>,
Brandon Gooch <jamesbrandongooch at gmail dot com>
Sponsored by: Yahoo! Incorporated
Approved by: re (ksmith)


# 195690 14-Jul-2009 mav

Disable MSI by default for nVidia MCP55 chipset.
It is reported to be broken in the same way as MCP51.

PR: kern/136429
Approved by: re (kib)


# 194861 24-Jun-2009 mav

Some DMA related changes:
- honor parent DMA tag limitations, as man page requires,
- allow data buffer to be allocated within full 64bit address range, when
support is announced by hardware,
- add quirk, disabling 64bit addresses for broken chips, use it for MCP78.


# 194177 14-Jun-2009 mav

Fix type of lowaddr variable.


# 193642 07-Jun-2009 ariff

Bump driver revision (should have bumped it earlier).


# 193640 07-Jun-2009 ariff

Sound Mega-commit. Expect further cleanup until code freeze.

For a slightly thorough explaination, please refer to
[1] http://people.freebsd.org/~ariff/SOUND_4.TXT.html .

Summary of changes includes:

1 Volume Per-Channel (vpc). Provides private / standalone volume control
unique per-stream pcm channel without touching master volume / pcm.
Applications can directly use SNDCTL_DSP_[GET|SET][PLAY|REC]VOL, or for
backwards compatibility, SOUND_MIXER_PCM through the opened dsp device
instead of /dev/mixer. Special "bypass" mode is enabled through
/dev/mixer which will automatically detect if the adjustment is made
through /dev/mixer and forward its request to this private volume
controller. Changes to this volume object will not interfere with
other channels.

Requirements:
- SNDCTL_DSP_[GET|SET][PLAY|REC]_VOL are newer ioctls (OSSv4) which
require specific application modifications (preferred).
- No modifications required for using bypass mode, so applications
like mplayer or xmms should work out of the box.

Kernel hints:
- hint.pcm.%d.vpc (0 = disable vpc).

Kernel sysctls:
- hw.snd.vpc_mixer_bypass (default: 1). Enable or disable /dev/mixer
bypass mode.
- hw.snd.vpc_autoreset (default: 1). By default, closing/opening
/dev/dsp will reset the volume back to 0 db gain/attenuation.
Setting this to 0 will preserve its settings across device
closing/opening.
- hw.snd.vpc_reset (default: 0). Panic/reset button to reset all
volume settings back to 0 db.
- hw.snd.vpc_0db (default: 45). 0 db relative to linear mixer value.

2 High quality fixed-point Bandlimited SINC sampling rate converter,
based on Julius O'Smith's Digital Audio Resampling -
http://ccrma.stanford.edu/~jos/resample/. It includes a filter design
script written in awk (the clumsiest joke I've ever written)
- 100% 32bit fixed-point, 64bit accumulator.
- Possibly among the fastest (if not fastest) of its kind.
- Resampling quality is tunable, either runtime or during kernel
compilation (FEEDER_RATE_PRESETS).
- Quality can be further customized during kernel compilation by
defining FEEDER_RATE_PRESETS in /etc/make.conf.

Kernel sysctls:
- hw.snd.feeder_rate_quality.
0 - Zero-order Hold (ZOH). Fastest, bad quality.
1 - Linear Interpolation (LINEAR). Slightly slower than ZOH,
better quality but still does not eliminate aliasing.
2 - (and above) - Sinc Interpolation(SINC). Best quality. SINC
quality always start from 2 and above.

Rough quality comparisons:
- http://people.freebsd.org/~ariff/z_comparison/

3 Bit-perfect mode. Bypasses all feeder/dsp effects. Pure sound will be
directly fed into the hardware.

4 Parametric (compile time) Software Equalizer (Bass/Treble mixer). Can
be customized by defining FEEDER_EQ_PRESETS in /etc/make.conf.

5 Transparent/Adaptive Virtual Channel. Now you don't have to disable
vchans in order to make digital format pass through. It also makes
vchans more dynamic by choosing a better format/rate among all the
concurrent streams, which means that dev.pcm.X.play.vchanformat/rate
becomes sort of optional.

6 Exclusive Stream, with special open() mode O_EXCL. This will "mute"
other concurrent vchan streams and only allow a single channel with
O_EXCL set to keep producing sound.

Other Changes:
* most feeder_* stuffs are compilable in userland. Let's not
speculate whether we should go all out for it (save that for
FreeBSD 16.0-RELEASE).
* kobj signature fixups, thanks to Andriy Gapon <avg@freebsd.org>
* pull out channel mixing logic out of vchan.c and create its own
feeder_mixer for world justice.
* various refactoring here and there, for good or bad.
* activation of few more OSSv4 ioctls() (see [1] above).
* opt_snd.h for possible compile time configuration:
(mostly for debugging purposes, don't try these at home)
SND_DEBUG
SND_DIAGNOSTIC
SND_FEEDER_MULTIFORMAT
SND_FEEDER_FULL_MULTIFORMAT
SND_FEEDER_RATE_HP
SND_PCM_64
SND_OLDSTEREO

Manual page updates are on the way.

Tested by: joel, Olivier SMEDTS <olivier at gid0 d org>, too many
unsung / unnamed heroes.


# 193228 01-Jun-2009 mav

Comment out old Realtek ALC883 quirk, that was disabling phantop power on
mic inputs. I have no idea what for it was made that time, but now I have
several reports that it should be removed to make microphones work. If
this quirk is still required for some systems then they should be identified
and specified explicitly.


# 190630 01-Apr-2009 mav

Add some more logic for AD1986A codec input tracing. Use mic preamplifier
only for mic-type inputs. This gives better chances to use it.

Change default configuration for some AD1986A codec based ASUS boards,
use it also for ASUS P5PL2 board. This makes front mic preamplifier working.

Tested by: Vadim Frolov <frolov@frolov.ck.ua>


# 190519 29-Mar-2009 mav

Fixup relative pointers after channel realloc. It fixes crash on systems
with several HDA codecs per controller.

While I am there, remove some unneeded dereferences.

Submitted by: Tor Egge <Tor.Egge@cvsup.no.freebsd.org>


# 189879 16-Mar-2009 mav

Remove CD input hack for ALC268 based Acer systems. Latest systems does not
implement CD input in hardware, while unconditional showing it confuse users.
Also it was made in the way that sometimes improper with present driver.

Add patch for ALC268 based Acer TM5320 to make headphones jack sensing work.
Default configuration defines two separate playback associations, which
current driver unable to trace properly due to order they are defined and
limited codec uniformity.

Submitted by: G. Mirov <g.mirov AT gmail.com>


# 189876 16-Mar-2009 mav

Fix spelling in message.


# 189127 27-Feb-2009 mav

Copy/paste bug fix for previos commit.


# 189086 26-Feb-2009 mav

Add MSI blacklisting support.

Disable MSI for nVidia MCP51 controller. Enabling MSI there leads to
unexpected errors and timeouts, that should not happen even if interrupts
are not working completely.


# 188656 15-Feb-2009 mav

Enable MSI support by default. Still can be disabled using device.hints.


# 188510 12-Feb-2009 mav

s/succeded/succeeded/ in comments.


# 187944 31-Jan-2009 mav

Fix bug in hint.hdac.X.config parsing.


# 187721 26-Jan-2009 mav

Specify analog beep pin widget for several AD codecs.
It gives working speaker control for that systems.


# 187445 19-Jan-2009 mav

Add two more nVidia HDMI codec IDs.


# 187202 13-Jan-2009 mav

Correct spelling in comment.


# 187196 13-Jan-2009 mav

Improve AD1983 codec support:
- force playback via mixer to get PCM volume control,
- make cleanup on recoring source selection.


# 187154 13-Jan-2009 mav

Change configuration order to enable output only after codec is configured.
Mute all mixer controllable amplifiers initially to let mixer to unmute
only some of them later. This should reduce clicks and noises during boot.


# 187052 11-Jan-2009 mav

Fix unwanted crosschannel mixing, possible on some codecs like
VIA VT1708B and Realtek ALC268.


# 187020 10-Jan-2009 mav

Add one more bunch of controller and codec IDs.


# 186912 08-Jan-2009 mav

Add external connector jack color into widget names.
It should help users to identify them while reading verbose messages.


# 186511 27-Dec-2008 mav

Add some found NVidia MCP7x HDA controller IDs.


# 186503 26-Dec-2008 mav

Add some special handling for AD1986A codec:

Disable some unneeded pathes in overcomplicated input mixer to help parser
to handle the rest better. This gives mic input boost control in some
configurations and just more predictable operation in others.


# 186430 23-Dec-2008 mav

Organize Conexant codecs.
Add CX20561 (Hermosa) codec ID.


# 186403 22-Dec-2008 mav

Add 9 more Analog Devices codec names.


# 186301 18-Dec-2008 mav

Add ULI M5461 chipset and vendor ID.


# 186146 15-Dec-2008 mav

Add some HDMI codec IDs.


# 186145 15-Dec-2008 mav

Add VIA VT1708B codec IDs.


# 185236 23-Nov-2008 mav

Remove DELAY() on hdac_audio_commit().
I don't see the reason why it is needed.


# 185230 23-Nov-2008 mav

Do not use soft PCM volume for digital outputs to allow SPDIF AC3 bypass
to work. Soft PCM volume (and vchans) unable to bypass AC3 stream now.


# 185225 23-Nov-2008 mav

Strictly differentiate digital and analog PCM devices according to codec
nodes capabilities. Add "Analog"/"Digital" marks to the pcm device names.

I hope it will help new users easier accept concept of several PCM devices
and understand exact purposes of that devices.


# 185178 22-Nov-2008 mav

Whitespace cleanup for previous commit.


# 185177 22-Nov-2008 mav

Handle device_get_children() errors in more correct way.
We shouldn't detach until all children are surely destroyed.

Found with: Coverity Prevent(tm)
CID: 2137


# 185176 22-Nov-2008 mav

Change check order to avoid array overrun.

Found with: Coverity Prevent(tm)
CID: 2497


# 184991 15-Nov-2008 mav

Correct association 0 handling.
as=0 means unused pin, so disable it explicitly, this is mostly cosmetics.


# 184483 30-Oct-2008 mav

Add quirk to set GPIO2 to enable internal speaker on Dell Vostro 1400.

Tested by: Sergio Veloso


# 184254 25-Oct-2008 mav

Fix spelling in comment.


# 184231 24-Oct-2008 mav

Bump the revision after the latest commits.


# 184230 24-Oct-2008 mav

Add some special handeling for AD1981HD codec. It has very unusual design
with several points unappropriate for the present parser. This patch
disables input-to-output analog monitoring but instead fixes recording.

Tested by Tobias Grosser on ThinkPad T61p.


# 184207 23-Oct-2008 mav

Add Intel ICH10 and SCH HDA controllers PCI IDs.


# 184095 20-Oct-2008 mav

Make HDA PCM device boot and sndstat messages more alike to PCI device ones.
Move codec # out of the device name as it is a device address and not part of
device type name.


# 184089 20-Oct-2008 mav

Tune boot messages a bit.
Use <> brackets only at device name line.


# 183894 14-Oct-2008 mav

Add all Sigmatel/IDT codecs I could find.
Add IDT and Intel unknown codecs.

PR: kern/125822


# 183811 12-Oct-2008 mav

Bump driver revision after the previous commit.


# 183810 12-Oct-2008 mav

Fix bug in a second call of the channel allocation function.
This should fix crash on systems where two audio codecs connected
to the same HDA bus.


# 183097 16-Sep-2008 mav

Hide some of driver's internal debugging.

Left only parts surely required for basic troubleshooting and configuration
purposes. There is still very long output, but further shrinking makes it
less informative.

Original debugging can be enabled with hw.snd.verbose=4.


# 183025 14-Sep-2008 mav

Small addition to the previous commit. Sorry.


# 183024 14-Sep-2008 mav

Add some missing Realtek codec IDs. Just for reference.
Fix small typo in error message.


# 183019 14-Sep-2008 mav

Remove one unneeded printf from non-verbose output.

Submitted by: Artem Naluzhnyy


# 182999 13-Sep-2008 mav

My massive snd_hda driver update.

Because of using more clear and same time more functional codec parser
new driver is able to handle more codecs, use them better then before and
without most of previous quirks. All of tested codecs itself manage playback,
record, input mixing and monitoring quite fine. In all of investigated
trouble cases problem was found or in nonstandard codec usage or incorrect
codec configuration made by BIOS. Most of that cases could be fixed using
device hints, some of which are already included to the driver.

New driver supports multiple codecs per HDA bus, multiple audio function
groups per codec and multiple logical sound devices per audio function group.
So don't worry when you get several PCM devices instead of one, it is normal.
It is usual situation with powerful codecs to provide, for example, 3 PCM
devices: one for 7.1 playback and main recording, one for headset and one
for digital SPDIF I/O.

New driver implements Universal Audio Architecture (UAA) much better then
previous one. Most information about recommended codec usage now taken from
the codec configuration registers initialized by BIOS. User may alter that
configuration using device hints to reconfigure logical audio devices to
his needs in a very broad range up to the limits of the codec functionality.

New driver supports digital PCM playback and AC3 pass-through. I am not sure
about completeness of this implementation, but I have several success stories
including my own. Vchans subsystem does not support AC3 pass-through so it
had to be disabled for that devices at this moment.

New driver is ready for multichannel playback, but until our OSS is unable
to use this it will just duplicate same stereo stream into all channel
pairs.

New driver supports suspend/resume. I am unable to really test this part
myself, but I have got several success stories.

Driver has very informative verbose boot messages. So if you have any
questions or problems - enable and read them first.

Discussed on: freebsd-multimedia@
Tested by: many


# 182854 07-Sep-2008 joel

Fix deactivation of speakers while plugging in headphones on Fujitsu
U1010, Lenovo 3k N200 and Acer Aspire 4715Z.

Reviewed by: attilio
PR: 126216, 126244, 127034
Submitted by: Anton E. Kartashev <amokk@mirahost.ru>,
Ganael Laplanche <ganael.laplanche@martymac.com>,
Dennis Generaloff <giantlock@gmail.com>


# 180532 15-Jul-2008 delphij

Add quirk for Dell D630 laptops.

Tested by: Quake Lee <quakelee geekcn org>,
Robert Noland <rnoland 2hip net>
MFC after: 1 week
Approved by: ariff


# 179205 22-May-2008 kevlo

Add codec id for Sigmatel STAC9872AK

Reviewed by: ariff


# 178324 19-Apr-2008 ariff

Fix no sound issues for ASUS W6F (ALC861) laptops (buggy BIOS config that
deserves its own internet memes). The trick is to force all available,
unused pins (that being advertised as "speaker") to behave as microphone
pins instead.

Reported / Tested by: Dmitry Kutsenko <kutsenko.truebsd.org>
MFC after: 3 days


# 178155 12-Apr-2008 ariff

- Add codec id for Sigmatel STAC9205
- Fix speaker issues with Dell Vostro 1500 (GPIO0)

Tested by: John Wright <jwright.gmail.com>

- Apply ridiculous quirk on Asus A8X series (A8JC, A8M, A8xx, etc). These
different laptop series share simmilar pci id, hardware codecs, etc.
but works differently. A slight difference in connection type for
widget #26 is used to differentiate it.

Tested by: eric baumbach <embaumbach.gmail.com>

- Apply GPIO0 quirk for ASUS G2K laptop
- Sort ASUS ids accordingly.

Submitted by: jkim

MFC after: 3 days


# 174579 13-Dec-2007 ariff

Add speaker/headphone controls for HP Compaq DC7700 Small Form Factor PC
@ ALC262.

Submitted by: Carlos A. M. dos Santos <unixmania at gmail dot com>


# 174578 13-Dec-2007 ariff

nid 28 for Acer @ ALC268 should be identified as analog CD input pin,
though it doesn't provides proper (sane, valid, usable, etc) analog CD
playback due to its stripped down nature.


# 174182 02-Dec-2007 ariff

Headphone / speakers automute fixup for Acer Aspire 4710 @ ALC268 laptop.

Tested by: Liyu, She


# 174025 28-Nov-2007 ariff

- Add Analog Devices AD1984 codec id.
- Enable pcbeep control for Acer + ALC268 (nid 29). Give enough (fake)
hints so the parser will grab it and allocate "speaker" control.
- Fix regression while preparing DAC and ADC for multichannel
format. Since playback policy is to output to every possible path,
ensure that each DAC is started.

Reported / Tested by: Guy Brand


# 174004 28-Nov-2007 ariff

Add missing MCP65 id which was accidentally removed in previous commit.


# 173817 21-Nov-2007 ariff

* Fix support for followings:
o Acer Aspire 4520 laptop
- jack sensing / automute
o Toshiba Satellite A135-S4527 laptop
- jack sensing / automute
Tested by: lioux
o Apple Macbook 3 (is it?)
- require gpio0 (for speakers) and ovref50 (for headphone)
to make it works
- jack sensing / automute
Tested by: Ed Schouten
* Add Nvidia MCP67 controller ids.
* Be sensible about simmilar controller with multiple pci ids.
* Connect unused DAC/ADC to stream#0 rather than forcing each of them
managing their own stream.

MFC after: 3 days


# 172811 19-Oct-2007 ariff

- Gigabyte G33-S2H fixup, due to the present of multiple competing
codecs. Codec at address 0 seems purely digital, or perhaps an HDMI
interface. Let the driver skip it and continue scanning the codecs
starting with address 2 (Realtek ALC885).
* Due to possibilities of future similar cases, put enough logic
in hdac_scan_codecs() to force codec scanning starting from
XX address via tunable "hint.pcm.%d.codec_index".

Reported / Tested by: Toomas Pelberg <toomasp@gmx.net>

- Trivial headphone / speaker automute fixup for Fujitsu-Siemens
AMILO Si 1848 laptop.

Reported / Tested by: Ed <ed@bsd.it>

- Trivial headphone / speaker automute fixup for Fujitsu-Siemens
Lifebook S7020D laptop.

Reported / Tested by: Jaromir Dvoracek <jarek@ataxo.com>

- Some smart vendor trying to create interplanetary wormhole by
screwing pci config space during their BIOS update. The side effects
of their failure attempt includes mutilated hardware id, broken
speaker automuting and loosing the entire analog CD connectivity,
thus causing enough collateral damages to collapse the entire
universe. Move along with it.

Please exercise extra cautious when applying BIOS updates.

Reported / Tested by: Pietro Cerutti <gahr@gahr.ch>
- assembled laptop, based on the MSI-1034
(662) which is now becoming MSI-034A.

- Fix no sound issues (on headphones) for Lenovo ThinkCentre A55 due
to global automute table entry which is not applicable for
non-laptops.

Reported / Tested by: Piotr Smyrak <piotr.smyrak@heron.pl>

- Speaker mute control for HP DC7700 since the front headphone jack
does not generate any interesting unsolicited signal/response.

Reported / Tested by: tyop @ irc.freenode.net

Approved by: re (kensmith)
MFC after: 3 days


# 171330 09-Jul-2007 ariff

- Add codec id for Realtek ALC268.

- Add controller id for Intel 82801I (ICH9).
PR: kern/114399
Submitted by: Michael Fuckner <michael@fuckner.net>

- MSI support. Disable by default due to various issues with too many
broken hardwares. MSI can be enabled through device.hints(5) or
kenv(8) by setting "hint.pcm.%d.msi=1".
Partially submitted by: kevlo
YAMAMOTO Taku <taku@tackymt.homeip.net>
Tested by: joel, kevlo, YAMAMOTO Taku

Approved by: re (hrs)
MFC after: 3 days


# 171141 01-Jul-2007 ariff

- Fix input/microphone support for ASUS A8N-VMCSM series.

Submitted by: Simon Schubert <corecode@fs.ei.tum.de>

- Defer flushing unsolicited response into taskqueue thread rather
than handle it directly in interrupt handler, since few of its
operations (like measuring/calibrating jack impedance) are quite
expensive.
- Misc. debugging cleanups.

Tested by: joel
Approved by: re (hrs)
MFC after: 3 days


# 170944 18-Jun-2007 ariff

Fix headphone jack sensing support for Olivetti Olibook 610-430 XPSE.

Tested by: Gonzalo Lionel Rodriguez


# 170721 14-Jun-2007 ariff

Drain all callout handlers during driver detach appropriately.


# 170521 10-Jun-2007 ariff

Filter/compress the amount of channel trigger. This should reduce
much of lock/unlock contentions within the interrupt handler. Most
of these drivers only need PCMTRIG_START or STOP (ABORT).

Discussed with: scottl


# 170518 10-Jun-2007 ariff

- Add codec id for ALC660 [1]
- Add codec id for AD1988B, along with fixing its line-in and other
issues (with proper quirks). [2]

Submitted by: [1] barbara.xxx1975@libero.it
[2] Oliver Brandmueller ob@e-Gitt.NET
MFC after: 3 days


# 170289 04-Jun-2007 dwmalone

Despite several examples in the kernel, the third argument of
sysctl_handle_int is not sizeof the int type you want to export.
The type must always be an int or an unsigned int.

Remove the instances where a sizeof(variable) is passed to stop
people accidently cut and pasting these examples.

In a few places this was sysctl_handle_int was being used on 64 bit
types, which would truncate the value to be exported. In these
cases use sysctl_handle_quad to export them and change the format
to Q so that sysctl(1) can still print them.


# 170207 02-Jun-2007 ariff

Use standard pcm_get/setflags() rather than dereferencing softc while
enabling SD_F_SOFTPCMVOL or any flags.


# 169435 09-May-2007 ariff

Don't hold mutex while releasing bus resources.


# 169277 05-May-2007 ariff

Miscellaneous changes and fix:

- Remove explicit call to pmap_change_attr(), since we now have proper
and functional definition of BUS_DMA_NOCACHE.
- Enable PCI(e) bus snooping for non i386/amd64 as an alternative for
uncacheable DMA.
- Codecs changes:
* Analag Device -> Analog Devices, AD1988.
* New codec: VIA VT1708 and VT1709, Realtek ALC262, ALC861-VD and
ALC885.
* Various fixups for Conexant Waikiki, fix recording (read: microphone)
on various Analog Devices codecs due to vendor BIOS mess, various
quirks for several ASUS laptops/boards.
- Fix connection list handling, closely following the specification to
handle range of nids.
- Basic Jack sense polling infrastructure for possible hardwares with
broken unsolicited response interrupt.

Ideas/Submitted/Tested by: Andriy Gapon <avg@icyb.net.ua>,
#freebsd-azalia, many.


# 168847 18-Apr-2007 ariff

sndbuf_alloc() now accept dmaflags argument which will be forwarded to
internal bus_dmammem_alloc() for greater flexibility on setting up DMA /
page attributes.


# 167773 21-Mar-2007 ariff

Memory leak killing spree, mostly bus_dma(9) related.


# 167738 20-Mar-2007 ariff

Put a temporary bandaid to set/reset uncacheable DMA region (affected
on amd64 and i386) until we gain proper BUS_DMA_NOCACHE support.
(in progress).

Tested by: rafan, infofarmer, Nguyen Tam Chinh <unixvn@gmail.com>
Tested on: amd64, i386


# 167702 19-Mar-2007 ariff

Destroy channel DMA tag during resource cleanup.


# 167648 16-Mar-2007 ariff

[stage: 8/9]

Implement CHANNEL_SETFRAGMENTS() for snd_atiixp, snd_es137x, snd_hda
and snd_via8233. CHANNEL_SETBLOCKSIZE() will basically call
CHANNEL_SETFRAGMENTS() internally using conservative blocksize /
blockcount hints. Other drivers will be converted later.


# 167623 15-Mar-2007 ariff

Fix support for ASUS A7T ALC882 laptop (gpio0 quirk).

Reported/Tested by: cognet


# 167610 15-Mar-2007 ariff

- Put some sanity break statement in few missing places.
- Remove NULL checking on snd_mtxcreate() (M_WAITOK) .


# 167609 15-Mar-2007 ariff

NOOP (for now) for hdac_dma_nocache(). It is a wrong way to enforce
cache coherency, besides of causing train wreck in other places
(especially on amd64, possibly on i386).

Discussed with: kib@, rafan@
Tested by: rafan@


# 167454 11-Mar-2007 ariff

Fix analog CD connectivity. HP decided to screw pinconfig settings in
their latest Compaq V3000 BIOS (revision F.22). As a result, analog CD
connectivity is gone to the oblivion. Even if they decide to fix it in
future revisions, the damage has been done.


# 166965 25-Feb-2007 ariff

Fix ALC883 microphone / recording issues. Setting high(er) VRef on
(external) microphone pin tend to screw it. Internal microphone (found
on several laptops) still need high VRef.

Tested by: Pietro Cerutti <pietro.cerutti@gmail.com>
lenix <irc.freenode.net>


# 166796 16-Feb-2007 ariff

Add codec id for Sigmatel STAC9271D.

Submitted by: Michael Fuckner <michael@fuckner.net>


# 166294 28-Jan-2007 ariff

Add speaker control for HP xw4300. This hardware doesn't respond to
unsolicited pin sense event and need manual control to turn off speaker
volume while attaching headphone.

Tested by: Ingeborg Hellemo <Ingeborg.Hellemo@cc.uit.no>

Disable global Acer + ALC883 headphone automute settings since there are
few models that does not respect this and causing broken behaviour.

Reported/Tested by: Pavel Argentov <argentoff@rtelekom.ru>


# 165992 12-Jan-2007 ariff

Fix headphone/speaker automute for [1] Acer Aspire 5050 and [2] MSI MS-1034
laptops.

Tested by: [1] Lion G. <liontanker@hotmail.com>
[2] Pietro Cerutti <pietro.cerutti@gmail.com>

Specialized mixer initialization for STAC9221, much like STAC9220.

Tested by: Devon H. O'Dell


# 165770 04-Jan-2007 ariff

Fix headphone/speaker automute for Toshiba Satellite Pro U200.

Reported/Tested by: keramida


# 165466 22-Dec-2006 ariff

Fix distorted sound on Intel Desktop Board D101GGC (ATI SB450/ALC861).

Turn on ALC861 quirk as default since it seems affecting all hardwares
with the same codec.

Reported/Tested by: Darryl Yeoh <drl@MyBSD.org.my>


# 165351 19-Dec-2006 ariff

Fix distorted sound on Fujitsu Siemens AMILO Pa 1510.

Reported/Tested by: infofarmer


# 165305 17-Dec-2006 ariff

Add codec id for [1] Realtek ALC888 and [2] Sigmatel STAC9227

Found/Tested by: [1] luigi
[2] Jean-Baptiste Quenot <jbq@caraldi.com>


# 165281 16-Dec-2006 ariff

Miscellaneous fixups and quirks for ASUS A7M, LG LW20 and
HP NX6325 laptops.


# 165239 15-Dec-2006 ariff

Fix compilation using gcc 4.1.

Submitted by: dougb


# 165103 11-Dec-2006 ariff

Fix distorted sound on ASUS P1-AH2 caused by accumulated input / output.

Reported/Tested by: Hiroharu Tamaru <tamaru@myn.rcast.u-tokyo.ac.jp>


# 165069 10-Dec-2006 ariff

Fix AD1986A (and possibily other codecs too) microphone issues.

Tested by: xride (using skype, xanalyser, etc. ; play/record)


# 165039 09-Dec-2006 ariff

- Fix headphone/speakers automute on Lenovo 3000 N100.

Tested by: xride

- GPIO commit cleanups and fixes for possible breakage during
previous commit.


# 164828 02-Dec-2006 ariff

Add support for Apple Intel/Mac.

- Playback and headphone/speaker automute works.
- Recording untested due to me being deaf doing back-and-forth
remote debugging.

Free Macbook donation is highly appreciated :)

Tested by: Dennis Pielken <mips128@gmx.net>


# 164750 29-Nov-2006 ariff

Fix support for Medion MD MD95257 (GPIO2 quirk).

Reported by: Chris Tophe <cohika@gmail.com>


# 164657 27-Nov-2006 ariff

- LNV -> LENOVO
- Fix support for Samsung Q1 UltraMobile PC (inverted EAPD).

Reported by: benno


# 164614 26-Nov-2006 ariff

Welcome to Once-a-year Sound Mega-Commit. Enjoy numerous updates and fixes
in every sense.

General
-------

- Multichannel safe, endian safe, format safe
* Large part of critical pcm filters such as vchan.c, feeder_rate.c,
feeder_volume.c, feeder_fmt.c and feeder.c has been rewritten so that
using them does not cause the pcm data to be converted to 16bit little
endian.
* Macrosses for accessing pcm data safely are defined within sound.h in
the form of PCM_READ_* / PCM_WRITE_*
* Currently, most of them are probably limited for mono/stereo handling,
but the future addition of true multichannel will be much easier.

- Low latency operation
* Well, this require lot more works to do not just within sound driver,
but we're heading towards right direction. Buffer/block sizing within
channel.c is rewritten to calculate precise allocation for various
combination of sample/data/rate size. As a result, applying correct
SNDCTL_DSP_POLICY value will achive expected latency behaviour simmilar
to what commercial 4front driver do.
* Signal handling fix. ctrl+c of "cat /dev/zero > /dev/dsp" does not
result long delay.
* Eliminate sound truncation if the sound data is too small.
DIY:
1) Download / extract
http://people.freebsd.org/~ariff/lowlatency/shortfiles.tar.gz
2) Do a comparison between "cat state*.au > /dev/dsp" and
"for x in state*.au ; do cat $x > /dev/dsp ; done"
- there should be no "perceivable" differences.
Double close for PR kern/31445.

CAVEAT: Low latency come with (unbearable) price especially for poorly
written applications. Applications that trying to act smarter
by requesting (wrong) blocksize/blockcount will suffer the most.
Fixup samples/patches can be found at:
http://people.freebsd.org/~ariff/ports/

- Switch minimum/maximum sampling rate limit to "1" and "2016000" (48k * 42)
due to closer compatibility with 4front driver.
Discussed with: marcus@ (long time ago?)

- All driver specific sysctls in the form of "hw.snd.pcm%d.*" have been
moved to their own dev sysctl nodes, notably:
hw.snd.pcm%d.vchans -> dev.pcm.%d.vchans
Bump __FreeBSD_version.

Driver specific
---------------

- Ditto for sysctls.

- snd_atiixp, snd_es137x, snd_via8233, snd_hda
* Numerous cleanups and fixes.
* _EXPERIMENTAL_ polling mode support using simple callout_* mechanisme.
This was intended for pure debugging and latency measurement, but proven
good enough in few unexpected and rare cases (such as problematic shared
IRQ with GIANT devices - USB). Polling can be enabled/disabled through
dev.pcm.0.polling. Disabled by default.

- snd_ich
* Fix possible overflow during speed calibration. Delay final
initialization (pcm_setstatus) after calibration finished.
PR: kern/100169
Tested by: Kevin Overman <oberman@es.net>
* Inverted EAPD for few Nec VersaPro.
PR: kern/104715
Submitted by: KAWATA Masahiko <kawata@mta.biglobe.ne.jp>

Thanks to various people, notably Joel Dahl, Yuriy Tsibizov, Kevin Oberman,
those at #freebsd-azalia @ freenode and others for testing.

Joel Dahl will do the manpage update.


# 163432 16-Oct-2006 ariff

- Inverted EAPD quirk for ASUS A8Jc.
- Take the literal meaning of eapdbtl, but do the inversion during
write.

Tested by: Chung-liang Wei <idreamer@gmail.com>


# 163276 12-Oct-2006 ariff

- Fix support for ASUS U5F laptop. This laptop (and possibly others)
need a special inverted EAPD quirk.
- Add "eapdinv" config for future testing purposes.

Tested by: Yuriy Tsibizov <Yuriy.Tsibizov@gfk.ru>
#freebsd-azalia @ irc.freenode.net


# 163257 12-Oct-2006 ariff

Fix support for IBM/Lenovo Thinkcentre M52 series. Its vendorid / 0x1014
accidentally match with HP vendorid / 0x103c.

Reported by: Robert Noland <rnoland@2hip.net>


# 163136 08-Oct-2006 ariff

Added few more pci ids for Intel, ATI, NVidia, VIA and SiS.


# 163057 06-Oct-2006 ariff

- Fix wrong id for ALC882, add ALC883 id.

- Add support for the Conexant Waikiki/CX20551-22, found
in most Toshiba P100 series laptops. Despite of growing
urban legend of "unsupported Conexant", this codec is fully
supported in this driver.
Note: Toshiba P100 has broken (acpi) BIOS, thus rendering
its soundchip useless. Please disable ACPI, or get
BIOS updates (if any).

Found/tested by: Vulpes Velox <v.velox@vvelox.net>
URL: http://lists.freebsd.org/pipermail/freebsd-multimedia/2006-September/004896.html

- Parser cleanups to handle possible oss/mixer collision. Found
after parsing Conexant Waikiki nodes.

- Increase resilient against resource failure during attach/detach.

- Implement simple config through hint.pcm.<unit>.config. Supported
options:
gpio0 (default on Acer), gpio1, gpio2, softpcmvol,
fixedrate (default), forcestereo (default)
* Option prefixed with "no" (such as "nofixedrate") will do
the opposite.
* Options can be separated using space " " or comma ",".
* The "no" option will take precedence over anything else.
Example:
hint.pcm.0.config="gpio2,nofixedrate,noforcestereo,nogpio0,softpcmvol"
hint.pcm.0.config="softpcmvol noforcestereo"


# 162965 02-Oct-2006 ariff

- Streamline quirks management for a better future.
- Fix support for ASUS M5200ae (buggy BIOS)
- Fix few problems, reported by Coverity Prevent (TM).

CID: 246991, 246676, 246675, 246674, 246477
Found by: Coverity Prevent (TM)


# 162956 02-Oct-2006 ariff

Make this buildable on IA64.

Reported by: phk


# 162922 01-Oct-2006 ariff

Add support for Intel High Definition Audio Controller.

This driver make a special guarantee that "playback" works
on majority hardwares with minimal or without specific vendor
quirk.

This driver is a product of collaborative effort made by:

Stephane E. Potvin <sepotvin@videotron.ca>
Andrea Bittau <a.bittau@cs.ucl.ac.uk>
Wesley Morgan <morganw@chemikals.org>
Daniel Eischen <deischen@FreeBSD.org>
Maxime Guillaud <bsd-ports@mguillaud.net>
Ariff Abdullah <ariff@FreeBSD.org>

....and various people from freebsd-multimedia@FreeBSD.org

Refer to snd_hda(4) for features and issues.

Welcome To HDA.

Sponsored by: Defenxis Sdn. Bhd.