History log of /freebsd-current/sys/dev/sound/pci/hda/hdac.c
Revision Date Author Comments
# 4cc4b5e2 07-Jun-2024 Dmitry Luhtionov <dmitryluhtionov@gmail.com>

Add some AMD device IDs.


# 1dd1a696 12-Apr-2024 Michael Zhilin <mizhka@FreeBSD.org>

snd_hda: Add the full Intel Meteor/Arrow/Lunar Lake HD Audio PCI IDs

This is based off the Linux file sound/hda/intel-dsp-config.c.

Tested on: Lenovo Thinkbook 16 G6+ IMH
MFC after: 3 days
Reviewed by: markj, christos
Differential Revision: https://reviews.freebsd.org/D44777
Sponsored by: Postgres Professional


# 89189224 23-Feb-2024 Gleb Smirnoff <glebius@FreeBSD.org>

snd_hda: add 32-bit memory quirk for Creative Sound Blaster Audigy FX

Despite still being in production the device appeared not able to use
memory above BUS_SPACE_MAXADDR_32BIT, and if your desktop has a lot of
memory there is a high chance driver would allocate inaccessible memory.

Submitted by: wulf
Reviewed by: mav


# f7d3d0a4 22-Jan-2024 Christos Margiolis <christos@FreeBSD.org>

sound: use device_set_descf() to set device descriptions

Commit 6b6914c1e21b introduced a printf-like version of
device_set_desc(), so use it to simplify device description setting in
the audio stack.

Sponsored by: The FreeBSD Foundation
MFC after: 2 weeks
Reviewed by: dev_submerge.ch, markj
Differential Revision: https://reviews.freebsd.org/D43467


# 015daf52 27-Sep-2023 Mark Johnston <markj@FreeBSD.org>

hdac: Defer interrupt allocation in hdac_attach()

hdac_attach() registers an interrupt handler before allocating various
driver resources which are accessed by the interrupt handler. On some
platforms we observe what appear to be spurious interrupts upon a cold
boot, resulting in panics.

Partially work around the problem by deferring irq allocation until
after other resources are allocated. I think this is not a complete
solution, but is correct and sufficient to work around the problems
reported in the PR.

PR: 268393
Tested by: Alexander Sherikov <asherikov@yandex.com>
Tested by: Oleh Hushchenkov <o.hushchenkov@gmail.com>
MFC after: 1 week
Differential Revision: https://reviews.freebsd.org/D41883


# 5aacf339 18-Aug-2023 John Baldwin <jhb@FreeBSD.org>

sys: Remove SND_DECLARE_FILE

Reviewed by: kbowling, imp, emaste
Differential Revision: https://reviews.freebsd.org/D41499


# 82a265ad 16-Aug-2023 Warner Losh <imp@FreeBSD.org>

sys: Remove $FreeBSD$: sound driver version

Remove /SND_DECLARE_FILE\("\$FreeBSD\$"\);/


# 4d846d26 10-May-2023 Warner Losh <imp@FreeBSD.org>

spdx: The BSD-2-Clause-FreeBSD identifier is obsolete, drop -FreeBSD

The SPDX folks have obsoleted the BSD-2-Clause-FreeBSD identifier. Catch
up to that fact and revert to their recommended match of BSD-2-Clause.

Discussed with: pfg
MFC After: 3 days
Sponsored by: Netflix


# 2a31a06b 20-Oct-2022 Alexander Motin <mav@FreeBSD.org>

Add random VMware device IDs.

Just to make dmesg look nicer there.

MFC after: 1 week


# c4e591c9 07-Sep-2022 Neel Chauhan <nc@FreeBSD.org>

snd_hda: Remove duplicate erroneous HDA_INTEL_ALLKPS line

MFC after: 3 days
Differential Revision: https://reviews.freebsd.org/D36483


# 22ecfc58 06-Sep-2022 Neel Chauhan <nc@FreeBSD.org>

snd_hda: Add the full Intel AlderLake HD Audio PCI IDs

This is based off the Linux file sound/hda/intel-dsp-config.c.

Reviewed by: imp (src)
Tested on: HP Spectre x360 16-f0023dx
MFC after: 3 days
Differential Revision: https://reviews.freebsd.org/D36476


# 3390adfe 06-May-2022 John Baldwin <jhb@FreeBSD.org>

sound: Remove unused devclass arguments to DRIVER_MODULE.


# 077564cf 15-Mar-2022 Mark Johnston <markj@FreeBSD.org>

hdac: Handle interrupts racing with device suspend

- Avoid looping forever if a concurrent reset causes a read of the
interrupt status register to return all ones.
- Lock the softc before reading the interrupt status, so as to avoid a
similar infinite loop in hdac_one_intr().

This fixes suspend-to-S3 on some laptops.

PR: 261207
Reviewed by: mav, imp
Tested by: uqs
MFC after: 1 week
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D34117


# 98d59d2e 09-Feb-2022 Alexander Motin <mav@FreeBSD.org>

