History log of /freebsd-current/sys/sys/soundcard.h
Revision Date Author Comments
# 24d5cc14 09-May-2024 Christos Margiolis <christos@FreeBSD.org>

sound: Rename oss_audioinfo->real_device to oss_audioinfo->legacy_device

The OSS manual now documents this field as "legacy_device".

Sponsored by: The FreeBSD Foundation
MFC after: 3 days
Reviewed by: dev_submerge.ch
Differential Revision: https://reviews.freebsd.org/D45138


# e6df8c37 09-May-2024 Christos Margiolis <christos@FreeBSD.org>

sound: Add missing oss_mixerinfo devnode and legacy_device fields

They are missing from soundcard.h and are in fact used by some
applications, such as OSS' ossinfo(1):
http://manuals.opensound.com/developer/ossinfo.c.html

The new size for filler is chosen according to the most recent official
version of soundcard.h, which includes those 2 fields.

Sponsored by: The FreeBSD Foundation
MFC after: 3 days
Reviewed by: dev_submerge.ch
Differential Revision: https://reviews.freebsd.org/D45137


# 95ee2897 16-Aug-2023 Warner Losh <imp@FreeBSD.org>

sys: Remove $FreeBSD$: two-line .h pattern

Remove /^\s*\*\n \*\s+\$FreeBSD\$$\n/


# 4e50737f 04-Sep-2022 Gordon Bergling <gbe@FreeBSD.org>

sound(4): Fix a typo in a source code comment

- s/availavle/available/

MFC after: 3 days


# 183502d1 13-Mar-2021 Gordon Bergling <gbe@FreeBSD.org>

Fix a few typos in comments

- trough -> through

MFC after: 1 week


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

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


# 9b10f59a 13-Dec-2017 Pedro F. Giffuni <pfg@FreeBSD.org>

SPDX: mostly fixes to previous changes.

Introduce the recently approved BSD-1-Clause and replace 0BSD which
never did fit well our use cases.


# c54bbc27 04-Jun-2016 Ed Schouten <ed@FreeBSD.org>

Don't test for INKERNEL to check whether we're in kernel space.

It turns out that <machine/param.h> actually defines a macro under this
name, even when we're not in kernelspace. This causes us to suppress
some macro definitions that are used by userspace apps.

PR: 210026
Reported by: jbeich@
MFC after: 2 weeks


# 7f417bfa 03-May-2016 Pedro F. Giffuni <pfg@FreeBSD.org>

sys/sys: minor spelling fixes.

While the changes are minor, these headers are very visible.

MFC after: 2 weeks


# 147c5f1f 29-Jun-2011 Andriy Gapon <avg@FreeBSD.org>

add SNDCTL_DSP_HALT specified by OSS

This is really a new name for SNDCTL_DSP_RESET.
And this what commit r222723 should really have been in the first place.

PR: kern/156874
Submitted by: gerald
MFC after: 1 week


# 18a30e63 29-Jun-2011 Andriy Gapon <avg@FreeBSD.org>

revert r222723: wrong change was committed

The commit intended to add SNDCTL_DSP_HALT, but actually added
SNDCTL_SEQ_HALT, which is not defined in the OSS specs.

Reported by: Pan Tsu <inyaoo@gmail.com>
Pointyhat to: gerald, avg


# c8a90819 05-Jun-2011 Andriy Gapon <avg@FreeBSD.org>

add SNDCTL_DSP_HALT specified by OSS

This is really a new name for SNDCTL_DSP_RESET.

PR: kern/156874
Submitted by: gerald
MFC after: 1 week


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


# 5cda20cf 09-Jun-2009 Ariff Abdullah <ariff@FreeBSD.org>

Move machine dependant AFMT_* definition from sound.h
to global soundcard.h .


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


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

Import some new constants and structures fields from OSSv4.
Implement some OSSv4 ioctls to make ossinfo tool work and print
something reasonable.


# c412d503 07-Jan-2009 Alexander Motin <mav@FreeBSD.org>

Add some new oss_sysinfo structure fields from OSSv4.


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

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


# 4bc4dc4c 26-Nov-2006 Alexander Leidinger <netchild@FreeBSD.org>

