summaryrefslogtreecommitdiffstats
path: root/sys/modules/sound
Commit message (Collapse)AuthorAgeFilesLines
* Retire the '@' symlink. It isn't really needed and causes moreimp2014-11-061-22/+12
| | | | | | | | | problems than it solves. SYSDIR is already defined almost always and can be used instead. Working around the one case where it isn't is much easier than working around the fact that @ may not exist in 18 other places. Differential Revision: https://reviews.freebsd.org/D1100
* Remove dependence on source tree options. Move all kernel moduleimp2014-08-111-1/+2
| | | | | | | | | | | | | | | | | | options into kern.opts.mk and change all the places where we use src.opts.mk to pull in the options. Conditionally define SYSDIR and use SYSDIR/conf/kern.opts.mk instead of a CURDIR path. Replace all instances of CURDIR/../../etc with STSDIR, but only in the affected files. As a special compatibility hack, include bsd.owm.mk at the top of kern.opts.mk to allow the bare build of sys/modules to work on older systems. If the defaults ever change between 9.x, 10.x and current for these options, however, you'll wind up with the host OS' defaults rather than the -current defaults. This hack will be removed when we no longer need to support this build scenario. Reviewed by: jhb Differential Revision: https://phabric.freebsd.org/D529
* Remove ia64.marcel2014-07-071-1/+1
| | | | | | | | | | | | | | | | | This includes: o All directories named *ia64* o All files named *ia64* o All ia64-specific code guarded by __ia64__ o All ia64-specific makefile logic o Mention of ia64 in comments and documentation This excludes: o Everything under contrib/ o Everything under crypto/ o sys/xen/interface o sys/sys/elf_common.h Discussed at: BSDcan
* Re-enable -Werror for these modules. It is already enabled for the samejhb2014-06-091-1/+0
| | | | files when built as part of a kernel.
* Change the USB audio kernel module linking order, so that the USBhselasky2014-05-141-1/+1
| | | | | | | | | audio device driver is detached first and not its children. This fixes a panic in some cases when unloading "snd_uaudio" while a USB device is plugged. The linking order affects the order in which the module dependencies are registered. MFC after: 1 week
* Invert platform check.hselasky2014-05-091-2/+2
| | | | | Suggested by: imp @ MFC after: 2 weeks
* Use src.opts.mk in preference to bsd.own.mk except where we need stuffimp2014-05-061-1/+1
| | | | from the latter.
* Build the kernel sound module without ISA DMA support for ARM and MIPShselasky2014-05-051-1/+2
| | | | | | | | platforms, because these platforms do not implement the ISA DMA API. Else the sound modules cannot be loaded when running these platforms. MFC after: 2 weeks
* The onyx codec works also as module, so add it.andreast2014-01-131-1/+1
| | | | MFC after: 1 month
* Clean some 'svn:executable' properties in the tree.pfg2013-01-261-0/+0
| | | | | Submitted by: Christoph Mallon MFC after: 3 days
* Add driver for the RME HDSPe AIO/RayDAT sound cards -- snd_hdspe(4).mav2012-03-012-2/+11
| | | | | | | Cards are expensive and so rare, so leave the driver as module. Submitted by: Ruslan Bukin <br@bsdpad.com> MFC after: 2 weeks
* Add MK_SOURCELESS build option. Setting MK_SOURCELESS to "no" will disablermh2012-02-041-2/+13
| | | | | | | | | | | kernel modules that include binary-only code. More fine-grained control is provided via MK_SOURCELESS_HOST (for native code that runs on host CPU) and MK_SOURCELESS_UCODE (for microcode). Reviewed by: julian, delphij, freebsd-arch Approved by: kib (mentor) MFC after: 2 weeks
* Remove leftovers from previous commits.joel2012-02-022-4/+2
| | | | Approved by: jhb
* Cleanup some sound headers that don't need to be in the modules makefiles.pfg2012-02-023-3/+1
| | | | | Approved by: jhb (mentor) MFC after: 1 week
* Replace GPLd headers from the Maestro3 driver with BSD licensedpfg2012-01-201-0/+1
| | | | | | | | | | | | | | | | | versions derived from /usr/ports/audio/oss. The particular headers used were taken from the attic/drv/oss_allegro directory and are mostly identical to the previous files. The Maestro3 driver is now free from the GPL. NOTE: due to lack of testers this driver is being considered for deprecation and removal. PR: kern/153920 Approved by: jhb (mentor) MFC after: 2 weeks
* Major snd_hda driver rewrite:mav2012-01-151-2/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | - 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.
* Replace GPL'd headers in the emu10kx snd driver code.pfg2012-01-111-24/+1
| | | | | | | | | | | | | | This uses the emuxkireg.h already used in the emu10k1 snd driver. Special thanks go to Alexander Motin as he was able to find some errors and reverse engineer some wrong values in the emuxkireg header. The emu10kx driver is now free from the GPL. PR: 153901 Tested by: mav, joel Approved by: jhb (mentor) MFC after: 2 weeks
* Replace a GPL'd header in the emu10k1 snd driver code.pfg2012-01-031-9/+1
| | | | | | | | | | | This brings in the emuxkireg.h from NetBSD (dev/pci) which is used for the same purpose but is smaller. The emu10k1 is now free from the GPL. PR: 153901 Obtained from: NetBSD Approved by: core (mentor implicit) MFC after: 2 weeks
* MFtbemd: use MACHINE_CPUARCHimp2010-09-131-1/+1
|
* MFtbemd:imp2010-08-231-2/+2
| | | | | | | | | Use MACHINE_CPUARCH in preference to MACHINE_ARCH. The former is the source code location of the machine, the latter the binary output. In general, we want to use MACHINE_CPUARCH instead of MACHINE_ARCH unless we're tesitng for a specific target. The isn't even moot for i386/amd64 where there's momemntum towards a MACHINE_CPUARCH == x86, although a specific cleanup for that likely would be needed...
* Make kernel modules build correctly on 64-bit PowerPC.nwhitehorn2010-07-131-1/+1
|
* Last (hopefully) attempt to fix both parallel build andariff2009-06-121-9/+15
| | | | | | cyclic dependencies, in a simmilar fashion to kmod.mk. Discussed with: bde, bz
* Attempt to fix parallel build.ariff2009-06-101-3/+9
|
* Move all sound related scripts to its own 'sound' subdir.ariff2009-06-101-6/+6
| | | | Suggested by: jmallett
* Each generated file should depend its own generator as well.ariff2009-06-091-3/+3
|
* Depend on @ machine (_ILINKS) as we do with other modules so that @bz2009-06-091-3/+3
| | | | | is there for parallel (-jN) builds. Ideally beforedepends in kmod.mk should do the right thing but it seems it does not.
* Sound Mega-commit. Expect further cleanup until code freeze.ariff2009-06-071-1/+15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* PowerPC does not, in general, have ISA sound devices or an ISA bus,nwhitehorn2009-05-101-1/+1
| | | | | so add PowerPC to list of platforms for which we don't want to depend on ISA.
* Move the uaudio and ata-usb drivers into their correct locations.thompsa2009-02-231-1/+1
|
* Hook up new USB modules.thompsa2009-02-231-2/+5
|
* Add support for the I2S and davbus audio controllers found in Apple PowerPCnwhitehorn2009-01-253-7/+34
| | | | | | hardware. Submitted by: Marco Trillo
* - Remove snd_au88x0 which seems never got compiled into kernel nor as a kernelrafan2009-01-071-9/+0
| | | | | | | | | module. These files cause manual interaction when building ports/audio/aureal-kmod which provides a usable i386-only driver (it requires linking against some linux object files distributed by vendor which bankrupted back in 2000). MFC after: 1 week
* Restore SUBDIR+= accidentally removed in the previous revision.marius2008-05-041-4/+4
| | | | Pointed out by: ariff
* Don't build unused SBus front-ends for sun4v, don't build EBus front-endsmarius2008-05-041-5/+8
| | | | | | | | which are also likely to be irrelevant for sun4v (there's no SBus on sun4v and only some EBus devices). While at it fix some style bugs according to style.Makefile(5) where appropriate. MFC after: 3 days
* Remove option headers that do not exist and are not usedantoine2008-03-271-1/+1
| | | | | | | from the Makefiles in sys/modules. (opt_devfs.h, opt_bdg.h, opt_emu10kx.h and opt_uslcom.h) Approved by: rwatson (mentor)
* Remove WARNS from here and compile with default kernel flags.ru2008-02-211-1/+0
|
* Update snd_emu10kx driver with recent perforce changes (and fewariff2007-09-121-12/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | other changes too). (without any real order) 1. Use device_get_nameunit for mutex naming 2. Add timer for low-latency playback 3. Move most mixer controls from sysctls to mixer(8) controls. This is a largest part of this patch. 4. Add analog/digital switch (as a temporary sysctl) 5. Get back support for low-bitrate playback (with help of (2)) 6. Change locking for exclusive I/O. Writing to non-PTR register is almost safe and does not need to be ordered with PTR operations. 7. Disable MIDI until we get it to detach properly and fix memory managment problems. 8. Enable multichannel playback by default. It is as stable as single-channel mode. Multichannel recording is still an experimental feature. 9. Multichannel options can be changed by loader tunables. 10. Add a way to disable card from a loader tunable. 11. Add new PCI IDs. 12. Debugger settings are loader tunables now. 14. Remove some unused variables. 15. Mark pcm sub-devices MPSAFE. 16. Partially revert (bus_setup_intr -> snd_setup_intr) since it need to be done independently Submitted by: Yuriy Tsibizov (driver maintainer) Approved by: re (bmah)
* Last major commit and updates for RELENG_7:ariff2007-05-311-2/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - Rework the entire pcm_channel structure: * Remove rarely used link placeholder, instead, make each pcm_channel as head/link of each own/each other. Unlock - Lock sequence due to sleep malloc has been reduced. * Implement "busy" queue which will contain list of busy/active channels. This greatly reduce locking contention for example while servicing interrupt for hardware with many channels or when virtual channels reach its 256 peak channels. - So I heard you like v chan ... O RLY? Welcome to Virtual **Record** Channels (vrec, rec vchans, vchans for recording, Rec-Chan, you decide), the ultimate solutions for your nagging O_RDWR full-duplex wannabe (note: flash plugins) monopolizing single record channel causing EBUSY. Vrec works exactly like Vchans (or, should I rename it to "Vplay" :) , except that it operates on the opposite direction (recording). Up to 256 vrecs (like vchans) are possible. Notes: * Relocate dev.pcm.%d.{vchans,vchanformat,vchanrate} to each of its respective node/direction: dev.pcm.%d.play.* for "play" (cdev = dsp%d.vp%d) dev.pcm.%d.rec.* for "record" (cdev = dsp%d.vr%d) * Don't expect that it will magically give you ability to split "recording source" (eg: 1 channel for cdrom, 1 channel for mic, etc). Just admit that you only have a *single* recording source / channel. Please bug your hardware vendor instead :) - Bump maxautovchans from 4 to 16. For a full-fledged multimedia desktop/workstation with too many soundservers installed (esound, artsd, jackd, pulse/polypaudio, ding-dong pling plong mudkip fuh fuh, etc), 4 seems inadequate. There will be no memory penalty here, since virtual channels are allocate only by demand. - Nuke/Rework the entire statically created cdev entries. Everything is clonable through snd own clone manager which designed to withstand many kind of abusive devfs droids such as: * while : ; do /bin/test -e /dev/dsp ; done * jot 16777216 0 | while read x ; do ls /dev/dsp0.$x ; done * hundreds (could be thousands) concurrent threads/process opening "/dev/dsp" (previously, this might result EBUSY even with just 3 contesting threads/procs). o Reusable clone objects (instead of creating new one like there's no tomorrow) after certain expiration deadline. The clone allocator will decide whether to reuse, share, or creating new clone. o Automatic garbage collector. - Dynamic unit magic allocator. Maximum attached soundcards can be tuned using tunable "hw.snd.maxunit" (Default to 512). Minimum is 16, and maximum is 2048. - ..other fixes, mostly related to concurrency issues. joel@ will do the manpage updates on sound(4). Have fun.
* Disable multichannel recording in snd_emu10kx module. Whith multichannelnetchild2007-01-071-1/+1
| | | | | | | | | | recording enabled some programs (audio/audacity from ports) can't correctly enumerate all /dev/dsp device. Note: previous commit did not enable some debugging stuff, my eyes did misread "#undef" as "#define". Submitted by: Yuriy Tsibizov <Yuriy.Tsibizov@gfk.ru>
* Extend the emu10kx driver. With the words of the author:netchild2007-01-061-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ---snip--- New features: 1. Optional multichannel recording (32 channels on Live!, 64 channels on Audigy). All channels are 16bit/48000Hz/mono, format is fixed. Half of them are copied from sound output, another half can be used to record any data from DSP. What should be recorded is hardcoded in DSP code. In this version it records dummy data, but can be used to record all DSP inputs, for example.. Because there are no support of more-than-stereo sound streams multichannell stream is presented as one 32(64)*48000 Hz 16bit mono stream. Channel map: SB Live! (4.0/5.1) offset (words) substream 0x00 Front L 0x01 Front R 0x02 Digital Front L 0x03 Digital Front R 0x04 Digital Center 0x05 Digital Sub 0x06 Headphones L 0x07 Headphones R 0x08 Rear L 0x09 Rear R 0x0A ADC (multi-rate recording) L 0x0B ADC (multi-rate recording) R 0x0C unused 0x0D unused 0x0E unused 0x0F unused 0x10 Analog Center (Live! 5.1) / dummy (Live! 4.0) 0x11 Analog Sub (Live! 5.1) / dummy (Live! 4.0) 0x12..-0x1F dummy Audigy / Audigy 2 / Audigy 2 Value / Audigy 4 offset (words) substream 0x00 Digital Front L 0x01 Digital Front R 0x02 Digital Center 0x03 Digital Sub 0x04 Digital Side L (7.1 cards) / Headphones L (5.1 cards) 0x05 Digital Side R (7.1 cards) / Headphones R (5.1 cards) 0x06 Digital Rear L 0x07 Digital Rear R 0x08 Front L 0x09 Front R 0x0A Center 0x0B Sub 0x0C Side L 0x0D Side R 0x0E Rear L 0x0F Rear R 0x10 output to AC97 input L (muted) 0x11 output to AC97 input R (muted) 0x12 unused 0x13 unused 0x14 unused 0x15 unused 0x16 ADC (multi-rate recording) L 0x17 ADC (multi-rate recording) R 0x18 unused 0x19 unused 0x1A unused 0x1B unused 0x1C unused 0x1D unused 0x1E unused 0x1F unused 0x20..0x3F dummy Fixes: 1. Do not assign negative values to variables used to index emu_cards array. This array was never accessed when index is negative, but Alexander (netchild@) told me that Coverity does not like it. After this change emu_cards[0] should never be used to identify valid sound card. 2. Fix off-by-one errors in interrupt manager. Add more checks there. 3. Fixes to sound buffering code now allows driver to use large playback buffers. 4. Fix memory allocation bug when multichannel recording is not enabled. 5. Fix interrupt timeout when recording with low bitrate (8kHz). Hardware: 1. Add one more known Audigy ZS card to list. Add two cards with PCI IDs betwen old known cards and new one. Other changes: 1. Do not use ALL CAPS in messages. Incomplete code: 1. Automute S/PDIF when S/PDIF signal is lost. Tested on i386 only, gcc 3.4.6 & gcc41/gcc42 (syntax only). ---snip--- This commits enables a little bit of debugging output when the driver is loaded as a module. I did a cross-build test for amd64. The code has some style issues, this will be addressed later. The multichannel recording part is some work in progress to allow playing around with it until the generic sound code is better able to handle multichannel streams. This is supposed to fix CID: 171187 Found by: Coverity Prevent Submitted by: Yuriy Tsibizov <Yuriy.Tsibizov@gfk.ru>
* Connect snd_hda(4) to build process...ariff2006-10-011-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | 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.
* Add support for Intel High Definition Audio Controller.ariff2006-10-011-0/+9
| | | | | | | | | | | | | | | | | | | | | | | 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.
* Respect style.Makefile(5).netchild2006-09-303-12/+15
| | | | Cluebat waving by: ru
* Add the envy24ht driver to the build.netchild2006-09-302-2/+10
|
* Remove the ak452x module.netchild2006-09-301-8/+0
|
* Disconnect ak452x from the build, it is not needed anymore.netchild2006-09-301-1/+1
|
* We don't need the ISA interface.netchild2006-09-301-1/+1
| | | | Submitted by: "Konstantin Dimitrov" <kosio.dimitrov@gmail.com>
* Add the spicds module to the build.netchild2006-09-302-1/+9
| | | | Submitted by: "Konstantin Dimitrov" <kosio.dimitrov@gmail.com>
* If building the module as part of the kernel build, determineru2006-09-041-0/+7
| | | | | | | | | the "device isa" presence out of the opt_isa.h in the kernel build directory, rather than always assuming its presence. sparc64 is still special cased and is not affected by this change. Noticed by: bde
* Don't use touch when what is really meant is :> (create an empty file, ordes2006-08-141-1/+1
| | | | | | | | truncate it if it exists) or :>> (ensure the file exists, but don't change it if it already does) Reviewed by: ru MFC after: 2 weeks
OpenPOWER on IntegriCloud