snd_hda: Add some ATI HDMI codec IDs.

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


# 96e500a3 09-Dec-2021 Warner Losh <imp@FreeBSD.org>

hda: Push giant / newbus topo lock down a layer

Rather than picking up Giant at the start of these sysctl handlers, push
acquiring Giant down a layer to protect walking the children and also
to add/delete children for the reconfigure.

Sponsored by: Netflix
Reviewed by: mav, jhb
Differential Revision: https://reviews.freebsd.org/D33057


# dc238358 05-Nov-2021 Alexander Motin <mav@FreeBSD.org>

Add some of Intel Alder Lake device IDs.

MFC after: 1 week


# 86d69de8 12-Jul-2021 Xin LI <delphij@FreeBSD.org>

Fix blankspace anomalies, no actual code change.


# ddfc9c4c 22-Jun-2021 Warner Losh <imp@FreeBSD.org>

newbus: Move from bus_child_{pnpinfo,location}_src to bus_child_{pnpinfo,location} with sbuf

Now that the upper layers all go through a layer to tie into these
information functions that translates an sbuf into char * and len. The
current interface suffers issues of what to do in cases of truncation,
etc. Instead, migrate all these functions to using struct sbuf and these
issues go away. The caller is also in charge of any memory allocation
and/or expansion that's needed during this process.

Create a bus_generic_child_{pnpinfo,location} and make it default. It
just returns success. This is for those busses that have no information
for these items. Migrate the now-empty routines to using this as
appropriate.

Document these new interfaces with man pages, and oversight from before.

Reviewed by: jhb, bcr
Sponsored by: Netflix
Differential Revision: https://reviews.freebsd.org/D29937


# cd3d0f8c 15-Oct-2020 Alexander Motin <mav@FreeBSD.org>

Drop unsolicited responses to the still attaching CODECs.

It is reported to fix kernel panics when early unsolicited responses
delivered to the CODEC device not having driver attached yet.

PR: 250248
Reported by: Rajeev Pillai <rajeev_v_pillai@yahoo.com>
Reviewed by: avg
MFC after: 2 weeks


# 378503af 01-Sep-2020 Mateusz Guzik <mjg@FreeBSD.org>

sound: clean up empty lines in .c and .h files


# 43022083 26-Jun-2020 Andriy Gapon <avg@FreeBSD.org>

sound/hda: fix interrupt handler endless loop after r362294

Not all interrupt sources that affect CIS bit were acknowledged.
Specifically, bits in STATESTS (aka WAKESTS) were left set.

The fix is to disable WAKEEN and clear STATESTS bits before the HDA
interrupt is enabled. This way we should never get any STATESTS bits.

I also added placeholders for all event bits that we currently do not
enable, do not handle and do not clear. This might get useful when / if
we enable any of them.

Reported by: kib (Apollo Lake hardware)
Tested by: kib (earlier, different change)
MFC after: 2 weeks
X-MFC with: r362294


# 4c7d1ab0 18-Jun-2020 Andriy Gapon <avg@FreeBSD.org>

hdac_intr_handler: keep working until global interrupt status clears

It is plausible that the hardware interrupts a host only when GIS goes
from zero to one. GIS is formed by OR-ing multiple hardware statuses,
so it's possible that a previously cleared status gets set again while
another status has not been cleared yet. Thus, there will be no new
interrupt as GIS always stayed set. If we don't re-examine GIS then we
can leave it set and never get another interrupt again.

Without this change I frequently saw a problem where snd_hda would stop
working. Setting dev.hdac.1.polling=1 would bring it back to life and
afterwards I could set polling back to zero. Sometimes the problem
started right after a boot, sometimes it happened after resuming from
S3, frequently it would occur when sound output and input are active
concurrently (such as during conferencing). I looked at HDAC_INTSTS
while the sound was not working and I saw that both HDAC_INTSTS_GIS and
HDAC_INTSTS_CIS were set, but there were no interrupts.

I have collected some statistics over a period of several days about how
many loops (calls to hdac_one_intr) the new code did for a single
interrupt:
+--------+--------------+
|Loops |Times Happened|
+--------+--------------+
|0 |301 |
|1 |12857746 |
|2 |280 |
|3 |2 |
|4+ |0 |
+--------+--------------+
I believe that previously the sound would get stuck each time we had to loop
more than once.

The tested hardware is:
hdac1: <AMD (0x15e3) HDA Controller> mem 0xfe680000-0xfe687fff at device 0.6 on pci4
hdacc1: <Realtek ALC269 HDA CODEC> at cad 0 on hdac1

No objections: mav
MFC after: 5 weeks
Differential Revision: https://reviews.freebsd.org/D25128


# fc68af79 05-Jun-2020 Alexander Motin <mav@FreeBSD.org>

Add bunch of HDA controller and codec IDs.

MFC after: 2 weeks


# 5c96a7b2 13-May-2020 Andriy Gapon <avg@FreeBSD.org>

snd_hda: fix typos related to quirks set via 'config' tunable

One wrong quirk bit, one wrong variable name.