MFP4 (109713):
Add OSS_GETVERSION ioctl for compatibility.

Some ports expect this and fail to compile on -current ATM.

Submitted by: ryanb


# 394ebd35 28-Oct-2006 Alexander Leidinger <netchild@FreeBSD.org>

MFP4:
Rename MAX_SAMPLE_RATES macro to OSS_MAX_SAMPLE_RATES. The old
macro clashed with those used in other applications and libaries
(ex: RtAudio). 4Front responded by updating their spec, so we
will follow suit.

Submitted by: ryanb
Noticed by: pointyhat/kris


# b611c801 23-Sep-2006 Alexander Leidinger <netchild@FreeBSD.org>

MFp4 the sound Google Summer of Code project:

The goal was to sync with the OSSv4 API 4Front Technologies uses in their
proprietary OSS driver. This was successful as far as possible. The part
of the API which is stable is implemented, for the rest there are some
stubs already.

New system ioctls:
- SNDCTL_SYSINFO - obtain audio system info (version, # of audio/midi/
mixer devices, etc.)
- SNDCTL_AUDIOINFO - fetch details about a specific audio device
- SNDCTL_MIXERINFO - fetch details about a specific mixer device

New audio ioctls:
- Sync groups (SNDCTL_DSP_SYNCGROUP/SNDCTL_DSP_SYNCSTART) which allow
triggered playback/recording on multiple devices (even across processes
simultaneously).
- Peak meters (SNDCTL_DSP_GETIPEAKS/SNDCTL_DSP_GETOPEAKS) - can query
audio drivers for peak levels (needs driver support, disabled for now).
- Per channel playback/recording levels -
SNDCTL_DSP_{GET,SET}{PLAY,REC}VOL. Note that these are still in name
only, just wrapping around the AC97-style mixer at the moment. The next
step is to push them down to the drivers.

Audio ioctls still under development by 4Front (for which stubs may exist
in this commit):
- SNDCTL_GETNAME, SNDCTL_{GET,SET}{SONG,LABEL}
- SNDCTL_DSP_{GET,SET}_CHNORDER
- SNDCTL_MIX_ENUMINFO, SNDCTL_MIX_EXTINFO - (might be documented enough in
the OSS releases to work on this. These ioctls cover the cool "twiddle
any knob on your card" features.)

Missing:
- SNDCTL_DSP_COOKEDMODE -- this ioctl is used to give applications direct
access to a card's buffers, bypassing the feeder architecture. It's
a toughy -- "someone" needs to decide :
(a) if this is desireable, and (b) if it's reasonably feasible.

Updates for driver writers:
So far, only two routines to the channel class (in channel_if.m) are added.
One is for fetching a list of discrete supported playback/recording rates
of a channel, and the other is for fetching peak level info (useful for
drawing peak meters). Interested parties may want to help pushing down
SNDCTL_DSP_{GET,SET}{PLAY,REC}VOL into the drivers.

To use the new stuff you need to rebuild the sound drivers or your kernel
(depending on if you use modules or not) and to install soundcard.h (a
buildworld/installworld handles this).

Sponsored by: Google SoC 2006
Submitted by: ryanb
Many thanks to: 4Front Technologies for their cooperation, explanations
and the nice license of their soundcard.h.


# c79d1375 31-Jul-2005 Alexander Leidinger <netchild@FreeBSD.org>

OSS defines AFMT_x32_xE as:
1) 32bit data, packed within 32bit (4bytes) boundary.
2) 24bit data, packed within 32bit (4bytes) boundary where the data
is stored in the 24 most significant bits and least significant 8
bits are not used and should be set to 0.

While this might hold true in few cases, lots of applications (notably
mplayer, sweep) really deal / produce 24bit as what they should meant
to be: 24bit data / 3bytes per sample.
To handle this "true" 24bit pcm format add AFMT_x24_xE, so the in-kernel
conversion space did not confuse itself with 32bit variant.

You need to rebuild mplayer after installing this change (this header and
the upcomming kernel changes), if you want to use this new feature.

Submitted by: Ariff Abdullah <skywizard@MyBSD.org.my>
Tested by: multimedia@


