summaryrefslogtreecommitdiffstats
path: root/sys/dev/sound
Commit message (Collapse)AuthorAgeFilesLines
* This driver certainly works fine turning INTR_MPSAFE back on. For thosegreen2004-04-211-1/+1
| | | | | | of you with other cards, please do review and test the drivers for MP-safety and disable Giant in the interrupt routines when you are sure of proper functionality.
* The newpcm headers currently #define away INTR_MPSAFE and INTR_TYPE_AVgreen2004-04-1414-22/+17
| | | | | | | | | | | | | | | | | | because they bogusly check for defined(INTR_MPSAFE) -- something which never was a #define. Correct the definitions. This make INTR_TYPE_AV finally get used instead of the lower-priority INTR_TYPE_TTY, so it's quite possible some improvement will be had on sound driver performance. It would also make all the drivers marked INTR_MPSAFE actually run without Giant (which does seem to work for me), but: INTR_MPSAFE HAS BEEN REMOVED FROM EVERY SOUND DRIVER! It needs to be re-added on a case-by-case basis since there is no one who will vouch for which sound drivers, if any, willy actually operate correctly without Giant, since there hasn't been testing because of this bug disabling INTR_MPSAFE. Found by: "Yuriy Tsibizov" <Yuriy.Tsibizov@gfk.ru>
* By default, ich4 has NAMBAR and NABMBAR i/o spaces asmatk2004-03-311-1/+12
| | | | | | | | read-only. Need to enable "legacy support", by poking into pci config space. (comment from the patch) Submited by: Autrijus Tang <autrijus@autrijus.org> Approved by: tanimura (mentor)
* Actually program the list of recording devices in sv_mix_setrecsrc().marcel2004-03-201-0/+1
| | | | | | | | | | | | | This change has not been tested. This change was triggered by a gcc(1) warning on ia64 at -O2. The variable v was not used after being computed, which resulted in enough dead code elimination (DCE) to confuse the compiler and emit a bogus warning about the use of the variable i without prior definition. The variable i is the loop variable. Submitted by: des Responsibility: marcel
* Convert callers to the new bus_alloc_resource_any(9) API.njl2004-03-1729-135/+169
| | | | | Submitted by: Mark Santcroos <marks@ripe.net> Reviewed by: imp, dfr, bde
* Augment /dev/sndstat with the module names, if applicable.matk2004-03-0624-44/+58
| | | | Approved by: tanimura (mentor)
* Create a new mutex type for virtual channels. This allows us to gettruckman2004-02-284-29/+24
| | | | | | | | rid of the MTX_DUPOK flag on channel mutexes, which allows witness to do a better job of lock order checking. Nuke snd_chnmtxcreate() since it is no longer needed. Tested by: matk
* Lock channels only as necessary in dsp_ioctl(), and only lock onetruckman2004-02-281-65/+173
| | | | | | | | | | channel at a time unless it is actually necessary to lock both. This avoids problems with lock order reversal and malloc() calls with a mutex held when lower level code unlocks a channel, calls malloc(), and relocks the channel. This also avoids the cost of some unnecessary locking and unlocking. Tested by: matk
* Device megapatch 5/6:phk2004-02-211-1/+1
| | | | | | | | | | | | Remove the unused second argument from udev2dev(). Convert all remaining users of makedev() to use udev2dev(). The semantic difference is that udev2dev() will only locate a pre-existing dev_t, it will not line makedev() create a new one. Apart from the tiny well controlled windown in D_PSEUDO drivers, there should no longer be any "anonymous" dev_t's in the system now, only dev_t's created with make_dev() and make_dev_alias()
* Device megapatch 4/6:phk2004-02-215-0/+10
| | | | | | | | Introduce d_version field in struct cdevsw, this must always be initialized to D_VERSION. Flip sense of D_NOGIANT flag to D_NEEDGIANT, this involves removing four D_NOGIANT flags and adding 145 D_NEEDGIANT flags.
* Fix a glitch in my last commit and revert to using selwakeupprimatk2004-02-201-1/+1
| | | | | Noticed by: tanimura Noticed by: truckman
* Fix a long-standing bug where select on vchans doesn't workmatk2004-02-191-3/+13
| | | | | | (never wake up) by iterating over them when they exist. Approved by: tanimura (mentor)
* Add dependency to snd_via8233mr2004-01-291-0/+1
|
* Change KASSERT() in feed_vchan16() into an explicit test and call totruckman2004-01-288-140/+245
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | panic() so that the buffer overflow just beyond this point is always caught, even when the code is not compiled with INVARIANTS. Change chn_setblocksize() buffer reallocation code to attempt to avoid the feed_vchan16() buffer overflow by attempting to always keep the bufsoft buffer at least as large as the bufhard buffer. Print a diagnositic message Danger! %s bufsoft size increasing from %d to %d after CHANNEL_SETBLOCKSIZE() if our best attempts fail. If feed_vchan16() were to be called by the interrupt handler while locks are dropped in chn_setblocksize() to increase the size bufsoft to match the size of bufhard, the panic() code in feed_vchan16() will be triggered. If the diagnostic message is printed, it is a warning that a panic is possible if the system were to see events in an "unlucky" order. Change the locking code to avoid the need for MTX_RECURSIVE mutexes. Add the MTX_DUPOK option to the channel mutexes and change the locking sequence to always lock the parent channel before its children to avoid the possibility of deadlock. Actually implement locking assertions for the channel mutexes and fix the problems found by the resulting assertion violations. Clean up the locking code in dsp_ioctl(). Allocate the channel buffers using the malloc() M_WAITOK option instead of M_NOWAIT so that buffer allocation won't fail. Drop locks across the malloc() calls. Add/modify KASSERTS() in attempt to detect problems early. Abuse layering by adding a pointer to the snd_dbuf structure that points back to the pcm_channel that owns it. This allows sndbuf_resize() to do proper locking without having to change the its API, which is used by the hardware drivers. Don't dereference a NULL pointer when setting hw.snd.maxautovchans if a hardware driver is not loaded. Noticed by Ryan Sommers <ryans at gamersimpact.com>. Tested by: Stefan Ehmann <shoesoft AT gmx.net> Tested by: matk (Mathew Kanner) Tested by: Gordon Bergling <gbergling AT 0xfce3.net>
* Fix a panic in dsp_clone when trying to access a soundmatk2004-01-251-0/+3
| | | | | | | device that doesn't exists. I'm using my discretion and committing without mentor approval since Seigo is away. Noticed by: Maxime Henrion <mux@freebsd.org>
* Sync with DFBSD v.1.16. Add new codecs IDs, fix some spelling.matk2004-01-231-3/+21
| | | | Approved by: des (interim mentor)
* Reduce latency when using the SNDCTL_DSP_RESET ioctl by callingmatk2004-01-201-2/+10
| | | | | | | chn_resetbuf(). Submited by: Pyun YongHyeon <yongari@kt-is.co.kr> Approved by: tanimura (mentor)
* Fix a panic when kldloading a sound driver. Do this by replacing thematk2004-01-205-217/+95
| | | | | | link-list of dev_t's with named variables. Remove used code. Approved by: tanimura (mentor)
* As previously announced: discontinue use of makedev() call in soundcode.phk2004-01-176-56/+171
| | | | | | | | | | | This takes us a lot closer to refcounting dev_t. This patch originally by cg@ with a few minor changes by me. It is largely untested, but has been HEADSUP'ed twice, so presumably people have not found any issues with it. Submitted by: cg@
* Specify the right location of the generated header.obrien2004-01-121-1/+1
|
* Add Audigy support.obrien2004-01-111-93/+521
| | | | | | I started with a year-old patch by Orlando Bassotto <orlando.bassotto@ieo-research.it>, and ported it to 5.2-CURRENT along with fixing the problems working with pre-Audigy cards.
* Remove EMUDEBUG [un]def. This should be done in the Makefile.obrien2004-01-111-1/+0
|
* Sync with Creative's 8010.h rev 1.51.obrien2004-01-091-0/+7
|
* The last argument to mtx_init() should be MTX_DEF, not 0. This is not atruckman2003-12-082-2/+2
| | | | functional change since MTX_DEF happens to be defined as 0.
* Fix some locking violations by creating seperate mutex classesmatk2003-12-051-3/+6
| | | | | | | for play and record channels. Approved by: seigo (mentor) Approved by: scottl (re)
* Fix a panic due to holding a lock over calls to uiomove.matk2003-11-273-30/+39
| | | | | | | Pointed out by: Artur Poplawski Explained by: Don Lewis (truckman) Approved by: tanimura (mentor) Approved by: scottl (re)
* Add ID for ALC658 CODEC.kuriyama2003-11-111-0/+1
| | | | | Tested on: GIGABYTE GA-8S655FX-L Reviewed by: orion
* Fix sound LOR problems:scottl2003-11-113-108/+113
| | | | | | | | | | | | | | | | dsp_open: rearrange to only hold one lock at a time dsp_close: ditto mixer_hwvol_init: delete locking, the only consumer seems to be the ess driver and it only call it a creation time, I think the device will be stable across the sleepable malloc. cmi interrupt routine: Release locks while caller chn_intr, either this or do what emu10k1 does which is have no locks at in the interrupt handler. Submitted by: mat@cnd.mcgill.ca
* - Implement selwakeuppri() which allows raising the priority of atanimura2003-11-092-3/+3
| | | | | | | | | | | | | thread being waken up. The thread waken up can run at a priority as high as after tsleep(). - Replace selwakeup()s with selwakeuppri()s and pass appropriate priorities. - Add cv_broadcastpri() which raises the priority of the broadcast threads. Used by selwakeuppri() if collision occurs. Not objected in: -arch, -current
* Don't attempt to destroy the driver mutex when it hasn't yetdeischen2003-10-291-1/+1
| | | | | | been created. This has been sitting in my local tree for far too long; I can't believe noone else has come across this yet.
* Recognize the Avance Logic ALC655 codec found on some ICH4/5-baseddes2003-10-121-0/+1
| | | | | | | | motherboards, such as the Gigabyte I848P. PR: kern/54176 Submitted by: Chris Keladis <chris@cmc.optus.net.au> Forgotten by: orion
* A couple of months' worth of back-burner hacking: restructure to betterdes2003-10-122-89/+189
| | | | | handle the minor (but significant) differences between the various Vortex chips; add (incomplete) support for playback.
* Fixed world breakage in previous commit. Somehow the wrong include wasbde2003-09-171-1/+1
| | | | removed in the world although the correct one was removed in the universe.
* Don't include another driver's private reg.h file (sioreg.h). Includingbde2003-09-162-2/+0
| | | | ns16550.h is now sufficient.
* Correctly reset ich[3-5] sound cards on resume. This fixes audio playbacknjl2003-09-151-0/+30
| | | | | | | | | | | after suspend/resume for me. PR: Submitted by: iwasaki Reviewed by: orion Approved by: cg Obtained from: MFC after:
* update my email address.cg2003-09-0736-37/+37
|
* Recognize the sound chip on the Opteron-based nForce3 motherboardsobrien2003-09-031-0/+4
| | | | (such as the Asus SK8N).
* Use PCIR_BAR(x) instead of PCIR_MAPS.jhb2003-09-0219-41/+41
| | | | | Glanced over by: imp, gibbs Tested by: i386 LINT
* Add Creative SB AudioPCI CT4730 rev A.orion2003-08-291-2/+18
| | | | | Submitted by: David Xu <davidxu@FreeBSD.org> PR: kern/54810
* Add Creative EV1938.orion2003-08-291-0/+2
| | | | | Submitted by: David Xu <davidxu@FreeBSD.org> PR: kern/54810
* Add sound support for the AMD64 8111 chip.obrien2003-08-281-0/+4
| | | | | PR: kern/55932 Submitted by: Mark Kettenis <kettenis@chello.nl>
* When present use ogain instead of master for surround sound channels.orion2003-08-231-14/+14
| | | | | | The latter has lead to reports of broken audio. Do not swap ogain and master when headphones detected.
* When calculating the block size to use for a particular sample rate,iedowse2003-08-231-4/+6
| | | | | | | | | | | round the result up to a multiple of 4 bytes so that it will always be a multiple of the sample size. Also use the actual buffer size from sc->bufsz instead of the default DS1_BUFFSIZE. This fixes panics and bad distortion I have seen on Yamaha DS-1 hardware, mainly when playing certain Real Audio media. Reviewed by: orion (an earlier version of the patch)
* Fix an off-by-one error in feed_monotostereo16() that caused theiedowse2003-08-231-1/+1
| | | | | | | | first sample in the buffer to be ignored. The bug caused a repetitive glitch in one of the stereo channels when playing mono sound on configurations that use the monotostereo16 feeder. Reviewed by: orion
* Prefer new location of pci include files (which have only been in theimp2003-08-2221-43/+43
| | | | | tree for two or more years now), except in a few places where there's code to be compatible with older versions of FreeBSD.
* Additional VT1616 id.orion2003-08-211-1/+1
| | | | Submitted by: Greg Lewis
* Apply Rudolf Cejka's patch for:orion2003-08-212-47/+42
| | | | | | | | | | | | o AD1980 hook. o ac97_fix_auxout. and: o Associate AC97_MIX_AUXOUT with SOUND_MIXER_OGAIN rather than SOUND_MIXER_MONITOR. o Add ac97_fix_tone to remove tone controls from mixer if invalid.
* Add patch for AD198x.orion2003-08-212-0/+7
| | | | Submitted by: Oleg Sharoiko, Rudolf Cejka.
* handle locking when creating or destroying vchans bettercg2003-08-182-38/+104
|
* try to make really sshort sounds actually playcg2003-08-181-16/+43
|
OpenPOWER on IntegriCloud