MFC after: 1 week


# 317cb280 13-May-2020 Andriy Gapon <avg@FreeBSD.org>

sound/hda: newer AMD devices still require the same PCIe snoop

So, replicate the ATI vendor snoop configuration for the AMD vendor.
I think that this should fix a number of cases where users currently
have to resort to polling or disabling MSI.

MFC after: 1 week


# 258ba4c0 26-Apr-2020 Ed Maste <emaste@FreeBSD.org>

snd_hda: use bool for hdac_reset's boolean wakeup param


# 0ae64ae4 20-Apr-2020 Ed Maste <emaste@FreeBSD.org>

hdac: remove unused macro


# 944a6408 19-Apr-2020 Ed Maste <emaste@FreeBSD.org>

snd_hda: whitespace and style(9) cleanups


# cdf17038 18-Apr-2020 Ed Maste <emaste@FreeBSD.org>

hda: remove hda*_lockowned macros

These are not used anywhere.


# f6448524 17-Apr-2020 Ed Maste <emaste@FreeBSD.org>

hdac: replace printf for unowned lock with a lock assertion

Reviewed by: markj, mav
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D24479


# a449a1eb 17-Apr-2020 Ed Maste <emaste@FreeBSD.org>

hdac: update comment to match function name

snd_hda was rewritten in r230130; one function retained a comment
referencing the previous name.

MFC after: 3 days
Sponsored by: The FreeBSD Foundation


# b75e561a 10-Apr-2020 Ed Maste <emaste@FreeBSD.org>

hda: if a CODEC is not responding, report which one

PR: 229190
MFC after: 1 week


# 8fe63c2a 10-Apr-2020 Ed Maste <emaste@FreeBSD.org>

hdac: show which command timed out

There are several reports of "hdac0: Command timeout on address 2"
messages emitted during playback on a variety of contemporary machines.
Show the command that timed out in case it might provide a clue in
finding the cause.

PR: 229190
MFC after: 1 week
Sponsored by: The FreeBSD Foundation


# e41841f0 10-Apr-2020 Ed Maste <emaste@FreeBSD.org>

hdac: update comment on reset duration

The comment previously stated the delay must be at least 250us but that
was insufficient and so should be doubled, but the delay was actually
1000. The HDA spec actually says the delay must be 521 us (25 frames)
so update the comment to match.


# f30cf558 28-Mar-2020 Konstantin Belousov <kib@FreeBSD.org>

hdaa: remove verbosity from the normal driver operations.

If hdaa is used in polling mode, it logs each change to the poll
interval under bootverbose, which makes it unusable (slow). These
messages are arguably useless or are a debugging leftovers at best.

Sponsored by: The FreeBSD Foundation
MFC after: 3 days


# 7029da5c 26-Feb-2020 Pawel Biernacki <kaktus@FreeBSD.org>

Mark more nodes as CTLFLAG_MPSAFE or CTLFLAG_NEEDGIANT (17 of many)

r357614 added CTLFLAG_NEEDGIANT to make it easier to find nodes that are
still not MPSAFE (or already are but aren’t properly marked).
Use it in preparation for a general review of all nodes.

This is non-functional change that adds annotations to SYSCTL_NODE and
SYSCTL_PROC nodes using one of the soon-to-be-required flags.

Mark all obvious cases as MPSAFE. All entries that haven't been marked
as MPSAFE before are by default marked as NEEDGIANT

Approved by: kib (mentor, blanket)
Commented by: kib, gallatin, melifaro
Differential Revision: https://reviews.freebsd.org/D23718


# 35228417 05-Dec-2019 Scott Long <scottl@FreeBSD.org>

Add support for new sound HDA hardware

Sponsored by: Intel


# a6c2525c 28-Oct-2019 Scott Long <scottl@FreeBSD.org>

Add device IDs for the next generation of Intel HDA audio.

MFC after: 3 days


# c314e2af 26-Sep-2019 Oleksandr Tymoshenko <gonzo@FreeBSD.org>

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
MFC after: 2 weeks
Differential Revision: https://reviews.freebsd.org/D21789


# ce829184 20-Mar-2019 Alexander Motin <mav@FreeBSD.org>

Tune chipset naming.

Submitted by: Dmitry Luhtionov <dmitryluhtionov@gmail.com>
MFC after: 2 weeks


# af6a86eb 02-Nov-2018 Alexander Motin <mav@FreeBSD.org>

Adjust SiS 966/968 HDA controller naming.

Submitted by: Dmitry Luhtionov <dmitryluhtionov@gmail.com>


# 80a79189 01-Aug-2018 Justin Hibbits <jhibbits@FreeBSD.org>

snd_hda: Synchronize DMA buffers for the control path

Make sure both sides of the DMA buffer memory accesses for the CORB and RIRB
(control buffers) in snd_hda (device and CPU) can see coherent memory. This
is needed on weakly ordered architectures including PowerPC and ARM. Patch
originally by mmel, with small changes.