# 60727d8b 06-Jan-2005 Warner Losh <imp@FreeBSD.org>

/* -> /*- for license, minor formatting changes


# d5829a3e 21-Nov-2003 Mathew Kanner <matk@FreeBSD.org>

New defines that paves the way for new midi features and ports.

Changes consists of an IOCTL (SNDCTL_SEQ_GETTIME) and a constant.

PR: kern/59233
Approved by: tanimura (mentor)
Approved by: scottl (re)
MFC after: 3 weeks


# 754c4875 14-Aug-2003 Cameron Grant <cg@FreeBSD.org>

add a few missing bits for future use


# aa2e39ba 03-May-2003 Martin Blapp <mbr@FreeBSD.org>

My previous commit broke builds for restricted namespaces. Add
a underscore to fix this.

Reviewed by: peter


# a7555672 28-Apr-2003 Martin Blapp <mbr@FreeBSD.org>

Define AFMT_S16_NE for "16-bit signed format in machine's
native endian convention. Needed by newer OSS ports.

Reviewed by: orion
PR: 27270
MFC: 2 weeks


# 9d5abbdd 01-Jan-2003 Jens Schweikhardt <schweikh@FreeBSD.org>

Correct typos, mostly s/ a / an / where appropriate. Some whitespace cleanup,
especially in troff files.


# 789f12fe 19-Mar-2002 Alfred Perlstein <alfred@FreeBSD.org>

Remove __P


# 65bb3f0c 21-Aug-2001 George C A Reid <greid@FreeBSD.org>

Correct the URL to the Hacker's Guide to Voxware.

PR: 29896
Submitted by: Gerhard Gonter <gonter@whisky.wu-wien.ac.at>


# 9ee52e44 18-Aug-2001 Maxim Sobolev <sobomax@FreeBSD.org>

Extend comments documenting various supported audio formats and mixer devices.

Reviewed by: ru, cg
Approved by: cg
Obtained from: 4Front's OSS Programming Guide
MFC after: 2 weeks


# 51d3e31b 01-Sep-2000 Cameron Grant <cg@FreeBSD.org>

add 32bit formats and a couple of ioctls


# fb0ef528 11-Jul-2000 Seigo Tanimura <tanimura@FreeBSD.org>

Finally merge newmidi.
(I had been busy for my own research activity until the last weekend)

Supported devices:

SB Midi Port (sbc + midi)
SB OPL3 (sbc + midi)
16550 UART (midi, needs a trick in your hint)
CS461x Midi Port (csa + midi)

OSS-compatible sequencer (seq)

Supported playing software:

playmidi (We definitely need more)

Notes:

/dev/midistat now reports installed midi drivers. /dev/sndstat reports
only pcm drivers. We need the new name(pcmstat?).

EMU8000(SB AWE) does not sound yet but does get probed so that the OPL3
synth on an AWE card works.

TODO:

MSS/PCI bridge drivers
Midi-tty interface to support general serial devices
Modules


# 664a31e4 28-Dec-1999 Peter Wemm <peter@FreeBSD.org>

Change #ifdef KERNEL to #ifdef _KERNEL in the public headers. "KERNEL"
is an application space macro and the applications are supposed to be free
to use it as they please (but cannot). This is consistant with the other
BSD's who made this change quite some time ago. More commits to come.


# 4d25c041 29-Nov-1999 Alfred Perlstein <alfred@FreeBSD.org>

tanimura implemented SNDCTL_DSP_GETODELAY for pcm.

Submitted by: tanimura


# c528b8ff 04-Sep-1999 Doug Rabson <dfr@FreeBSD.org>

Make the idempotency ifdefs uniform with the rest of src/sys/sys.


# 8aedb875 04-Sep-1999 Bruce Evans <bde@FreeBSD.org>

Fixed a gratuitous ANSIism again. The fix in rev.1.23 was blown away
in rev.1.25.


# b9b9a813 01-Sep-1999 Peter Wemm <peter@FreeBSD.org>

Add $FreeBSD$


# 4ebe7771 08-Apr-1999 KATO Takenori <kato@FreeBSD.org>

o sys/i386/include/soundcard.h
Reduce synth_info.name lenght for binary compatibility.

o sys/i386/isa/sound/mpu401.c
Reduce mpu device number info to avoid overflow of mpu_synth_info.name.

Submitted by: Akio Morita <amorita@meadow.scphys.kyoto-u.ac.jp>


# bd5934b0 02-Apr-1999 KATO Takenori <kato@FreeBSD.org>

o sys/i386/include/soundcard.h
Add Sound Card ID for the nss(NEC PC-9801-86 Sound System) driver.
Old name of this driver was pcm driver in FreeBSD 2.2.x.
Fix lack of the length of the name member of the synth_info structure.
(attach_mpu401 in sys/i386/isa/sound/mpu401.c requires 33 chars.)

o sys/i386/isa/sound/dev_table.h
Add the DMAbuf flags definition DMA_DISABLE.
Add the nss driver entry.

o sys/i386/isa/sound/dmabuf.c
Add the DMA_DISABLE flag check in DMAbuf_outputintr and DMAbuf_inputintr
to disable DMA control in FIFO only use (nss driver required).

o sys/i386/isa/sound/local.h
Add the nss driver entry.

o sys/i386/isa/sound/mpu401.c
Replace inb function in probe_mpu401 to mpu401_status macro.
Wrap macro argument for above replace.
Add I/O port maping macro for NEC PC-98x1 arch.
Add delay in NEC PC-98x1 arch.

o sys/i386/isa/sound/pcm86.c
Change driver name to avoid name space conflict to new pcm driver.
Fix NEC PC-9801-86 driver to work on RELENG_3 branch or latter.

o sys/i386/isa/sound/sound_calls.h
Fix the mpuintr definition.
Add the nss driver entry.
attach_nss, probe_nss, nssintr

o sys/i386/isa/sound/soundcard.c
Fix lack of the mpuintr registration.
Add the nss driver entry.

o sys/pc98/conf/files.pc98
Add the nss driver entry.

Reviewed by: kato
Submitted by: Akio Morita <amorita@meadow.scphys.kyoto-u.ac.jp>


# a7b4a379 17-Feb-1998 Marc G. Fournier <scrappy@FreeBSD.org>

soundcard.h wasn't upgraded when i386/isa/snd was


# eebeedcc 17-Feb-1998 Marc G. Fournier <scrappy@FreeBSD.org>

Upgrade Luigi's audio driver to Jan/23 version... will bring in Feb/15th
version as soon as I've tested it...

Installed/tested on my home machine...any problems, please report directly
to me.


# 9dca5248 16-Feb-1998 KATO Takenori <kato@FreeBSD.org>

Enable NEC 86 sound card when PC98 is defined.

Submitted by: Takahashi Yoshihiro <nyan@wyvern.cc.kogakuin.ac.jp>


# b9759fe4 03-Feb-1998 Bruce Evans <bde@FreeBSD.org>

Fixed a gratuitous ANSIism.


# 6cc3943f 08-Jan-1998 John-Mark Gurney <jmg@FreeBSD.org>

update the AWE32 wave table driver to Iwai's 0.4.2c version. This also
includes the patches to make it work under -current from Randall Hopper.

Remove the old AWE driver.


# 2487b1e0 28-Dec-1997 Steve Price <steve@FreeBSD.org>

Add back a #include <sys/types.h> so that this header is
self-sufficient again. This is a quick fix that should
really be remedied by removing all of the gratuitous changes
made in revision 1.20.

PR: 5351


# 1fa24a09c 30-Oct-1997 Mark Murray <markm@FreeBSD.org>

Upgrade the sound sources to Amancio Hasty's latest-and-greatest.
This is based on Voxware 3.5, and corresponds to Amancio's `guspnp21'.

Bug reports to Amancio, please!


# 1a46116d 11-Feb-1997 Steven Wallace <swallace@FreeBSD.org>

Bug fix for SNDCTL_DSP_GETOSPACE ioctl. It would report 0 bytes
available in buffer when buffer was completely empty.
It now correctly reports the total buffer space available.

Reviewed by: jkh, davidg
Obtained from: Linux 1.3.20's sound driver code


# a6c8c374 15-Nov-1996 Jordan K. Hubbard <jkh@FreeBSD.org>

Commit AWE32 changes I forgot in my first round. Whoops!


# ebedb5ad 21-Sep-1996 Bruce Evans <bde@FreeBSD.org>

Cleaned up all headers that include <sys/ioctl.h> or <sys/ioccom.h>:
- don't include <sys/ioctl.h> in any header. Include <sys/ioccom.h>
instead. This was already done in 4.4Lite for the most important
ioctl headers. Header spam currently increases kernel build
times by 10-20%. There are more than 30000 #includes (not counting
duplicates) for compiling LINT.
- include <sys/types.h> if and only it is necessary to make the header
almost self-sufficient (some ioctl headers still need structs from
elsewhere).
- uniformized idempotency ifdefs. Copied the style in the 4.4Lite
ioctl headers.


# ad63a118 14-Jun-1996 Satoshi Asami <asami@FreeBSD.org>

The Great PC98 Merge.

All new code is "#ifdef PC98"ed so this should make no difference to
PC/AT (and its clones) users.

Ok'd by: core
Submitted by: FreeBSD(98) development team


# 6c5e9bbd 30-Jan-1996 Mike Pritchard <mpp@FreeBSD.org>

Fix a bunch of spelling errors in the comment fields of
a bunch of system include files.


# 8bdcfa2a 28-Jul-1995 Jordan K. Hubbard <jkh@FreeBSD.org>

Merge in changes for VOXWARE 3.05
Submitted by: Amancio Hasty and Jim Lowe


# 9b2e5354 30-May-1995 Rodney W. Grimes <rgrimes@FreeBSD.org>

Remove trailing whitespace.


# 6a8cccb0 08-Mar-1995 Ugen J.S. Antsilevich <ugen@FreeBSD.org>

Remove redundant IORW definition..
because of this definition never ioctl's for sound
devices worked..For me this resulted also in loss of
snd1 device...


# 9e5c18f7 13-Feb-1995 Jordan K. Hubbard <jkh@FreeBSD.org>

The following patches are for the sound drivers. These changes will
add a an ioctl call to set the transfer block size (SNDCTL_DSP_SETBLKSIZE)
and add the select system call to the drivers. They also fix a problem with
the #EXCLUDE macros for the PAS-16 card.
Submitted by: Jim Lowe <james@blatz.cs.uwm.edu>


# e00dc329 14-Nov-1994 Bruce Evans <bde@FreeBSD.org>

Remove extra idempotency ifdef and uniformize the other one.

Comment about support for 4 different spellings of KERNEL.


# c64aa890 30-Sep-1994 Steven Wallace <swallace@FreeBSD.org>

Use Voxware's new 2.90 soundcard.h.
NOTE: 2.9 is backwards compatable with programs compiled with older
soundcard.h, but new programs compiled with 2.9 will not work on pre-2.9
sound drivers.


# 4b301dcf 27-Sep-1994 David Greenman <dg@FreeBSD.org>

First round of changes to get the sound code working in 2.0.


# 836dc83b 20-Aug-1994 Paul Richards <paul@FreeBSD.org>

Made idempotent.
Reviewed by:
Submitted by:


# 3c4dd356 02-Aug-1994 David Greenman <dg@FreeBSD.org>

Added $Id$


# db2fd867 22-Apr-1994 Andrey A. Chernov <ache@FreeBSD.org>

Sound driver updated to version 2.5


# 2d997c10 11-Mar-1994 Steven Wallace <swallace@FreeBSD.org>

Updated include files for sound drivers.


# 4a8e05dd 27-Nov-1993 Andrey A. Chernov <ache@FreeBSD.org>

Move soundcard.h & ultrasound.h to proper location <machine/...>
to allow application access it.


# 6e393973 07-Nov-1993 Garrett Wollman <wollman@FreeBSD.org>

Made all header files idempotent and moved incorrect common data from
headers into a related source file. Added cons.h as first step towards
moving i386/i386/cons.h to machine/cons.h where it belongs.


# dad544ec 23-Oct-1993 Jordan K. Hubbard <jkh@FreeBSD.org>

Soundcard driver include file (/usr/include/machine/soundcard.h)