This does not cover the data path of snd_hda. We don't have sync operations
for in-progress DMA buffers, to sync ranges of a map.

Reviewed By: mmel
Differential Revision: https://reviews.freebsd.org/D16517


# 212de33e 31-Jul-2018 Justin Hibbits <jhibbits@FreeBSD.org>

snd_hda: Byteswap the buffer descriptor entries as needed

The buffer descriptor list entries should be in little endian format. Byte swap
them on BE. This is the last piece of the puzzle for snd_hda(4) to work on
PowerPC.


# 2a9ee5fc 30-Jul-2018 Justin Hibbits <jhibbits@FreeBSD.org>

snd_hda: Make codec control path endian safe

The CORB and RIRB buffers exist in DMA memory, but the device reads them as
little-endian only. Read and write as LE into the DMA memory block, to work on
BE platforms.


# bdafaf0a 30-Jul-2018 Justin Hibbits <jhibbits@FreeBSD.org>

snd_hda: Print error codes in decimal, rather than hex

It's easy to confuse the error code as naked it looks decimal (EINVAL is
reported as error 16, instead of error 22, so first reading looks like EBUSY).


# cf40916b 30-Jul-2018 Justin Hibbits <jhibbits@FreeBSD.org>

snd_hda: Only free streams DMA maps if the streams list has been created

If hdac_attach fails prior to allocating sc->streams, cleanup in the
hdac_attach_fail label will dereference a NULL pointer, panicking.


# 718cf2cc 27-Nov-2017 Pedro F. Giffuni <pfg@FreeBSD.org>

sys/dev: further adoption of SPDX licensing ID tags.

Mainly focus on files that use BSD 2-Clause license, however the tool I
was using misidentified many licenses so this was mostly a manual - error
prone - task.

The Software Package Data Exchange (SPDX) group provides a specification
to make it easier for automated tools to detect and summarize well known
opensource licenses. We are gradually adopting the specification, noting
that the tags are considered only advisory and do not, in any way,
superceed or replace the license texts.


# 3228add8 25-Nov-2017 Alexander Motin <mav@FreeBSD.org>

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.

MFC after: 1 month


# eeec68ea 15-Oct-2017 Alexander Motin <mav@FreeBSD.org>

Add Creative vendor ID.

MFC after: 1 week


# 6750c3d0 08-Aug-2017 Alexander Motin <mav@FreeBSD.org>

Use "Ibex Peak" codename for "5 Series/3400 Series" chipsets.

This is shorter and unifies naming with later chipsets.

MFC after: 1 week


# aaa9b2b3 08-Aug-2017 Alexander Motin <mav@FreeBSD.org>

Add new Intel Lewisburg and Union Point chipset PCI IDs.

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

MFC after: 1 week


# 4642c8c5 28-Dec-2016 Michal Meloun <mmel@FreeBSD.org>

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.

Reviewed by: mav
MFC after: 1 month
Differential Revision: https://reviews.freebsd.org/D8922


# 2b064d46 09-Nov-2016 Alexander Motin <mav@FreeBSD.org>

Add some device IDs found in my new laptop.


# 28323add 08-Nov-2016 Bryan Drewery <bdrewery@FreeBSD.org>

Fix improper use of "its".

Sponsored by: Dell EMC Isilon


# 71733a50 03-May-2016 Alexander Motin <mav@FreeBSD.org>

Add some device IDs from Intel Sunrise Point chipsets.

MFC after: 2 weeks


# 15e01a35 28-Mar-2016 Alexander Motin <mav@FreeBSD.org>

Add some device IDs found on AMD FCH shipsets.

MFC after: 2 weeks


# fd90e2ed 22-May-2015 Jung-uk Kim <jkim@FreeBSD.org>

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


# 420827da 14-Apr-2015 Rui Paulo <rpaulo@FreeBSD.org>

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


# e67f3bec 25-Nov-2014 Alexander Motin <mav@FreeBSD.org>

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

MFC after: 1 week


# 86843ea8 17-Jun-2014 John Baldwin <jhb@FreeBSD.org>

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


# abe917ad 23-Apr-2014 Marius Strobl <marius@FreeBSD.org>

- 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


# c9b3a5a0 15-Nov-2013 Alexander Motin <mav@FreeBSD.org>

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


# 9e81697f 02-Jan-2013 Jack F Vogel <jfv@FreeBSD.org>

Add Intel Lynx Point PCH HD Audio Device IDs


# ed228e40 30-Oct-2012 Alexander Motin <mav@FreeBSD.org>

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


# 7d0ec9dd 30-Aug-2012 Alexander Motin <mav@FreeBSD.org>

Add bunch of ATI HDMI HDA controller IDs.

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


# 16b8ad64 28-Mar-2012 Alexander Motin <mav@FreeBSD.org>

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

PR: kern/166382
MFC after: 1 week


# c6c4eaa8 30-Jan-2012 Alexander Motin <mav@FreeBSD.org>

Just in case, clear stream interrupts before enabling them.


# 5409d3ee 26-Jan-2012 Alexander Motin <mav@FreeBSD.org>

Add another bunch of CODEC IDs.


# 66126826 22-Jan-2012 Alexander Motin <mav@FreeBSD.org>

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.


# 5bcd25de 19-Jan-2012 Alexander Motin <mav@FreeBSD.org>

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.


# 6fa8e691 18-Jan-2012 Alexander Motin <mav@FreeBSD.org>

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.


# 88addcbe 18-Jan-2012 Alexander Motin <mav@FreeBSD.org>

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.


# 7c6b05d2 15-Jan-2012 Alexander Motin <mav@FreeBSD.org>

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.


# 823efe37 19-Dec-2011 Alexander Motin <mav@FreeBSD.org>

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


# 3e605977 19-Dec-2011 Alexander Motin <mav@FreeBSD.org>

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


# ad06556a 18-Aug-2011 Alexander Motin <mav@FreeBSD.org>

Fix headphones pin configuration on Lenovo B450 laptop.

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


# d2c60314 15-Jun-2011 Joel Dahl <joel@FreeBSD.org>

Hide driver revision behind bootverbose.

Approved by: mav


# 180c2b38 13-Jun-2011 Alexander Motin <mav@FreeBSD.org>

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


# 0591ab9c 26-May-2011 Alexander Motin <mav@FreeBSD.org>

Add better names for the Intel HDMI audio codecs.


# 4cc96c3e 11-May-2011 Jack F Vogel <jfv@FreeBSD.org>

Correct a typo


# 73e3bb65 11-May-2011 Jack F Vogel <jfv@FreeBSD.org>

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


# bf0477b2 31-Jan-2011 Jack F Vogel <jfv@FreeBSD.org>

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


# deb4ef82 28-Dec-2010 Pyun YongHyeon <yongari@FreeBSD.org>

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

Reviewed by: mav


# a7d5f7eb 19-Oct-2010 Jamie Gritton <jamie@FreeBSD.org>

A new jail(8) with a configuration file, to replace the work currently done
by /etc/rc.d/jail.


# f0d5a975 27-Aug-2010 Jack F Vogel <jfv@FreeBSD.org>

Add Intel Cougar Point PCH HD Audio Controller ID

MFC in a week


# af980015 04-Aug-2010 Gavin Atkinson <gavin@FreeBSD.org>

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


# c4219fc1 08-Jun-2010 Alexander Motin <mav@FreeBSD.org>

Add set of codec IDs.

PR: kern/147466


# e30013ae 31-Mar-2010 Alexander Motin <mav@FreeBSD.org>

MFC r205413:
Add some more codec IDs.


# b0423064 21-Mar-2010 Alexander Motin <mav@FreeBSD.org>

Add some more codec IDs.


# 8b1670d0 01-Mar-2010 Alexander Motin <mav@FreeBSD.org>

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


# 28889a00 26-Feb-2010 Alexander Motin <mav@FreeBSD.org>

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


# 9eb48f44 05-Feb-2010 Alexander Motin <mav@FreeBSD.org>

MFC r202789, r202796:
- Improve tracer, to handle more cases of input-to-output monitoring
loopback.
- Use "igain" mixer control for input-to-output monitoring loopback.
- Allow AD1981HD codecs to use playback mixer. Now driver should be able to
really use it.
- Fix bug in shared muters operation.


# 24f89009 05-Feb-2010 Alexander Motin <mav@FreeBSD.org>

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


# 320cdf73 22-Jan-2010 Alexander Motin <mav@FreeBSD.org>

MFC r202127, r202156:
Add multichannel (4.0, 5.1 and 7.1) playback support.

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.


# 8da30a89 22-Jan-2010 Alexander Motin <mav@FreeBSD.org>

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


# 028b92a5 22-Jan-2010 Alexander Motin <mav@FreeBSD.org>

- 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.


# 09aa060e 21-Jan-2010 Alexander Motin <mav@FreeBSD.org>

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


# 481ad2f5 12-Jan-2010 Alexander Motin <mav@FreeBSD.org>

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.


# fbf9cd22 11-Jan-2010 Alexander Motin <mav@FreeBSD.org>

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.


# b57c18c4 22-Dec-2009 Alexander Motin <mav@FreeBSD.org>

MFC r200375:
Add one more set of codec IDs.


# 151681ac 10-Dec-2009 Alexander Motin <mav@FreeBSD.org>

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

Submitted by: ed


# 1969c3f4 10-Dec-2009 Alexander Motin <mav@FreeBSD.org>

Add one more set of codec IDs.


# eb3d6abd 26-Nov-2009 Alexander Motin <mav@FreeBSD.org>

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

Submitted by: ed


# 506ef9ed 23-Nov-2009 Alexander Motin <mav@FreeBSD.org>

MFC r199258:
Add more codec IDs.


# 2c5d7e80 23-Nov-2009 Alexander Motin <mav@FreeBSD.org>

MFC r197611, r197640:
- 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.
- Add Realtek ALC887 codec ID.


# c1ebbbc9 23-Nov-2009 Alexander Motin <mav@FreeBSD.org>

MFC r197018:
Add NVidia MCP89 HDA controller IDs.


# 95eaf85a 23-Nov-2009 Alexander Motin <mav@FreeBSD.org>

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


# 510e0aaa 23-Nov-2009 Alexander Motin <mav@FreeBSD.org>

MFC r196762:
Improve HDA controller capabilities logging.


# a1c0421a 13-Nov-2009 Alexander Motin <mav@FreeBSD.org>

Add more codec IDs.


# 2ad05ba2 30-Sep-2009 Alexander Motin <mav@FreeBSD.org>

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


# ef0097a6 29-Sep-2009 Alexander Motin <mav@FreeBSD.org>

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.


# f66de33a 08-Sep-2009 Alexander Motin <mav@FreeBSD.org>

Add NVidia MCP89 HDA controller IDs.


# f147bd6d 08-Sep-2009 Alexander Motin <mav@FreeBSD.org>

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

Submitted by: yongari


# 46681d6e 02-Sep-2009 Alexander Motin <mav@FreeBSD.org>

Improve HDA controller capabilities logging.


# 247db074 20-Aug-2009 John Baldwin <jhb@FreeBSD.org>

MFC 196403: Temporarily revert the new-bus locking for 8.0 release.

Approved by: re (kib)


# a56fe095 20-Aug-2009 John Baldwin <jhb@FreeBSD.org>

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


# 444b9186 02-Aug-2009 Attilio Rao <attilio@FreeBSD.org>

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)


# 5487ee55 14-Jul-2009 Alexander Motin <mav@FreeBSD.org>

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)


# 8380c28e 24-Jun-2009 Alexander Motin <mav@FreeBSD.org>

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.


# ff0ef2c5 14-Jun-2009 Alexander Motin <mav@FreeBSD.org>

Fix type of lowaddr variable.


# db77ea6c 07-Jun-2009 Ariff Abdullah <ariff@FreeBSD.org>

Bump driver revision (should have bumped it earlier).


# 90da2b28 07-Jun-2009 Ariff Abdullah <ariff@FreeBSD.org>

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.


# ba98ce6b 01-Jun-2009 Alexander Motin <mav@FreeBSD.org>

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.


# cb116626 01-Apr-2009 Alexander Motin <mav@FreeBSD.org>

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>


# f7cdd867 29-Mar-2009 Alexander Motin <mav@FreeBSD.org>

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>


# 83c59ed2 16-Mar-2009 Alexander Motin <mav@FreeBSD.org>

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>


# ad7de3aa 15-Mar-2009 Alexander Motin <mav@FreeBSD.org>

Fix spelling in message.


# 8363eacc 27-Feb-2009 Alexander Motin <mav@FreeBSD.org>

Copy/paste bug fix for previos commit.


# edce9c99 26-Feb-2009 Alexander Motin <mav@FreeBSD.org>

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.


# 8f740c4b 15-Feb-2009 Alexander Motin <mav@FreeBSD.org>

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


# c7a5ac77 12-Feb-2009 Alexander Motin <mav@FreeBSD.org>

s/succeded/succeeded/ in comments.


# a05a4339 31-Jan-2009 Alexander Motin <mav@FreeBSD.org>

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


# 18141fb2 26-Jan-2009 Alexander Motin <mav@FreeBSD.org>

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


# 8e097e5b 19-Jan-2009 Alexander Motin <mav@FreeBSD.org>

Add two more nVidia HDMI codec IDs.


# a1cfce01 13-Jan-2009 Alexander Motin <mav@FreeBSD.org>

Correct spelling in comment.


# 12f2031f 13-Jan-2009 Alexander Motin <mav@FreeBSD.org>

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


# 01dd74a1 13-Jan-2009 Alexander Motin <mav@FreeBSD.org>

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.


# 56035520 10-Jan-2009 Alexander Motin <mav@FreeBSD.org>

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


# 7f7de271 10-Jan-2009 Alexander Motin <mav@FreeBSD.org>

Add one more bunch of controller and codec IDs.


# 78bb0fa3 08-Jan-2009 Alexander Motin <mav@FreeBSD.org>

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


# f496eee7 27-Dec-2008 Alexander Motin <mav@FreeBSD.org>

Add some found NVidia MCP7x HDA controller IDs.


# 3f4f72bf 26-Dec-2008 Alexander Motin <mav@FreeBSD.org>

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.


# 51a8e5f0 23-Dec-2008 Alexander Motin <mav@FreeBSD.org>

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


# fd9c95bd 22-Dec-2008 Alexander Motin <mav@FreeBSD.org>

Add 9 more Analog Devices codec names.


# 9678919b 18-Dec-2008 Alexander Motin <mav@FreeBSD.org>

Add ULI M5461 chipset and vendor ID.


# 1bc133fe 15-Dec-2008 Alexander Motin <mav@FreeBSD.org>

Add some HDMI codec IDs.


# 13cf3e1b 15-Dec-2008 Alexander Motin <mav@FreeBSD.org>

Add VIA VT1708B codec IDs.


# b6562075 23-Nov-2008 Alexander Motin <mav@FreeBSD.org>

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


# 1f925d91 23-Nov-2008 Alexander Motin <mav@FreeBSD.org>

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.


# 3a7a3fc2 23-Nov-2008 Alexander Motin <mav@FreeBSD.org>

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.


# f4088192 22-Nov-2008 Alexander Motin <mav@FreeBSD.org>

Whitespace cleanup for previous commit.


# e3ae9f65 22-Nov-2008 Alexander Motin <mav@FreeBSD.org>

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


# d7b96565 22-Nov-2008 Alexander Motin <mav@FreeBSD.org>

Change check order to avoid array overrun.

Found with: Coverity Prevent(tm)
CID: 2497


# 316f941e 15-Nov-2008 Alexander Motin <mav@FreeBSD.org>

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


# 9fccea87 30-Oct-2008 Alexander Motin <mav@FreeBSD.org>

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

Tested by: Sergio Veloso


# 6b3a1c6a 25-Oct-2008 Alexander Motin <mav@FreeBSD.org>

Fix spelling in comment.


# 6f6487c3 24-Oct-2008 Alexander Motin <mav@FreeBSD.org>

Bump the revision after the latest commits.


# e1a56547 24-Oct-2008 Alexander Motin <mav@FreeBSD.org>

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.


# 16c8eda0 23-Oct-2008 Alexander Motin <mav@FreeBSD.org>

Add Intel ICH10 and SCH HDA controllers PCI IDs.


# 5ce33ccf 20-Oct-2008 Alexander Motin <mav@FreeBSD.org>

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.


# 2ba37102 20-Oct-2008 Alexander Motin <mav@FreeBSD.org>

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


# d7f03759 19-Oct-2008 Ulf Lilleengen <lulf@FreeBSD.org>

- Import the HEAD csup code which is the basis for the cvsmode work.


# 7be3ed1d 14-Oct-2008 Alexander Motin <mav@FreeBSD.org>

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

PR: kern/125822


# f5803010 12-Oct-2008 Alexander Motin <mav@FreeBSD.org>

Bump driver revision after the previous commit.


# bbbf908d 12-Oct-2008 Alexander Motin <mav@FreeBSD.org>

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.


# 4d423c80 16-Sep-2008 Alexander Motin <mav@FreeBSD.org>

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.


# a6371849 14-Sep-2008 Alexander Motin <mav@FreeBSD.org>

Small addition to the previous commit. Sorry.


# ac14b5ee 14-Sep-2008 Alexander Motin <mav@FreeBSD.org>

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


# c7edbd9d 14-Sep-2008 Alexander Motin <mav@FreeBSD.org>

Remove one unneeded printf from non-verbose output.

Submitted by: Artem Naluzhnyy


# 859159d1 13-Sep-2008 Alexander Motin <mav@FreeBSD.org>

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


# bbe9d8cb 07-Sep-2008 Joel Dahl <joel@FreeBSD.org>

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>


# ff7b31cb 14-Jul-2008 Xin LI <delphij@FreeBSD.org>

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


# c730aeff 22-May-2008 Kevin Lo <kevlo@FreeBSD.org>

Add codec id for Sigmatel STAC9872AK

Reviewed by: ariff


# 42018dcf 19-Apr-2008 Ariff Abdullah <ariff@FreeBSD.org>

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


# 3cc4ca2a 12-Apr-2008 Ariff Abdullah <ariff@FreeBSD.org>

- 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


# d155e640 13-Dec-2007 Ariff Abdullah <ariff@FreeBSD.org>

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>


# c8d361d4 13-Dec-2007 Ariff Abdullah <ariff@FreeBSD.org>

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.


# 229acba1 02-Dec-2007 Ariff Abdullah <ariff@FreeBSD.org>

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

Tested by: Liyu, She


# 1cb55600 28-Nov-2007 Ariff Abdullah <ariff@FreeBSD.org>

- 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


# fcdde99a 27-Nov-2007 Ariff Abdullah <ariff@FreeBSD.org>

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


# 46e5fdd5 21-Nov-2007 Ariff Abdullah <ariff@FreeBSD.org>

* 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


# fd0a4790 19-Oct-2007 Ariff Abdullah <ariff@FreeBSD.org>

- 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


# 0937dd1e 09-Jul-2007 Ariff Abdullah <ariff@FreeBSD.org>

- 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


# e5ad83a7 01-Jul-2007 Ariff Abdullah <ariff@FreeBSD.org>

- 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


# 715ed548 18-Jun-2007 Ariff Abdullah <ariff@FreeBSD.org>

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

Tested by: Gonzalo Lionel Rodriguez


# 5d75db4f 14-Jun-2007 Ariff Abdullah <ariff@FreeBSD.org>

Drain all callout handlers during driver detach appropriately.


# bdfbdcec 10-Jun-2007 Ariff Abdullah <ariff@FreeBSD.org>

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


# f6cdab92 10-Jun-2007 Ariff Abdullah <ariff@FreeBSD.org>

- 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


# 041b706b 04-Jun-2007 David Malone <dwmalone@FreeBSD.org>

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.


# e510f521 02-Jun-2007 Ariff Abdullah <ariff@FreeBSD.org>

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


# a6f9c6fb 09-May-2007 Ariff Abdullah <ariff@FreeBSD.org>

Don't hold mutex while releasing bus resources.


# 71e3af01 05-May-2007 Ariff Abdullah <ariff@FreeBSD.org>

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.


# 2e334adf 18-Apr-2007 Ariff Abdullah <ariff@FreeBSD.org>

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


# 703c934a 21-Mar-2007 Ariff Abdullah <ariff@FreeBSD.org>

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


# 94d36aa2 20-Mar-2007 Ariff Abdullah <ariff@FreeBSD.org>

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


# 19f018fb 19-Mar-2007 Ariff Abdullah <ariff@FreeBSD.org>

Destroy channel DMA tag during resource cleanup.


# 1042342a 16-Mar-2007 Ariff Abdullah <ariff@FreeBSD.org>

[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.


# d90a1cd3 15-Mar-2007 Ariff Abdullah <ariff@FreeBSD.org>

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

Reported/Tested by: cognet


# 12828031 15-Mar-2007 Ariff Abdullah <ariff@FreeBSD.org>

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


# 82199c92 15-Mar-2007 Ariff Abdullah <ariff@FreeBSD.org>

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@


# c0dc2ab2 11-Mar-2007 Ariff Abdullah <ariff@FreeBSD.org>

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.


# b88d63a8 24-Feb-2007 Ariff Abdullah <ariff@FreeBSD.org>

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>


# 885d6cfb 16-Feb-2007 Ariff Abdullah <ariff@FreeBSD.org>

Add codec id for Sigmatel STAC9271D.

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


# 5430d30e 27-Jan-2007 Ariff Abdullah <ariff@FreeBSD.org>

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>


# 95af1064 12-Jan-2007 Ariff Abdullah <ariff@FreeBSD.org>

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


# 048b5298 04-Jan-2007 Ariff Abdullah <ariff@FreeBSD.org>

Fix headphone/speaker automute for Toshiba Satellite Pro U200.

Reported/Tested by: keramida


# 65de329e 22-Dec-2006 Ariff Abdullah <ariff@FreeBSD.org>

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>


# 303f62b8 19-Dec-2006 Ariff Abdullah <ariff@FreeBSD.org>

Fix distorted sound on Fujitsu Siemens AMILO Pa 1510.

Reported/Tested by: infofarmer


# 5c46f47b 17-Dec-2006 Ariff Abdullah <ariff@FreeBSD.org>

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

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


# 210bece1 16-Dec-2006 Ariff Abdullah <ariff@FreeBSD.org>

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


# 7c302801 14-Dec-2006 Ariff Abdullah <ariff@FreeBSD.org>

Fix compilation using gcc 4.1.

Submitted by: dougb


# 4ed06071 11-Dec-2006 Ariff Abdullah <ariff@FreeBSD.org>

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

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


# e150f641 09-Dec-2006 Ariff Abdullah <ariff@FreeBSD.org>

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

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


# 1b5c0d50 09-Dec-2006 Ariff Abdullah <ariff@FreeBSD.org>

- Fix headphone/speakers automute on Lenovo 3000 N100.

Tested by: xride

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


# 2229d0cf 02-Dec-2006 Ariff Abdullah <ariff@FreeBSD.org>

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>


# 57d90e7f 29-Nov-2006 Ariff Abdullah <ariff@FreeBSD.org>

Fix support for Medion MD MD95257 (GPIO2 quirk).

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


# a799d1cd 26-Nov-2006 Ariff Abdullah <ariff@FreeBSD.org>

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

Reported by: benno


# a580b31a 25-Nov-2006 Ariff Abdullah <ariff@FreeBSD.org>

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.


# 55be51bf 16-Oct-2006 Ariff Abdullah <ariff@FreeBSD.org>

- 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>


# 1409858b 12-Oct-2006 Ariff Abdullah <ariff@FreeBSD.org>

- 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


# 0b414cca 11-Oct-2006 Ariff Abdullah <ariff@FreeBSD.org>

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

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


# bfb06714 08-Oct-2006 Ariff Abdullah <ariff@FreeBSD.org>

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


# 8d999aa8 06-Oct-2006 Ariff Abdullah <ariff@FreeBSD.org>

- 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"


# 0f219a58 02-Oct-2006 Ariff Abdullah <ariff@FreeBSD.org>

- 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)


# aab23ae3 02-Oct-2006 Ariff Abdullah <ariff@FreeBSD.org>

Make this buildable on IA64.

Reported by: phk


# 1f0387f7 01-Oct-2006 Ariff Abdullah <ariff@FreeBSD.org>

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.